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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? bitmaphi.cpp

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

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

BitmapHi::BitmapHi( )
{
}

BitmapHi::~BitmapHi( )
{
	if( dat )
		delete dat;
	if( line )
		delete *line ;
}

DWORD BitmapHi::GetPixel( int x, int y )
{
	if( x < 0 || x >= width || y < 0 || y >= height )
		return -1;

	return ( (( WORD* )line[y])[x] );
}

// drawMode will do its work
// solid xor blend
void BitmapHi::PutPixel( int x, int y )
{
	if( clip ){
		if( x < cl || x >= cr || y < ct || y >= cb )
			return;
	}
	else{
		if( x < 0 || x >= width || y < 0 || y >= height )
			return;
	}
	
	short pixel = color;
	
	if( drawMode & XorMode )
		pixel ^= *(short*)( line[y] + x*2 );
	else if( drawMode & AlphaMode )
		pixel = pixel;//(short)blender->blender[ alpha ]( pixel, *(short*)( line[y] + x*2 ) );
		
	*(WORD*)( line[y] + x*2 ) = pixel;
}


void BitmapHi::Blit( Bitmap* dest, int x, int y, int sx, int sy, int w, int h )
{
	BLITCLIP()

	if( dest == this ){
		if( y > sy )
			BlitInside( x, y, sx, sy, w, h );
		else if( y == sy && sx < x )
			BlitInside( x, y, sx, sy, w, h );
		else
			BlitOutside( (Bitmap16*)dest, x, y, sx, sy, w, h );
	}
	else{
		BlitOutside( (Bitmap16*)dest, x, y, sx, sy, w, h );
	}
}

// the source bitmap and the destination bitmap are the same bitmap  
// reverse must be considered
void BitmapHi::BlitInside( int x, int y, int sx, int sy, int w, int h )
{
	char** line = BitmapHi::line;

	__asm{
		push es;
		mov ax, ds;
		mov es, ax;
		/* copy from the bottom to the top */;
		mov eax, sy;
		mov ebx, h;
		dec ebx;
		add eax, ebx;
		mov sy, eax;
		add y, ebx;
		inc ebx;
		
		mov ecx, w;
		mov edx, sx;
		dec ecx;
		add edx, ecx;
		mov sx, edx;
		add x, ecx;
		std;
		inc ecx;
		shl sx, 1;
		shl x, 1;
		mov edx, y;
		shl eax, 2;
		shl edx, 2;
		
		cmp ecx, 1;
		jg blitinside16_dw;
		
	blitinside16_w: 	/* the width is one word */
		mov esi, line;
		mov edi, esi;
		mov esi, dword ptr [esi+eax];
		add esi, sx;
		mov edi, dword ptr [edi+edx];
		add edi, x;
		mov ecx, w;
		repnz movsw;
		sub eax, 4;
		sub edx, 4;
		dec ebx;
		jnz blitinside16_w;
		jmp blitinside16_end;
		
	blitinside16_dw: 	/* the width is larger than 1 */
		mov ecx, w;
		mov esi, line;
		mov edi, esi;
		mov esi, dword ptr [esi+eax];
		add esi, sx;
		mov edi, dword ptr [edi+edx];
		add edi, x;
		shr ecx, 1;
		jnc blitinside16_dwdw;
		movsw;
	blitinside16_dwdw:
		sub esi, 2;
		sub edi, 2;
		repnz movsd;
		sub eax, 4;
		sub edx, 4;
		dec ebx;
		jnz blitinside16_dw;
		
	blitinside16_end:
		pop es;
	}
}

// blit from a bitmap to another bitmap
// no reverse at all
void BitmapHi::BlitOutside( Bitmap* dest, int x, int y, int sx, int sy, int w, int h )
{
	char** dline = dest->line;
	char** sline = line;
	int dpitch = dest->pitch, spitch = pitch;

	__asm{
		push es;
		mov ax, ds;
		mov es, ax;
		
		mov ebx, h;
		cld;
		mov ecx, w;
		mov eax, y;
		mov edx, sy;
		shl eax, 2;
		shl edx, 2;
		shl sx, 1;
		shl x, 1;
		mov esi, sline;
		mov esi, [esi+edx];
		add esi, sx;
		mov edi, dline;
		mov edi, [edi+eax];
		add edi, x;
		shl ecx, 1;
		mov edx, spitch;
		mov eax, dpitch;
		sub edx, ecx;
		sub eax, ecx;
		shr ecx, 1;
		cmp ecx, 1;
		jg blitoutside16_dwloop;
		
		blitoutside16_w: 	/* width is one word */;
		movsw;
		add esi, edx;
		add edi, eax;
		dec ebx;
		jnz blitoutside16_w;
		jmp blitoutside16_end;
		
		mov ecx, w;
		blitoutside16_dwloop: 	/* width larger than one word */;
		shr ecx, 1;
		jnc blitoutside16_dwl;
		movsw;
	blitoutside16_dwl:
		repnz movsd;
		add esi, edx;
		add edi, eax;
		mov spitch, esi;
		mov ecx, w;
		dec ebx;
		jnz blitoutside16_dwloop;
		
		blitoutside16_end:
		pop es;
	}
}

// blit to another bitmap with SOURCE color key
void BitmapHi::BlitMask( Bitmap* dest, int x, int y, int sx, int sy, int w, int h )
{																		
	BLITCLIP()

	if( dest == this )
		return; /*failed */
	else{
		BlitMasked( (Bitmap*)dest, x, y, sx, sy, w, h );
	}
}

void BitmapHi::BlitMasked( Bitmap* dest, int x, int y, int sx, int sy, int w, int h )
{
	char** dline = dest->line;
	char** sline = line;
	int colorkey = colorKey;

	_asm{
		push es;
		mov ax, ds;
		mov es, ax;
		
		mov eax, colorkey;
		mov ebx, h;
		shl y, 2;
		shl sy, 2;
		shl sx, 1;
		shl x, 1;
		
	blitmasked16_w:
		mov esi, sline;
		add esi, sy;
		mov esi, [esi];
		add esi, sx;
		mov edi, dline;
		add edi, y;
		mov edi, [edi];
		add edi, x;
		mov ecx, w;
		
	blitmasked16_loop:
		mov dx, ds:[esi] 	/* source pixel */;
		add esi, 2;
		cmp dx, ax 	/* is transparent ? */;
		je blitmasked16_skip;
		mov es:[edi], dx;
	blitmasked16_skip:
		add edi, 2;
		loop blitmasked16_loop;
		
		add y, 4;
		add sy, 4;
		dec ebx;
		jnz blitmasked16_w;
		pop es;
	}
}

