⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 halcaps.cpp

📁 AU1100嵌入式处理器lcd显示驱动程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// -----------------------------------------------------------------------------
//
//  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
//  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
//  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//  PARTICULAR PURPOSE.
//
//  Copyright (c) 1997-2000 Microsoft Corporation. All Rights Reserved.
//  COPYRIGHT (C) 1999-2000 IGS TECHNOLOGIES, INC. (iGST)
//
// -----------------------------------------------------------------------------

#ifdef DDRAW_ENABLE

#include "headers.h"

// callbacks from the DIRECTDRAW object

DDHAL_DDCALLBACKS cbDDCallbacks = {

    sizeof( DDHAL_DDCALLBACKS ),		// dwSize
	DDHAL_CB32_DESTROYDRIVER |			// dwFlags
	DDHAL_CB32_CREATESURFACE |
	DDHAL_CB32_SETCOLORKEY |
	DDHAL_CB32_SETMODE |
	DDHAL_CB32_WAITFORVERTICALBLANK |
	DDHAL_CB32_CANCREATESURFACE |
	DDHAL_CB32_CREATEPALETTE |
	DDHAL_CB32_GETSCANLINE |
	DDHAL_CB32_SETEXCLUSIVEMODE |
	DDHAL_CB32_FLIPTOGDISURFACE |
	0,
    DDGPEDestroyDriver,				// DestroyDriver
    DDGPECreateSurface,				// CreateSurface
    DDGPESetColorKeyDrv,			// SetColorKey
    DDGPESetMode,					// SetMode
    HalWaitForVerticalBlank,		// WaitForVerticalBlank
    DDGPECanCreateSurface, 			// CanCreateSurface
    DDGPECreatePalette, 			// CreatePalette
    0,				                // GetScanLine
    HalSetExclusiveMode,			// SetExclusiveMode
    DDGPEFlipToGDISurface			// FlipToGDISurface
};

// callbacks from the DIRECTDRAWCOLORCONTROL pseudo object

DDHAL_DDCOLORCONTROLCALLBACKS ColorControlCallbacks =
{
    sizeof(DDHAL_DDCOLORCONTROLCALLBACKS),
    0, // DDHAL_COLOR_COLORCONTROL,
    0  // &HalColorControl
};

// callbacks from the DIRECTDRAWEXEBUF psuedo object

DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks = {

    sizeof( DDHAL_DDEXEBUFCALLBACKS ), // dwSize
    DDHAL_EXEBUFCB32_CANCREATEEXEBUF |
    DDHAL_EXEBUFCB32_CREATEEXEBUF    |
    DDHAL_EXEBUFCB32_DESTROYEXEBUF   |
    DDHAL_EXEBUFCB32_LOCKEXEBUF      |
    DDHAL_EXEBUFCB32_UNLOCKEXEBUF,		// dwFlags
    DDGPECanCreateSurface,			// CanCreateExecuteBuffer
    DDGPECreateExecuteBuffer,		// CreateExecuteBuffer
    DDGPEDestroyExecuteBuffer,		// DestroyExecuteBuffer
    DDGPELock,					// Lock
    DDGPEUnlock 				// Unlock
};

// callbacks from the DIRECTDRAWKERNEL psuedo object

DDHAL_DDKERNELCALLBACKS KernelCallbacks =
{
    sizeof(DDHAL_DDKERNELCALLBACKS),
//    DDHAL_KERNEL_SYNCSURFACEDATA |
//    DDHAL_KERNEL_SYNCVIDEOPORTDATA |
	0,
//    &HalSyncSurfaceData,
//    &HalSyncVideoPortData
	0
};

// callbacks from the DIRECTDRAWMISCELLANEOUS object

DDHAL_DDMISCELLANEOUSCALLBACKS MiscellaneousCallbacks = {

    sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS),
//    DDHAL_MISCCB32_GETAVAILDRIVERMEMORY |
//    DDHAL_MISCCB32_UPDATENONLOCALHEAP |
//    DDHAL_MISCCB32_GETHEAPALIGNMENT |
//    DDHAL_MISCCB32_GETSYSMEMBLTSTATUS |
	0,
    0, //HalGetAvailDriverMemory,
    0, //HalUpdateNonLocalHeap,
    0, //HalGetHeapAlignment,
    0  //HalGetSysmemBltStatus
};

// callbacks from the DIRECTDRAWPALETTE object

DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks = {

    sizeof( DDHAL_DDPALETTECALLBACKS ), // dwSize
    DDHAL_PALCB32_DESTROYPALETTE |		// dwFlags
    DDHAL_PALCB32_SETENTRIES |
	0,
    DDGPEDestroyPalette,				// DestroyPalette
    DDGPESetEntries					// SetEntries
};


