📄 halcaps.cpp
字号:
//-----------------------------------------------------------------------
//
// 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) 1999 Microsoft Corporation
//
// written by: ESG Solution Center Munich
//
// Module Name: halcaps.cpp
//
// abstract: ddraw caps and startup
//
//-----------------------------------------------------------------------
#include "precomp.h"
#if DXPAK
#define SETROPBIT(array,rop) array[(rop>>21)&0x07]|=(1<<((rop>>16)&0x1f))
DWORD FourCC[] = {
FOURCC_YUYV422
};
#define MAX_FOURCC sizeof(igsFourCC)/sizeof(DWORD)
// 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,
HalDestroyDriver, // DestroyDriver
HalCreateSurface, // CreateSurface
HalSetColorKey,
HalSetMode,
HalWaitForVerticalBlank, // WaitForVerticalBlank
HalCanCreateSurface, // CanCreateSurface
HalCreatePalette, // CreatePalette
HalGetScanLine, // GetScanLine
HalSetExclusiveMode, // SetExclusiveMode
HalFlipToGDISurface
};
// callbacks from the DIRECTDRAWCOLORCONTROL pseudo object
DDHAL_DDCOLORCONTROLCALLBACKS ColorControlCallbacks =
{
sizeof(DDHAL_DDCOLORCONTROLCALLBACKS),
0, // DDHAL_COLOR_COLORCONTROL,
0 // &HalColorControl
};
// 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,
HalDestroyPalette, // DestroyPalette
HalSetEntries // SetEntries
};
// callbacks from the DIRECTDRAWSURFACE object
DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks = {
sizeof( DDHAL_DDSURFACECALLBACKS ), // dwSize
DDHAL_SURFCB32_DESTROYSURFACE | // dwFlags
DDHAL_SURFCB32_FLIP |
DDHAL_SURFCB32_SETCLIPLIST |
DDHAL_SURFCB32_LOCK |
DDHAL_SURFCB32_UNLOCK |
DDHAL_SURFCB32_BLT |
DDHAL_SURFCB32_SETCOLORKEY |
// DDHAL_SURFCB32_ADDATTACHEDSURFACE |
DDHAL_SURFCB32_GETBLTSTATUS |
DDHAL_SURFCB32_GETFLIPSTATUS |
DDHAL_SURFCB32_UPDATEOVERLAY |
DDHAL_SURFCB32_SETOVERLAYPOSITION |
//DDHAL_SURFCB32_RESERVED4 |
DDHAL_SURFCB32_SETPALETTE |
0,
HalDestroySurface,
HalFlip, // Flip
HalSetClipList, // SetClipList
HalLock, // Lock
HalUnlock,
HalBlt,
HalSetColorKey,
HalAddAttachedSurface, // AddAttachedSurface
HalGetBltStatus, // GetBltStatus
HalGetFlipStatus, // GetFlipStatus
HalUpdateOverlay, // UpdateOverlay
HalSetOverlayPosition, // SetOverlayPosition
NULL, // reserved4
HalSetPalette
};
DDHAL_DDHALMEMORYCALLBACKS HalMemoryCallbacks = {
sizeof(DDHAL_DDHALMEMORYCALLBACKS),
DDHAL_KERNEL_HALGETVIDMEM |
DDHAL_KERNEL_HALSETSURFACEDESC |
0,
&HalGetVidMem,
&HalSetSurfaceDesc
};
#ifdef VIDEOPORT_SUPPORT
// callbacks from the DIRECTDRAWVIDEOPORT pseudo object
DDHAL_DDVIDEOPORTCALLBACKS VideoPortCallbacks = {
sizeof(DDHAL_DDVIDEOPORTCALLBACKS),
DDHAL_VPORT32_CANCREATEVIDEOPORT |
DDHAL_VPORT32_CREATEVIDEOPORT |
DDHAL_VPORT32_FLIP |
DDHAL_VPORT32_GETBANDWIDTH |
DDHAL_VPORT32_GETINPUTFORMATS |
DDHAL_VPORT32_GETOUTPUTFORMATS |
DDHAL_VPORT32_GETFIELD |
DDHAL_VPORT32_GETLINE |
DDHAL_VPORT32_GETCONNECT |
DDHAL_VPORT32_DESTROY |
DDHAL_VPORT32_GETFLIPSTATUS |
DDHAL_VPORT32_UPDATE |
DDHAL_VPORT32_WAITFORSYNC |
DDHAL_VPORT32_GETSIGNALSTATUS |
DDHAL_VPORT32_COLORCONTROL |
0,
&HalCanCreateVideoPort,
&HalCreateVideoPort,
&HalFlipVideoPort,
&HalGetVideoPortBandwidth,
&HalGetVideoPortInputFormats,
&HalGetVideoPortOutputFormats,
NULL, //lpReserved1
&HalGetVideoPortField,
&HalGetVideoPortLine,
&HalGetVideoPortConnectInfo,
&HalDestroyVideoPort,
&HalGetVideoPortFlipStatus,
&HalUpdateVideoPort,
&HalWaitForVideoPortSync,
&HalGetVideoSignalStatus,
&HalColorControl,
};
const DDVIDEOPORTCAPS VideoPortCaps = {
sizeof(DDVIDEOPORTCAPS),
DDVPD_WIDTH | // indicates which fields contain data
DDVPD_HEIGHT |
DDVPD_ID |
DDVPD_CAPS |
DDVPD_FX |
DDVPD_AUTOFLIP|
DDVPD_ALIGN |
0,
2048, // max width of the video port field
2048, // max width of the VBI data
500, // max height of the video port field
0, // Video port ID (0 - (dwMaxVideoPorts -1))
DDVPCAPS_INTERLACED | // Video Port Caps
DDVPCAPS_NONINTERLACED |
DDVPCAPS_READBACKFIELD |
DDVPCAPS_READBACKLINE |
DDVPCAPS_SKIPEVENFIELDS |
DDVPCAPS_SKIPODDFIELDS |
DDVPCAPS_AUTOFLIP |
0,
DDVPFX_CROPX | // More video port FX capabilities
DDVPFX_CROPY |
DDVPFX_INTERLEAVE |
DDVPFX_MIRRORLEFTRIGHT |
DDVPFX_MIRRORUPDOWN |
DDVPFX_PRESHRINKX |
DDVPFX_PRESHRINKXS |
DDVPFX_PRESHRINKY |
DDVPFX_PRESHRINKYS |
0,
2, // Number of autoflippable surfaces
1, // Byte restriction of placement within the surface
8, // Byte restriction of width after prescaling
1, // Byte restriction of left cropping
1, // Byte restriction of cropping width
1440, // Width can be shrunk in steps of 1/x
960, // Height can be shrunk in steps of 1/x
0, // Number of VBI autoflippable surfaces
0, // Reserved for future use
0 // Reserved for future use
};
#endif // VIDEOPORT_SUPPORT
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[] =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -