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

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

?? childwindow.cpp

?? YUV視頻幀打開程序
?? CPP
字號:
/************************************************************************
 *
 *  Ye-Kui Wang       wyk@ieee.org
 *  Juan-Juan Jiang   juanjuan_j@hotmail.com
 *  
 *  March 14, 2002
 *
 ************************************************************************/

/*
 * Disclaimer of Warranty
 *
 * These software programs are available to the user without any
 * license fee or royalty on an "as is" basis.  The developers disclaim 
 * any and all warranties, whether express, implied, or statuary, including 
 * any implied warranties or merchantability or of fitness for a particular 
 * purpose.  In no event shall the copyright-holder be liable for any incidental,
 * punitive, or consequential damages of any kind whatsoever arising from 
 * the use of these programs.
 *
 * This disclaimer of warranty extends to the user of these programs
 * and user's customers, employees, agents, transferees, successors,
 * and assigns.
 *
 * The developers does not represent or warrant that the programs furnished 
 * hereunder are free of infringement of any third-party patents.
 *
 * */


// ChildWindow.cpp : implementation file
//

#include "stdafx.h"
#include "YUVviewer.h"
#include "ChildWindow.h"
#include "YUVviewerDlg.h"


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

/////////////////////////////////////////////////////////////////////////////
// CChildWindow

IMPLEMENT_DYNCREATE(CChildWindow, CFrameWnd)

CChildWindow::CChildWindow()
{
}
CChildWindow::~CChildWindow()
{
	GlobalUnlock(hloc);
	GlobalFree(hloc);  
	
	free(RGBbuf);
	free(Y);
	free(Cb);
	free(Cr);
}

CChildWindow::CChildWindow( CFrameWnd *pParentWnd,int Width,int Height, BOOL bColor)
{    
	iWidth=Width;iHeight=Height;bColorImage=bColor;

  m_iCount = ((CYUVviewerDlg *)pParentWnd)->m_iCount;
  inSeqName = ((CYUVviewerDlg *)pParentWnd)->inSeqName[m_iCount];

	if(((CYUVviewerDlg *)pParentWnd)->m_nZoom == -1)
		m_nzoom = 1;
	else if(((CYUVviewerDlg *)pParentWnd)->m_nZoom == 0)
		m_nzoom = 2;
	
	nPicShowOrder=0;
	
	if (NULL== (Y = (unsigned char *)malloc(iWidth*iHeight) ) ) 
	{
		AfxMessageBox("Couldn't allocate memory for RGBbuf\n");
		return;
	}
	if (NULL== (Cb = (unsigned char *)malloc(iWidth*iHeight/4) ) ) 
	{
		AfxMessageBox("Couldn't allocate memory for RGBbuf\n");
		return;
	}
	if (NULL== (Cr = (unsigned char *)malloc(iWidth*iHeight/4) ) ) 
	{
		AfxMessageBox("Couldn't allocate memory for RGBbuf\n");
		return;
	}
	if (NULL== (RGBbuf = (unsigned char *)malloc(iWidth*iHeight*3) ) ) 
	{
		AfxMessageBox("Couldn't allocate memory for RGBbuf\n");
		return;
	}
	
	DWORD AttrStyle;
    
	hloc = GlobalAlloc(GMEM_ZEROINIT | GMEM_MOVEABLE,
   		sizeof(BITMAPINFOHEADER) + (sizeof(RGBQUAD) * 256));
	BmpInfo = (LPBITMAPINFO) GlobalLock(hloc);

	
	AttrStyle = //WS_OVERLAPPEDWINDOW;
		WS_OVERLAPPED|WS_CAPTION|WS_THICKFRAME|WS_MAXIMIZEBOX|WS_MINIMIZEBOX;
    Create(NULL,NULL,AttrStyle,rectDefault,pParentWnd);
}

void CChildWindow::ShowGrayImage(CDC *pDC,BYTE *lpImage)
{
	int i;         
	int nNum1,nNum2;
	HANDLE hMem;
	BYTE *lpBuf;

	BmpInfo->bmiHeader.biBitCount = 8;

    hMem=GlobalAlloc(GHND,iWidth*iHeight);
	lpBuf=(BYTE *)GlobalLock(hMem);
	
    //將倒置的圖象放正 
	//Make the inverse image normal
    for(i=0;i<iHeight;i++){
		nNum1=(iHeight-i-1)*iWidth;
		nNum2=i*iWidth;
		memcpy(lpBuf+nNum1,lpImage+nNum2,iWidth);
	}

	pDC->SetStretchBltMode(STRETCH_DELETESCANS);
	StretchDIBits(pDC->m_hDC,0,0,iWidth,iHeight,
							 0,0,iWidth,iHeight,
					  lpBuf,BmpInfo, DIB_RGB_COLORS,SRCCOPY);  

	GlobalUnlock(hMem);
	GlobalFree(hMem);
}

void CChildWindow::ShowImage(CDC *pDC,BYTE *lpImage)
{
	BmpInfo->bmiHeader.biBitCount = 24;

	pDC->SetStretchBltMode(STRETCH_DELETESCANS);
	StretchDIBits(pDC->m_hDC,0,0,m_nzoom*iWidth,m_nzoom*iHeight,
							 0,0,iWidth,iHeight,
					  lpImage, BmpInfo, DIB_RGB_COLORS,SRCCOPY);
}

void CChildWindow::CenterWindow(int width,int height)
{
    RECT rc;
    RECT rw;
    
    int cyBorder, cxBorder;
    int cyTotal,cxTotal;
    int cyMenuAndCaption;

    int cw, ch;

  	RECT r;
	  int nCx=GetSystemMetrics(SM_CXSCREEN),nCy=GetSystemMetrics(SM_CYSCREEN);

    cyBorder = GetSystemMetrics(SM_CYBORDER);
    cxBorder = GetSystemMetrics(SM_CXBORDER);

    // Figure out the height of the menu, toolbar, and caption
    GetWindowRect(&rw);
    GetClientRect(&rc);

    ClientToScreen ((LPPOINT) &rc);
    cyMenuAndCaption = (rc.top - rw.top) ;
  
    cyTotal =height  +
              cyMenuAndCaption +
              cyBorder * 2 ;
    cxTotal=width+cxBorder * 2;            

	r.left=(nCx-cxTotal)/2;r.top=(nCy-cyTotal)/2;
	r.right=(nCx+cxTotal)/2;r.bottom=(nCy+cyTotal)/2;
	
	MoveWindow(&r);//,FALSE);

  GetClientRect(&rc);
  while( (rc.right-rc.left != width-1) || (rc.bottom-rc.top != height-1) )
  {
  
    if(rc.right-rc.left < width-1)
      cxTotal ++;
    else if(rc.right-rc.left > width-1)
      cxTotal --;
    if(rc.bottom-rc.top < height-1)
      cyTotal ++;
    else if(rc.bottom-rc.top > height-1)
      cyTotal --;

	  r.left=(nCx-cxTotal)/2;r.top=(nCy-cyTotal)/2;
	  r.right=(nCx+cxTotal)/2;r.bottom=(nCy+cyTotal)/2;
	
    cw = rc.right-rc.left+1;
    ch = rc.bottom-rc.top+1;

    MoveWindow(&r);//,FALSE);
    GetClientRect(&rc);

    if( (cw == rc.right-rc.left+1) && (ch == rc.bottom-rc.top+1) )  // client size unchanged
      break;
  }
}


BEGIN_MESSAGE_MAP(CChildWindow, CFrameWnd)
	//{{AFX_MSG_MAP(CChildWindow)
	ON_WM_PAINT()
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChildWindow message handlers

void CChildWindow::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	if(!Y || !RGBbuf) return;
	
