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

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

?? bitmap.cpp

?? 游戲c++開發簡例
?? CPP
字號:
/* 
*	移植自WatcomC++,于1999年4月14日
*
*/

#include <string.h>
#include <malloc.h>
#include "gl.h"

ScreenInfo screenInfo = { 640, 480, 16 };
DWORD colorMask[6];
DWORD rbMask, gMask;
extern DWORD rbMask, gMask;
extern DWORD colorMask[6];

int InitGraphicLibrary( int colorDepth )
{
	if( colorDepth == 15 ){
		colorMask[0] = colorMask[1] = 0x7c007c00;
		colorMask[2] = colorMask[3] = 0x03e003e0;
		colorMask[4] = colorMask[5] = 0x001f001f;
		rbMask = 0x7c1f;
		gMask = 0x03e0;
		screenInfo.colorDepth = 15;
	}
	else if( colorDepth == 16 ){
		colorMask[0] = colorMask[1] = 0xf800f800;
		colorMask[2] = colorMask[3] = 0x07e007e0;
		colorMask[4] = colorMask[5] = 0x001f001f;
		rbMask = 0xf81f;
		gMask = 0x03e0;
		screenInfo.colorDepth = 16;
	}
	else 
		return -1;

	return 0;
}

Bitmap* CreateBitmap( int w,  int h )
{
	return CreateBitmapEx( w, h, screenInfo.colorDepth );
}

Bitmap* CreateBitmapEx( int w, int h, int colorDepth )
{
	Bitmap* bmp;
	
	switch( colorDepth ){
	case 8:
		bmp = new Bitmap8;
		if( bmp )
			bmp->colorKey = COLORKEY8;
		break;
		
	case 15:
		bmp = new Bitmap15;
		if( bmp )
			bmp->colorKey = COLORKEY15;
		break;
		
	case 16:
/*		if( cpu.mmx ) bmp = new Bitmap16MMX;
		else*/ bmp = new Bitmap16;
		if( bmp )
			bmp->colorKey = COLORKEY16;
		break;
		
	case 24:	
		bmp = new Bitmap24;
		if( bmp )
			bmp->colorKey = COLORKEY24;
		break;
	
	case 32:
		bmp = new Bitmap32;
		if( bmp )
			bmp->colorKey = COLORKEY32;
		break;
			
	default:
		return NULL;
	}
	
	if( bmp == NULL ) 
		return NULL;
	
	if( w % 2 )	// 寬度調整為偶數
		w ++;
	bmp->dat = new char[ w * h * BYTES_PER_PIXEL( colorDepth ) + 8 ];	// add 8 for align at 8 bytes
	if( bmp->dat == NULL ){
		delete bmp;
		return NULL;
	}

	bmp->line = (char**)new char[ h * sizeof( char * )];
	if( bmp->line == NULL ){
		delete bmp;
		return NULL;
	}

	// 八字節對齊
	if( (DWORD)bmp->dat & 0x7 != 0 )
		bmp->line[0] = ( char* )((( DWORD )bmp->dat + 8 ) & 0xfffffff8 );
	else
		bmp->line[0] = (char*)bmp->dat;
	for( int i=1; i<h; i++ ){
		bmp->line[ i ] = bmp->line[ i-1 ] + w * BYTES_PER_PIXEL( colorDepth );
	}

	bmp->width = bmp->cr = w;	
	bmp->height = bmp->cb = h;
	bmp->colorDepth = colorDepth;
	bmp->clip = true;
	bmp->cl = bmp->ct = 0;
	bmp->pitch = w * BYTES_PER_PIXEL( colorDepth );

	return bmp;
}
//從磁盤讀入圖像,如果convert為1,則格式轉換成主畫面的格式
//僅支持tga,bmp兩種文件格式
Bitmap* LoadPicture( char* filename, int convert, Palette* pal )
{
	Bitmap *temp;
	if( filename == NULL )
		return NULL;

	char *p = filename + strlen( filename ) - 4;
	if( stricmp( p, ".tga" ) == 0 )
		temp = LoadTga( filename, pal );
	else if( stricmp( p, ".bmp" ) == 0 )
		temp = LoadBmp( filename, pal );
	else
		return NULL;

	if( temp && convert )
		temp = temp->ConvertFormat( screenInfo.colorDepth );

	return temp;
}

int Bitmap::drawMode = Bitmap::SolidMode;
int Bitmap::alpha = 255;

Bitmap::Bitmap( )
{
	dat = NULL;
	line = NULL;
	clip = false;
	color = 0;
	colorKey = 0;
}

