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

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

?? gfx_drawlib.c

?? sigmadesign smp8623 gui source code ,bingo
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* * * Copyright (c) Sigma Designs, Inc. 2004. All rights reserved. * *//** @file gfx_drawlib.c @brief  gfx_drawlib api @author Raul Chirinos */#define ALLOW_OS_CODE#include "../include/gfx_drawlib.h"#include "../include/gfx_drawcontrol.h"#include <stdlib.h>#include "../include/stream.h"#include "../include/subreader.h"//#include "rmalloc.h"#if 1#define GFXDBG ENABLE#else#define GFXDBG DISABLE#endifextern sub_context subs;// global dataGFXLib_data gdata;static int CompFunc(const void *p1, const void *p2){	return ((((GFXLib_objectdata*) p1)->zindex) - (((GFXLib_objectdata*) p2)->zindex));}/* initialize gfx */RMstatus gfxInit(struct RUA *pRua){	RMuint32 gfx_count;	struct GFXEngine_DRAMSize_in_type dramSizeIn;	struct GFXEngine_DRAMSize_out_type dramSizeOut;	RMuint32 i;//,j;	RMstatus status;	//	stream_t* fd;	//	RMascii buffer[10];	// init vars	RMMemset(&gdata, 0, sizeof(gdata));	gdata.gfx = 0xff;	gdata.tvType = TVTYPE_4_3;	ResetBmpBuffers();	dramSizeIn.CommandFIFOCount = GFX_FIFOCOUNT;	status = RUAExchangeProperty(pRua, EMHWLIB_MODULE(GFXEngine, 0), RMGFXEnginePropertyID_DRAMSize, &dramSizeIn, sizeof(dramSizeIn),			&dramSizeOut, sizeof(dramSizeOut));	if (RMFAILED(status))	{		RMDBGLOG((GFXDBG, "Error getting dram size for gfx engine\n"));		return RM_ERROR;	}	gdata.profile.CommandFIFOCount = dramSizeIn.CommandFIFOCount;	gdata.profile.Priority = 1;	gdata.profile.CachedSize = dramSizeOut.CachedSize;	gdata.profile.UncachedSize = dramSizeOut.UncachedSize;	if (gdata.profile.CachedSize > 0)	{		gdata.profile.CachedAddress = RUAMalloc(pRua, 0, RUA_DRAM_CACHED, gdata.profile.CachedSize);		//		printf("gfx cached addr: 0x%08lx, size 0x%08lx, end: 0x%08lx\n", gdata.profile.CachedAddress, gdata.profile.CachedSize, gdata.profile.CachedAddress + gdata.profile.CachedSize);	}	else	{		gdata.profile.CachedAddress = 0;	}	gdata.profile.UncachedSize = dramSizeOut.UncachedSize;	if (gdata.profile.UncachedSize > 0)	{		gdata.profile.UncachedAddress = RUAMalloc(pRua, 0, RUA_DRAM_UNCACHED, gdata.profile.UncachedSize);		//		printf("gfx uncached addr: 0x%08lx, size 0x%08lx, end: 0x%08lx\n", gdata.profile.UncachedAddress, gdata.profile.UncachedSize, gdata.profile.UncachedAddress + gdata.profile.UncachedSize);	}	else	{		gdata.profile.UncachedAddress = 0;	}	gdata.gfx = GFXEngine;	status = RUAExchangeProperty(pRua, EMHWLIB_MODULE(Enumerator, 0), RMEnumeratorPropertyID_CategoryIDToNumberOfInstances,			&gdata.gfx, sizeof(gdata.gfx), &gfx_count, sizeof(gfx_count));	if (RMFAILED(status))	{		RMDBGLOG((GFXDBG, "Error getting gfx engine count\n"));		return RM_ERROR;	}	for (i = 0; i < gfx_count; i++)	{		gdata.gfx = EMHWLIB_MODULE(GFXEngine, i);		status = RUASetProperty(pRua, gdata.gfx, RMGFXEnginePropertyID_Open, &gdata.profile, sizeof(gdata.profile), 0);		if (status == RM_OK)			break;	}	if (i == gfx_count)	{		RMDBGLOG((GFXDBG, "Cannot open a gfx engine [0..%lu[\n", gfx_count));		return RM_ERROR;	}	gdata.font_type = rtk_font_type_None;	//	i = 0;	//	fd=open_stream_gfx ("Revolution.OS.2001.DVDRip.XviD-RETRO.sub", NULL, &i);	//	stream_fill_buffer(fd);	//	//	for(i = 0; i < 65535; i ++){	//		buffer[0] = stream_read_char(fd);	//		printf("%c", buffer[0]);	//	}	//	//	free_stream(fd);	//[RC] NEED CLEAN UP JOB!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!	InitPrefetch();	return RM_OK;}/* unInitialize gfx */RMstatus gfxUnInit(struct RUA *pRua){	RMuint32 close_profile = 0;	RMstatus status;	ClosePrefetch();	if (pRua == NULL || gdata.gfx == 0xff)		return RM_ERROR;	status = RUASetProperty(pRua, gdata.gfx, RMGFXEnginePropertyID_Close, &close_profile, sizeof(close_profile), 0);	if (RMFAILED(status))	{		RMDBGLOG((GFXDBG, "Error cannot close gfx engine\n"));	}	if (gdata.profile.CachedAddress > 0)	{		RUAFree(pRua, gdata.profile.CachedAddress);		gdata.profile.CachedAddress = 0;	}	if (gdata.profile.UncachedAddress > 0)	{		RUAFree(pRua, gdata.profile.UncachedAddress);		gdata.profile.UncachedAddress = 0;	}	// free drawing buffer	FreeBaseBuffer(pRua);	FreeBackBuffer(pRua, &gdata.backBuffer);	printf("exit\n");	return RM_OK;}/* set osd parameters */RMstatus gfxSetOSDParams(struct RUA *pRua, RMuint32 OSDaddr, RMuint32 OSDwidth, RMuint32 OSDheight){	RMstatus status;	RMuint32 osdmemsize = 0;	RMuint32 drawbuffsize = 0; // taken from osdmem to aid drawing of multiple part objects	if (OSDaddr == 0 || OSDwidth <= 0)		return RM_ERROR;	// Calculate amount of memory to allocate	osdmemsize = OSDwidth + ((OSDwidth & 0x3F) ? (64 - (OSDwidth & 0x3F)) : 0);	osdmemsize *= OSDheight + ((OSDheight & 0x3F) ? (64 - (OSDheight & 0x3F)) : 0);	osdmemsize *= 11;	//	drawbuffsize = 147456;	drawbuffsize = OSDwidth + ((OSDwidth & 0x3F) ? (64 - (OSDwidth & 0x3F)) : 0);	drawbuffsize *= OSDheight + ((OSDheight & 0x3F) ? (64 - (OSDheight & 0x3F)) : 0);	//	drawbuffsize /= 2;	//	drawbuffsize = 40000;	//	drawbuffsize *= 6;	//	osdmemsize = (OSDwidth * OSDheight * 4) / 1024;	//	if(osdmemsize <= 1024){	//		osdmemsize = 2000000;	//		drawbuffsize = 10000;	//	}	//	else if(osdmemsize <= 2048){	//		osdmemsize = 4500000;	//		drawbuffsize = 1572864;	//	}	//	else{	//		osdmemsize = 4660000;	//		drawbuffsize = 40000;	//	}	// Allocate memory	RMMemset(&gdata.baseBuffer, 0, sizeof(RMdrawBuffer));	status = AllocateBaseBuffer(pRua, &gdata.baseBuffer, osdmemsize);	if (RMFAILED(status))	{		RMDBGLOG((GFXDBG, "Failed to allocate OSD buffer\n"));		return RM_ERROR;	}	else	{		RMDBGLOG((GFXDBG, "Allocated a %.3f MB OSD surface\n", ((double)osdmemsize) / 1000000.0));	}	RMMemset(&gdata.drawBuffer, 0, sizeof(RMdrawBuffer));	RMMemset(&gdata.backBuffer, 0, sizeof(RMdrawBuffer));	// Allocate extra buffer to help drawing -- no error in return since we may be ok without	// The usable part of the base buffer is set to the end of the drawing buffer (if any).	// When displaying pictures the begin of the base buffer will be set to 0 and will be restored	// to the drawing buffer size when a page is to be displayed	if (drawbuffsize)	{		if (RMSUCCEEDED(AllocateBuffer(&gdata.drawBuffer, drawbuffsize, TRUE)))		{			gdata.baseBuffer.offset = gdata.drawBuffer.size;		}		if (RMSUCCEEDED(AllocateBackBuffer(pRua, &gdata.backBuffer, drawbuffsize * 4)))		{			//gdata.baseBuffer.offset = gdata.backBuffer.size;		}	}	gdata.osdAddr = OSDaddr;	gdata.osdWidth = OSDwidth;	gdata.osdHeight = OSDheight;	// pass osd params to graphic loader	SetOsdSurfaceSize(gdata.osdWidth, gdata.osdHeight);	return RM_OK;}RMstatus gfxSetTvType(struct RUA *pRua, RMbool set4_3){	gdata.tvType = (set4_3 ? TVTYPE_4_3 : TVTYPE_16_9);	DoTVRatio(pRua, gdata.tvType);	return RM_OK;}/* draw a rectangle of a given color */RMstatus gfxDrawRect(struct RUA *pRua, RMuint16 x, RMuint16 y, RMuint16 width, RMuint16 height, RMuint32 color){	//	RMstatus status;	//	//	status = SetOutputSurfaceBuffer(pRua, gdata.backBuffer.baseAddr, gdata.osdWidth);	//	if(RMFAILED(status))	//		return status;	return Fill(pRua, x, y, width, height, color);	//return BitBlt(pRua);}/* draw a vertical line of a given length, color and thickness*/RMstatus gfxDrawVLine(struct RUA *pRua, RMuint16 x, RMuint16 y, RMuint16 length, RMuint16 thickness, RMuint32 color){	RMstatus status;	if (thickness <= 0 || length <= 0)		return RM_ERROR;	status = SetOutputSurfaceBuffer(pRua, gdata.backBuffer.baseAddr, gdata.osdWidth);	if (RMFAILED(status))		return status;	gfxDrawRect(pRua, x, y, thickness, length, color);	return BitBlt(pRua);}/* draw a horizontal line of a given length, color and thickness*/RMstatus gfxDrawHLine(struct RUA *pRua, RMuint16 x, RMuint16 y, RMuint16 length, RMuint16 thickness, RMuint32 color){	//	RMstatus status;	if (thickness <= 0 || length <= 0)		return RM_ERROR;	//	status = SetOutputSurfaceBuffer(pRua, gdata.backBuffer.baseAddr, gdata.osdWidth);	//	if(RMFAILED(status))	//		return status;	return gfxDrawRect(pRua, x, y, length, thickness, color);	//	return BitBlt(pRua);}RMstatus gfxDrawTransLine(struct RUA *pRua, RMuint16 x, RMuint16 y, RMuint16 length, RMuint16 thickness, RMuint32 color){	RMstatus status;	if (thickness <= 0 || length <= 0)		return RM_ERROR;	status = SetOutputSurfaceBuffer(pRua, gdata.backBuffer.baseAddr, gdata.osdWidth);	if (RMFAILED(status))		return status;	RoundRect(pRua, x, y, length, thickness, color, TRUE, 0);	return BitBlt(pRua);}/* draw a point of a given color*/RMstatus gfxDrawPoint(struct RUA *pRua, RMuint16 x, RMuint16 y, RMuint32 color){	return gfxDrawRect(pRua, x, y, 1, 1, color);}RMstatus gfxDrawButton(struct RUA *pRua, RMButtonObject *obj){	RMstatus status = SetOutputSurfaceBuffer(pRua, gdata.backBuffer.baseAddr, gdata.osdWidth);	if (RMFAILED(status))		return status;	DrawButton(pRua, 0, 0, obj, 0);	return BitBlt(pRua);}RMstatus gfxDrawPopupButton(struct RUA *pRua, RMBitmapObject *popup, RMuint16 x, RMuint16 y, RMButtonObject *obj){	RMstatus status;	RMuint8 bmpindex;	if (obj->visible == FALSE)		return RM_OK;	status = GetBitmapIndex(pRua, popup->file, &bmpindex, TRUE);	if (RMFAILED(status))		return status;	return DrawButton(pRua, x, y, obj, bmpindex);}/* draw text */RMstatus gfxDrawStringEvent(struct RUA *pRua, RMuint16 xOrigen, RMuint16 yOrigen, RMStringObject *obj){	RMstatus status = RM_OK;	//	RMuint8 fontindex;//, predeffontindex;	GFXLib_rect rect, rctext;//rc,	//	GFXLib_textdata txt;	//	RMtextitem lines[MAX_STR_LINES];	//	RMuint8 count = 0;	RMuint8 i;	//	RMuint16 maxwidth, maxheight;	//	RMuint8 fontheight;	//	RMuint32 color;	Prop prop;	prop.trunc = TRUNC_NONE;	if (obj->visible == FALSE)		return RM_OK;	status = SetOutputSurfaceBuffer(pRua, gdata.backBuffer.baseAddr, gdata.osdWidth);	if (RMFAILED(status))		return status;	rect.x = obj->x + xOrigen;	rect.y = obj->y + yOrigen;	rect.width = obj->width;	rect.height = obj->height;	gfxDrawRect(pRua, rect.x - 10, rect.y - 8, 250, 53, 0xAA000000);	//	status = GetFontIndex(pRua, obj->fontfile, obj->charwidth, &fontindex);	//	if(RMFAILED(status))	//		return status;	//	status = SetOutputSurface(pRua);	//	if(RMFAILED(status))	//		return status;	// fill the palette	//	SetTextPalette(pRua, obj->foregroundcolor, obj->backgroundcolor, obj->transparentbackground);	// [RC] assuming 1bpp	//	SetTextColorFormat(pRua);	//	status = getPredefinedFontIndex(GetBmpPath(fontindex), &predeffontindex);	//	if(RMFAILED(status))	//		return status;	//	fontheight = getFontHeight(predeffontindex);	//	gfxGetTextExtents(pRua, &prop, &rctext);	//	//	// break up string	//	maxwidth = rect.width;	//	maxheight = yOrigen + obj->y + obj->height;	//	//	rect.x = obj->x + xOrigen;	//	rect.width = maxwidth;	//	rect.height = rctext.height;	//	count = getTextLines(obj->text, predeffontindex, maxwidth, MAX_STR_LENGTH, MAX_STR_LINES, lines);	//	for(i = 0; i < count; i++){	RMMemset(&prop, 0, sizeof(Prop));	RMCopyAscii(prop.text, obj->text/*lines[0]*/);	prop.alignment = obj->textalign;	prop.fgColor = obj->backgroundcolor;	prop.bgColor = obj->foregroundcolor;// & 0x00FFFFFF;	//		txt.transparentbackground = obj->transparentbackground;	prop.scale = atoi(obj->fontfile);	gfxGetTextExtents(pRua, &prop, &rctext);	// break up string	//	maxwidth = rect.width;	//	maxheight = yOrigen + obj->y + obj->height;	//	rect.x = obj->x;// + xOrigen;	//	rect.width = maxwidth;	//	rect.height = rctext.height;	// calculate position and correct accordingly	//		rect.y = rect.height + obj->y + yOrigen;	//		printf("<<<<<<<<<<<<<<<<<<<<<<<(x, y, w, h) (%ld, %ld, %ld, %ld)\n", rect.x, rect.y, rect.width, rect.height);	// verify we are not going beyond clipping area	//		if((rect.y + rect.height) > maxheight){	//			status = RM_ERROR;	//			break;	//		}	//		txt.hasfocus = obj->hasfocus;	//		txt.outlinecolor = obj->outlinecolor;	//		txt.selectioncolor = obj->selectioncolor;	//		txt.inputchar = obj->inputchar;	//		txt.password = (obj->type == STRING_PASSWORD);	//		txt.input = (obj->type != STRING_UNKNOWN);	if (obj->type == STRING_PASSWORD)	{		for (i = 0; i < RMasciiLength(prop.text); i++)		{			prop.text[i] = ((prop.text[i] >= '0' && prop.text[i] <= '9') ? '*' : '\0');		}	}	rect.x += 5;	status = gfxTTDrawString(pRua, &rect, &prop, NULL);	//		status = DrawString(pRua, &rect, &txt, fontindex);	//	}	return BitBlt(pRua);}/* draw text */RMstatus gfxDrawString(struct RUA *pRua, RMuint16 xOrigen, RMuint16 yOrigen, RMStringObject *obj){	RMstatus status = RM_OK;	//	RMuint8 fontindex;//, predeffontindex;	GFXLib_rect rect, rc, rctext;	//	GFXLib_textdata txt;	//	RMtextitem lines[MAX_STR_LINES];	//	RMuint8 count = 0;	RMuint8 i;	//	RMuint16 maxwidth, maxheight;	//	RMuint8 fontheight;	RMuint32 color;	Prop prop;	prop.trunc = TRUNC_NONE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕亚洲区| 91日韩精品一区| 美女任你摸久久| 亚洲一区二区三区中文字幕在线| 一区精品在线播放| 国产精品国产a级| 中文一区在线播放| 国产精品久久一卡二卡| 亚洲视频一区在线| 亚洲久草在线视频| 一区二区欧美视频| 视频一区二区国产| 黑人巨大精品欧美黑白配亚洲| 久久国产视频网| 国产一区二区三区高清播放| 风间由美一区二区三区在线观看 | 精品久久久久香蕉网| 欧美大度的电影原声| 久久婷婷久久一区二区三区| 国产欧美日韩视频在线观看| 亚洲人成精品久久久久| 一区二区三区在线观看动漫| 亚洲成av人影院在线观看网| 麻豆精品一二三| 国产69精品久久99不卡| 99国产精品久久久久久久久久久| 色老汉av一区二区三区| 制服丝袜日韩国产| 精品国产91九色蝌蚪| 中文一区二区完整视频在线观看| 1024成人网色www| 日日摸夜夜添夜夜添精品视频| 精品一区二区在线看| 国产·精品毛片| 91福利在线导航| 欧美mv日韩mv国产| 国产精品国产精品国产专区不片| 亚洲第一综合色| 国产一区二区在线看| av不卡在线播放| 51精品久久久久久久蜜臀| 久久久久久久久久美女| 亚洲乱码国产乱码精品精可以看| 视频一区欧美精品| 不卡一二三区首页| 欧美一卡2卡三卡4卡5免费| 国产精品美女一区二区| 婷婷综合五月天| 粉嫩在线一区二区三区视频| 欧美日韩在线三区| 国产亚洲女人久久久久毛片| 亚洲一区二区三区四区五区中文 | 欧美久久婷婷综合色| 久久久久免费观看| 午夜a成v人精品| 国产成人精品一区二区三区四区 | 亚洲三级免费观看| 精品一区二区在线观看| 在线视频一区二区三| 久久精品欧美一区二区三区不卡| 亚洲国产精品久久久久秋霞影院 | 国产成人av电影在线观看| 欧美午夜精品电影| 亚洲国产精品v| 日韩高清在线一区| 色香色香欲天天天影视综合网| 精品久久久久久久久久久久久久久久久 | 亚洲一卡二卡三卡四卡五卡| 国产精选一区二区三区| 欧美日韩精品福利| 亚洲欧洲无码一区二区三区| 国产乱淫av一区二区三区| 在线不卡a资源高清| 亚洲女爱视频在线| 国产成人精品aa毛片| 日韩一区二区免费在线电影| 亚洲一区二三区| 91亚洲精华国产精华精华液| 国产亚洲美州欧州综合国| 麻豆成人综合网| 欧美精品tushy高清| 亚洲国产精品嫩草影院| 色综合久久天天综合网| 国产精品家庭影院| 国产激情视频一区二区三区欧美 | 综合久久一区二区三区| 春色校园综合激情亚洲| 精品国产乱码久久久久久牛牛| 日韩av中文字幕一区二区| 欧美精品三级日韩久久| 亚洲成人av免费| 欧美日韩亚洲另类| 一区二区三区在线观看国产| 99精品国产一区二区三区不卡| 国产精品午夜在线观看| 国产麻豆午夜三级精品| 欧美精品一区视频| 精品一区二区三区在线播放视频 | 亚洲免费av网站| 99精品欧美一区二区三区综合在线| 欧美国产日韩在线观看| 成人av在线看| 国产精品成人午夜| 97se亚洲国产综合在线| 亚洲欧美精品午睡沙发| 色综合久久九月婷婷色综合| 亚洲黄色免费网站| 欧美熟乱第一页| 日韩中文字幕区一区有砖一区 | 欧美久久久久久久久| 婷婷综合在线观看| 欧美一级爆毛片| 九色综合狠狠综合久久| 久久久av毛片精品| 成人av电影在线网| 亚洲黄色片在线观看| 欧美久久高跟鞋激| 日本成人超碰在线观看| 久久亚洲精华国产精华液| 成人永久免费视频| 一区二区三区电影在线播| 欧美日韩国产精品自在自线| 蜜桃一区二区三区在线| 久久精品夜色噜噜亚洲aⅴ| av午夜精品一区二区三区| 亚洲美女在线一区| 911国产精品| 国产高清一区日本| 国产精品国产三级国产普通话三级 | 美女久久久精品| 国产日本亚洲高清| 91网上在线视频| 日本v片在线高清不卡在线观看| 久久综合五月天婷婷伊人| 成人午夜激情在线| 亚洲成人免费av| 久久婷婷成人综合色| 99精品欧美一区二区三区小说| 亚洲一区二区三区美女| 精品国产一区二区亚洲人成毛片| caoporn国产精品| 亚洲在线观看免费视频| 久久婷婷色综合| 欧美无人高清视频在线观看| 国产综合色产在线精品| 一区二区国产视频| 久久久久成人黄色影片| 在线观看91精品国产入口| 久久精品国产一区二区三 | 日韩专区在线视频| 国产精品素人视频| 69久久夜色精品国产69蝌蚪网| 东方aⅴ免费观看久久av| 亚洲国产一区二区视频| 国产日韩精品一区二区三区| 欧美精品在线一区二区| 国产91精品免费| 秋霞av亚洲一区二区三| ...xxx性欧美| 欧美哺乳videos| 欧美亚洲一区二区在线| 国产成人精品免费在线| 日本视频一区二区| 亚洲伦理在线免费看| 久久亚洲综合色一区二区三区| 欧美亚洲动漫精品| 成人动漫一区二区三区| 精品一区二区精品| 亚洲成人高清在线| 日韩伦理电影网| 久久久亚洲精品一区二区三区 | 精品久久国产字幕高潮| 欧美在线啊v一区| 成人午夜视频免费看| 精品一区二区三区av| 天堂精品中文字幕在线| 亚洲欧美成aⅴ人在线观看| 国产性天天综合网| 91.麻豆视频| 欧美亚洲国产一区二区三区va | 91精品免费观看| aaa亚洲精品| 国产99精品视频| 国精产品一区一区三区mba桃花| 亚洲国产一区二区视频| 亚洲精选视频在线| 国产精品久久夜| 久久久精品免费观看| 亚洲精品一线二线三线| 日韩女优毛片在线| 欧美一级高清片在线观看| 在线观看av一区二区| 91丨九色丨蝌蚪富婆spa| 国产成人午夜精品5599 | 欧美嫩在线观看| 色一情一乱一乱一91av| 色综合天天综合| 91视频观看视频| 97精品电影院| 99在线视频精品|