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

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

?? dib.cpp

?? 嵌入式linux下的usb驅動
?? CPP
字號:
// Dib.cpp : implementation file
//

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

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

#define pi 3.14159265

CDib::CDib()
{
	m_lWidth = 0;
	m_lHeight = 0;
	m_wBitCount = 0;
	m_nClrUsed = 0;
	m_dwSizeImage = 0;
	m_bIsLoadFile = false;

	m_lpBMPInfo = NULL;
	m_lpLogPal = NULL;
	m_lpImage = NULL;
	m_hdd = 0;
	m_hPal = 0;

}

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

CDib::CDib(LPCTSTR lpszPathName)
{
   	m_lWidth = 0;
	m_lHeight = 0;
	m_wBitCount = 0;
	m_nClrUsed = 0;
	m_dwSizeImage = 0;
	m_bIsLoadFile = false;

	m_lpBMPInfo = NULL;
	m_lpLogPal = NULL;
	m_lpImage = NULL;
	m_hdd = 0;
	m_hPal = 0;

	LoadBMP(lpszPathName);
}

BOOL CDib::LoadBMP(LPCTSTR lpszPathName)
{
   Empty();

   //open a file
   CFile file;
   if(!file.Open(lpszPathName,CFile::modeRead | 
	                                  CFile::shareDenyNone))
   {
	   AfxMessageBox("cann't open the file");
	   return false;
   }

   //read the header of the file
   LPBITMAPFILEHEADER lpBMPFileHeader = (LPBITMAPFILEHEADER)
	           new BYTE[sizeof(BITMAPFILEHEADER)];
   if(!lpBMPFileHeader)
   {
	   AfxMessageBox("not enough memory");
	   file.Close();
	   return false;
   }
   file.Read(lpBMPFileHeader,sizeof(BITMAPFILEHEADER));
   if(lpBMPFileHeader->bfType != 0x4d42)
   {
	   AfxMessageBox("It is not a BMP's file");
	   delete[] lpBMPFileHeader;
	   lpBMPFileHeader = NULL;
	   file.Close();
	   return false;
   }

   //read the structure of the BITMAPINFO 
   m_lpBMPInfo = (LPBITMAPINFO) new BYTE[lpBMPFileHeader->bfOffBits
	                          - sizeof(BITMAPFILEHEADER)];
   if(!m_lpBMPInfo)
   {
	   AfxMessageBox("not enough memory");
	   delete[] lpBMPFileHeader;
	   lpBMPFileHeader = NULL;
	   file.Close();
	   return false;
   }
   file.ReadHuge(m_lpBMPInfo,lpBMPFileHeader->bfOffBits
	                          - sizeof(BITMAPFILEHEADER) );
   m_lWidth = m_lpBMPInfo->bmiHeader.biWidth;
   m_lHeight = m_lpBMPInfo->bmiHeader.biHeight;
   m_wBitCount = m_lpBMPInfo->bmiHeader.biBitCount;
   m_nClrUsed = GetClrUsed();
   BytesPerLine=(m_lWidth * (m_wBitCount / 8) + 3)&~3;//m_lpBMPInfo->bmiHeader.biWidth*m_lpBMPInfo->bmiHeader.biPlanes
							//*m_lpBMPInfo->bmiHeader.biBitCount;
   
   if(m_nClrUsed<=16 && m_nClrUsed !=0)
   {
	   AfxMessageBox("The picture need more biBitCount");
	   delete[] lpBMPFileHeader;
	   lpBMPFileHeader = NULL;
	   delete[] m_lpBMPInfo;
	   m_lpBMPInfo = NULL;
	   file.Close();
	   return false;
   }
   //calculate the bytes of the picture
   m_dwSizeImage = ((m_lWidth * (m_wBitCount / 8) + 3)&~3)*m_lHeight;
   m_lpImage = new BYTE[m_dwSizeImage];
   if(!m_lpImage)
   {
	   AfxMessageBox("not enough memory");
	   delete[] lpBMPFileHeader;
	   lpBMPFileHeader = NULL;
	   delete[] m_lpBMPInfo;
	   m_lpBMPInfo = NULL;
	   file.Close();
	   return false;
   }
   file.ReadHuge(m_lpImage,m_dwSizeImage);

   //set the imformation of the palette;
   m_lpLogPal = (LPLOGPALETTE) new BYTE[sizeof(LPLOGPALETTE)
	                            +m_nClrUsed*sizeof(PALETTEENTRY)];
   m_lpLogPal->palVersion = 0x300;
   m_lpLogPal->palNumEntries = m_nClrUsed;
   for(int i = 0;i<m_nClrUsed;i++)
   {
	   m_lpLogPal->palPalEntry[i].peRed = m_lpBMPInfo->
		                                      bmiColors[i].rgbRed;
	   m_lpLogPal->palPalEntry[i].peBlue = m_lpBMPInfo->
		                                      bmiColors[i].rgbBlue;
	   m_lpLogPal->palPalEntry[i].peGreen = m_lpBMPInfo->
		                                      bmiColors[i].rgbGreen;
	   m_lpLogPal->palPalEntry[i].peFlags = 0;
   }
   m_hPal = ::CreatePalette(m_lpLogPal);
   delete[] lpBMPFileHeader;
   lpBMPFileHeader = NULL;
   file.Close();
   m_bIsLoadFile = true;
	
   return true;

}

void CDib::Empty()
{
	m_lWidth = 0;
	m_lHeight = 0;
	m_wBitCount = 0;
	m_nClrUsed = 0;
	m_dwSizeImage = 0;
	m_bIsLoadFile = false;

	if(m_lpBMPInfo)
		delete[] m_lpBMPInfo;
	m_lpBMPInfo = NULL;

	if(m_lpLogPal)
		delete[] m_lpLogPal;
    m_lpLogPal = NULL;

	if(m_lpImage)
		delete[] m_lpImage;
	m_lpImage = NULL;
//	if(m_lpImage1)
//		delete[] m_lpImage1;
//	m_lpImage1=NULL;

	if(m_hdd)
		::DrawDibClose(m_hdd);
	m_hdd = 0;

	if(m_hPal)
		::DeleteObject(m_hPal);
	m_hPal = 0;
}

DWORD CDib::GetClrUsed()
{
    if(m_lpBMPInfo->bmiHeader.biClrUsed == 0)
	{
		switch(m_wBitCount)
		{
		case 1:
			return 2;
		case 4:
			return 16;
		case 8:
			return 256;
		default:
			return 0;
		}
	}
	return m_lpBMPInfo->bmiHeader.biClrUsed;
}



BOOL CDib::Init(CDC *pDC)
{
	if(!m_bIsLoadFile)
		return false;
	m_hdd = ::DrawDibOpen();
	::DrawDibBegin(m_hdd,pDC->m_hDC,-1,-1,&m_lpBMPInfo->bmiHeader
		,m_lWidth,m_lHeight,DDF_ANIMATE);
	return true;

}

BOOL CDib::draw(CDC *pDC, CPoint originDes)
{
	CRect src;
	src.left = src.top = 0;
	src.right = m_lWidth;
	src.bottom = m_lHeight;
	::DrawDibDraw(m_hdd,pDC->m_hDC,originDes.x ,
				 originDes.y ,m_lWidth,-m_lHeight,&m_lpBMPInfo->bmiHeader,
				 (LPVOID)m_lpImage,src.left,src.top,m_lWidth,src.Height(),
				 DDF_SAME_HDC);
	return true;
}