void Bitmap::SetClip( int l, int t, int r, int b )
{
	clip = true;
	int temp;
	if( l > r ){
		temp = l;
		l = r;
		r = temp;
	}
	if( b < t ){
		temp = t;
		t = b;
		b = temp;
	}
	cl = l;
	if( l < 0 )
		cl = 0;
	ct = t;
	if( t < 0 ) 
		ct = 0;
	cr = r;
	if( r > width )
		cr = width;
	cb = b;
	if( b > height )
		cb = height;
}

void Bitmap::SetClip( int enable )
{
	clip = ( enable ) ? true : false;
}

void Bitmap::SetDrawMode( int drawmode, int alpha )
{
	if( drawmode & SolidMode )
		drawMode = SolidMode;
	else if( drawmode & XorMode )
		drawMode = XorMode;
	else if( drawmode & AlphaMode ){
		drawMode = AlphaMode;
		Bitmap::alpha = alpha;
	}
}
/////////////////////////////////////////////////////////////////////

Palette::Palette()
{
	count = 0;
	memset( palette, 0, sizeof( ColorEntry )*PAL_SIZE );
}

void Palette::AddRef( void )
{
	count ++;
}

void Palette::Release( void )
{
	count --;
}

void Palette::Destroy( void )
{
	if( count == 0 )
		delete this;
}

void Palette::Convert( void )
{
	int i;
	
	switch( screenInfo.colorDepth ){
	case 8:
		memcpy( screenPal, palette, PAL_SIZE * sizeof( DWORD ));
		break;
		
	case 15:
		for( i=0; i<PAL_SIZE; i++ ){
			screenPal[i] = (( palette[i].rgbRed & 0xf8 ) << 7 )
					| (( palette[i].rgbGreen & 0xf8 ) << 2 )
					| ( palette[i].rgbBlue >> 3 );
		}
		break;
		
	case 16:
		for( i=0; i<PAL_SIZE; i++ ){
			screenPal[i] = ((( short )palette[i].rgbRed & 0xf8 ) << 8 )
					| ((( short )palette[i].rgbGreen & 0xfc ) << 3 )
					| (( short )palette[i].rgbBlue >> 3 );
		}
		break;
		
	case 24:
	case 32:
		for( i=0; i<PAL_SIZE; i++ ){
			screenPal[i] = palette[i].rgb & 0xffffff;
		}
	break;
	}
}

void Palette::WriteToDisk( FILE *fp, int num )
{
	for( int i=0; i<num; i++ ){
		fwrite( &palette[i].rgb, 4, 1, fp );
	}
}

