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

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

?? s3c2440x_lcd.cpp

?? 三星2440 cpu WINCE 5.00板級支持包
?? CPP
?? 第 1 頁 / 共 3 頁
字號:

	// Allocate from system memory
	*surface = new GPESurf(width, height, format);

	if (*surface != NULL)
	{
		// Check that the bits were allocated succesfully
		if (((*surface)->Buffer()) == NULL)
		{
			delete *surface;				// Clean up
		}
		else
		{
			return S_OK;
		}
	}
	return E_OUTOFMEMORY;
}

SCODE	S3C2440DISP::WrappedEmulatedLine (GPELineParms *lineParameters)
{
	SCODE	retval;
	RECT	bounds;
	int		N_plus_1;				// Minor length of bounding rect + 1

	// calculate the bounding-rect to determine overlap with cursor
	if (lineParameters->dN)			// The line has a diagonal component (we'll refresh the bounding rect)
	{
		N_plus_1 = 2 + ((lineParameters->cPels * lineParameters->dN) / lineParameters->dM);
	}
	else
	{
		N_plus_1 = 1;
	}

	switch(lineParameters->iDir)
	{
		case 0:
			bounds.left = lineParameters->xStart;
			bounds.top = lineParameters->yStart;
			bounds.right = lineParameters->xStart + lineParameters->cPels + 1;
			bounds.bottom = bounds.top + N_plus_1;
			break;
		case 1:
			bounds.left = lineParameters->xStart;
			bounds.top = lineParameters->yStart;
			bounds.bottom = lineParameters->yStart + lineParameters->cPels + 1;
			bounds.right = bounds.left + N_plus_1;
			break;
		case 2:
			bounds.right = lineParameters->xStart + 1;
			bounds.top = lineParameters->yStart;
			bounds.bottom = lineParameters->yStart + lineParameters->cPels + 1;
			bounds.left = bounds.right - N_plus_1;
			break;
		case 3:
			bounds.right = lineParameters->xStart + 1;
			bounds.top = lineParameters->yStart;
			bounds.left = lineParameters->xStart - lineParameters->cPels;
			bounds.bottom = bounds.top + N_plus_1;
			break;
		case 4:
			bounds.right = lineParameters->xStart + 1;
			bounds.bottom = lineParameters->yStart + 1;
			bounds.left = lineParameters->xStart - lineParameters->cPels;
			bounds.top = bounds.bottom - N_plus_1;
			break;
		case 5:
			bounds.right = lineParameters->xStart + 1;
			bounds.bottom = lineParameters->yStart + 1;
			bounds.top = lineParameters->yStart - lineParameters->cPels;
			bounds.left = bounds.right - N_plus_1;
			break;
		case 6:
			bounds.left = lineParameters->xStart;
			bounds.bottom = lineParameters->yStart + 1;
			bounds.top = lineParameters->yStart - lineParameters->cPels;
			bounds.right = bounds.left + N_plus_1;
			break;
		case 7:
			bounds.left = lineParameters->xStart;
			bounds.bottom = lineParameters->yStart + 1;
			bounds.right = lineParameters->xStart + lineParameters->cPels + 1;
			bounds.top = bounds.bottom - N_plus_1;
			break;
		default:
			RETAILMSG(0, (TEXT("Invalid direction: %d\r\n"), lineParameters->iDir));
			return E_INVALIDARG;
	}

	// check for line overlap with cursor and turn off cursor if overlaps
	if (m_CursorVisible && !m_CursorDisabled &&
		m_CursorRect.top < bounds.bottom && m_CursorRect.bottom > bounds.top &&
		m_CursorRect.left < bounds.right && m_CursorRect.right > bounds.left)
	{
		CursorOff();
		m_CursorForcedOff = TRUE;
	}

	// do emulated line
	retval = EmulatedLine (lineParameters);

	// se if cursor was forced off because of overlap with line bouneds and turn back on
	if (m_CursorForcedOff)
	{
		m_CursorForcedOff = FALSE;
		CursorOn();
	}

	return	retval;

}

SCODE	S3C2440DISP::Line(GPELineParms *lineParameters, EGPEPhase phase)
{
	RETAILMSG(0, (TEXT("S3C2440DISP::Line\r\n")));

	if (phase == gpeSingle || phase == gpePrepare)
	{

		if ((lineParameters->pDst != m_pPrimarySurface))
		{
			lineParameters->pLine = EmulatedLine;
		}
		else
		{
			lineParameters->pLine = (SCODE (GPE::*)(struct GPELineParms *)) WrappedEmulatedLine;
		}
	}
	return S_OK;
}

SCODE	S3C2440DISP::BltPrepare(GPEBltParms *blitParameters)
{
	RECTL	rectl;

	RETAILMSG(0, (TEXT("S3C2440DISP::BltPrepare\r\n")));

	// default to base EmulatedBlt routine
	blitParameters->pBlt = EmulatedBlt;

	// see if we need to deal with cursor
	if (m_CursorVisible && !m_CursorDisabled)
	{
		// check for destination overlap with cursor and turn off cursor if overlaps
		if (blitParameters->pDst == m_pPrimarySurface)	// only care if dest is main display surface
		{
			if (blitParameters->prclDst != NULL)		// make sure there is a valid prclDst
			{
				rectl = *blitParameters->prclDst;		// if so, use it
			}
			else
			{
				rectl = m_CursorRect;					// if not, use the Cursor rect - this forces the cursor to be turned off in this case
			}

			if (m_CursorRect.top < rectl.bottom && m_CursorRect.bottom > rectl.top &&
				m_CursorRect.left < rectl.right && m_CursorRect.right > rectl.left)
			{
				CursorOff();
				m_CursorForcedOff = TRUE;
			}
		}

		// check for source overlap with cursor and turn off cursor if overlaps
		if (blitParameters->pSrc == m_pPrimarySurface)	// only care if source is main display surface
		{
			if (blitParameters->prclSrc != NULL)		// make sure there is a valid prclSrc
			{
				rectl = *blitParameters->prclSrc;		// if so, use it
			}
			else
			{
				rectl = m_CursorRect;					// if not, use the CUrsor rect - this forces the cursor to be turned off in this case
			}
			if (m_CursorRect.top < rectl.bottom && m_CursorRect.bottom > rectl.top &&
				m_CursorRect.left < rectl.right && m_CursorRect.right > rectl.left)
			{
				CursorOff();
				m_CursorForcedOff = TRUE;
			}
		}
	}

#ifdef ROTATE
    if (m_iRotate && (blitParameters->pDst == m_pPrimarySurface || blitParameters->pSrc == m_pPrimarySurface))
    {
        blitParameters->pBlt = (SCODE (GPE::*)(GPEBltParms *))EmulatedBltRotate;
    }
#endif //ROTATE

	#ifdef CLEARTYPE
	if (((blitParameters->rop4 & 0xffff) == 0xaaf0 ) && (blitParameters->pMask->Format() == gpe8Bpp))
	{
	    switch (m_colorDepth)
	    {
	    case 16:
	 	blitParameters->pBlt = (SCODE (GPE::*)(struct GPEBltParms *)) ClearTypeBlt::ClearTypeBltDst16;
		return S_OK;
	    case 24:
blitParameters->pBlt = (SCODE (GPE::*)(struct GPEBltParms *)) ClearTypeBlt::ClearTypeBltDst24;
		return S_OK;
	    case 32:
blitParameters->pBlt = (SCODE (GPE::*)(struct GPEBltParms *)) ClearTypeBlt::ClearTypeBltDst32;
		return S_OK;
	    default:
		break;
	    }
	}
#endif //CLEARTYPE

	// see if there are any optimized software blits available
	EmulatedBltSelect02(blitParameters);
	EmulatedBltSelect08(blitParameters);
	EmulatedBltSelect16(blitParameters);

	return S_OK;
}

SCODE	S3C2440DISP::BltComplete(GPEBltParms *blitParameters)
{
	RETAILMSG(0, (TEXT("S3C2440DISP::BltComplete\r\n")));

	// see if cursor was forced off because of overlap with source or destination and turn back on
	if (m_CursorForcedOff)
	{
		m_CursorForcedOff = FALSE;
		CursorOn();
	}

	return S_OK;
}

INT		S3C2440DISP::InVBlank(void)
{
	RETAILMSG(0, (TEXT("S3C2440DISP::InVBlank\r\n")));
	return 0;
}

SCODE	S3C2440DISP::SetPalette(const PALETTEENTRY *source, USHORT firstEntry, USHORT numEntries)
{
	RETAILMSG(0, (TEXT("S3C2440DISP::SetPalette\r\n")));

	if (firstEntry < 0 || firstEntry + numEntries > 256 || source == NULL)
	{
		return	E_INVALIDARG;
	}

	return	S_OK;
}

ULONG	S3C2440DISP::GetGraphicsCaps()
{
    
#ifdef  CLEARTYPE
	return	GCAPS_GRAY16 | GCAPS_CLEARTYPE;
#else
	return  GCAPS_GRAY16;
#endif 
}

void	RegisterDDHALAPI(void)
{
	return;	// no DDHAL support
}

#if defined(CLEARTYPE) || defined(ROTATE)
extern GetGammaValue(ULONG * pGamma);
extern SetGammaValue(ULONG ulGamma, BOOL bUpdateReg);

ULONG  S3C2440DISP::DrvEscape(
                        SURFOBJ *pso,
                        ULONG    iEsc,
                        ULONG    cjIn,
                        PVOID    pvIn,
                        ULONG    cjOut,
                        PVOID    pvOut)
{
    if (iEsc == DRVESC_GETGAMMAVALUE)
    {
	return GetGammaValue((ULONG *)pvOut);
    }
    else if (iEsc == DRVESC_SETGAMMAVALUE)
    {
	return SetGammaValue(cjIn, *(BOOL *)pvIn);
    }

#ifdef ROTATE
    if (iEsc == DRVESC_GETSCREENROTATION)
    {
        *(int *)pvOut = ((DMDO_0 | DMDO_90 | DMDO_180 | DMDO_270) << 8) | ((BYTE)m_iRotate);
        return DISP_CHANGE_SUCCESSFUL; 
    }
    else if (iEsc == DRVESC_SETSCREENROTATION)
    {
        if ((cjIn == DMDO_0) ||
           (cjIn == DMDO_90) ||
           (cjIn == DMDO_180) ||
           (cjIn == DMDO_270) )
           {
               return DynRotate(cjIn);
           }
        return DISP_CHANGE_BADMODE;
    }
#endif //ROTATE & ROTATE
    
    return 0;
}
#endif //CLEARTYPE

ULONG *APIENTRY DrvGetMasks(DHPDEV dhpdev)
{
	return gBitMasks;
}

#ifdef ROTATE
void S3C2440DISP::SetRotateParms()
{
    int iswap;
    switch(m_iRotate)
    {
    case DMDO_0:
		m_nScreenHeightSave = m_nScreenHeight;
		m_nScreenWidthSave = m_nScreenWidth;
		break;
    case DMDO_180:
		m_nScreenHeightSave = m_nScreenHeight;
		m_nScreenWidthSave = m_nScreenWidth;
		break;
	case DMDO_90:
	case DMDO_270:
		iswap = m_nScreenHeight;
		m_nScreenHeight = m_nScreenWidth;
		m_nScreenWidth = iswap;
	    m_nScreenHeightSave = m_nScreenWidth;
	    m_nScreenWidthSave = m_nScreenHeight;
		break;
	default:
	  	m_nScreenHeightSave = m_nScreenHeight;
		m_nScreenWidthSave = m_nScreenWidth;
		break;
    }
	return;
}

LONG S3C2440DISP::DynRotate(int angle)
{
    GPESurfRotate *pSurf = (GPESurfRotate *)m_pPrimarySurface;
	if (angle == m_iRotate)
		return DISP_CHANGE_SUCCESSFUL;

	m_iRotate = angle;

	switch(m_iRotate)
    {
    case DMDO_0:
    case DMDO_180:
		m_nScreenHeight = m_nScreenHeightSave;
		m_nScreenWidth = m_nScreenWidthSave;
		break;
	case DMDO_90:
	case DMDO_270:
		m_nScreenHeight = m_nScreenWidthSave;
		m_nScreenWidth = m_nScreenHeightSave;
		break;
    }

	m_pMode->width = m_nScreenWidth;
	m_pMode->height = m_nScreenHeight;
	pSurf->SetRotation(m_nScreenWidth, m_nScreenHeight, angle);

	return DISP_CHANGE_SUCCESSFUL;
}
#endif //ROTATE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区在线不卡| 51精品秘密在线观看| 久久你懂得1024| 国产自产高清不卡| 久久精品一区二区三区不卡牛牛 | 欧洲一区在线电影| 亚洲va中文字幕| 日韩欧美卡一卡二| 成人手机在线视频| 怡红院av一区二区三区| 6080日韩午夜伦伦午夜伦| 狠狠色综合播放一区二区| 国产精品女人毛片| 欧美日韩亚洲国产综合| 久久99精品久久久久久动态图| 欧美国产成人在线| 在线观看91精品国产入口| 狂野欧美性猛交blacked| 欧美激情一区二区三区四区| 欧美视频自拍偷拍| 久久精品国产亚洲高清剧情介绍 | 国产欧美日韩不卡| 91热门视频在线观看| 午夜成人在线视频| 国产精品伦理一区二区| 56国语精品自产拍在线观看| 成人免费观看男女羞羞视频| 亚洲一区二区三区免费视频| 2020国产精品自拍| 欧美主播一区二区三区| 国产酒店精品激情| 亚洲国产成人精品视频| 久久久99久久精品欧美| 欧美中文字幕不卡| 成人av一区二区三区| 日本免费新一区视频| 中文字幕一区二区在线播放| 欧美一区二区久久| 一本色道久久综合亚洲aⅴ蜜桃| 青娱乐精品视频在线| 亚洲精品亚洲人成人网 | 粉嫩嫩av羞羞动漫久久久| 亚洲成人免费影院| 中文字幕一区二区三区在线不卡| 欧美一级日韩免费不卡| 91丨九色porny丨蝌蚪| 九色综合国产一区二区三区| 亚洲无人区一区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 色综合色综合色综合色综合色综合| 蜜桃久久久久久| 午夜久久福利影院| 亚洲欧洲日韩av| 国产亚洲一区字幕| 欧美大尺度电影在线| 欧美日韩一区高清| 91美女片黄在线| a级高清视频欧美日韩| 久久精品久久99精品久久| 亚洲a一区二区| 亚洲男人的天堂在线aⅴ视频| 中文字幕欧美国产| 久久理论电影网| 久久综合给合久久狠狠狠97色69| 欧美一区二区三区视频在线| 欧美性色综合网| 一本色道久久综合亚洲aⅴ蜜桃| 成人h精品动漫一区二区三区| 狠狠色狠狠色综合| 国内欧美视频一区二区| 久久成人综合网| 国内不卡的二区三区中文字幕 | 国产一区二区三区综合| 免费精品99久久国产综合精品| 五月综合激情网| 天天影视网天天综合色在线播放 | 欧美一区二区三区四区五区| 欧美日本国产视频| 7777精品伊人久久久大香线蕉完整版 | 激情综合网最新| 久久精品二区亚洲w码| 蜜臀a∨国产成人精品| 美美哒免费高清在线观看视频一区二区 | 91精品国产色综合久久不卡蜜臀| 欧美性大战久久| 欧美日韩免费一区二区三区视频| 欧美片网站yy| 欧美一区永久视频免费观看| 日韩一区二区三区精品视频| 日韩欧美一级二级三级| 国产天堂亚洲国产碰碰| 日韩美女视频19| 午夜精品视频在线观看| 蜜臀久久99精品久久久久宅男| 激情六月婷婷久久| 成人中文字幕合集| 91久久精品一区二区| 欧美日韩一区中文字幕| 日韩欧美国产麻豆| 日本一区二区三级电影在线观看 | 久久精品国产99久久6| 国产一区二区美女诱惑| 91社区在线播放| 91精品国产综合久久婷婷香蕉 | 日本美女一区二区| 国产一区二区三区最好精华液| 成人一级视频在线观看| 在线观看亚洲精品视频| 日韩欧美在线观看一区二区三区| 久久嫩草精品久久久精品一| 成人免费在线播放视频| 日韩精品一二三四| 成人美女在线观看| 欧美日韩在线电影| 久久久久久久久久电影| 一级日本不卡的影视| 久久99热99| 91麻豆精东视频| 精品电影一区二区| 一区二区三区四区激情| 狠狠色狠狠色合久久伊人| 色8久久人人97超碰香蕉987| 欧美电视剧在线看免费| 亚洲男同1069视频| 国产精品白丝jk黑袜喷水| 欧美色图天堂网| 国产亚洲综合在线| 五月天欧美精品| 成人av电影免费在线播放| 欧美成人a∨高清免费观看| 亚洲欧美区自拍先锋| 91精品国产乱码久久蜜臀| 国产精品入口麻豆九色| 免费观看日韩电影| 色88888久久久久久影院按摩| 久久久久99精品一区| 丝袜亚洲精品中文字幕一区| 91影视在线播放| 久久久久久99精品| 蜜桃传媒麻豆第一区在线观看| 91久久精品日日躁夜夜躁欧美| 国产视频一区二区三区在线观看| 日韩高清欧美激情| 欧美亚洲动漫精品| 亚洲人成电影网站色mp4| 国产激情一区二区三区四区| 欧美另类z0zxhd电影| 亚洲欧美怡红院| 国产东北露脸精品视频| 欧美岛国在线观看| 欧美综合天天夜夜久久| 色先锋aa成人| 99久久精品国产导航| 精品国产91乱码一区二区三区 | 综合久久综合久久| 精品国产精品一区二区夜夜嗨| 欧美年轻男男videosbes| 日本久久一区二区三区| 欧美在线观看禁18| 欧美日韩国产一区二区三区地区| 欧美日韩国产另类不卡| 777精品伊人久久久久大香线蕉| 91精品欧美久久久久久动漫| 精品理论电影在线| 欧美精品一区二区高清在线观看| 精品美女在线观看| 久久久久久久综合色一本| 国产日产精品1区| 亚洲欧美日韩一区二区三区在线观看| 亚洲另类在线视频| 亚洲成av人片在www色猫咪| 日韩av在线播放中文字幕| 精品在线一区二区三区| 国产99久久久国产精品潘金| 99久久精品国产毛片| 欧美日韩一区二区三区在线看| 337p亚洲精品色噜噜| 亚洲激情五月婷婷| 丝袜美腿高跟呻吟高潮一区| 免费在线观看视频一区| 丁香六月久久综合狠狠色| 欧美中文字幕一区| 久久精品欧美一区二区三区麻豆 | 欧美日韩一区不卡| 精品少妇一区二区三区视频免付费 | 欧美亚日韩国产aⅴ精品中极品| 777xxx欧美| 亚洲欧美在线视频| 日本免费在线视频不卡一不卡二| 国产精品18久久久| 欧美视频一区二区三区在线观看| 欧美不卡激情三级在线观看| 亚洲视频图片小说| 国内精品伊人久久久久av一坑| 91麻豆国产福利在线观看| 欧美成人一区二区三区片免费 | 欧美日韩一区二区不卡| 久久久蜜桃精品| 午夜精品福利视频网站| 高清免费成人av|