// clear a rectangle area with the color
// clip will do its work
void BitmapHi::Clear( int l, int t, int w, int h, int color )
{
	char **line = BitmapHi::line;
	color = MakeColor( color );
	
	if( clip ){
		if( l < cl ){
			w -= cl - l;
			l = cl;
		}
		if( t < ct ){
			h -= ct - t;
			t = ct;
		}
		if( l + w > cr )
			w = cr - l;
		if( t + h > cb )
			h = cb - t;
	}
	else{
		if( l < 0 ){
			w += l;
			l = 0;
		}
		if( t < 0 ){
			h += t;
			t = 0;
		}
		if( l + w > width )
			w = width - l;
		if( t + h > height )
			h = height - t;
	}
	
	__asm{
		push es;
		mov ax, ds;
		mov es, ax;
		
		mov eax, color;
		mov ebx, eax;
		shl eax, 16;
		mov edx, t;
		mov ax, bx;
		mov ebx, h;
		shl edx, 2;
		cld;
		mov esi, l;
		shl esi, 1;
		mov ecx, w;
		shr ecx, 1;
		jnc clear16_dw;
		
		jz clear16_onew;
		shr w, 1;
	clear16_dww: /* n long + one word */
		mov edi, line;
		mov edi, [edi+edx];
		add edi, esi;
		mov ecx, w;
		stosw;
		repnz stosd;
		add edx, 4;
		dec ebx;
		jnz clear16_dww;
		jmp clear16_end;
		;
	clear16_onew: 	/* only one word */
		mov edi, line;
		mov edi, [edi+edx];
		add edi, esi;
		stosw;
		add edx, 4;
		dec ebx;
		jnz clear16_onew;
		jmp clear16_end;
		
	clear16_dw: 	/* n long */
		shr w, 1;
	clear16_dwloop:
		mov edi, line;
		mov edi, [edi+edx];
		add edi, esi;
		mov ecx, w;
		repnz stosd;
		add edx, 4;
		dec ebx;
		jnz clear16_dwloop;
		
		clear16_end:
		pop es;
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
福利91精品一区二区三区| 国产精品不卡一区二区三区| 国产一区日韩二区欧美三区| 国产精品久久久久国产精品日日| 欧美日韩亚洲综合一区二区三区 | 国产精品一二三在| 午夜精品久久久久久久 | **欧美大码日韩| 精品sm捆绑视频| 欧美自拍偷拍一区| 风间由美一区二区av101| 日韩不卡一二三区| 一二三区精品福利视频| 国产精品三级电影| 26uuu久久综合| 91精品国产欧美日韩| 91色视频在线| 成人av网址在线| 国产成人午夜高潮毛片| 久久91精品久久久久久秒播| 五月天一区二区| 亚洲成人动漫在线观看| 亚洲精品国产无套在线观| 国产精品久久久久久户外露出 | 欧美精品久久一区二区三区| 99精品国产一区二区三区不卡| 国产成人av一区二区| 精品伊人久久久久7777人| 青青草国产精品亚洲专区无| 亚洲自拍偷拍图区| 一级日本不卡的影视| 一区二区免费在线| 亚洲男同性视频| 亚洲青青青在线视频| 国产精品久久久久一区二区三区共| 久久久99精品免费观看| 精品免费视频.| 亚洲精品一区二区三区蜜桃下载| 日韩午夜在线观看| 欧美一卡二卡在线| 日韩欧美中文字幕公布| 精品免费一区二区三区| 久久欧美一区二区| 国产欧美1区2区3区| 国产日产亚洲精品系列| 欧美激情一区二区三区在线| 国产精品剧情在线亚洲| 国产精品久久久久久久久动漫| 1024亚洲合集| 亚洲国产婷婷综合在线精品| 午夜精品久久久久久久久| 免费人成在线不卡| 国产一区二区精品久久| 不卡视频免费播放| 一本大道久久a久久综合| 欧洲亚洲国产日韩| 6080亚洲精品一区二区| 欧美日韩精品系列| 91精品国产麻豆国产自产在线 | 国产精品一区二区久久精品爱涩| 国产精品亚洲第一区在线暖暖韩国| 国产精品资源在线看| 成人av中文字幕| 91九色02白丝porn| 91精品国产综合久久精品麻豆 | 1000部国产精品成人观看| 亚洲图片欧美综合| 青娱乐精品视频| 国产成人无遮挡在线视频| 99re热这里只有精品视频| 欧美日韩第一区日日骚| 久久亚洲一区二区三区四区| 国产精品成人网| 日韩黄色一级片| 东方欧美亚洲色图在线| 欧美系列日韩一区| 久久综合久久综合九色| 亚洲男同1069视频| 秋霞电影网一区二区| www.日韩精品| 欧美福利一区二区| 国产日韩精品一区| 午夜视黄欧洲亚洲| 丰满放荡岳乱妇91ww| 欧美三电影在线| 国产欧美日韩综合| 日日噜噜夜夜狠狠视频欧美人| 国产寡妇亲子伦一区二区| 欧美私模裸体表演在线观看| 久久久三级国产网站| 亚洲韩国一区二区三区| 国产精品18久久久久久久网站| 欧美日韩在线三级| 久久久久久久综合日本| 午夜影院在线观看欧美| 成人久久久精品乱码一区二区三区 | 精品国产一区二区国模嫣然| 一区二区三区在线视频观看58| 久久精工是国产品牌吗| 色女孩综合影院| 国产日产欧美一区二区三区| 日韩精品电影在线观看| 91蝌蚪porny九色| 久久精品免费在线观看| 日韩不卡在线观看日韩不卡视频| 91丝袜国产在线播放| 久久免费国产精品| 五月婷婷久久丁香| 亚洲精品国久久99热| 色久优优欧美色久优优| 精品一区二区三区免费观看 | 欧美系列在线观看| 国产精品久久久99| 国产麻豆精品一区二区| 欧美久久久一区| 亚洲自拍偷拍图区| 91麻豆免费视频| 欧美激情一区在线观看| 国产成人午夜视频| 久久亚洲综合色| 精品系列免费在线观看| 日韩午夜小视频| 婷婷丁香激情综合| 欧美视频在线一区二区三区| 一区二区在线观看视频在线观看| 成人午夜碰碰视频| 国产亚洲综合av| 国产乱码精品一品二品| 精品三级在线观看| 美女任你摸久久| 日韩一区二区麻豆国产| 日韩专区中文字幕一区二区| 欧美性生活久久| 亚洲成人激情社区| 欧美日韩国产另类一区| 亚洲成人免费在线| 欧美日韩国产美| 蜜桃视频一区二区三区在线观看| 制服丝袜亚洲精品中文字幕| 亚洲成人福利片| 一本久久精品一区二区| 99久久久久久99| 99国产精品久久久| 日本sm残虐另类| 7799精品视频| 免费看精品久久片| 日韩亚洲欧美在线| 国产在线精品一区在线观看麻豆| 欧美成人午夜电影| 琪琪久久久久日韩精品| 精品一区二区三区香蕉蜜桃 | 午夜久久久久久电影| 欧美自拍丝袜亚洲| 三级一区在线视频先锋| 欧美大片日本大片免费观看| 看电影不卡的网站| 久久久精品黄色| 亚洲欧美日韩国产成人精品影院| 麻豆视频观看网址久久| 成人91在线观看| 欧美天天综合网| 国产精品久久久久久久久免费相片 | 国产欧美精品一区aⅴ影院| 久久久www成人免费无遮挡大片| 中文在线资源观看网站视频免费不卡| 国产视频一区二区在线观看| 久久精品日韩一区二区三区| 国产精品日日摸夜夜摸av| 亚洲男人的天堂在线观看| 成人av在线播放网址| 亚洲天天做日日做天天谢日日欢| 91久久精品日日躁夜夜躁欧美| 奇米影视7777精品一区二区| 久久麻豆一区二区| 91视频精品在这里| 秋霞电影一区二区| 中文字幕一区二区三区四区不卡| 欧美另类高清zo欧美| 国产精品一区二区久久精品爱涩| 亚洲美女淫视频| 精品嫩草影院久久| 欧美亚日韩国产aⅴ精品中极品| 久久成人麻豆午夜电影| 亚洲图片激情小说| 精品国产区一区| 在线精品视频免费观看| 韩国av一区二区三区四区| 亚洲美女精品一区| 久久久精品人体av艺术| 精品视频123区在线观看| 国产乱码一区二区三区| 亚洲成国产人片在线观看| 亚洲特级片在线| 日韩欧美亚洲另类制服综合在线| 99麻豆久久久国产精品免费| 亚洲人被黑人高潮完整版| 中文字幕免费不卡| 亚洲视频一区在线观看| 无吗不卡中文字幕| 国产成人在线影院|