/*
LONG CDib::GetPixOffset(LONG x, LONG y)
{
	return (m_lHeight-y-1)*BytesPerLine+x*m_wBitCount/8;
}



int CDib::ComputePixel(float x, float y, float &x1, float &y1)
{
	float r, nn;

  if (x==0 && y==0) 
  {
	 x1 = x;
	 y1 = y;
	 return 1;
  }

  nn = (float)sqrt(x*x + y*y);
  r = (float) (fabs(x) > fabs(y)) ? fabs(nn/x): fabs(nn/y);

  x1 = (r*x);
  y1 = (r*y);

  return 1;

}

void CDib::ComputerEllipseEffect(LPBYTE src,LPBYTE des)
{
   // CWaitCursor wait;
  int x, y, x1, y1,tmp1,tmp2;
  float fx, fy, xmid, ymid, ar;


  xmid = (float) (m_lWidth/2.0);
  ymid = (float) (m_lHeight/2.0);
  ar = (float)(m_lHeight)/(float)(m_lWidth);
  for (y=0; y<m_lHeight; y++)
  {
	 for (x=0; x<m_lWidth; x++)
	 {
		ComputePixel(ar*(x-xmid), y-ymid, fx, fy);
		x1 = (int)(xmid+fx/ar);
		y1 = (int)(ymid+fy);
	   if(x1>=0&&y1>=0&&x1<m_lWidth&&y1<m_lHeight)
		{
		tmp2=GetPixOffset(x1,y1);
		tmp1=GetPixOffset(x,y);
		des[tmp1] = src[tmp2];
		des[tmp1+1] = src[tmp2+1];
		des[tmp1+2] = src[tmp2+2];
		}
	 }
  }
  

}
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久久综合日本欧美 | 亚洲成人动漫一区| 蜜臀av亚洲一区中文字幕| 北岛玲一区二区三区四区| 91国产免费观看| 久久精品人人做人人爽人人| 天天色综合成人网| 欧美亚洲图片小说| 椎名由奈av一区二区三区| 国产精品香蕉一区二区三区| 欧美精品xxxxbbbb| 亚洲午夜私人影院| 91小视频在线| 1区2区3区国产精品| 美女久久久精品| 在线成人小视频| 亚洲国产另类精品专区| 91黄色在线观看| 亚洲人一二三区| 97se亚洲国产综合自在线 | 久久精品人人做人人爽人人| 日本一区中文字幕| 91精品国产福利在线观看| 日韩和欧美一区二区| 日本黄色一区二区| 亚洲小少妇裸体bbw| 欧美三区在线观看| 亚洲色图一区二区三区| 91视频一区二区三区| 亚洲视频一二区| 在线观看一区二区精品视频| 亚洲已满18点击进入久久| 91成人在线精品| 亚洲第一搞黄网站| 91精品国产综合久久婷婷香蕉| 精品国产成人在线影院 | 欧美日韩一区二区三区在线| 亚洲最新在线观看| 日本韩国欧美三级| 三级精品在线观看| 精品噜噜噜噜久久久久久久久试看| 国产精品久久久久婷婷| 成人黄页毛片网站| 一区二区三区四区在线免费观看| 美美哒免费高清在线观看视频一区二区 | 日本伊人精品一区二区三区观看方式| 国产一区二区三区免费看| 精品国产一区二区三区忘忧草| 亚洲视频免费看| 欧美在线免费视屏| 肉丝袜脚交视频一区二区| 精品久久久久久综合日本欧美| 亚洲成人av一区| 精品久久五月天| av激情综合网| 日韩黄色一级片| 中文字幕欧美日韩一区| 欧美日韩一区二区三区在线| 精品一区二区在线免费观看| 国产精品久久久久一区| 欧美日韩国产首页| 国产精品亚洲午夜一区二区三区| 91精品国产欧美一区二区18 | 国产激情一区二区三区四区 | 国产精品色眯眯| 欧美男人的天堂一二区| 精品写真视频在线观看 | 日韩福利电影在线| 中文字幕精品在线不卡| 91搞黄在线观看| 国产精品影视在线观看| 亚洲r级在线视频| 国产精品亲子乱子伦xxxx裸| 欧美日韩国产片| www..com久久爱| 久热成人在线视频| 亚洲国产综合视频在线观看| 国产午夜精品一区二区三区视频 | 91亚洲精品乱码久久久久久蜜桃| 欧美极品少妇xxxxⅹ高跟鞋| 欧美老女人在线| www..com久久爱| 国产精品一区二区三区99| 午夜视频久久久久久| 欧美激情一区二区三区| 日韩三级中文字幕| 在线视频亚洲一区| av色综合久久天堂av综合| 国产一区欧美二区| 久99久精品视频免费观看| 亚洲一级二级三级在线免费观看| 欧美老人xxxx18| 在线视频你懂得一区| 99re在线视频这里只有精品| 国产精品一区一区三区| 精品一区二区三区久久| 蜜桃视频一区二区三区 | 一区在线播放视频| 国产亚洲美州欧州综合国| 欧美一区二区视频免费观看| 欧美视频日韩视频在线观看| 色婷婷久久久亚洲一区二区三区| 亚洲综合激情另类小说区| 国产精品久久网站| 国产精品麻豆视频| 中文字幕欧美日韩一区| 欧美国产日韩一二三区| 亚洲国产成人午夜在线一区| 国产视频一区二区三区在线观看| 91精品福利视频| 欧美在线你懂得| 欧美视频在线播放| 欧美视频在线一区| 欧美日韩中文国产| 678五月天丁香亚洲综合网| 91精品免费观看| 欧美成人精品1314www| 欧美精品一区二区三区四区| 国产亚洲欧美色| 亚洲丝袜另类动漫二区| 一区二区三区在线播| 视频一区二区三区在线| 黄页视频在线91| 成人免费毛片嘿嘿连载视频| 99视频精品在线| 欧美视频三区在线播放| 日韩欧美国产综合在线一区二区三区| 97成人超碰视| 91久久精品国产91性色tv| 538在线一区二区精品国产| 日韩精品中文字幕一区 | 精品国产人成亚洲区| 久久人人爽爽爽人久久久| 国产精品日日摸夜夜摸av| 亚洲国产精品成人综合| 亚洲已满18点击进入久久| 青娱乐精品在线视频| 国产永久精品大片wwwapp| 91香蕉视频mp4| 欧美丰满一区二区免费视频| 精品国产免费一区二区三区四区 | 中文字幕的久久| 最新成人av在线| 日本欧洲一区二区| 成人黄色大片在线观看| 欧美日韩久久一区| 国产亚洲欧美日韩在线一区| 亚洲一区在线免费观看| 精品一区二区三区蜜桃| 91福利国产成人精品照片| 欧美v亚洲v综合ⅴ国产v| 亚洲欧洲av另类| 国产最新精品精品你懂的| 91理论电影在线观看| 久久综合九色综合97婷婷女人| 精品美女在线播放| 综合电影一区二区三区| 六月婷婷色综合| 在线观看免费亚洲| 国产亚洲一区二区在线观看| 亚洲3atv精品一区二区三区| 从欧美一区二区三区| 91精品国产手机| 一区二区三区在线观看欧美| 丰满少妇久久久久久久| 日韩一区二区三区免费看 | 欧美午夜免费电影| 国产人成亚洲第一网站在线播放| 欧美电视剧免费全集观看| 一区二区三区日韩欧美精品 | 在线观看精品一区| 亚洲国产经典视频| 麻豆精品久久久| 在线观看网站黄不卡| 中文无字幕一区二区三区| 男女性色大片免费观看一区二区 | 欧美激情一区二区三区全黄| 免费观看久久久4p| 欧美日韩五月天| 中文字幕一区二区三区在线观看 | 亚洲精品老司机| 国产剧情一区二区| 精品免费一区二区三区| 首页亚洲欧美制服丝腿| 欧美写真视频网站| 一区二区理论电影在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产精品视频yy9299一区| 九九国产精品视频| 日韩亚洲欧美中文三级| 免费成人在线视频观看| 日韩欧美国产成人一区二区| 免费高清成人在线| 7777精品伊人久久久大香线蕉超级流畅 | 91色婷婷久久久久合中文| 欧美国产日本韩| 99精品视频中文字幕| 亚洲欧美aⅴ...| 色av一区二区| 午夜视黄欧洲亚洲|