graphicsdeviceinterface/directgdi/test/tdisplaymode_mapping.cpp
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicsdeviceinterface/directgdi/test/tdisplaymode_mapping.cpp	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,439 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+#include "tdisplaymode_mapping.h"
+
+const TPtrC KPixelFormatNames[] = 
+	{
+	_L("EUidPixelFormatUnknown"),              //0
+	_L("EUidPixelFormatXRGB_8888"),            //1
+	_L("EUidPixelFormatARGB_8888"),            //2
+	_L("EUidPixelFormatARGB_8888_PRE"),        //3
+	_L("EUidPixelFormatRGB_888"),              //4
+	_L("EUidPixelFormatA_8"),                  //5
+	_L("EUidPixelFormatRGB_565"),              //6
+	_L("EUidPixelFormatXRGB_4444"),            //7
+	_L("EUidPixelFormatP_8"),                  //8
+	_L("EUidPixelFormatP_4"),                  //9
+	_L("EUidPixelFormatL_8"),                  //10
+	_L("EUidPixelFormatL_4"),                  //11
+	_L("EUidPixelFormatL_2"),                  //12
+	_L("EUidPixelFormatL_1"),                  //13
+	};
+
+const TPtrC KShortPixelFormatNames[] = 
+	{
+	_L("Unknown"),              //0
+	_L("XRGB_8888"),            //1
+	_L("ARGB_8888"),            //2
+	_L("ARGB_8888_PRE"),        //3
+	_L("RGB_888"),              //4
+	_L("A_8"),                  //5
+	_L("RGB_565"),              //6
+	_L("XRGB_4444"),            //7
+	_L("P_8"),                  //8
+	_L("P_4"),                  //9
+	_L("L_8"),                  //10
+	_L("L_4"),                  //11
+	_L("L_2"),                  //12
+	_L("L_1"),                  //13
+	};
+
+/**
+Convert the string of pixel format to TDisplayMode
+@param aPixelformatString The input string of pixel format
+@return On return, it contains a display mode enum value
+ */
+TDisplayMode TDisplayModeMapping::ConvertPixelFormatStringToDisplayMode(const TPtrC aPixelformatString)
+	{
+	TUidPixelFormat format = ConvertPixelFormatStringToPixelFormat(aPixelformatString);
+	
+	return MapPixelFormatToDisplayMode(format);	
+	}
+
+/**
+Converts a pixel format string to TUidPixelFormat
+@see ConvertPixelformatToShortPixelFormatString()
+@param aPixelformatString The pixel format string to convert
+@return Returns a pixel format enum value TUidPixelFormat
+ */
+TUidPixelFormat TDisplayModeMapping::ConvertPixelFormatStringToPixelFormat(const TPtrC aPixelformatString)
+	{
+	TUidPixelFormat format = EUidPixelFormatUnknown;
+	
+	if (aPixelformatString == KPixelFormatNames[1])
+		{
+		format =  EUidPixelFormatXRGB_8888;
+		}
+	else if (aPixelformatString == KPixelFormatNames[2])
+		{
+		format =  EUidPixelFormatARGB_8888;
+		}
+	else if (aPixelformatString == KPixelFormatNames[3])
+		{
+		format =  EUidPixelFormatARGB_8888_PRE;
+		}
+	else if (aPixelformatString == KPixelFormatNames[4])
+		{
+		format =  EUidPixelFormatRGB_888;
+		}
+	else if (aPixelformatString == KPixelFormatNames[5])
+		{
+		format =  EUidPixelFormatA_8;
+		}
+	else if (aPixelformatString == KPixelFormatNames[6])
+		{
+		format =  EUidPixelFormatRGB_565;
+		}
+	else if (aPixelformatString == KPixelFormatNames[7])
+		{
+		format =  EUidPixelFormatXRGB_4444;
+		}
+	else if (aPixelformatString == KPixelFormatNames[8])
+		{
+		format =  EUidPixelFormatP_8;
+		}
+	else if (aPixelformatString == KPixelFormatNames[9])
+		{
+		format =  EUidPixelFormatP_4;
+		}
+	else if (aPixelformatString == KPixelFormatNames[10])
+		{
+		format =  EUidPixelFormatL_8;
+		}
+	else if (aPixelformatString == KPixelFormatNames[11])
+		{
+		format =  EUidPixelFormatL_4;
+		}
+	else if (aPixelformatString == KPixelFormatNames[12])
+		{
+		format =  EUidPixelFormatL_2;
+		}
+	else if (aPixelformatString == KPixelFormatNames[13])
+		{
+		format =  EUidPixelFormatL_1;
+		}
+	
+	return format;
+	}
+
+/*
+Convert the pixel format enum to a string
+@param aFormat The pixel format enum
+@return On return, it contains the pixel format string
+ */
+TPtrC TDisplayModeMapping::ConvertPixelFormatToPixelFormatString(const TUidPixelFormat aFormat)
+	{
+	TPtrC pixelFormatString(KPixelFormatNames[0]);
+	
+	if (aFormat == EUidPixelFormatXRGB_8888)
+		{
+		pixelFormatString.Set(KPixelFormatNames[1]);
+		}
+	else if (aFormat == EUidPixelFormatARGB_8888)
+		{
+		pixelFormatString.Set(KPixelFormatNames[2]);
+		}
+	else if (aFormat == EUidPixelFormatARGB_8888_PRE)
+		{
+		pixelFormatString.Set(KPixelFormatNames[3]);
+		}
+	else if (aFormat == EUidPixelFormatRGB_888)
+		{
+		pixelFormatString.Set(KPixelFormatNames[4]);
+		}
+	else if (aFormat == EUidPixelFormatA_8)
+		{
+		pixelFormatString.Set(KPixelFormatNames[5]);
+		}
+	else if (aFormat == EUidPixelFormatRGB_565)
+		{
+		pixelFormatString.Set(KPixelFormatNames[6]);
+		}
+	else if (aFormat == EUidPixelFormatXRGB_4444)
+		{
+		pixelFormatString.Set(KPixelFormatNames[7]);
+		}
+	else if (aFormat == EUidPixelFormatP_8)
+		{
+		pixelFormatString.Set(KPixelFormatNames[8]);
+		}
+	else if (aFormat == EUidPixelFormatP_4)
+		{
+		pixelFormatString.Set(KPixelFormatNames[9]);
+		}
+	else if (aFormat == EUidPixelFormatL_8)
+		{
+		pixelFormatString.Set(KPixelFormatNames[10]);
+		}
+	else if (aFormat == EUidPixelFormatL_4)
+		{
+		pixelFormatString.Set(KPixelFormatNames[11]);
+		}
+	else if (aFormat == EUidPixelFormatL_2)
+		{
+		pixelFormatString.Set(KPixelFormatNames[12]);
+		}
+	else if (aFormat == EUidPixelFormatL_1)
+		{
+		pixelFormatString.Set(KPixelFormatNames[13]);
+		}	
+	
+	return pixelFormatString;
+	}
+
+/*
+Convert the pixel format enum to a shorter string than is achieved with ConvertPixelformatToPixelFormatString().
+The EUidPixelFormat portion of the pixel format string is not added to the string. 
+@see ConvertPixelformatToPixelFormatString()
+@param aFormat The pixel format enum
+@return On return, it contains the pixel format string
+ */
+TPtrC TDisplayModeMapping::ConvertPixelFormatToShortPixelFormatString(const TUidPixelFormat aFormat)
+	{
+	TPtrC pixelFormatString(KShortPixelFormatNames[0]);
+	
+	if (aFormat == EUidPixelFormatXRGB_8888)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[1]);
+		}
+	else if (aFormat == EUidPixelFormatARGB_8888)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[2]);
+		}
+	else if (aFormat == EUidPixelFormatARGB_8888_PRE)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[3]);
+		}
+	else if (aFormat == EUidPixelFormatRGB_888)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[4]);
+		}
+	else if (aFormat == EUidPixelFormatA_8)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[5]);
+		}
+	else if (aFormat == EUidPixelFormatRGB_565)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[6]);
+		}
+	else if (aFormat == EUidPixelFormatXRGB_4444)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[7]);
+		}
+	else if (aFormat == EUidPixelFormatP_8)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[8]);
+		}
+	else if (aFormat == EUidPixelFormatP_4)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[9]);
+		}
+	else if (aFormat == EUidPixelFormatL_8)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[10]);
+		}
+	else if (aFormat == EUidPixelFormatL_4)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[11]);
+		}
+	else if (aFormat == EUidPixelFormatL_2)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[12]);
+		}
+	else if (aFormat == EUidPixelFormatL_1)
+		{
+		pixelFormatString.Set(KShortPixelFormatNames[13]);
+		}	
+	
+	return pixelFormatString;
+	}
+
+/*
+Maps a pixel format enum to a display mode enum
+@param aFormat The pixel format enum
+@return Returns the display mode enum
+ */
+TDisplayMode TDisplayModeMapping::MapPixelFormatToDisplayMode(const TUidPixelFormat aFormat)
+	{
+	TDisplayMode mode;
+	
+	switch(aFormat)
+	{
+	/** Display mode with alpha (24bpp colour plus 8bpp alpha) */
+	case EUidPixelFormatXRGB_8888:
+		mode = EColor16MU; 
+		break;
+	
+	/** Display mode with alpha (24bpp colour plus 8bpp alpha) */
+	case EUidPixelFormatARGB_8888:
+		mode = EColor16MA; 
+		break;
+
+	/** Pre-multiplied Alpha display mode (24bpp color multiplied with the alpha channel value, plus 8bpp alpha) */
+	case EUidPixelFormatARGB_8888_PRE:
+		mode = EColor16MAP; 
+		break;
+
+	/** True colour display mode (24 bpp) */
+	case EUidPixelFormatRGB_888:
+		mode = EColor16M; 
+		break;
+	
+	case EUidPixelFormatXRGB_4444:
+		mode = EColor4K; 
+		break;
+
+	/** 64,000 colour display mode (16 bpp) */
+	case EUidPixelFormatRGB_565:
+		mode = EColor64K; 
+		break;
+		
+	/** 256 grayscales display mode (8 bpp) */	
+	case EUidPixelFormatA_8:
+		mode = EGray256;
+		break;
+
+	/** 256 grayscales (8 bpp) */
+	case EUidPixelFormatL_8:
+		mode = EGray256;
+		break;
+			
+	/** Eight grayscales (4 bpp) */
+	case EUidPixelFormatL_4:
+	  	mode = EGray16;
+		break;
+		
+	/** Four grayscales display mode (2 bpp) */
+	case EUidPixelFormatL_2:
+		mode = EGray4;
+		break;
+		
+	/** Two grayscales (black and white) display mode (1 bpp) */
+	case EUidPixelFormatL_1:
+		mode = EGray2;
+		break;
+
+	/** 256 colour display mode (8 bpp) */
+	case EUidPixelFormatP_8:
+		mode = EColor256;
+		break;
+			
+	/** Low colour EGA 16 colour display mode (4 bpp) */
+	case EUidPixelFormatP_4:
+	  	mode = EColor16;
+		break;
+		
+	/** Monochrome display mode (1 bpp) */
+	case EUidPixelFormatP_1:
+		mode = EGray2;
+		break;
+		
+	// Unknown display mode
+	default:
+	case EUidPixelFormatUnknown:
+		mode = ENone; 
+		break;
+	}
+	
+	return mode;
+	}
+
+/*
+Map display mode enum to pixel formation enum
+@param aDisplayMode The display mode enum
+@return On return, it contains the pixel format enum
+ */
+TUidPixelFormat TDisplayModeMapping::MapDisplayModeToPixelFormat(const TDisplayMode aDisplayMode)
+	{
+	TUidPixelFormat format;
+	
+	switch(aDisplayMode)
+	{
+	/** Display mode with alpha (24bpp colour plus 8bpp alpha) */
+	case EColor16MU:
+		format = EUidPixelFormatXRGB_8888; 
+		break;
+	
+	/** Display mode with alpha (24bpp colour plus 8bpp alpha) */
+	case EColor16MA:
+		format = EUidPixelFormatARGB_8888; 
+		break;
+
+	/** Pre-multiplied Alpha display mode (24bpp color multiplied with the alpha channel value, plus 8bpp alpha) */
+	case EColor16MAP:
+		format = EUidPixelFormatARGB_8888_PRE; 
+		break;
+
+	/** True colour display mode (24 bpp) */
+	case EColor16M:
+		format = EUidPixelFormatRGB_888; 
+		break;
+	
+	case EColor4K:
+		format = EUidPixelFormatXRGB_4444;
+		break;
+
+	/** 64,000 colour display mode (16 bpp) */
+	case EColor64K:
+		format = EUidPixelFormatRGB_565; 
+		break;
+	
+		/** 256 grayscale display mode (8 bpp) */
+	case EGray256:
+		format = EUidPixelFormatL_8;
+		break;
+		
+	/** Sixteen grayscales display mode (4 bpp) */
+	case EGray16:
+		format = EUidPixelFormatL_4;
+		break;
+
+	/** Four grayscales display mode (2 bpp) */
+	case EGray4:
+		format = EUidPixelFormatL_2;
+		break;
+
+	/** Monochrome display mode (1 bpp) */
+	case EGray2:
+		format = EUidPixelFormatL_1;
+		break;
+		
+	/** 256 Color paletised (8 bpp) */
+	case EColor256:
+		format = EUidPixelFormatP_8;
+		break;
+
+	/** Sixteen Colour paletised (4 bpp)*/
+	case EColor16:
+		format = EUidPixelFormatP_4;
+		break;
+
+	// Unknown display mode
+	default:
+	case ENone:
+		format = EUidPixelFormatUnknown; 
+		break;
+	}
+	
+	return format;
+	}
+