//	nPicShowOrder++;
	char msg[128];
	wsprintf(msg,"#%d - %s",nPicShowOrder, inSeqName);
	SetWindowText(msg);
	
	if(bColorImage){    //彩色	//Colorful
		conv.YV12_to_RGB24(Y,Cb,Cr,RGBbuf,iWidth,iHeight);
		ShowImage(&dc,RGBbuf);
	}
	else {                    //黑白	//Monochrome
		ShowGrayImage(&dc,Y);
	} 

	// Do not call CFrameWnd::OnPaint() for painting messages
}

int CChildWindow::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
    int i;
	HANDLE hloc1;
	RGBQUAD *argbq;

	hloc1 = LocalAlloc(LMEM_ZEROINIT | LMEM_MOVEABLE,(sizeof(RGBQUAD) * 256));
	argbq = (RGBQUAD *) LocalLock(hloc1);

	for(i=0;i<256;i++) {
		argbq[i].rgbBlue=i;
		argbq[i].rgbGreen=i;
		argbq[i].rgbRed=i;
		argbq[i].rgbReserved=0;
	}

	BmpInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
	BmpInfo->bmiHeader.biPlanes = 1;
	if(bColorImage) 
		BmpInfo->bmiHeader.biBitCount = 24;
	else BmpInfo->bmiHeader.biBitCount = 8;
	BmpInfo->bmiHeader.biCompression = BI_RGB;
	BmpInfo->bmiHeader.biWidth = iWidth;
	BmpInfo->bmiHeader.biHeight = iHeight;

	memcpy(BmpInfo->bmiColors, argbq, sizeof(RGBQUAD) * 256);

	LocalUnlock(hloc1);
	LocalFree(hloc1);

	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲自拍另类综合| 国产精品日韩精品欧美在线| 中文字幕永久在线不卡| 免费三级欧美电影| 色婷婷av一区二区三区之一色屋| 欧美精品一区二区蜜臀亚洲| 亚洲成a人片综合在线| 99re亚洲国产精品| 久久久99精品久久| 欧美日韩在线电影| 亚洲国产经典视频| 国产真实乱子伦精品视频| 欧美日韩一级二级| 亚洲视频在线一区二区| 国产成都精品91一区二区三| 东方欧美亚洲色图在线| 欧美本精品男人aⅴ天堂| 亚洲高清免费观看| 色久综合一二码| 18欧美乱大交hd1984| 国产精品资源网| 日韩精品一区二区三区蜜臀| 日韩综合在线视频| 欧美体内she精高潮| 亚洲三级在线免费| 97久久超碰国产精品电影| 国产欧美精品一区二区色综合朱莉| 久草精品在线观看| 日韩欧美国产一区在线观看| 视频一区视频二区中文| 欧美日韩一二三区| 亚洲综合色区另类av| 在线视频综合导航| 亚洲美女在线一区| 一本大道综合伊人精品热热 | 成人免费高清视频| 久久久久久久久久久99999| 久久av资源网| 精品免费一区二区三区| 久久av资源网| 久久久久国产精品厨房| 丁香啪啪综合成人亚洲小说| 中文字幕av免费专区久久| 不卡的av电影在线观看| 国产精品不卡一区| 97久久精品人人做人人爽| 一区二区三区中文在线| 欧美性色aⅴ视频一区日韩精品| 亚洲主播在线观看| 欧美精品在线观看一区二区| 日一区二区三区| 日韩女优视频免费观看| 国产麻豆精品在线| 日本一区二区三区国色天香| 成人av第一页| 亚洲一区二区三区四区五区中文| 欧美精品日日鲁夜夜添| 麻豆国产精品777777在线| 久久久久99精品国产片| 成人三级伦理片| 一区二区在线免费| 777午夜精品视频在线播放| 玖玖九九国产精品| 国产精品素人一区二区| 日本韩国精品在线| 婷婷国产在线综合| 精品国产a毛片| jizzjizzjizz欧美| 亚洲图片欧美色图| 日韩欧美精品在线| 成人精品视频网站| 亚洲午夜在线观看视频在线| 日韩美女一区二区三区| 成人高清视频在线观看| 亚洲亚洲精品在线观看| 精品不卡在线视频| 99精品视频在线免费观看| 亚洲不卡一区二区三区| 久久尤物电影视频在线观看| 成人丝袜视频网| 亚洲国产精品影院| 亚洲精品在线观看网站| 91视频国产观看| 日韩国产一区二| 久久综合色一综合色88| 91美女在线观看| 另类成人小视频在线| 综合久久久久久久| 91精品国产乱码| 成人高清视频免费观看| 日本少妇一区二区| 国产精品久久国产精麻豆99网站| 欧美日韩一级二级三级| 夫妻av一区二区| 亚洲成av人片在www色猫咪| 亚洲国产精品成人久久综合一区| 欧美人体做爰大胆视频| 成人免费观看视频| 婷婷夜色潮精品综合在线| 国产精品欧美一级免费| 欧美一卡二卡在线观看| 91在线国产观看| 美国十次综合导航| 亚洲日本欧美天堂| 久久嫩草精品久久久精品一| 欧美三电影在线| 成人永久aaa| 麻豆精品国产91久久久久久| 一区二区三区成人在线视频| 久久久久久久久久美女| 精品视频免费看| 99免费精品在线| 国产一区二区三区香蕉| 日本最新不卡在线| 亚洲人妖av一区二区| 久久久久久久一区| 91精品国产综合久久香蕉麻豆| 91香蕉视频在线| 国产激情一区二区三区| 免费欧美在线视频| 亚洲一区二区高清| 亚洲视频狠狠干| 亚洲国产精品黑人久久久| 欧美mv日韩mv国产网站app| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 欧美变态口味重另类| 欧美三级电影在线观看| 91网站最新网址| 国产成人福利片| 激情五月播播久久久精品| 天堂成人免费av电影一区| 亚洲精选视频免费看| 国产精品人成在线观看免费| 国产亚洲欧美一区在线观看| 日韩欧美一区二区在线视频| 欧美另类高清zo欧美| 欧美在线色视频| 91免费视频网| aaa欧美大片| 丁香天五香天堂综合| 国产精品亚洲一区二区三区在线 | 亚洲男同性恋视频| 国产精品嫩草影院av蜜臀| 国产三级精品在线| 久久久高清一区二区三区| 精品福利一区二区三区免费视频| 欧美一区二区三区日韩视频| 5858s免费视频成人| 欧美肥妇free| 欧美日韩成人一区| 欧美久久久影院| 欧美一区二视频| 日韩午夜在线观看| 亚洲麻豆国产自偷在线| 国产一区二区伦理| 久久99精品久久久| 免费在线观看视频一区| 免费亚洲电影在线| 狠狠网亚洲精品| 极品少妇xxxx偷拍精品少妇| 精品在线亚洲视频| 老司机精品视频在线| 国产一区二区三区在线观看免费| 国产一区日韩二区欧美三区| 国产成+人+日韩+欧美+亚洲| 成人黄色av电影| 99精品久久只有精品| 日本精品一区二区三区高清 | 国产精品综合一区二区| 国产精品自拍av| 高潮精品一区videoshd| 91丨porny丨户外露出| 在线观看av不卡| 日韩一区二区中文字幕| 精品电影一区二区| 欧美国产欧美综合| 亚洲精品国产一区二区三区四区在线| 一区二区三区在线播放| 首页国产欧美久久| 国产一区二区调教| 成人app网站| 欧美影院一区二区| 欧美一区二区三区在线电影| 久久一区二区三区四区| 中文字幕一区二区三区精华液| 亚洲永久精品国产| 麻豆免费精品视频| 国产91精品一区二区麻豆亚洲| 91首页免费视频| 欧美一区二区视频免费观看| 欧美乱妇一区二区三区不卡视频| 欧美精品电影在线播放| 精品日韩成人av| 欧美国产日本视频| 亚洲另类在线一区| 五月激情丁香一区二区三区| 国内精品写真在线观看| 9色porny自拍视频一区二区| 欧美久久一二区| 欧美精彩视频一区二区三区|