ddhpalette.cpp

来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· C++ 代码 · 共 106 行

CPP
106
字号
#include "precomp.h"


EXTERN_C DWORD WINAPI DDGPECreatePalette( LPDDHAL_CREATEPALETTEDATA pd )
{
	/*
	typedef struct _DDHAL_CREATEPALETTEDATA
	{
	    LPDDRAWI_DIRECTDRAW_GBL     lpDD;           // driver struct
	    LPDDRAWI_DDRAWPALETTE_GBL   lpDDPalette;    // ddraw palette struct
	    LPPALETTEENTRY              lpColorTable;   // colors to go in palette
	    HRESULT                     ddRVal;         // return value
	    LPDDHAL_CREATEPALETTE       CreatePalette;  // PRIVATE: ptr to callback
	    BOOL                        is_excl;        // process has exclusive mode
	} DDHAL_CREATEPALETTEDATA;
	*/
	int				i;
	LPPALETTEENTRY	ptable;

	DEBUGENTER( DDGPECreatePalette );

    // allocate space for the color table
    ptable = new PALETTEENTRY[MAX_PALETTE_SIZE];

    if (ptable == NULL)
    {
        pd->ddRVal = E_OUTOFMEMORY;
        return DDHAL_DRIVER_HANDLED;
    }

    // Copy the palette entries we want into our color table and set flags
//    for( i=1; i<MAX_PALETTE_SIZE-1; i++ )
//    {
//        ptable[i] = pd->lpColorTable[i];
//        ptable[i].peFlags = 0;
//    }
//	ptable[0].peRed = 0;
//	ptable[0].peGreen = 0;
//	ptable[0].peBlue = 0;
//	ptable[0].peFlags = 0;
//	ptable[255].peRed = 255;
//	ptable[255].peGreen = 255;
//	ptable[255].peBlue = 255;
//	ptable[255].peFlags = 0;
    for( i=0; i<MAX_PALETTE_SIZE; i++ )
    {
        ptable[i] = pd->lpColorTable[i];
        ptable[i].peFlags = 0;
    }

    pd->lpDDPalette->lpColorTable = ptable;
    pd->lpDDPalette->dwFlags |= DDRAWIPAL_EXCLUSIVE;
	pd->ddRVal = DD_OK;
	return DDHAL_DRIVER_HANDLED;
}

//////////////////////////// DDHAL_DDPALETTECALLBACKS ////////////////////////////

EXTERN_C DWORD WINAPI DDGPEDestroyPalette( LPDDHAL_DESTROYPALETTEDATA pd )
{
	DEBUGENTER( DDGPEDestroyPalette );
	/*
	typedef struct _DDHAL_DESTROYPALETTEDATA
	{
	    LPDDRAWI_DIRECTDRAW_GBL     lpDD;           // driver struct
	    LPDDRAWI_DDRAWPALETTE_GBL   lpDDPalette;    // palette struct
	    HRESULT                     ddRVal;         // return value
	    LPDDHALPALCB_DESTROYPALETTE DestroyPalette; // PRIVATE: ptr to callback
	} DDHAL_DESTROYPALETTEDATA;
	*/

    if (pd->lpDDPalette->dwFlags & DDRAWIPAL_EXCLUSIVE)
    {
        delete pd->lpDDPalette->lpColorTable;
        pd->lpDDPalette->lpColorTable = NULL;
        pd->lpDDPalette->dwFlags &= ~DDRAWIPAL_EXCLUSIVE;
    }

	pd->ddRVal = DD_OK;
	return DDHAL_DRIVER_HANDLED;
}


EXTERN_C DWORD WINAPI DDGPESetEntries( LPDDHAL_SETENTRIESDATA pd )
{
	DEBUGENTER( DDGPESetEntries );
	/*
	typedef struct _DDHAL_SETENTRIESDATA
	{
	    LPDDRAWI_DIRECTDRAW_GBL     lpDD;           // driver struct
	    LPDDRAWI_DDRAWPALETTE_GBL   lpDDPalette;    // palette struct
	    DWORD                       dwBase;         // base palette index
	    DWORD                       dwNumEntries;   // number of palette entries
	    LPPALETTEENTRY              lpEntries;      // color table
	    HRESULT                     ddRVal;         // return value
	    LPDDHALPALCB_SETENTRIES     SetEntries;     // PRIVATE: ptr to callback
	} DDHAL_SETENTRIESDATA;
	*/
	g_pGPE->SetPalette(	(PALETTEENTRY *)(pd->lpEntries),
						(unsigned short)(pd->dwBase),
						(unsigned short)(pd->dwNumEntries));
	pd->ddRVal = DD_OK;
	return DDHAL_DRIVER_HANDLED;
}

⌨️ 快捷键说明

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