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

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

?? dib.cpp

?? 自己寫的一個分形程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// Dib.cpp: implementation of the CDib class.
//
//	Creator : El Barto (ef00@luc.ac.be)
//	Location : http://www.luc.ac.be/~ef00/ebgfx
//	Date : 09-04-98
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Dib.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDib::CDib ()
{
	m_Bits=NULL;
	m_Bitmap=NULL;
	m_Size=CSize ( 0, 0 );
}

CDib::~CDib ()
{
	Destroy ();
}

BOOL CDib::Create ( int Width, int Height )
{
	Destroy ();

	ZeroMemory ( &m_Info, sizeof (BITMAPINFO) );

	m_Info.bmiHeader.biSize=sizeof (BITMAPINFOHEADER);
	m_Info.bmiHeader.biWidth=Width;
	m_Info.bmiHeader.biHeight=Height;
	m_Info.bmiHeader.biPlanes=1;
	m_Info.bmiHeader.biBitCount=32; 
	m_Info.bmiHeader.biCompression=BI_RGB;
	m_Info.bmiHeader.biSizeImage=Width*Height*4;
	
	m_Bitmap=CreateDIBSection ( NULL, &m_Info, DIB_RGB_COLORS, (void **)&m_Bits, NULL, NULL ); 

	if ( m_Bitmap )
	{
		m_Size=CSize ( Width, Height );
		return TRUE;
	}
	else
	{
		m_Size=CSize ( 0, 0 );
		return FALSE;
	}
}

BOOL CDib::Destroy ()
{
	if ( m_Bitmap )
		DeleteObject ( m_Bitmap );
	m_Bitmap=NULL;
	m_Size=CSize ( 0, 0 );
	
	return TRUE;
}

void CDib::CopyDC ( CDC *pDC, int x, int y )
{
	SetDIBitsToDevice ( pDC->m_hDC, x, y, m_Size.cx, m_Size.cy, 0, 0, 0, m_Size.cy, m_Bits, &m_Info, 0); 
}

void CDib::PasteDC ( CDC *pDC, int x, int y, int w, int h )
{
	// If DibSize Wrong Re-Create Dib
	if ( (m_Size.cx!=w) || (m_Size.cy!=h) )
		Create ( w, h );
	
	CDC BufferDC;
	CBitmap BufferBitmap, *OldBitmap;

	BufferDC.CreateCompatibleDC ( pDC );
	BufferBitmap.CreateCompatibleBitmap ( pDC, w, h );
	OldBitmap=BufferDC.SelectObject ( &BufferBitmap );
	BufferDC.FillSolidRect ( 0, 0, w, h, 0 );
	BufferDC.BitBlt ( 0, 0, w, h, pDC, x, y, SRCCOPY );
	BufferDC.SelectObject ( OldBitmap );
	GetDIBits ( pDC->m_hDC, HBITMAP(BufferBitmap), 0, h, m_Bits, &(m_Info), DIB_RGB_COLORS ); 
}

void CDib::SetBitmap ( CDC *pDC, CBitmap *pBitmap )
{
	if ( m_Bitmap )
		GetDIBits ( pDC->m_hDC, HBITMAP(*pBitmap), 0, m_Size.cy, m_Bits, &(m_Info), DIB_RGB_COLORS ); 
}

void CDib::Fill ( int R, int G, int B )
{
	COLORREF Color=RGB ( B, G, R );
	int Size=m_Size.cx*m_Size.cy;

	for ( int i=0; i<Size; i++ )
		m_Bits[i]=Color;
}

void CDib::FillGlass ( int R, int G, int B, int A )
{
	BYTE *dst=(BYTE*)m_Bits;
	int Size=m_Size.cx*m_Size.cy;
		
	while ( Size-- )
	{
		dst[0]=(BYTE)(((B-dst[0])*A+(dst[0]<<8))>>8);
		dst[1]=(BYTE)(((G-dst[1])*A+(dst[1]<<8))>>8);
		dst[2]=(BYTE)(((R-dst[2])*A+(dst[2]<<8))>>8);	
		dst+=4;
	}
}

