//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: misc_func.cpp
//      Краткое описание: различные функции
//

#include <d3d9.h>
#include <Darkstar/common.hpp>
#include <Darkstar/Kernel/Misc/misc_func.hpp>

unsigned int ker::getBitsInPixel(DWORD pixel_format)
{
	switch(pixel_format)
	{
	case D3DFMT_DXT1:
		{
			return 4;
		};break;
	case D3DFMT_A4L4:
	case D3DFMT_A8:
	case D3DFMT_P8:
	case D3DFMT_L8:
	case D3DFMT_R3G3B2:
	case D3DFMT_DXT2:
	case D3DFMT_DXT3:
	case D3DFMT_DXT4:
	case D3DFMT_DXT5:
		{
			return 8;
		};break;
	case D3DFMT_A1R5G5B5:
	case D3DFMT_A4R4G4B4:
	case D3DFMT_A8L8:
	case D3DFMT_A8P8:
	case D3DFMT_A8R3G3B2:
	case D3DFMT_L16:
	case D3DFMT_X4R4G4B4:
	case D3DFMT_R5G6B5:
	case D3DFMT_X1R5G5B5:
	case D3DFMT_CxV8U8:
	case D3DFMT_V8U8:
	case D3DFMT_L6V5U5:
	case D3DFMT_R8G8_B8G8:
	case D3DFMT_G8R8_G8B8:
	case D3DFMT_R16F:
	case D3DFMT_YUY2:
	case D3DFMT_UYVY:
		{
			return 16;
		};break;
	case D3DFMT_R8G8B8:
		{
			return 24;
		};break;
	case D3DFMT_A8R8G8B8:
	case D3DFMT_A8B8G8R8:
	case D3DFMT_X8B8G8R8:
	case D3DFMT_A2B10G10R10:
	case D3DFMT_A2R10G10B10:
	case D3DFMT_G16R16:
	case D3DFMT_X8R8G8B8:
	case D3DFMT_Q8W8V8U8:
	case D3DFMT_V16U16:
	case D3DFMT_A2W10V10U10:
	case D3DFMT_X8L8V8U8:
	case D3DFMT_G16R16F:
	case D3DFMT_R32F:
		{
			return 32;
		};break;
	case D3DFMT_A16B16G16R16:
	case D3DFMT_Q16W16V16U16:
	case D3DFMT_G32R32F:
	case D3DFMT_A16B16G16R16F:
		{
			return 64;
		};break;
	case D3DFMT_A32B32G32R32F:
		{
			return 128;
		};break;
	default: 
		{
			return 0;
		};break;
	};
	return 0;
};
