亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gamma.c

?? linux下的圖形界面開發minigui最新源代碼
?? C
字號:
/***  $Id: gamma.c,v 1.3 2003/09/04 06:02:53 weiym Exp $**  **  Port to MiniGUI by Wei Yongming (2001/10/03).**  Copyright (C) 2001 ~ 2002 Wei Yongming.**  Copyright (C) 2003 Feynman Software.****  SDL - Simple DirectMedia Layer**  Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga*//*** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License as published by** the Free Software Foundation; either version 2 of the License, or** (at your option) any later version.**** This program is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the** GNU General Public License for more details.**** You should have received a copy of the GNU General Public License** along with this program; if not, write to the Free Software** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*//* Gamma correction support */#include <stdio.h>#include <stdlib.h>#include "common.h"#ifdef HAVE_MATH_H#include <math.h>#endif#include "newgal.h"#include "sysvideo.h"#ifdef HAVE_MATH_Hstatic void CalculateGammaRamp(float gamma, Uint16 *ramp){	int i;	/* 0.0 gamma is all black */	if ( gamma <= 0.0 ) {		for ( i=0; i<256; ++i ) {			ramp[i] = 0;		}		return;	} else	/* 1.0 gamma is identity */	if ( gamma == 1.0 ) {		for ( i=0; i<256; ++i ) {			ramp[i] = (i << 8) | i;		}		return;	} else	/* Calculate a real gamma ramp */	{ int value;		gamma = 1.0f / gamma;		for ( i=0; i<256; ++i ) {			value = (int)(pow((double)i/256.0, gamma)*65535.0+0.5);			if ( value > 65535 ) {				value = 65535;			}			ramp[i] = (Uint16)value;		}	}}static void CalculateGammaFromRamp(float *gamma, Uint16 *ramp){	/* The following is adapted from a post by Garrett Bass on OpenGL	   Gamedev list, March 4, 2000.	 */	float sum = 0.0;	int i, count = 0;	*gamma = 1.0;	for ( i = 1; i < 256; ++i ) {	    if ( (ramp[i] != 0) && (ramp[i] != 65535) ) {	        double B = (double)i / 256.0;	        double A = ramp[i] / 65535.0;	        sum += (float) ( log(A) / log(B) );	        count++;	    }	}	if ( count && sum ) {		*gamma = 1.0f / (sum / count);	}}#endif /* HAVE_MATH_H */int GAL_SetGamma(float red, float green, float blue){	int succeeded;	GAL_VideoDevice *video = current_video;	GAL_VideoDevice *this  = current_video;		succeeded = -1;#ifdef HAVE_MATH_H	/* Prefer using SetGammaRamp(), as it's more flexible */	{		Uint16 ramp[3][256];		CalculateGammaRamp(red, ramp[0]);		CalculateGammaRamp(green, ramp[1]);		CalculateGammaRamp(blue, ramp[2]);		succeeded = GAL_SetGammaRamp(ramp[0], ramp[1], ramp[2]);	}#else	GAL_SetError("Gamma correction not supported");#endif	if ( (succeeded < 0) && video->SetGamma ) {		GAL_ClearError();		succeeded = video->SetGamma(this, red, green, blue);	}	return succeeded;}/* Calculating the gamma by integrating the gamma ramps isn't exact,   so this function isn't officially supported.*/int GAL_GetGamma(float *red, float *green, float *blue){	int succeeded;	GAL_VideoDevice *video = current_video;	GAL_VideoDevice *this  = current_video;		succeeded = -1;#ifdef HAVE_MATH_H	/* Prefer using GetGammaRamp(), as it's more flexible */	{		Uint16 ramp[3][256];		succeeded = GAL_GetGammaRamp(ramp[0], ramp[1], ramp[2]);		if ( succeeded >= 0 ) {			CalculateGammaFromRamp(red, ramp[0]);			CalculateGammaFromRamp(green, ramp[1]);			CalculateGammaFromRamp(blue, ramp[2]);		}	}#else	GAL_SetError("Gamma correction not supported");#endif	if ( (succeeded < 0) && video->GetGamma ) {		GAL_ClearError();		succeeded = video->GetGamma(this, red, green, blue);	}	return succeeded;}int GAL_SetGammaRamp(Uint16 *red, Uint16 *green, Uint16 *blue){	int succeeded;	GAL_VideoDevice *video = current_video;	GAL_VideoDevice *this  = current_video;		GAL_Surface *screen = GAL_PublicSurface;	/* Verify the screen parameter */	if ( !screen ) {		GAL_SetError("No video mode has been set");		return -1;	}	/* Lazily allocate the gamma tables */	if ( ! video->gamma ) {		GAL_GetGammaRamp(0, 0, 0);	}	/* Fill the gamma table with the new values */	if ( red ) {		memcpy(&video->gamma[0*256], red, 256*sizeof(*video->gamma));	}	if ( green ) {		memcpy(&video->gamma[1*256], green, 256*sizeof(*video->gamma));	}	if ( blue ) {		memcpy(&video->gamma[2*256], blue, 256*sizeof(*video->gamma));	}	/* Gamma correction always possible on split palettes */	if ( (screen->flags & GAL_HWPALETTE) == GAL_HWPALETTE ) {		GAL_Palette *pal = screen->format->palette;		/* If physical palette has been set independently, use it */		if(video->physpal)		        pal = video->physpal;		      		GAL_SetPalette(screen, GAL_PHYSPAL,			       pal->colors, 0, pal->ncolors);		return 0;	}	/* Try to set the gamma ramp in the driver */	succeeded = -1;	if ( video->SetGammaRamp ) {		succeeded = video->SetGammaRamp(this, video->gamma);	} else {		GAL_SetError("Gamma ramp manipulation not supported");	}	return succeeded;}int GAL_GetGammaRamp(Uint16 *red, Uint16 *green, Uint16 *blue){	GAL_VideoDevice *video = current_video;	GAL_VideoDevice *this  = current_video;		/* Lazily allocate the gamma table */	if ( ! video->gamma ) {		video->gamma = malloc(3*256*sizeof(*video->gamma));		if ( ! video->gamma ) {			GAL_OutOfMemory();			return -1;		}		if ( video->GetGammaRamp ) {			/* Get the real hardware gamma */			video->GetGammaRamp(this, video->gamma);		} else {			/* Assume an identity gamma */			int i;			for ( i=0; i<256; ++i ) {				video->gamma[0*256+i] = (i << 8) | i;				video->gamma[1*256+i] = (i << 8) | i;				video->gamma[2*256+i] = (i << 8) | i;			}		}	}	/* Just copy from our internal table */	if ( red ) {		memcpy(red, &video->gamma[0*256], 256*sizeof(*red));	}	if ( green ) {		memcpy(green, &video->gamma[1*256], 256*sizeof(*green));	}	if ( blue ) {		memcpy(blue, &video->gamma[2*256], 256*sizeof(*blue));	}	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合电影一区二区三区| 92国产精品观看| 91精品欧美久久久久久动漫| 一区二区欧美视频| 精品视频在线看| 日韩精品乱码av一区二区| 91精品在线一区二区| 日本成人在线视频网站| 精品国产91洋老外米糕| 国产馆精品极品| 成人欧美一区二区三区黑人麻豆| 99国内精品久久| 夜夜揉揉日日人人青青一国产精品| 一本一道综合狠狠老| 亚洲一区二区三区四区在线观看| 91精品国产福利| 国产一区二区在线观看免费| 国产精品五月天| 欧美写真视频网站| 日本美女一区二区三区视频| 国产肉丝袜一区二区| 91小视频在线| 日本亚洲电影天堂| 久久久精品免费观看| 91福利资源站| 久久99精品国产麻豆婷婷洗澡| 国产喷白浆一区二区三区| 欧美性生活影院| 久久成人麻豆午夜电影| 国产精品久久久99| 欧美日韩视频不卡| 国产黑丝在线一区二区三区| 亚洲成人av一区二区三区| 久久久久久久久免费| 精品污污网站免费看| 国产精品99久久久久| 五月天欧美精品| 国产精品久久久久久久久免费丝袜| 51精品久久久久久久蜜臀| 99精品久久久久久| 极品少妇xxxx精品少妇偷拍| 亚洲综合男人的天堂| 亚洲国产高清在线观看视频| 51久久夜色精品国产麻豆| 91麻豆精品秘密| 国产激情视频一区二区在线观看| 亚洲6080在线| 一二三区精品视频| 国产精品毛片a∨一区二区三区| 色88888久久久久久影院野外| 狠狠色狠狠色综合| 一区二区欧美国产| 久久久久久久久久美女| 成人免费视频播放| 国产中文字幕一区| 亚洲一区二区三区四区在线免费观看 | 天堂午夜影视日韩欧美一区二区| 久久综合色天天久久综合图片| 91免费版在线| 国模套图日韩精品一区二区| 亚洲高清视频的网址| 欧美韩日一区二区三区| 91精品国产免费| 97久久超碰精品国产| 日产精品久久久久久久性色| 一色桃子久久精品亚洲| 欧美电影免费观看高清完整版在线| 91一区二区三区在线观看| 日本视频在线一区| 亚洲人成精品久久久久久 | 美女mm1313爽爽久久久蜜臀| 国产精品视频你懂的| 欧美日韩视频在线第一区| 成人性色生活片免费看爆迷你毛片| 激情欧美日韩一区二区| 爽爽淫人综合网网站| 亚洲精选视频在线| 国产精品家庭影院| 国产亚洲一二三区| 精品国产一区二区三区久久久蜜月 | 日本va欧美va精品| 亚洲影院理伦片| 亚洲三级在线播放| 中文字幕欧美激情一区| 欧美日韩一区成人| 色婷婷久久综合| 波多野结衣在线aⅴ中文字幕不卡| 精品一区二区三区免费播放| 日韩av网站在线观看| 日本特黄久久久高潮| 亚洲一区二区三区影院| 亚洲乱码国产乱码精品精98午夜| 中文字幕五月欧美| 国产精品国产三级国产普通话蜜臀 | 夜夜爽夜夜爽精品视频| 亚洲男同性恋视频| 一区二区三区中文字幕精品精品 | 日韩欧美一区二区视频| 欧美一区二区三区啪啪| 欧美精品tushy高清| 欧美日产在线观看| 91精品国产美女浴室洗澡无遮挡| 欧美日韩中文另类| 欧美一区二区三区播放老司机| 欧美久久久久久蜜桃| 91免费版pro下载短视频| 91视频.com| 欧美日韩在线三区| 欧美男男青年gay1069videost| 69堂成人精品免费视频| 日韩一区二区电影网| 精品处破学生在线二十三| 久久品道一品道久久精品| 国产日韩欧美综合一区| 国产精品视频在线看| 亚洲免费视频中文字幕| 午夜久久久久久| 午夜精品视频在线观看| 一区二区三区美女视频| 麻豆国产欧美一区二区三区| 国产伦精品一区二区三区在线观看| 另类欧美日韩国产在线| 国产精品一区二区在线观看网站| 成人精品视频一区二区三区尤物| eeuss鲁片一区二区三区在线观看| 色噜噜狠狠成人中文综合| 51精品秘密在线观看| 久久精品人人做人人爽人人| 亚洲同性gay激情无套| 午夜精品福利一区二区三区av| 喷水一区二区三区| 成人久久视频在线观看| 欧美视频精品在线观看| 日韩一卡二卡三卡国产欧美| 亚洲国产精品成人综合色在线婷婷| 伊人色综合久久天天人手人婷| 日韩vs国产vs欧美| 成人av小说网| 欧美一区二区在线观看| 日韩精品一区二区三区在线播放 | 4438x成人网最大色成网站| 久久影音资源网| 亚洲欧美视频在线观看| 蜜桃av一区二区在线观看| 91日韩精品一区| 欧美一级黄色大片| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 中文成人av在线| 一区二区三区国产| 成人国产亚洲欧美成人综合网| 欧美人伦禁忌dvd放荡欲情| 国产精品久久久久久户外露出 | 国产精品456| 欧美午夜在线观看| 国产精品拍天天在线| 毛片不卡一区二区| 在线欧美日韩精品| 国产日韩av一区| 精品写真视频在线观看| 欧美视频一区在线| 亚洲色欲色欲www在线观看| 日韩成人午夜电影| 99re免费视频精品全部| 久久久亚洲精品一区二区三区| 婷婷久久综合九色综合伊人色| av电影天堂一区二区在线观看| 亚洲精品在线三区| 男女性色大片免费观看一区二区| 色8久久人人97超碰香蕉987| 国产精品美女久久久久久久久久久| 另类欧美日韩国产在线| 欧美日韩电影在线| 亚洲国产高清在线| 国产一区二区女| 欧美不卡一区二区三区四区| 爽爽淫人综合网网站| 欧美日韩在线一区二区| 久久综合成人精品亚洲另类欧美| 国产精品1区二区.| 国产亚洲一区二区三区| 国产精品一级在线| 欧美va亚洲va在线观看蝴蝶网| 婷婷中文字幕综合| 欧美精品v国产精品v日韩精品| 亚洲一区在线观看网站| 在线观看国产91| 日韩和欧美的一区| 8v天堂国产在线一区二区| 丝袜美腿一区二区三区| 91麻豆精品国产91久久久| 日韩av不卡在线观看| 日韩视频在线永久播放| 久久成人免费日本黄色| 久久嫩草精品久久久精品| 久久99在线观看| 国产色91在线| 91免费视频大全| 亚洲美女一区二区三区| 欧美色男人天堂| 欧美a级一区二区|