void CDib::FillStippledGlass ( int R, int G, int B )
{	
	COLORREF Color=RGB ( B, G, R );
	int w=m_Size.cx;
	int h=m_Size.cy;

	for ( int j=0; j<w; j++ )
	{
		for ( int i=0; i<h; i++ )
		{
			m_Bits[j*w+i]=((i+j)&0x1) ? m_Bits[j*w+i] : Color;
		}
	}
}

void CDib::Copy ( CDib *Dib )
{
	// If DibSize Wrong Re-Create Dib
	if ( (Dib->m_Size.cx!=m_Size.cx) || (Dib->m_Size.cy!=m_Size.cy) )
		Dib->Create ( m_Size.cx, m_Size.cy );
	// do Copy
	memcpy ( Dib->m_Bits, m_Bits, m_Size.cx*m_Size.cy*4 );
}

void CDib::Paste ( CDib *Dib )
{
	// If DibSize Wrong Re-Create Dib
	if ( (m_Size.cx!=Dib->m_Size.cx) || (m_Size.cy!=Dib->m_Size.cy) )
		Create ( Dib->m_Size.cx, Dib->m_Size.cx );
	// do Paste
	memcpy ( m_Bits, Dib->m_Bits, m_Size.cx*m_Size.cy*4 );
}

void CDib::Blend ( CDib *Dib, int A )
{
	if ( m_Size!=Dib->m_Size )
		return;

	BYTE *src=(BYTE*)Dib->m_Bits;
	BYTE *dst=(BYTE*)m_Bits;
	int Size=m_Size.cx*m_Size.cy;
		
	while ( Size-- )
	{
		dst[0]=(BYTE)(((src[0]-dst[0])*A+(dst[0]<<8))>>8);
		dst[1]=(BYTE)(((src[1]-dst[1])*A+(dst[1]<<8))>>8);
		dst[2]=(BYTE)(((src[2]-dst[2])*A+(dst[2]<<8))>>8);	
		dst+=4;
		src+=4;
	}
}

void CDib::Darken ( CDib *Dib )
{
	if ( m_Size!=Dib->m_Size )
		return;

	BYTE *src=(BYTE*)Dib->m_Bits;
	BYTE *dst=(BYTE*)m_Bits;
	int Size=m_Size.cx*m_Size.cy;
		
	while ( Size-- )
	{
		dst[0]=(BYTE)((src[0]<dst[0]) ? src[0] : dst[0]);
		dst[1]=(BYTE)((src[1]<dst[1]) ? src[1] : dst[1]);
		dst[2]=(BYTE)((src[2]<dst[2]) ? src[2] : dst[2]);	
		dst+=4;
		src+=4;
	}
}

void CDib::Difference ( CDib *Dib )
{
	if ( m_Size!=Dib->m_Size )
		return;

	BYTE *src=(BYTE*)Dib->m_Bits;
	BYTE *dst=(BYTE*)m_Bits;
	int Size=m_Size.cx*m_Size.cy;
		
	while ( Size-- )
	{
		int Difference;
		Difference=src[0]-dst[0];
		dst[0]=(BYTE)((Difference<0) ? -Difference : Difference);
		Difference=src[1]-dst[1];
		dst[1]=(BYTE)((Difference<0) ? -Difference : Difference);
		Difference=src[2]-dst[2];
		dst[2]=(BYTE)((Difference<0) ? -Difference : Difference);	
		dst+=4;
		src+=4;
	}
}

void CDib::Lighten ( CDib *Dib )
{
	if ( m_Size!=Dib->m_Size )
		return;

	BYTE *src=(BYTE*)Dib->m_Bits;
	BYTE *dst=(BYTE*)m_Bits;
	int Size=m_Size.cx*m_Size.cy;
		
	while ( Size-- )
	{
		dst[0]=(BYTE)((src[0]>dst[0]) ? src[0] : dst[0]);
		dst[1]=(BYTE)((src[1]>dst[1]) ? src[1] : dst[1]);
		dst[2]=(BYTE)((src[2]>dst[2]) ? src[2] : dst[2]);	
		dst+=4;
		src+=4;
	}
}