void Palette::ReadFromDisk( FILE *fp, int num )
{
	for( int i=0; i<num; i++ ){
		fread( &palette[i].rgb, 4, 1, fp );
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91浏览器在线视频| 欧美亚洲动漫制服丝袜| 日韩高清不卡一区| 亚洲电影一级黄| 亚洲视频 欧洲视频| 亚洲免费观看在线视频| 亚洲欧美偷拍卡通变态| 亚洲黄色av一区| 亚洲人一二三区| 视频精品一区二区| 日韩二区三区在线观看| 麻豆一区二区99久久久久| 日韩成人dvd| 国产麻豆91精品| 成人夜色视频网站在线观看| 成人教育av在线| 成人一区二区三区| 91国内精品野花午夜精品| 欧美性一级生活| 日韩一区二区不卡| 日本一区二区三区四区| 亚洲视频一区在线观看| 亚洲sss视频在线视频| 激情文学综合网| 99久久99久久精品国产片果冻| 94-欧美-setu| 日韩欧美一区二区久久婷婷| 久久精子c满五个校花| 日韩伦理电影网| 日韩电影在线免费观看| 国产aⅴ综合色| 欧美美女直播网站| 51午夜精品国产| 久久久久久久电影| 亚洲成人午夜影院| 高清av一区二区| 欧美精品久久天天躁| 欧美国产视频在线| 日日夜夜免费精品视频| 国产 欧美在线| 欧美久久久久久久久中文字幕| 久久久99久久| 日本午夜一本久久久综合| 国产成人免费在线观看不卡| 欧美色中文字幕| 国产午夜一区二区三区| 丝袜美腿亚洲一区二区图片| 丁香啪啪综合成人亚洲小说| 欧美精品第一页| 亚洲乱码中文字幕综合| 国产精品一级二级三级| 制服丝袜成人动漫| 亚洲女爱视频在线| 国产成人av电影免费在线观看| 欧美美女直播网站| 亚洲一二三四区| 国产成a人无v码亚洲福利| 91精品欧美久久久久久动漫 | 成人a免费在线看| 日韩免费看的电影| 香蕉av福利精品导航| 日本韩国视频一区二区| 国产精品午夜在线观看| 国内成人自拍视频| 日韩三级伦理片妻子的秘密按摩| 亚洲一区电影777| 在线亚洲一区二区| 亚洲免费毛片网站| 色婷婷狠狠综合| 玉米视频成人免费看| 91在线观看美女| 亚洲女与黑人做爰| 在线亚洲一区观看| 一区二区在线观看视频| 99国产精品国产精品久久| 国产女同性恋一区二区| 国产盗摄一区二区三区| 久久久久国产精品免费免费搜索| 激情综合五月天| 久久久久9999亚洲精品| 国产不卡在线视频| 国产精品高潮呻吟久久| 9i看片成人免费高清| 亚洲天堂福利av| 在线观看一区二区视频| 亚洲成a人片在线不卡一二三区| 在线视频国产一区| 日本在线不卡一区| www国产精品av| 国产精品18久久久久| 国产女人18毛片水真多成人如厕| 成人免费视频一区二区| 中文一区二区完整视频在线观看 | 国产精品视频第一区| 成人av资源在线观看| 自拍偷拍欧美激情| 欧美另类高清zo欧美| 亚洲电影一区二区三区| 91精品国产综合久久香蕉的特点| 久久精品国产99国产| 久久久久国产精品人| heyzo一本久久综合| 一区二区免费看| 日韩三级中文字幕| 成人av在线一区二区三区| 一区二区三区欧美久久| 欧美一区中文字幕| 成人小视频在线| 日韩精品福利网| 中文字幕二三区不卡| 制服丝袜中文字幕一区| 国产99精品在线观看| 亚洲国产精品一区二区久久恐怖片| 在线综合视频播放| 成人动漫视频在线| 九九九精品视频| 亚洲一区二区三区爽爽爽爽爽| 欧美大尺度电影在线| 欧美性色aⅴ视频一区日韩精品| 裸体歌舞表演一区二区| 亚洲美女在线一区| 久久久久久久久免费| 欧美日韩mp4| 成人黄色小视频在线观看| 奇米精品一区二区三区四区| 国产精品欧美极品| 精品国产乱码久久久久久蜜臀 | 精品国精品自拍自在线| 日本道色综合久久| 丁香激情综合国产| 久久99精品国产| 午夜精品国产更新| 亚洲黄色小视频| 国产精品激情偷乱一区二区∴| 日韩精品一区二区三区中文精品| 91蜜桃免费观看视频| 国产成人自拍网| 极品少妇xxxx精品少妇偷拍| 日本中文字幕一区| 亚洲3atv精品一区二区三区| 18成人在线观看| 国产精品久久二区二区| 久久久美女毛片| 久久久久久久久久久99999| 日韩视频一区在线观看| 欧美久久久一区| 欧美日韩一级视频| 欧美日韩在线免费视频| 欧美视频一区在线| 欧洲视频一区二区| 在线视频中文字幕一区二区| 色先锋久久av资源部| 色拍拍在线精品视频8848| 色综合久久久久综合体桃花网| 91在线国产观看| 色诱视频网站一区| 在线观看免费亚洲| 欧美三区在线观看| 911精品国产一区二区在线| 在线成人免费观看| 欧美一区二区在线观看| 3d成人h动漫网站入口| 欧美一区二区三区人| 精品国产91乱码一区二区三区| 久久老女人爱爱| 亚洲视频 欧洲视频| 夜夜揉揉日日人人青青一国产精品 | 一区二区三区蜜桃网| 亚洲激情网站免费观看| 亚洲成人精品一区二区| 免费观看成人av| 国产精品77777| 色菇凉天天综合网| 91精品久久久久久蜜臀| 国产香蕉久久精品综合网| 国产精品久久精品日日| 亚洲成人一区二区在线观看| 麻豆91在线观看| 成人av午夜影院| 欧美老肥妇做.爰bbww视频| 日韩三级视频在线观看| 国产精品久久看| 天涯成人国产亚洲精品一区av| 美女视频黄免费的久久 | 久久精品无码一区二区三区 | 欧美乱妇15p| 国产亚洲欧美一级| 一区二区三区欧美亚洲| 国内外成人在线| 欧美在线免费观看亚洲| 亚洲精品在线电影| 亚洲欧美另类在线| 国产精品一二三四区| 在线亚洲人成电影网站色www| 久久综合色婷婷| 亚洲永久精品国产| 成人免费三级在线| 欧美一区二区三区四区久久| 亚洲免费av高清| 国产高清在线精品|