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

📄 halutils.c

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
			}
		}
	}
	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 + -