// callbacks from the DIRECTDRAWSURFACE object

DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks = {

    sizeof( DDHAL_DDSURFACECALLBACKS ), // dwSize
	DDHAL_SURFCB32_DESTROYSURFACE | 	// dwFlags
	DDHAL_SURFCB32_FLIP |
	DDHAL_SURFCB32_SETCLIPLIST |        // neither hardware nor DDGPE support, still need to stub it out
	DDHAL_SURFCB32_LOCK |
	DDHAL_SURFCB32_UNLOCK |
	DDHAL_SURFCB32_BLT |                // neither hardware nor DDGPE support
	DDHAL_SURFCB32_SETCOLORKEY |
//	DDHAL_SURFCB32_ADDATTACHEDSURFACE |
	DDHAL_SURFCB32_GETBLTSTATUS |       // neither hardware nor DDGPE support
	DDHAL_SURFCB32_GETFLIPSTATUS |
//	DDHAL_SURFCB32_UPDATEOVERLAY |
//	DDHAL_SURFCB32_SETOVERLAYPOSITION |
//	DDHAL_SURFCB32_RESERVED4 |
	DDHAL_SURFCB32_SETPALETTE |
	0,
    DDGPEDestroySurface,			// DestroySurface
    HalFlip,                        // Flip
    HalSetClipList,                 // HalSetClipList
    HalLock,						// Lock
    DDGPEUnlock,					// Unlock
    HalBlt,                         // HalBlt stub, must be present although neither hardware nor DDGPE support
    DDGPESetColorKey,				// SetColorKey
    0,								// AddAttachedSurface
    HalGetBltStatus,                // GetBltStatus
    HalGetFlipStatus,               // GetFlipStatus
    0,								// UpdateOverlay
    0,								// SetOverlayPosition
	NULL,							// reserved4
    DDGPESetPalette,				// SetPalette
};

DDHAL_DDHALMEMORYCALLBACKS HalMemoryCallbacks = {

    sizeof(DDHAL_DDHALMEMORYCALLBACKS),
	// DDHAL_KERNEL_HALGETVIDMEM |
	// DDHAL_KERNEL_HALSETSURFACEDESC |
	0,
    // &HalGetVidMem,
    // &HalSetSurfaceDesc
};


const DDKERNELCAPS KernelCaps =
{
    sizeof(DDKERNELCAPS),
//    DDKERNELCAPS_SKIPFIELDS	  |
//    DDKERNELCAPS_AUTOFLIP	  |
//    DDKERNELCAPS_SETSTATE	  |
//    DDKERNELCAPS_LOCK 	  |
//    DDKERNELCAPS_FLIPVIDEOPORT  |
//    DDKERNELCAPS_FLIPOVERLAY	  |
//    DDKERNELCAPS_FIELDPOLARITY  |
    0,
//    DDIRQ_DISPLAY_VSYNC	  |
//    DDIRQ_VPORT0_VSYNC	  |
    0
};


// For the moment we have only one mode for the primary surface (win32e frame buffer)
DDHALMODEINFO modeInfo[] =
{
//								Bits/	Uses			-----------MASKS-------------
//		width	height	pitch	Pixel	Palette Freq	Red		Green	Blue	Alpha
    {	320,	240,	640,	16,		0,		60,		0xF800, 0x07E0, 0x001F, 0		},
//    {	640,	480,	640,	8,		1,		60,		0,		0,		0,		0		},
//    {	640,	480,	1280,	16,		0,		60,		0xF800, 0x07E0, 0x001F, 0		},
//    {	320,	240,	320,	8,		1,		60,		0,		0,		0,		0		},
};



#define SCREEN_WIDTH	(g_pGPE->ScreenWidth())
#define SCREEN_HEIGHT	(g_pGPE->ScreenHeight())


// set up by HalInit
// This global pointer is to be recorded in the DirectDraw structure
DDGPE*			g_pGPE					= (DDGPE*)NULL;
DDGPESurf*		g_pDDrawPrimarySurface	= NULL;

// InitDDHALInfo must set up this information
unsigned long	g_nVideoMemorySize		= 0L;
unsigned char * g_pVideoMemory			= NULL; // virtual address of video memory from client's side


EXTERN_C void buildDDHALInfo( LPDDHALINFO lpddhi, DWORD modeidx ) {

	memset( lpddhi, 0, sizeof(DDHALINFO) ); 	// Clear the DDHALINFO structure
	((Au1100LCD *)g_pGPE)->GetTicksPerFrame();  // initialize m_dwTicksPerFrame

	if( !g_pVideoMemory )	// in case this is called more than once...
	{
		// g_pGPE and g_pDDrawPrimarySurface were already set up by HalInit

		unsigned long VirtVideoMemoryStart;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -