📄 halutils.c
字号:
}
}
}
else if (lpPixelFormat->dwFlags & DDPF_LUMINANCE)
{
/*
Lumincance textures.
*/
switch (lpPixelFormat->dwLuminanceBitMask | lpPixelFormat->dwLuminanceAlphaBitMask)
{
case 0x000000FF:
/*
Fudge the MBX1 pixel format to something sensible.
*/
dwMBXFormat = MBXDD_FORMAT_GREY_SCALE;
break;
case 0x0000FFFF:
/*
Fudge the MBX1 pixel format to something sensible.
*/
dwMBXFormat = MBXDD_FORMAT_RGB565;
break;
default:
DPF("Invalid pixel format for bump texture !");
return(FALSE);
break;
}
}
else if (lpPixelFormat->dwFlags & DDPF_BUMPDUDV)
{
/*
Bump map textures.
*/
switch (lpPixelFormat->dwBumpDuBitMask)
{
case 0x000000FF:
{
/*
Fudge the MBX1 pixel format to something sensible.
*/
dwMBXFormat = MBXDD_FORMAT_RGB565;
break;
}
case 0x0000001F:
{
/*
Fudge the MBX1 pixel format to something sensible.
*/
dwMBXFormat = MBXDD_FORMAT_RGB565;
break;
}
default:
{
DPF("ConvertPixelFormatToMBX: Unrecognised bump pixel format.");
break;
}
}
}
else
{
/*
If we've got here then it's an (A)RGB surface of some form.
*/
switch (lpPixelFormat->dwRGBBitCount)
{
case 4:
{
dwMBXFormat = MBXDD_FORMAT_PAL4;
break;
}
case 8:
{
dwMBXFormat = MBXDD_FORMAT_PAL8;
if (lpPixelFormat->dwFlags & DDPF_PALETTEINDEXEDTO8)
{
DPF("ConvertPixelFormatToMBX: Can't depalettise to palettised! (8bpp)");
}
break;
}
case 16:
{
switch (lpPixelFormat->dwRBitMask)
{
case 0x000000E0:
{
// For the time being set as 4444 mode. Do we need 8332 format ??????
//dwMBXFormat = MBXDD_FORMAT_ARGB8332;
dwMBXFormat = MBXDD_FORMAT_ARGB4444;
break;
}
case 0x00007C00:
{
if (lpPixelFormat->dwRGBAlphaBitMask)
{
dwMBXFormat = MBXDD_FORMAT_ARGB1555;
}
else
{
dwMBXFormat = MBXDD_FORMAT_RGB555;
}
break;
}
case 0x00000F00:
{
dwMBXFormat = MBXDD_FORMAT_ARGB4444;
break;
}
case 0x0000F800:
{
dwMBXFormat = MBXDD_FORMAT_RGB565;
break;
}
default:
{
DPF("ConvertPixelFormatToMBX: Unknown 16-Bit format");
break;
}
}
break;
}
case 24:
{
if (lpPixelFormat->dwRBitMask == 0x00FF0000)
{
dwMBXFormat = MBXDD_FORMAT_RGB888;
}
else
{
dwMBXFormat = MBXDD_FORMAT_BGR888;
}
break;
}
case 32:
{
if (lpPixelFormat->dwRBitMask == 0x00FF0000)
{
dwMBXFormat = MBXDD_FORMAT_ARGB8888;
}
else
{
dwMBXFormat = MBXDD_FORMAT_ABGR8888;
}
break;
}
default:
{
DPF("ConvertPixelFormatToMBX: Unknown bit depth");
break;
}
}
}
return(dwMBXFormat);
}
/*****************************************************************************
FUNCTION : ConvertPixelFormatToOverlay
PURPOSE : To create an overlay pixel format value from DirectDraw's DDPIXELFORMAT
pixel format.
PARAMETERS : lpPixelFormat - pointer to DirectDraw pixel format
pdwOverlayFormat - pointer to variable that will receive the
MBX overlay pixel format
RETURNS : TRUE if DrectDraw pixel format is valid for overlay, else FALSE
*****************************************************************************/
BOOL ConvertPixelFormatToOverlay(LPDDPIXELFORMAT lpPixelFormat, DWORD *pdwOverlayFormat)
{
BOOL bFound=FALSE;
if (lpPixelFormat->dwFlags & DDPF_FOURCC)
{
/* Read FourCC flag.
*/
switch (lpPixelFormat->dwFourCC)
{
case HALFOURCC_YV12:
*pdwOverlayFormat=PDP_OVL_YV12;
bFound=TRUE;
break;
case HALFOURCC_IMC2:
*pdwOverlayFormat=PDP_OVL_IMC2;
bFound=TRUE;
break;
case HALFOURCC_YUY2:
case HALFOURCC_YUYV:
*pdwOverlayFormat=PDP_OVL_YUY2;
bFound=TRUE;
break;
case HALFOURCC_UYVY:
*pdwOverlayFormat=PDP_OVL_UYVY;
bFound=TRUE;
break;
case HALFOURCC_VYUY:
*pdwOverlayFormat=PDP_OVL_VYUY;
bFound=TRUE;
break;
}
}
return(bFound);
}
/*****************************************************************************
FUNCTION : GetBPPFromFourCC
PURPOSE :
PARAMETERS : dwFourCC - To suss baby...
RETURNS : DDHAL return code.
*****************************************************************************/
DWORD GetBPPFromFOURCC(DWORD dwFourCC)
{
DWORD dwBPP;
/*
Read FourCC flag.
*/
switch (dwFourCC)
{
case HALFOURCC_UYVY:
case HALFOURCC_YUY2:
case HALFOURCC_YUYV:
case HALFOURCC_UYNV:
case HALFOURCC_YVYU:
case HALFOURCC_YUNV:
case HALFOURCC_VYUY:
dwBPP = 16;
break;
case HALFOURCC_YV12:
case HALFOURCC_IMC2:
/* These formats are planar so this figure is not strictly true */
dwBPP = 12;
break;
case HALFOURCC_0888:
dwBPP = 24;
break;
case HALFOURCC_PVRTC2:
dwBPP = 2;
break;
case HALFOURCC_PVRTC4:
dwBPP = 4;
break;
case FOURCC_DXT1:
dwBPP = 4;
break;
/*
Support for system memory surfaces
*/
case FOURCC_DXT3:
case FOURCC_DXT5:
dwBPP = 8;
break;
default:
DPF("GetBPPFromFOURCC: Unrecognised FourCC pixel format.");
dwBPP = 16;
break;
}
return(dwBPP);
}
/*****************************************************************************
FUNCTION : GetPixelFormatType
PURPOSE : Returns MBXDD_PIXELFORMAT_xxx type/family for given format
PARAMETERS : DWORD dwFormat - MBXDD_FORMAT_xxx value
RETURNS : DWORD dwType - MBXDD_PIXELFORMAT_xxx value
*****************************************************************************/
DWORD GetPixelFormatType(DWORD dwFormat)
{
DWORD dwType;
switch (dwFormat)
{
case MBXDD_FORMAT_RGB565:
case MBXDD_FORMAT_RGB555:
case MBXDD_FORMAT_RGB888:
case MBXDD_FORMAT_BGR888:
case MBXDD_FORMAT_GREY_SCALE:
case MBXDD_FORMAT_ARGB1555:
case MBXDD_FORMAT_ARGB4444:
case MBXDD_FORMAT_ARGB8888:
case MBXDD_FORMAT_ABGR8888:
dwType = MBXDD_PIXELFORMAT_RGB;
break;
case MBXDD_FORMAT_PAL12:
case MBXDD_FORMAT_PAL8:
case MBXDD_FORMAT_PAL4:
case MBXDD_FORMAT_PAL2:
case MBXDD_FORMAT_PAL1:
dwType = MBXDD_PIXELFORMAT_PALETTISED;
break;
case MBXDD_FORMAT_YUV420:
case MBXDD_FORMAT_YV12:
case MBXDD_FORMAT_I420:
case MBXDD_FORMAT_IMC2:
dwType = MBXDD_PIXELFORMAT_PLANARISED;
break;
case MBXDD_FORMAT_YUV444:
case MBXDD_FORMAT_VUY444:
case MBXDD_FORMAT_YUYV:
case MBXDD_FORMAT_YVYU:
case MBXDD_FORMAT_UYVY:
case MBXDD_FORMAT_VYUY:
dwType = MBXDD_PIXELFORMAT_FOURCC;
break;
default:
DPF("GetPixelFormatType: Unrecognised MBXDD_FORMAT pixel format.");
dwType = MBXDD_PIXELFORMAT_UNRECOGNISED;
break;
}
return(dwType);
}
/*****************************************************************************
FUNCTION : GetPVRHALRegSettings
PURPOSE : Get PVRHAL registry settings..
PARAMETERS : PPVR_REG_DATA psRegData
RETURNS : None
*****************************************************************************/
void GetPVRHALRegSettings(DWORD dwDevCookie,
PPVR_REG_DATA psRegData,
PVRSRV_DEV_INFO *psDevInfo)
{
UNREFERENCED_PARAMETER(psDevInfo);
/* FIXME GetPVRDXRegSettings(dwDevCookie, psRegData);*/
}
/*----------------------------------------------------------------------------
<function>
DESCRIPTION: Returns the Current rotation angle of the Window system
PARAMETERS :
RETURNS : 0,90,270,180
</function>
------------------------------------------------------------------------------*/
IMG_UINT32 GetRotationAngle()
{
IMG_UINT32 ui32Angle=0;
HDC hDC;
hDC = GetDC(NULL);
ExtEscape(hDC, DRVESC_GET_PHYS_ROTATION, 0, NULL, sizeof(PDWORD), (LPSTR)&ui32Angle);
ReleaseDC(NULL, hDC);
switch(ui32Angle)
{
case DMDO_0:
default:
break;
case DMDO_90:
ui32Angle=90;
break;
case DMDO_180:
ui32Angle=180;
break;
case DMDO_270:
ui32Angle=270;
break;
}
return ui32Angle;
}
/*****************************************************************************
End of file (halutils.c)
*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -