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

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

?? gfx_drawlib.c.svn-base

?? sigmadesign smp8623 gui source code ,bingo
?? SVN-BASE
?? 第 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一区二区三区免费野_久草精品视频
亚洲人成7777| 宅男噜噜噜66一区二区66| 99久久99精品久久久久久| 在线亚洲一区观看| 欧美一区二区三区在线视频| 久久影视一区二区| **欧美大码日韩| 日韩av一区二区在线影视| 国产一区二区在线免费观看| 99精品国产视频| 91精品久久久久久久久99蜜臂| 欧美国产精品v| 亚洲国产成人91porn| 精品一区二区三区香蕉蜜桃| www.99精品| 91精品国产综合久久福利| 日本一区二区高清| 亚洲妇熟xx妇色黄| 成人在线视频一区| 欧美久久久久久久久中文字幕| 福利91精品一区二区三区| 欧洲视频一区二区| 久久综合色婷婷| 午夜久久电影网| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美视频完全免费看| 日韩精品最新网址| 一卡二卡欧美日韩| 国产精品一区久久久久| 日本电影欧美片| 久久亚洲春色中文字幕久久久| 精品国产精品一区二区夜夜嗨| 在线播放亚洲一区| 亚洲欧洲精品一区二区三区| 久久精品国产色蜜蜜麻豆| 日本伦理一区二区| 国产日韩成人精品| 日本成人在线网站| 一本色道久久综合亚洲91| 国产偷国产偷精品高清尤物 | 国产永久精品大片wwwapp| 欧美无乱码久久久免费午夜一区 | 亚洲欧美国产毛片在线| 韩国成人福利片在线播放| 欧美主播一区二区三区美女| 久久久777精品电影网影网 | 在线免费不卡视频| 国产精品视频一二三区| 狠狠色狠狠色合久久伊人| 欧美色图在线观看| 亚洲免费观看在线视频| 成人丝袜高跟foot| 国产性做久久久久久| 看电影不卡的网站| 欧美一区二区视频在线观看2022| 久久综合久久综合久久| 全国精品久久少妇| 欧美精品少妇一区二区三区| 亚洲综合丁香婷婷六月香| 高清久久久久久| 26uuu成人网一区二区三区| 日韩成人一级大片| 制服丝袜成人动漫| 午夜久久久久久久久久一区二区| 国产麻豆欧美日韩一区| 日韩一级精品视频在线观看| 亚洲一区二区影院| 91成人在线精品| 一区二区三区中文字幕| 91麻豆精品视频| 亚洲六月丁香色婷婷综合久久 | 精品视频在线免费观看| 亚洲精品免费在线| 在线免费观看日韩欧美| 亚洲欧美日韩中文字幕一区二区三区| 亚洲成在线观看| 欧美精品日韩一区| 日韩中文字幕av电影| 欧美精品xxxxbbbb| 日韩精品国产欧美| 这里是久久伊人| 免费xxxx性欧美18vr| 日韩欧美黄色影院| 国产老妇另类xxxxx| 久久精品亚洲国产奇米99| 大胆欧美人体老妇| 亚洲精品中文在线观看| 欧美调教femdomvk| 日本欧美在线观看| 91精品视频网| 久久91精品久久久久久秒播| 久久久久久久久97黄色工厂| 成人毛片视频在线观看| 亚洲免费在线视频| 欧美日韩国产一级片| 日本欧美韩国一区三区| 久久亚洲私人国产精品va媚药| 亚洲一区二区三区视频在线播放| 国产精品18久久久| 中文字幕佐山爱一区二区免费| 久久成人羞羞网站| 日本一区二区三区四区在线视频| 免费在线观看成人| 26uuu色噜噜精品一区二区| 国产一区视频网站| 国产精品久久久久久福利一牛影视| 欧美bbbbb| 国产精品色婷婷| 欧洲精品在线观看| 日韩国产欧美三级| 欧美国产日本韩| 欧美性高清videossexo| 狠狠狠色丁香婷婷综合久久五月| 91精品中文字幕一区二区三区| 一区二区三区四区av| 91精品在线观看入口| 国产91丝袜在线18| 亚洲成人精品影院| 国产欧美日韩在线| 欧美在线小视频| 国产一区不卡精品| 一区二区不卡在线视频 午夜欧美不卡在 | 99v久久综合狠狠综合久久| 亚洲伊人伊色伊影伊综合网| 亚洲精品在线观看网站| 91免费在线看| 精品一区二区在线视频| 国产精品国产三级国产普通话99 | 亚洲欧美中日韩| 91麻豆精品国产无毒不卡在线观看| 亚洲小说春色综合另类电影| 精品久久免费看| 91福利国产成人精品照片| 国产揄拍国内精品对白| 亚洲福中文字幕伊人影院| 久久精品在这里| 欧美日本在线播放| 成人97人人超碰人人99| 免费一区二区视频| 亚洲二区在线视频| 日本一区二区三区四区| 日韩欧美国产综合一区| 91福利在线观看| 国产亚洲精久久久久久| 欧美日韩激情一区| 色综合久久久久久久久久久| 国产伦精品一区二区三区免费| 国产欧美精品一区aⅴ影院 | 国产精品久久久99| 精品国产乱码久久久久久蜜臀| 激情五月婷婷综合网| 香蕉成人啪国产精品视频综合网| 欧美日韩国产乱码电影| 91在线无精精品入口| 精品国产91洋老外米糕| 91香蕉视频污在线| 国产精品18久久久| 激情六月婷婷久久| 麻豆国产91在线播放| 亚洲一区二区视频在线观看| 成人免费小视频| 国产精品日产欧美久久久久| 精品久久久网站| 欧美电视剧免费观看| 欧美美女视频在线观看| 色呦呦日韩精品| 91伊人久久大香线蕉| kk眼镜猥琐国模调教系列一区二区| 亚洲国产欧美一区二区三区丁香婷 | 国产午夜一区二区三区| 欧美日韩高清不卡| 色婷婷av一区| 日本韩国欧美在线| 91美女片黄在线观看91美女| 91首页免费视频| 一本大道久久a久久精二百 | 精品国产伦一区二区三区观看体验| 国产69精品一区二区亚洲孕妇| 伊人色综合久久天天| 亚洲色图视频网| 国产精品国产精品国产专区不片| 欧美区在线观看| 91精品国产综合久久久久久| 欧美日韩国产高清一区| 7777精品伊人久久久大香线蕉最新版| 国产精品综合一区二区三区| 激情综合色播五月| 国产精品99久久久久久似苏梦涵| 一区二区三区久久| 亚洲国产另类av| 亚洲国产色一区| 日本成人在线视频网站| 久久er99精品| 国产高清精品网站| 不卡电影免费在线播放一区| 不卡在线视频中文字幕| 91蜜桃婷婷狠狠久久综合9色| 国产成人激情av| a级高清视频欧美日韩| 在线视频一区二区三区|