void CDib::Multiply ( CDib *Dib )
{
	if ( m_Size!=Dib->m_Size )
		return;

	BYTE *src=(BYTE*)Dib->m_Bits;
	BYTE *dst=(BYTE*)m_Bits;
	int Size=m_Size.cx*m_Size.cy;
		
	while ( Size-- )
	{
		dst[0]=(BYTE)(((src[0])*(dst[0]))>>8);
		dst[1]=(BYTE)(((src[1])*(dst[1]))>>8);
		dst[2]=(BYTE)(((src[2])*(dst[2]))>>8);	
		dst+=4;
		src+=4;
	}
}

void CDib::Screen ( CDib *Dib )
{
	if ( m_Size!=Dib->m_Size )
		return;

	BYTE *src=(BYTE*)Dib->m_Bits;
	BYTE *dst=(BYTE*)m_Bits;
	int Size=m_Size.cx*m_Size.cy;
		
	while ( Size-- )
	{
		dst[0]=(BYTE)(255-(((255-src[0])*(255-dst[0]))>>8));
		dst[1]=(BYTE)(255-(((255-src[1])*(255-dst[1]))>>8));
		dst[2]=(BYTE)(255-(((255-src[2])*(255-dst[2]))>>8));	
		dst+=4;
		src+=4;
	}
}

//////////////////////////////////////////////////////////////////////
// Rectangle Functions
//////////////////////////////////////////////////////////////////////

void CDib::CopyRect ( CDib *Dib, int x, int y )
{
	// Clip Rect
	int px=(x>=0) ? x : 0;
	int py=(y>=0) ? y : 0;
	int dx=((x+Dib->m_Size.cx)<m_Size.cx) ? Dib->m_Size.cx : m_Size.cx-x;
	int dy=((y+Dib->m_Size.cy)<m_Size.cy) ? Dib->m_Size.cy : m_Size.cy-y;
	dx=(x>=0) ? dx : dx + x;
	dy=(y>=0) ? dy : dy + y;

	// If Nothing to Copy return
	if ( (dx<=0) || (dy<=0) )
		return;
	// If DibSize Wrong Re-Create Dib
	if ( (dx!=Dib->m_Size.cx) || (dy!=Dib->m_Size.cy) )
		Dib->Create ( dx, dy );

	// Prepare Buffer Addresses
	COLORREF *src=m_Bits+(py*m_Size.cx)+px;
	COLORREF *dst=Dib->m_Bits;

	// Do Copy
	while ( dy-- )
	{
		for ( int i=0; i<dx; i++ )
			dst[i]=src[i];
		src+=m_Size.cx;
		dst+=Dib->m_Size.cx;
	}
}

void CDib::PasteRect ( CDib *Dib, int x, int y )
{
	// Clip Rect
	int px=(x>=0) ? x : 0;
	int py=(y>=0) ? y : 0;
	int dx=((x+Dib->m_Size.cx)<m_Size.cx) ? Dib->m_Size.cx : m_Size.cx-x;
	int dy=((y+Dib->m_Size.cy)<m_Size.cy) ? Dib->m_Size.cy : m_Size.cy-y;
	dx=(x>=0) ? dx : dx + x;
	dy=(y>=0) ? dy : dy + y;

	// If Nothing to Paste return
	if ( (dx<=0) || (dy<=0) )
		return;

	// Prepare Buffer Addresses
	COLORREF *src=Dib->m_Bits+((py-y)*Dib->m_Size.cx)+px-x;
	COLORREF *dst=m_Bits+(py*m_Size.cx)+px;

	// Do Paste
	while ( dy-- )
	{
		for ( int i=0; i<dx; i++ )
			dst[i]=src[i];
		src+=Dib->m_Size.cx;
		dst+=m_Size.cx;
	}
}

void CDib::FillRect ( int x, int y, int w, int h, int R, int G, int B )
{
	// Clip Rect
	int px=(x>=0) ? x : 0;
	int py=(y>=0) ? y : 0;
	int dx=((x+w)<m_Size.cx) ? w : m_Size.cx-x;
	int dy=((y+h)<m_Size.cy) ? h : m_Size.cy-y;
	dx=(x>=0) ? dx : dx + x;
	dy=(y>=0) ? dy : dy + y;

	// If Nothing to Fill return
	if ( (dx<=0) || (dy<=0) )
		return;

	// Prepare Buffer Address
	COLORREF *dst=m_Bits+(py*m_Size.cx)+px;
	COLORREF Color=RGB ( B, G, R );

	// Do Fill
	while ( dy-- )
	{
		for ( int i=0; i<dx; i++ )
		{
			dst[i]=Color;	
		}
		dst+=m_Size.cx;
	}
}

void CDib::FillGlassRect ( int x, int y, int w, int h, int R, int G, int B, int A )
{
	// Clip Rect
	int px=(x>=0) ? x : 0;
	int py=(y>=0) ? y : 0;
	int dx=((x+w)<m_Size.cx) ? w : m_Size.cx-x;
	int dy=((y+h)<m_Size.cy) ? h : m_Size.cy-y;
	dx=(x>=0) ? dx : dx + x;
	dy=(y>=0) ? dy : dy + y;

	// If Nothing to FillGlass return
	if ( (dx<=0) || (dy<=0) )
		return;

	// Prepare Buffer Address
	BYTE *dst=(BYTE *)m_Bits+((py*m_Size.cx)+px)*4;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美人妖巨大在线| 粉嫩aⅴ一区二区三区四区| 丝袜亚洲另类丝袜在线| 99久久国产免费看| 久久日韩粉嫩一区二区三区| 99精品在线免费| 欧美一区二区三区在线看| 91免费国产视频网站| 色狠狠色狠狠综合| 精品视频一区二区三区免费| 精品在线观看免费| 免费成人结看片| 亚洲乱码日产精品bd| 五月综合激情婷婷六月色窝| 日韩黄色免费网站| 91麻豆精东视频| 久久久亚洲国产美女国产盗摄| 亚洲一级二级在线| 蜜臀久久久久久久| 国产精品久久久久久久久图文区| 韩国精品在线观看| 国产三级一区二区三区| 色综合久久综合网欧美综合网| 成人黄色片在线观看| 亚洲成人av在线电影| 精品少妇一区二区三区在线视频| 精品国产91九色蝌蚪| 国产精品免费网站在线观看| 国产成人在线影院| 日韩美女一区二区三区四区| 亚洲第一福利一区| 在线精品视频免费播放| 久久久91精品国产一区二区三区| 精品亚洲成a人| 欧美日本在线观看| 亚洲精品视频在线观看免费| 成人性色生活片免费看爆迷你毛片| 欧美一区二区三区在| 午夜av电影一区| 欧美欧美欧美欧美| 亚洲成人一二三| 欧美一级淫片007| 天天免费综合色| 日韩一级黄色片| 蜜桃传媒麻豆第一区在线观看| 91精品午夜视频| 夜夜嗨av一区二区三区| 中文字幕免费观看一区| av一区二区久久| 国产精品久久久久久福利一牛影视 | 精品国产精品网麻豆系列| 无吗不卡中文字幕| 精品久久久久久久人人人人传媒 | 午夜精品久久久久影视| 岛国一区二区三区| 国产乱人伦偷精品视频免下载| 亚洲一区二区三区不卡国产欧美| 亚洲视频中文字幕| 国产视频一区在线观看| 久久久久久免费| 欧美日韩一区二区不卡| 色悠悠亚洲一区二区| www.亚洲精品| 粗大黑人巨茎大战欧美成人| 久久久久久久久97黄色工厂| 成人美女视频在线观看18| 中文字幕一区在线观看视频| 91论坛在线播放| 亚洲高清免费在线| 欧美成人video| 91亚洲永久精品| 亚洲国产视频在线| 欧美日韩亚洲综合在线 | 日韩精品在线一区| 成人永久免费视频| 一区二区三区四区蜜桃| 欧美少妇一区二区| 久久超级碰视频| 中文字幕日韩一区| 精品1区2区在线观看| 国产精品一区二区黑丝| 亚洲免费av在线| 欧美日韩一区在线| 悠悠色在线精品| 国产精品视频一二三区| 欧美性欧美巨大黑白大战| 成人免费视频网站在线观看| 亚洲国产aⅴ天堂久久| 欧美国产国产综合| 欧美久久一二区| 久久精品国产成人一区二区三区| 中文字幕在线观看一区| 欧美美女一区二区在线观看| av成人免费在线观看| 美女一区二区久久| 日韩影院精彩在线| 综合久久久久久久| 精品国产乱码久久久久久蜜臀| 99re热这里只有精品免费视频| 日韩av一级电影| 日韩高清欧美激情| 中文字幕一区二区三区在线不卡| 国产女人18毛片水真多成人如厕| 欧美主播一区二区三区| 成人免费毛片嘿嘿连载视频| 老司机午夜精品| 亚洲成人动漫av| 午夜久久久久久久久| 国产精品久久久久久久久快鸭| 国产欧美精品一区二区色综合朱莉| 欧美日韩国产一区| 成人黄色在线视频| 成人美女视频在线看| 国产精品乱人伦| 91精品在线免费| 欧美网站大全在线观看| 亚洲第一精品在线| 欧美日韩美女一区二区| 亚洲三级电影全部在线观看高清| 国产一区视频导航| 综合av第一页| 国产无一区二区| 成人综合婷婷国产精品久久免费| 精品久久久久久久久久久久包黑料| 欧美日韩精品一区二区| 日韩午夜精品视频| 91精品国产免费| 日韩欧美国产不卡| 欧美日韩日日骚| 69精品人人人人| 欧美日韩午夜影院| 欧美一区二区在线看| 欧美高清视频一二三区| 欧美大度的电影原声| 欧美大片在线观看一区二区| 在线一区二区观看| 欧美人成免费网站| 717成人午夜免费福利电影| 日韩欧美国产不卡| 久久影音资源网| 日韩毛片精品高清免费| 综合网在线视频| 午夜婷婷国产麻豆精品| 日韩国产精品91| 日本成人在线网站| 懂色中文一区二区在线播放| 成人少妇影院yyyy| 在线电影国产精品| 欧美mv和日韩mv国产网站| 中文字幕欧美日本乱码一线二线| 日韩一区欧美小说| 日韩精品一二三四| 国产精品亚洲午夜一区二区三区 | 亚洲美女免费在线| 国产精品成人一区二区艾草 | 国产精品99精品久久免费| 色视频成人在线观看免| 欧美午夜不卡视频| 欧美本精品男人aⅴ天堂| 亚洲视频一二区| 午夜亚洲国产au精品一区二区| 国产成人精品免费| 日本韩国精品在线| 久久精品男人天堂av| 亚洲另类在线视频| 国产一区二区福利| 91高清在线观看| 国产欧美日韩综合| 亚洲国产精品精华液网站| 国产精品嫩草久久久久| 美女视频第一区二区三区免费观看网站 | 日本少妇一区二区| 色综合久久88色综合天天免费| 717成人午夜免费福利电影| 亚洲免费资源在线播放| 免费视频最近日韩| 欧美天堂一区二区三区| 亚洲精品乱码久久久久久久久 | 欧美主播一区二区三区| 欧美日韩亚洲国产综合| 欧美国产精品中文字幕| 午夜激情久久久| 成人福利视频在线看| 日韩欧美不卡一区| 亚洲成人动漫在线观看| 午夜精品在线看| av资源网一区| 日韩一区二区三区视频在线| 激情图区综合网| 欧美一区二区三区在线视频| 国产精品电影院| 亚洲一区二区综合| 91极品视觉盛宴| 中文在线免费一区三区高中清不卡| 久久av资源网| 在线不卡中文字幕| 五月天丁香久久| 99久久精品国产导航| 中文一区在线播放| 国产成人av一区|