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

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

?? sdl_epocvideo.cpp

?? Simple DirectMedia Layer - Simple DirectMedia Layer 是一個跨平臺的多媒體庫設計用來提供快速圖形framebuffer和音頻驅動。應用MPEG為軟件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*    SDL - Simple DirectMedia Layer    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Library General Public License for more details.    You should have received a copy of the GNU Library General Public    License along with this library; if not, write to the Free    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    Sam Lantinga    slouken@libsdl.org*//*    SDL_epocvideo.cpp    Epoc based SDL video driver implementation    Epoc version by Hannu Viitala (hannu.j.viitala@mbnet.fi)*/#include <stdlib.h>#include <stdio.h>#include <string.h>extern "C" {#include "SDL_error.h"#include "SDL_timer.h"#include "SDL_video.h"#undef NULL#include "SDL_pixels_c.h"};#include "SDL_epocvideo.h"#include "SDL_epocevents_c.h"#include <hal.h>#include <coedef.h>/* For debugging */void RDebug_Print_b(char* error_str, void* param)    {    TBuf8<128> error8((TUint8*)error_str);    TBuf<128> error;    error.Copy(error8);    if (param) //!! Do not work if the parameter is really 0!!        RDebug::Print(error, param);    else         RDebug::Print(error);    }extern "C" void RDebug_Print(char* error_str, void* param)    {    RDebug_Print_b(error_str, param);    }int Debug_AvailMem2()    {    //User::CompressAllHeaps();    TMemoryInfoV1Buf membuf;     User::LeaveIfError(UserHal::MemoryInfo(membuf));    TMemoryInfoV1 minfo = membuf();	return(minfo.iFreeRamInBytes);    }extern "C" int Debug_AvailMem()    {    return(Debug_AvailMem2());    }extern "C" {/* Initialization/Query functions */static int EPOC_VideoInit(_THIS, SDL_PixelFormat *vformat);static SDL_Rect **EPOC_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags);static SDL_Surface *EPOC_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags);static int EPOC_SetColors(_THIS, int firstcolor, int ncolors,			  SDL_Color *colors);static void EPOC_VideoQuit(_THIS);/* Hardware surface functions */static int EPOC_AllocHWSurface(_THIS, SDL_Surface *surface);static int EPOC_LockHWSurface(_THIS, SDL_Surface *surface);static int EPOC_FlipHWSurface(_THIS, SDL_Surface *surface);static void EPOC_UnlockHWSurface(_THIS, SDL_Surface *surface);static void EPOC_FreeHWSurface(_THIS, SDL_Surface *surface);static void EPOC_DirectUpdate(_THIS, int numrects, SDL_Rect *rects);static int EPOC_Available(void);static SDL_VideoDevice *EPOC_CreateDevice(int devindex);/* Mouse functions */static WMcursor *EPOC_CreateWMCursor(_THIS, Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y);static void EPOC_FreeWMCursor(_THIS, WMcursor *cursor);static int EPOC_ShowWMCursor(_THIS, WMcursor *cursor);/* !! Table for fast conversion from 8 bit to 12 bit */static TUint16 EPOC_HWPalette_256_to_4k[256];VideoBootStrap EPOC_bootstrap = {	"epoc", "EPOC system",    EPOC_Available, EPOC_CreateDevice};const TUint32 WindowClientHandle = 9210; //!!/* Epoc video driver bootstrap functions */static int EPOC_Available(void){    return 1; /* Always available */}static void EPOC_DeleteDevice(SDL_VideoDevice *device){	free(device->hidden);	free(device);}static SDL_VideoDevice *EPOC_CreateDevice(int devindex){	SDL_VideoDevice *device;	/* Allocate all variables that we free on delete */	device = (SDL_VideoDevice *)malloc(sizeof(SDL_VideoDevice));	if ( device ) {		memset(device, 0, (sizeof *device));		device->hidden = (struct SDL_PrivateVideoData *)				malloc((sizeof *device->hidden));	}	if ( (device == NULL) || (device->hidden == NULL) ) {		SDL_OutOfMemory();		if ( device ) {			free(device);		}		return(0);	}	memset(device->hidden, 0, (sizeof *device->hidden));	/* Set the function pointers */	device->VideoInit = EPOC_VideoInit;	device->ListModes = EPOC_ListModes;	device->SetVideoMode = EPOC_SetVideoMode;	device->SetColors = EPOC_SetColors;	device->UpdateRects = NULL;	device->VideoQuit = EPOC_VideoQuit;	device->AllocHWSurface = EPOC_AllocHWSurface;	device->CheckHWBlit = NULL;	device->FillHWRect = NULL;	device->SetHWColorKey = NULL;	device->SetHWAlpha = NULL;	device->LockHWSurface = EPOC_LockHWSurface;	device->UnlockHWSurface = EPOC_UnlockHWSurface;	device->FlipHWSurface = EPOC_FlipHWSurface;	device->FreeHWSurface = EPOC_FreeHWSurface;	device->SetIcon = NULL;	device->SetCaption = NULL;	device->GetWMInfo = NULL;	device->FreeWMCursor = EPOC_FreeWMCursor;	device->CreateWMCursor = EPOC_CreateWMCursor;	device->ShowWMCursor = EPOC_ShowWMCursor;	device->WarpWMCursor = NULL;	device->InitOSKeymap = EPOC_InitOSKeymap;	device->PumpEvents = EPOC_PumpEvents;	device->free = EPOC_DeleteDevice;	return device;}int GetBpp(TDisplayMode displaymode){    TInt numColors = TDisplayModeUtils::NumDisplayModeColors(displaymode);    TInt bitsPerPixel = 1;    for (TInt32 i = 2; i < numColors; i <<= 1, bitsPerPixel++);    return bitsPerPixel;    }void ConstructWindowL(_THIS){	TInt	error;	error = Private->EPOC_WsSession.Connect();	User::LeaveIfError(error);	Private->EPOC_WsScreen=new(ELeave) CWsScreenDevice(Private->EPOC_WsSession);	User::LeaveIfError(Private->EPOC_WsScreen->Construct());	User::LeaveIfError(Private->EPOC_WsScreen->CreateContext(Private->EPOC_WindowGc));	Private->EPOC_WsWindowGroup=RWindowGroup(Private->EPOC_WsSession);	User::LeaveIfError(Private->EPOC_WsWindowGroup.Construct(WindowClientHandle));	Private->EPOC_WsWindowGroup.SetOrdinalPosition(0);    //!!    TBuf<32> winGroupName;    winGroupName.Append(0);    winGroupName.Append(0);    winGroupName.Append(0);// uid    winGroupName.Append(0);    winGroupName.Append(_L("SDL")); // caption    winGroupName.Append(0);    winGroupName.Append(0); //doc name	Private->EPOC_WsWindowGroup.SetName(winGroupName); //!!	Private->EPOC_WsWindow=RWindow(Private->EPOC_WsSession);	User::LeaveIfError(Private->EPOC_WsWindow.Construct(Private->EPOC_WsWindowGroup,WindowClientHandle));	Private->EPOC_WsWindow.SetBackgroundColor(KRgbWhite);    Private->EPOC_WsWindow.Activate();	Private->EPOC_WsWindow.SetSize(Private->EPOC_WsScreen->SizeInPixels()); 	Private->EPOC_WsWindow.SetVisible(ETrue);    Private->EPOC_WsWindowGroupID = Private->EPOC_WsWindowGroup.Identifier();    Private->EPOC_IsWindowFocused = EFalse;}int EPOC_VideoInit(_THIS, SDL_PixelFormat *vformat){    // !!TODO:handle leave functions!    int i;	/* Initialize all variables that we clean on shutdown */   	for ( i=0; i<SDL_NUMMODES; ++i ) {		Private->SDL_modelist[i] = (SDL_Rect *)malloc(sizeof(SDL_Rect));		Private->SDL_modelist[i]->x = Private->SDL_modelist[i]->y = 0;	}	/* Modes sorted largest to smallest !!TODO:sorting order??*/	Private->SDL_modelist[0]->w = 640; Private->SDL_modelist[0]->h = 200; 	Private->SDL_modelist[1]->w = 320; Private->SDL_modelist[1]->h = 200;	Private->SDL_modelist[2]->w = 640; Private->SDL_modelist[2]->h = 400; 	Private->SDL_modelist[3]->w = 640; Private->SDL_modelist[3]->h = 480;	Private->SDL_modelist[4] = NULL;    /* Construct Epoc window */    ConstructWindowL(_this);    /* Initialise Epoc frame buffer */    TDisplayMode displayMode = Private->EPOC_WsScreen->DisplayMode();    #ifndef __WINS__    TScreenInfoV01 screenInfo;	TPckg<TScreenInfoV01> sInfo(screenInfo);	UserSvr::ScreenInfo(sInfo);	Private->EPOC_ScreenSize		= screenInfo.iScreenSize; 	Private->EPOC_DisplayMode		= displayMode;    Private->EPOC_HasFrameBuffer	= screenInfo.iScreenAddressValid;	Private->EPOC_FrameBuffer		= Private->EPOC_HasFrameBuffer ? (TUint8*) screenInfo.iScreenAddress : NULL;	Private->EPOC_BytesPerPixel	    = ((GetBpp(displayMode)-1) / 8) + 1;	Private->EPOC_BytesPerScanLine	= screenInfo.iScreenSize.iWidth * Private->EPOC_BytesPerPixel;    /* It seems that in SA1100 machines for 8bpp displays there is a 512 palette table at the      * beginning of the frame buffer. E.g. Series 7 and Netbook.     * In 12 bpp machines the table has 16 entries.	 */	if (Private->EPOC_HasFrameBuffer && GetBpp(displayMode) == 8)		Private->EPOC_FrameBuffer += 512;	if (Private->EPOC_HasFrameBuffer && GetBpp(displayMode) == 12)		Private->EPOC_FrameBuffer += 16 * 2;    #else /* defined __WINS__ */        /* Create bitmap, device and context for screen drawing */    Private->EPOC_ScreenSize        = Private->EPOC_WsScreen->SizeInPixels();	Private->EPOC_Bitmap = new (ELeave) CWsBitmap(Private->EPOC_WsSession);	Private->EPOC_Bitmap->Create(Private->EPOC_ScreenSize, displayMode);	Private->EPOC_DisplayMode	    = displayMode;    Private->EPOC_HasFrameBuffer    = ETrue;    Private->EPOC_FrameBuffer       = NULL; /* Private->EPOC_Bitmap->DataAddress() can change any time */	Private->EPOC_BytesPerPixel	    = ((GetBpp(displayMode)-1) / 8) + 1;	Private->EPOC_BytesPerScanLine  = Private->EPOC_WsScreen->SizeInPixels().iWidth * Private->EPOC_BytesPerPixel;    #endif /* __WINS__ */    /* The "best" video format should be returned to caller. */    vformat->BitsPerPixel       = /*!!GetBpp(displayMode) */ 8;    vformat->BytesPerPixel      = /*!!Private->EPOC_BytesPerPixel*/ 1;    /* Activate events for me */	Private->EPOC_WsEventStatus = KRequestPending;	Private->EPOC_WsSession.EventReady(&Private->EPOC_WsEventStatus);	Private->EPOC_RedrawEventStatus = KRequestPending;	Private->EPOC_WsSession.RedrawReady(&Private->EPOC_RedrawEventStatus);    Private->EPOC_WsWindow.PointerFilter(EPointerFilterDrag, 0);     Private->EPOC_ScreenOffset = 0;    //!! TODO: error handling    //if (ret != KErrNone)    //    return(-1);    //else	    return(0);}SDL_Rect **EPOC_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags){    if (format->BitsPerPixel == 12 || format->BitsPerPixel == 8)        return Private->SDL_modelist;    return NULL;}int EPOC_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors){    for(int i = firstcolor; i < ncolors; i++) {	    // 4k value: 000rgb	    TUint16 color4K = 0;        color4K |= (colors[i].r & 0x0000f0) << 4; 	    color4K |= (colors[i].g & 0x0000f0);      	    color4K |= (colors[i].b & 0x0000f0) >> 4;        EPOC_HWPalette_256_to_4k[i] = color4K;    }	return(0);}SDL_Surface *EPOC_SetVideoMode(_THIS, SDL_Surface *current,				int width, int height, int bpp, Uint32 flags){    /* Check parameters */    if (!((width == 640 && height == 200 && bpp == 12) ||          (width == 640 && height == 400 && bpp == 12) ||           (width == 640 && height == 480 && bpp == 12) ||           (width == 320 && height == 200 && bpp == 12) ||           (width == 640 && height == 200 && bpp == 8) ||

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美一区二区三区极速播放| 爽爽淫人综合网网站| 亚洲女同ⅹxx女同tv| 日韩avvvv在线播放| aaa国产一区| 精品福利在线导航| 亚洲成av人片一区二区三区| 成人综合婷婷国产精品久久| 日韩欧美一区二区免费| 亚洲国产视频在线| 91在线观看污| 国产欧美日韩麻豆91| 亚洲成人精品一区二区| 91色综合久久久久婷婷| 国产婷婷一区二区| 国产精品自拍一区| 精品国产sm最大网站| 舔着乳尖日韩一区| 欧美亚洲综合网| 国产精品免费视频一区| 国产91精品精华液一区二区三区 | 欧美日韩不卡视频| 亚洲视频中文字幕| 成人不卡免费av| 国产精品污污网站在线观看| 久久9热精品视频| 制服丝袜国产精品| 日本美女一区二区| 91精品国产综合久久久久| 五月婷婷综合在线| 欧美乱熟臀69xxxxxx| 亚洲国产成人av| 欧美日韩午夜在线视频| 亚洲高清中文字幕| 在线不卡中文字幕| 麻豆高清免费国产一区| 精品国产伦一区二区三区观看方式| 丝袜a∨在线一区二区三区不卡| 欧美日韩色综合| 三级在线观看一区二区| 日韩免费高清av| 国产一区二区三区四区在线观看| 欧美精品一区二区高清在线观看| 国产一区视频导航| 日本一区二区免费在线观看视频| 成人午夜电影久久影院| 自拍偷拍国产精品| 欧美私人免费视频| 免费精品视频最新在线| 久久久亚洲精华液精华液精华液 | 丝袜诱惑亚洲看片| 日韩精品综合一本久道在线视频| 激情综合一区二区三区| 欧美激情资源网| 色婷婷激情综合| 日韩av电影免费观看高清完整版| 精品欧美一区二区在线观看| 成人免费高清视频| 一区二区三区在线视频播放| 欧美一区二区精美| 成人黄色在线看| 亚洲成人资源网| 久久尤物电影视频在线观看| av不卡在线播放| 蜜桃精品视频在线| 国产精品福利一区二区| 91精品国产色综合久久| 懂色av中文字幕一区二区三区| 一区二区三区在线播放| 日韩久久久久久| 91色.com| 国产精品自拍毛片| 亚洲一区在线观看视频| 亚洲精品在线观| 精品视频色一区| 国产白丝精品91爽爽久久| 亚洲综合在线视频| 国产亚洲欧洲997久久综合| 色婷婷av久久久久久久| 国产一区二区视频在线| 亚洲444eee在线观看| 欧美国产精品中文字幕| 欧美男男青年gay1069videost | 中文一区二区完整视频在线观看| jiyouzz国产精品久久| 日韩电影免费在线看| 中文字幕中文字幕一区| 精品欧美乱码久久久久久 | 粉嫩蜜臀av国产精品网站| 亚洲成人免费在线| 中文字幕综合网| 欧美精品一区二区三区久久久| 欧美特级限制片免费在线观看| 国产高清久久久| 日本成人在线不卡视频| 亚洲一区二区视频在线| 中文字幕一区二区三区蜜月 | 在线观看欧美日本| 成人激情图片网| 国产一区二区在线观看视频| 奇米影视在线99精品| 亚洲成人tv网| 亚洲成人777| 艳妇臀荡乳欲伦亚洲一区| 国产精品久久国产精麻豆99网站| www激情久久| 精品裸体舞一区二区三区| 欧美乱熟臀69xxxxxx| 欧美色网一区二区| 欧美在线免费视屏| 在线观看不卡视频| 日本韩国欧美一区| 色88888久久久久久影院按摩| 91在线丨porny丨国产| 91亚洲男人天堂| 色婷婷综合久久| 欧美亚洲综合一区| 欧美精品免费视频| 日韩亚洲欧美在线观看| 日韩视频国产视频| 久久久午夜精品理论片中文字幕| 精品国产免费一区二区三区四区| 精品剧情v国产在线观看在线| 精品国产污网站| 国产蜜臀av在线一区二区三区| 国产日韩欧美不卡在线| 国产欧美日韩在线| 亚洲天堂精品视频| 亚洲国产日韩a在线播放性色| 五月天丁香久久| 久久超碰97人人做人人爱| 国产精品小仙女| 色伊人久久综合中文字幕| 欧美性大战久久| 日韩一区二区视频在线观看| 久久久久久毛片| 亚洲欧洲99久久| 首页国产欧美久久| 国产伦精品一区二区三区在线观看| 成人丝袜高跟foot| 欧美色涩在线第一页| 精品精品欲导航| 中文字幕亚洲在| 五月婷婷色综合| 国产91综合一区在线观看| 色琪琪一区二区三区亚洲区| 欧美人xxxx| 国产精品理论片在线观看| 亚洲福利视频一区| 国产一区不卡精品| 欧美在线制服丝袜| 精品国产91久久久久久久妲己 | 99久久精品国产毛片| 欧美精品日日鲁夜夜添| 欧美激情在线看| 亚洲国产美女搞黄色| 国产精品一区二区三区四区| 色哦色哦哦色天天综合| 欧美精品一区二区在线播放| 亚洲色图制服丝袜| 久久99日本精品| 一本一道久久a久久精品 | 久久国产欧美日韩精品| 97久久超碰国产精品| 日韩免费视频一区| 亚洲猫色日本管| 国产福利一区二区三区| 欧美日本精品一区二区三区| 中文字幕中文在线不卡住| 精品一区免费av| 欧美日韩国产一区| 自拍偷拍欧美激情| 国产盗摄女厕一区二区三区| 在线播放欧美女士性生活| 中文字幕亚洲一区二区av在线| 久国产精品韩国三级视频| 欧美日韩国产中文| 一区二区三区在线视频免费观看| 高清国产一区二区| 26uuu精品一区二区| 日本不卡一区二区| 欧美男男青年gay1069videost | 国产午夜精品一区二区三区视频 | 国产成人精品一区二区三区四区 | 94色蜜桃网一区二区三区| 亚洲精品一线二线三线无人区| 午夜视频在线观看一区二区三区| 99久久99久久精品国产片果冻| 久久看人人爽人人| 韩国女主播成人在线观看| 日韩一级视频免费观看在线| 亚洲.国产.中文慕字在线| 色婷婷av一区二区三区软件 | 欧美电影精品一区二区| 日韩不卡免费视频| 欧美日韩高清一区二区不卡| 亚洲国产婷婷综合在线精品| 日本高清成人免费播放| 亚洲综合色噜噜狠狠| 欧洲激情一区二区|