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

📄 halcaps.cpp

📁 windows wm5 下的Lcd 驱动接口
💻 CPP
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
// -----------------------------------------------------------------------------
//
//  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.
//
// -----------------------------------------------------------------------------

#include "precomp.h"

// callbacks from the DIRECTDRAW object

DDHAL_DDCALLBACKS cbDDCallbacks =
{
    sizeof( DDHAL_DDCALLBACKS ),
        DDHAL_CB32_CREATESURFACE        |
//      DDHAL_CB32_WAITFORVERTICALBLANK |
        DDHAL_CB32_CANCREATESURFACE     |
//      DDHAL_CB32_CREATEPALETTE        |
//      DDHAL_CB32_GETSCANLINE          |
        0,
    DDGPECreateSurface,
    NULL,
    DDGPECanCreateSurface,
    NULL,
    NULL
};

// callbacks from the DIRECTDRAWSURFACE object

DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks =
{
    sizeof( DDHAL_DDSURFACECALLBACKS ),
        DDHAL_SURFCB32_DESTROYSURFACE     |
//      DDHAL_SURFCB32_FLIP               |
        DDHAL_SURFCB32_LOCK               |
        DDHAL_SURFCB32_UNLOCK             |
        DDHAL_SURFCB32_SETCOLORKEY        |
        DDHAL_SURFCB32_GETBLTSTATUS       |
//      DDHAL_SURFCB32_GETFLIPSTATUS      |
//      DDHAL_SURFCB32_UPDATEOVERLAY      |
//      DDHAL_SURFCB32_SETOVERLAYPOSITION |
//      DDHAL_SURFCB32_SETPALETTE         |
        0,
    DDGPEDestroySurface,
    NULL,
    DDGPELock,
    DDGPEUnlock,
    DDGPESetColorKey,
    HalGetBltStatus,
    NULL,
    NULL,
    NULL,
    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
DWORD                   g_nTransparentColor     = 0L;

DWORD WINAPI 
HalGetDriverInfo(
    LPDDHAL_GETDRIVERINFODATA lpInput
    )
{
    DEBUGENTER(HalGetDriverInfo);

    // The flat driver does not implement any of the exteneded DirectDraw
    // caps or callbacks.

    lpInput->ddRVal = DDERR_CURRENTLYNOTAVAIL;

    DEBUGLEAVE(HalGetDriverInfo);
    return DDHAL_DRIVER_HANDLED;
}

DWORD WINAPI 
HalGetBltStatus(
    LPDDHAL_GETBLTSTATUSDATA pd 
    )
{
	DEBUGENTER(HalGetBltStatus);
	
    // The flat driver always completes blts immidiately.
	
	pd->ddRVal = DD_OK;

    DEBUGLEAVE(HalGetBltStatus);
	return DDHAL_DRIVER_HANDLED;
}

EXTERN_C void 
buildDDHALInfo( 
    LPDDHALINFO lpddhi,
    DWORD modeidx 
    )
{
    S3C2410DISP * pGPEFlat = static_cast<S3C2410DISP *>(GetDDGPE());

    if( !g_pVideoMemory )   // in case this is called more than once...
    {
        unsigned long VideoMemoryStart;

        pGPEFlat->GetVirtualVideoMemory( &VideoMemoryStart, &g_nVideoMemorySize );
        DEBUGMSG( GPE_ZONE_INIT,(TEXT("GetVirtualVideoMemory returned addr=0x%08x size=%d\r\n"), VideoMemoryStart, g_nVideoMemorySize));

        g_pVideoMemory = (BYTE*)VideoMemoryStart;
        DEBUGMSG( GPE_ZONE_INIT,(TEXT("gpVidMem=%08x\r\n"), g_pVideoMemory ));
    }

    memset( lpddhi, 0, sizeof(DDHALINFO) );         // Clear the DDHALINFO structure

    lpddhi->dwSize = sizeof(DDHALINFO);

    lpddhi->lpDDCallbacks = &cbDDCallbacks;
    lpddhi->lpDDSurfaceCallbacks = &cbDDSurfaceCallbacks;
    lpddhi->GetDriverInfo = HalGetDriverInfo;

    lpddhi->lpdwFourCC = 0;

    // Capability bits.

    lpddhi->ddCaps.dwSize = sizeof(DDCAPS);

    lpddhi->ddCaps.dwVidMemTotal = g_nVideoMemorySize;
    lpddhi->ddCaps.dwVidMemFree = g_nVideoMemorySize;
    lpddhi->ddCaps.dwVidMemStride = 0;

    lpddhi->ddCaps.ddsCaps.dwCaps =
        DDSCAPS_FRONTBUFFER         |
        DDSCAPS_PRIMARYSURFACE      |
        DDSCAPS_SYSTEMMEMORY        |
        0;

    lpddhi->ddCaps.dwNumFourCCCodes = 0;

    lpddhi->ddCaps.dwPalCaps = 0;
    lpddhi->ddCaps.dwMiscCaps = 0;

    // DirectDraw Blttting caps refer to hardware blitting support only.

    lpddhi->ddCaps.dwBltCaps = 0;
    lpddhi->ddCaps.dwCKeyCaps = 0;
    lpddhi->ddCaps.dwAlphaCaps = 0;

    // Overlay caps.

    lpddhi->ddCaps.dwOverlayCaps = 0;                   
    lpddhi->ddCaps.dwMaxVisibleOverlays = 0;
    lpddhi->ddCaps.dwCurrVisibleOverlays = 0;

    lpddhi->ddCaps.dwAlignBoundarySrc = 0;
    lpddhi->ddCaps.dwAlignSizeSrc = 0;
    lpddhi->ddCaps.dwAlignBoundaryDest = 0;
    lpddhi->ddCaps.dwAlignSizeDest = 0;

    lpddhi->ddCaps.dwMinOverlayStretch = 0;
    lpddhi->ddCaps.dwMaxOverlayStretch = 0;
}

⌨️ 快捷键说明

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