graphicsdeviceinterface/screendriver/tsrc/Tlld.h
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicsdeviceinterface/screendriver/tsrc/Tlld.h	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,708 @@
+// Copyright (c) 2003-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:
+//
+
+#ifndef __TLLD_H_
+#define __TLLD_H_
+
+#include <gdi.h>
+#include <bitdraw.h>
+#include "TGraphicsHarness.h"
+
+#define KRgbFadedBlack		TRgb(0x808080)
+const TInt KNumDispModes = 13;
+const TInt KNumDrawModes = 6;
+const TInt KNumTestRects = 10;
+const TInt KNumTestColors = 12;
+const TInt KNumTestBackgrounds = 6;
+const TInt KNumShadowModes = 4;
+const TInt KCheckBinaryPixelBufferSize = 64;
+const TInt KNumBlendingColors = 3;
+const TInt KNumColorsToBlend = 4;
+
+//this is to allow EColor16MAP to be tested with extra colours
+const TUint32 KMaxNon16Colours = 9;
+
+//this is to allow EColor16MAP to be tested with extra background colours
+const TUint32 KMaxNon16BackColours = 3;
+
+const TDisplayMode TestDisplayMode[KNumDispModes] =
+	{
+	EGray2,
+	EGray4,
+	EGray16,
+	EGray256,
+	EColor16,
+	EColor256,
+	EColor4K,
+	EColor64K,
+	EColor16M,
+	ERgb,
+	EColor16MU,
+	EColor16MAP,
+	EColor16MA,
+	};
+
+const TPtrC DisplayModeNames[KNumDispModes] =
+	{
+	_L("EGray2"),
+	_L("EGray4"),
+	_L("EGray16"),
+	_L("EGray256"),
+	_L("EColor16"),
+	_L("EColor256"),
+	_L("EColor4K"),
+	_L("EColor64K"),
+	_L("EColor16M"),
+	_L("ERgb"),
+	_L("EColor16MU"),
+	_L("EColor16MAP"),
+	_L("EColor16MA"),
+	};
+
+const TDisplayMode TestDisplayMode1[] =
+	{
+	EGray2,
+	EGray4,
+	EGray16,
+	EGray256,
+	EColor16,
+	EColor256,
+	EColor4K,
+	EColor64K,
+	EColor16M,
+	EColor16MU,
+	EColor16MAP,
+	EColor16MA,
+	};
+
+const TPtrC DisplayModeNames1[] =
+	{
+	_L("EGray2"),
+	_L("EGray4"),
+	_L("EGray16"),
+	_L("EGray256"),
+	_L("EColor16"),
+	_L("EColor256"),
+	_L("EColor4K"),
+	_L("EColor64K"),
+	_L("EColor16M"),
+	_L("EColor16MU"),
+	_L("EColor16MAP"),
+	_L("EColor16MA"),
+	};
+
+const CGraphicsContext::TDrawMode TestDrawMode[KNumDrawModes] =
+	{
+	CGraphicsContext::EDrawModePEN,
+	CGraphicsContext::EDrawModeAND,
+	CGraphicsContext::EDrawModeXOR,
+	CGraphicsContext::EDrawModeOR,
+	CGraphicsContext::EDrawModeNOTSCREEN,
+	CGraphicsContext::EDrawModeNOTPEN
+	};
+
+const TRect TestRect[KNumTestRects] =
+	{
+	TRect(0,0,31,31),
+	TRect(1,1,2,2),
+	TRect(1,1,2,31),
+	TRect(2,1,31,2),
+	TRect(1,1,2,31),
+	TRect(1,1,30,31),
+	TRect(1,1,33,33),
+	TRect(31,0,65,1),
+	TRect(0,0,30,34), //needs a height >32
+	TRect(1,1,7,7) // for DEF123772
+	};
+
+const TRgb TestColor[KNumTestColors] =
+	{
+	KRgbBlack,
+	KRgbDarkGray,
+	KRgbGray,
+	KRgbWhite,
+	KRgbRed,
+	KRgbCyan,
+	TRgb(230,180,70),
+	TRgb(150,240,30),
+	TRgb(20,250,160),
+	TRgb((TUint32)0xff2665A3),
+	TRgb((TUint32)0x002766A4),
+	TRgb((TUint32)0x57339A4E),
+	};
+
+const TRgb TestBackground[KNumTestBackgrounds] =
+	{
+	KRgbWhite,
+	KRgbBlack,
+	TRgb(20,250,160),
+	TRgb(0xff27D99f),
+	TRgb(0x00E73121),
+	TRgb(0x771FE3B7),
+	};
+
+const TUint8 ditherlutab[16][4]=
+	{{	0x0,	0x0,	0x0,	0x0,	},
+	{	0x5,	0x0,	0x0,	0x0,	},
+	{	0x5,	0x0,	0x0,	0x5,	},
+	{	0x5,	0x0,	0x0,	0x5,	},
+	{	0x5,	0x0,	0x5,	0x5,	},
+	{	0x5,	0x5,	0x5,	0x5,	},
+	{	0xa,	0x5,	0x5,	0x5,	},
+	{	0xa,	0x5,	0x5,	0xa,	},
+	{	0xa,	0x5,	0x5,	0xa,	},
+	{	0xa,	0x5,	0xa,	0xa,	},
+	{	0xa,	0xa,	0xa,	0xa,	},
+	{	0xf,	0xa,	0xa,	0xa,	},
+	{	0xf,	0xa,	0xa,	0xf,	},
+	{	0xf,	0xa,	0xa,	0xf,	},
+	{	0xf,	0xa,	0xf,	0xf,	},
+	{	0xf,	0xf,	0xf,	0xf		}};
+
+/**
+This array has three colours, It would be used to blend the four colours using WriteRgbOutlineAndShadow ().
+Four colours which needs blending are
+O - Outline colour, first entry of this table
+S - Shadow colour, second entry in this table
+F - Foreground colour i.e. third entry and,
+B - Background colur, It will be set inside the test function.
+*/
+const TRgb TestOSFBColorsForBlending[KNumBlendingColors][KNumColorsToBlend] =
+	{
+	{ KRgbBlack, TRgb(220,150,164,138), KRgbMagenta, KRgbWhite},
+	{ KRgbDarkMagenta, KRgbBlue, KRgbDarkYellow, TRgb(20,250,160, 128)},
+	{ TRgb(230,180,70,10), KRgbGreen, TRgb(20,250,160,168), KRgbBlack}
+	};
+
+/**
+This lookup table is used for outline and shadow fonts. Four entries of this table represents
+% of Outline, Shadow, Fill and Background color to be used to get the final color to be
+displayed on screen.
+
+While doing the blending of four colors it would use the following formula,
+
+blendedXXXColor = (XXXOutlinePenColor * FourColorBlendLookup[index][KOutlineColorIndex] +
+			   		XXXShadowColor * FourColorBlendLookup[index][KShadowColorIndex] +
+			  		XXXFillColor * FourColorBlendLookup[index][KFillColorIndex] +
+			  		backgroundColor.XXX() * FourColorBlendLookup[index][KBackgroundColorIndex]) >> 8;
+where XXX can be Red, Green or Blue
+and index is the 8-bit value which will be provided by the rasterizer to decide which
+entry of lookup table should be used. Right shift by eight will divide the calculated value in % with
+256 to get the actual colour.
+
+This table is provided by Monotype and MUST NOT be changed.
+*/
+const TInt FourColorBlendLookup[256][4] = {
+	{ 0, 0, 0, 255 },
+	{ 0, 0, 17, 238 },
+	{ 0, 0, 34, 221 },
+	{ 0, 0, 51, 204 },
+	{ 0, 0, 68, 187 },
+	{ 0, 0, 85, 170 },
+	{ 0, 0, 102, 153 },
+	{ 0, 0, 119, 136 },
+	{ 0, 0, 136, 119 },
+	{ 0, 0, 153, 102 },
+	{ 0, 0, 170, 85 },
+	{ 0, 0, 187, 68 },
+	{ 0, 0, 204, 51 },
+	{ 0, 0, 221, 34 },
+	{ 0, 0, 238, 17 },
+	{ 0, 0, 255, 0 },
+	{ 0, 17, 0, 238 },
+	{ 0, 34, 0, 221 },
+	{ 0, 51, 0, 204 },
+	{ 0, 68, 0, 187 },
+	{ 0, 85, 0, 170 },
+	{ 0, 102, 0, 153 },
+	{ 0, 119, 0, 136 },
+	{ 0, 136, 0, 119 },
+	{ 0, 153, 0, 102 },
+	{ 0, 170, 0, 85 },
+	{ 0, 187, 0, 68 },
+	{ 0, 204, 0, 51 },
+	{ 0, 221, 0, 34 },
+	{ 0, 238, 0, 17 },
+	{ 0, 255, 0, 0 },
+	{ 17, 0, 0, 238 },
+	{ 34, 0, 0, 221 },
+	{ 51, 0, 0, 204 },
+	{ 68, 0, 0, 187 },
+	{ 85, 0, 0, 170 },
+	{ 102, 0, 0, 153 },
+	{ 119, 0, 0, 136 },
+	{ 136, 0, 0, 119 },
+	{ 153, 0, 0, 102 },
+	{ 170, 0, 0, 85 },
+	{ 187, 0, 0, 68 },
+	{ 204, 0, 0, 51 },
+	{ 221, 0, 0, 34 },
+	{ 238, 0, 0, 17 },
+	{ 255, 0, 0, 0 },
+	{ 0, 17, 238, 0 },
+	{ 0, 34, 221, 0 },
+	{ 0, 51, 204, 0 },
+	{ 0, 68, 187, 0 },
+	{ 0, 85, 170, 0 },
+	{ 0, 102, 153, 0 },
+	{ 0, 119, 136, 0 },
+	{ 0, 136, 119, 0 },
+	{ 0, 153, 102, 0 },
+	{ 0, 170, 85 ,0 },
+	{ 0, 187, 68 ,0 },
+	{ 0, 204, 51, 0 },
+	{ 0, 221, 34, 0 },
+	{ 0, 238, 17, 0 },
+	{ 238, 17, 0, 0 },
+	{ 221, 34, 0, 0 },
+	{ 204, 51, 0, 0 },
+	{ 187, 68, 0, 0 },
+	{ 170, 85, 0, 0 },
+	{ 153, 102, 0, 0 },
+	{ 136, 119, 0, 0 },
+	{ 119, 136, 0, 0 },
+	{ 102, 153, 0, 0 },
+	{ 85, 170, 0, 0 },
+	{ 68, 187, 0, 0 },
+	{ 51, 204, 0, 0 },
+	{ 34, 221, 0, 0 },
+	{ 17, 238, 0, 0 },
+	{ 238, 0, 17, 0 },
+	{ 221, 0, 34, 0 },
+	{ 204, 0, 51, 0 },
+	{ 187, 0, 68, 0 },
+	{ 170, 0, 85, 0 },
+	{ 153, 0, 102, 0 },
+	{ 136, 0, 119, 0 },
+	{ 119, 0, 136, 0 },
+	{ 102, 0, 153, 0 },
+	{ 85, 0, 170, 0 } ,
+	{ 68, 0, 187, 0 },
+	{ 51, 0, 204, 0 },
+	{ 34, 0, 221, 0 },
+	{ 17, 0, 238, 0 },
+	{ 210, 23, 0, 22 },
+	{ 179, 60, 0, 16 },
+	{ 145, 94, 0, 16 },
+	{ 119, 119, 0, 17 },
+	{ 94, 145, 0, 16 },
+	{ 60, 179, 0, 16 },
+	{ 23, 210, 0, 22 },
+	{ 176, 40, 0, 39 },
+	{ 142, 74, 0, 39 },
+	{ 113, 96, 0, 46 },
+	{ 91, 125, 0, 39 },
+	{ 62, 147, 0, 46 },
+	{ 40, 176, 0, 39 },
+	{ 179, 17, 0, 59 },
+	{ 147, 45, 0, 63 },
+	{ 17, 179, 0, 59 },
+	{ 145, 17, 0, 93 },
+	{ 125, 40, 0, 90 },
+	{ 108, 74, 0, 73 },
+	{ 74, 108, 0, 73 },
+	{ 85, 85, 0, 85 },
+	{ 40, 142, 0, 73 },
+	{ 119, 17, 0, 119 },
+	{ 96, 45, 0, 114 },
+	{ 74, 74, 0, 107 },
+	{ 45, 113, 0, 97 },
+	{ 17, 145, 0, 93 },
+	{ 94, 17, 0, 144 },
+	{ 74, 40, 0, 141 },
+	{ 45, 62, 0, 148 },
+	{ 40, 91, 0, 124 },
+	{ 17, 119, 0, 119 },
+	{ 17, 94, 0, 144 },
+	{ 60, 17, 0, 178 },
+	{ 40, 40, 0, 175 },
+	{ 17, 60, 0, 178 },
+	{ 23, 23, 0, 209 },
+	{ 0, 210, 23, 22 },
+	{ 0, 179, 60, 16 },
+	{ 0, 145, 94, 16 },
+	{ 0, 119, 119, 17 },
+	{ 0, 94 ,145, 16 },
+	{ 0, 60 ,179, 16 },
+	{ 0, 23, 210, 22 },
+	{ 0, 176, 40, 39 },
+	{ 0, 142, 74, 39 },
+	{ 0, 113, 96, 46 },
+	{ 0, 91, 125, 39 },
+	{ 0, 62, 147, 46 },
+	{ 0, 40, 176, 39 },
+	{ 0, 179, 17, 59 },
+	{ 0, 147, 45, 63 },
+	{ 0, 17, 179, 59 },
+	{ 0, 145, 17, 93 },
+	{ 0, 125, 40, 90 },
+	{ 0, 108, 74, 73 },
+	{ 0, 74, 108, 73 },
+	{ 0, 85, 85, 85 },
+	{ 0, 40, 142, 73 },
+	{ 0, 119, 17, 119 },
+	{ 0, 96, 45, 114 },
+	{ 0, 74, 74, 107 },
+	{ 0, 45, 113, 97 },
+	{ 0, 17, 145, 93 },
+	{ 0, 94, 17, 144 },
+	{ 0, 74, 40, 141 },
+	{ 0, 45, 62, 148 },
+	{ 0, 40, 91, 124 },
+	{ 0, 17, 119, 119 },
+	{ 0, 17, 94, 144 },
+	{ 0, 60, 17, 178 },
+	{ 0, 40, 40, 175 },
+	{ 0, 17, 60, 178 },
+	{ 0, 23, 23, 209 },
+	{ 23, 0, 210, 22 },
+	{ 60, 0, 179, 16 },
+	{ 94, 0, 145, 16 },
+	{ 119, 0, 119, 17 },
+	{ 145, 0, 94, 16 },
+	{ 179, 0, 60, 16 },
+	{ 210, 0, 23, 22 },
+	{ 40, 0, 176, 39 },
+	{ 74, 0, 142, 39 },
+	{ 96, 0, 113, 46 },
+	{ 125, 0, 91, 39 },
+	{ 147, 0, 62, 46 },
+	{ 176, 0, 40, 39 },
+	{ 17, 0, 179, 59 },
+	{ 45, 0, 147, 63 },
+	{ 179, 0, 17, 59 },
+	{ 17, 0, 145, 93 },
+	{ 40, 0, 125, 90 },
+	{ 74, 0, 108, 73 },
+	{ 108, 0, 74, 73 },
+	{ 85, 0, 85, 85 },
+	{ 142, 0, 40, 73 },
+	{ 17, 0, 119, 119 },
+	{ 45, 0, 96, 114 },
+	{ 74, 0, 74, 107 },
+	{ 113, 0, 45, 97 },
+	{ 145, 0, 17, 93 },
+	{ 17, 0, 94, 144 },
+	{ 40, 0, 74, 141 },
+	{ 62, 0, 45, 148 },
+	{ 91, 0, 40, 124 },
+	{ 119, 0, 17, 119 },
+	{ 94, 0, 17, 144 },
+	{ 17, 0, 60, 178 },
+	{ 40, 0, 40, 175 },
+	{ 60, 0, 17, 178 },
+	{ 23, 0, 23, 209 },
+	{ 209, 23, 23, 0 },
+	{ 178, 17, 60, 0 },
+	{ 144, 17, 94, 0 },
+	{ 119, 17, 119, 0 },
+	{ 93, 17, 145, 0 },
+	{ 59, 17, 179, 0 },
+	{ 22, 23, 210, 0 },
+	{ 175, 40, 40, 0 },
+	{ 141, 40, 74, 0 },
+	{ 114, 45, 96, 0 },
+	{ 90, 40, 125, 0 },
+	{ 63, 45, 147, 0 },
+	{ 39, 40, 176, 0 },
+	{ 178, 60, 17, 0 },
+	{ 148, 62, 45, 0 },
+	{ 16, 60, 179, 0 },
+	{ 144, 94, 17, 0 },
+	{ 124, 91, 40, 0 },
+	{ 107, 74, 74, 0 },
+	{ 73, 74, 108, 0 },
+	{ 85, 85, 85, 0 },
+	{ 39, 74, 142, 0 },
+	{ 119, 119, 17, 0 },
+	{ 97, 113, 45, 0 },
+	{ 73, 108, 74, 0 },
+	{ 46, 96, 113, 0 },
+	{ 16, 94, 145, 0 },
+	{ 93, 145, 17, 0 },
+	{ 73, 142, 40, 0 },
+	{ 46, 147, 62, 0 },
+	{ 39, 125, 91, 0 },
+	{ 17, 119, 119, 0 },
+	{ 16, 145, 94, 0 },
+	{ 59, 179, 17, 0 },
+	{ 39, 176, 40, 0 },
+	{ 16, 179, 60, 0 },
+	{ 22, 210, 23, 0 },
+	{ 32, 32 ,32, 159 },
+	{ 32, 32 ,74, 117 },
+	{ 32, 32 ,116, 75 },
+	{ 32, 32 ,158, 33 },
+	{ 74, 32, 32, 117 },
+	{ 74, 32, 74, 75 },
+	{ 74, 32, 116, 33 },
+	{ 116, 32, 32, 75 },
+	{ 116, 32, 74, 33 },
+	{ 158, 32, 32, 33 },
+	{ 32, 74, 32, 117 },
+	{ 32, 74, 74, 75 },
+	{ 32, 74, 116, 33 },
+	{ 74, 74, 32, 75 },
+	{ 74, 74, 74, 33 },
+	{ 116, 74, 32, 33 },
+	{ 32, 116, 32, 75 },
+	{ 32, 116, 74, 33 },
+	{ 74, 116, 32, 33 },
+	{ 32, 158, 32, 33 },
+	};
+
+class TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) = 0;
+	virtual TRgb Color(TInt aIndex) = 0;
+	};
+
+class TNullColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb /*aColor*/) { return 0; }
+	virtual TRgb Color(TInt /*aIndex*/) { return KRgbBlack; }
+	};
+
+class TGray2ColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Gray2(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Gray2(aIndex); }
+	};
+
+class TGray4ColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Gray4(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Gray4(aIndex); }
+	};
+
+class TGray16ColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Gray16(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Gray16(aIndex); }
+	};
+
+class TGray256ColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Gray256(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Gray256(aIndex); }
+	};
+
+class TColor16ColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Color16(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Color16(aIndex); }
+	};
+
+class TColor256ColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Color256(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Color256(aIndex); }
+	};
+
+class TColor4KColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Color4K(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Color4K(aIndex); }
+	};
+
+class TColor64KColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Color64K(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Color64K(aIndex); }
+	};
+
+class TColor16MColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Color16M(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Color16M(aIndex); }
+	};
+
+class TColor16MUColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Color16MU(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Color16MU(aIndex); }
+	};
+
+class TColor16MAColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Color16MA(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Color16MA(aIndex); }
+	};
+
+class TColor16MAPColorConvertor : public TColorConvertor
+	{
+public:
+	virtual TInt Index(TRgb aColor) { return aColor.Color16MAP(); }
+	virtual TRgb Color(TInt aIndex) { return TRgb::Color16MAP(aIndex); }
+	};
+
+class CTLowLevel : public CTGraphicsBase
+	{
+enum TPostShadowMode
+	{
+	ENoPostShadow,
+	EPostShadow,
+	EPostFade,
+	EPostShadowFade,
+	};
+public:
+	CTLowLevel(CTestStep* aStep);
+	~CTLowLevel();
+protected:
+//from 	CTGraphicsStep
+	virtual void RunTestCaseL(TInt aCurTestCase);
+	void TestScreenDrawL(TDisplayMode aDisplayMode);
+private:
+	void Reset();
+	void Report();
+	void TestBitmapDraw(TDisplayMode aDisplayMode,const TSize& aSize);
+	void Test();
+	void TestParams();
+	void TestReadLine();
+	void TestWriteRgb();
+	void TestWriteLine();
+	void TestWriteBinary();
+	void TestWriteRGBAlpha();
+	void TestWriteAlphaLineEx();
+	void TestWriteAlphaLineNoShadowEx();
+	void TestWriteMaskLineNoShadowEx();
+	void ClosePanicDialogs();
+	void TestFastBlendBitmapMasked(const TInt aRetry = 0);
+	void TestShadow();
+	void TestWriteRgbOutlineAndShadow();
+	inline TInt ByteSize();
+	inline TBool Check(TBool aValue);
+	void CheckBuffer(TUint8* aWriteBuffer,TDisplayMode aWriteDispMode,TUint8* aReadBuffer,TDisplayMode aReadDispMode,TInt aPixelLength);
+	void CheckBinary(const TRect& aRect,TUint32* aBuffer,TRgb aForeColor,TRgb aBackColor,CGraphicsContext::TDrawMode aDrawMode,TInt aShadowMode,TBool aWrapDataWords,TBool aUp);
+	void CheckRgb(const TPoint& aPoint,TRgb aColor,TRgb aBackgroundColor,CGraphicsContext::TDrawMode aDrawMode,TInt aShadowMode);
+	void CheckRgb(const TRect& aRect,TRgb aColor,TRgb aBackgroundColor,CGraphicsContext::TDrawMode aDrawMode,TInt aShadowMode);
+	void CheckShadowRgb(const TRect& aRect,TRgb aColor,TInt aShadowMode);
+	void CheckScanline(TInt aX,TInt aY,TInt aLength,TRgb aFore1,TRgb aFore2,TRgb aBack1,TRgb aBack2,CGraphicsContext::TDrawMode aDrawMode);
+	void CheckLine(TUint8* aWriteBuffer,TUint8* aReadBuffer,TUint8* aBackBuffer,TInt aPixelLength,CGraphicsContext::TDrawMode aDrawMode,TDisplayMode aDispMode);
+	void CheckPixel(TUint8* aWriteBuffer,TDisplayMode aWriteDispMode,TUint8* aReadBuffer,TDisplayMode aReadDispMode,TInt aPixelLength,TDisplayMode aCompareDispMode);
+	void CheckBackground(const TRect& aRect,TRgb aBackgroundColor);
+	TBool CheckBlendedOutlineAndShadow(TRgb aOutlinePenColor, TRgb aShadowColor, TRgb aFillColor, TRgb aBackgroundColor, TInt aLookupIndex, TInt aLength, TUint8* aReadBuffer);
+	void Clear(TRgb aColor);
+	void CheckMatch(TUint32 aFirst, TUint32 aSecond);
+	TRgb ExtractRgbValue(TInt aX,TUint8* aBuffer,TDisplayMode aDispMode);
+	TUint32 ExtractBinaryValue(TInt aX,TUint32* aBuffer,TDisplayMode aDispMode);
+	void FillArray(TRgb aColor,TRgb aArray[4]);
+	void FillBuffer(TUint8* aBuffer, TInt aByteSize, TDisplayMode aDispMode, TBool aNoAlpha16MU = EFalse);
+	TInt LongWidth(TInt aWidth,TDisplayMode aDispMode);
+	void Normalize(TRgb& aColor);
+	void Normalize(TRgb& aColor, TDisplayMode aDispMode);
+	void Normalize(TRgb& aColor,TRgb aDitherColors[4]);
+	TRgb RgbValue(TRgb aFore,TRgb aBack,CGraphicsContext::TDrawMode aDrawMode);
+	TUint32 BinaryValue(TRgb aFore,TRgb aBack,CGraphicsContext::TDrawMode aDrawMode);
+	void Shadow(TRgb& aColor,TInt aShadowMode);
+	void Shadow(TUint8* aBuffer,TInt aByteLength,TInt aShadowMode);
+	TUint8 FadeGray(TInt aGray256);
+	TRgb FadeRgb(TRgb aColor, TBool aFastFade = EFalse);
+	TColorConvertor& ColorConvertor(TDisplayMode aDisplayMode);
+	void Blend(TUint8* aBuffer,TUint8* aBufferDest,TDisplayMode aDispMode);
+	void PostBlendShadow(TUint32 &aPmaColor);
+	void TestUserDisplayModeMapping();
+	void PrepareDestPixel(TDisplayMode aDevDisplayMode, TRgb& aRgb, TInt aDstAlpha);
+	void CheckMappedRgb(TDisplayMode aDevDisplayMode, TDisplayMode aUserDisplayMode, TRgb aRgb);
+	void CheckNormalizedRgb(TRgb aReadRgb, TRgb aCheckRgb, TDisplayMode aDevDisplayMode, TDisplayMode aUserDisplayMode, TBool aWriteRgbAlphaLine);
+	void WriteBinaryValue(TUint32 aX, TAny* const aPtr, TDisplayMode aMode, TUint32 aValue) const;
+	void MaskedBlendBuffer(TAny* aSrc, TDisplayMode aSrcMode, TAny* aDst,
+			TDisplayMode aDstMode, TUint32* aMsk, TInt aWidth, TBool aInvert);
+	TUint32 BytesForPixels(TUint32 aPixels, TDisplayMode aMode);
+	TBool CompareBlendMaskResults(TAny* aActual, TAny* aExpected, 
+			TUint32 aWidth, TDisplayMode aMode, TBool aBlended, TDisplayMode aSrcMode = ENone);
+protected:
+	CFbsDrawDevice* iDrawDevice;
+	TUint8* iBits;
+	TUint32* iBuf;
+	TDisplayMode iDispMode;
+	TDisplayMode iUserDispMode;
+	TInt iOrientation;
+	TSize iSize;
+	TInt iLongWidth;
+	TInt iTestNo;
+	TInt iIteration;
+	TInt iReportIteration;
+	TInt iTotalReportIterations;
+	TNullColorConvertor iNullConvertor;
+	TGray2ColorConvertor iGray2Convertor;
+	TGray4ColorConvertor iGray4Convertor;
+	TGray16ColorConvertor iGray16Convertor;
+	TGray256ColorConvertor iGray256Convertor;
+	TColor16ColorConvertor iColor16Convertor;
+	TColor256ColorConvertor iColor256Convertor;
+	TColor4KColorConvertor iColor4KConvertor;
+	TColor64KColorConvertor iColor64KConvertor;
+	TColor16MColorConvertor iColor16MConvertor;
+	TColor16MUColorConvertor iColor16MUConvertor;
+	TColor16MAColorConvertor iColor16MAConvertor;
+	TColor16MAPColorConvertor iColor16MAPConvertor;
+	TColorConvertor* iColorConvertor[15];
+	TInt iOrientationEnd;
+	TInt iCurScreenDeviceModeIndex;
+	TBool iFuzzyMatch;
+	TBool iBlendTestColors;
+	TPostShadowMode iPostBlendShadow;
+	TBool i16MAUserDispMode;
+	TBool iUseFastFade; //used to check whether fast fading method is required or not
+						// while calling FadeRgb from CTLowLevel::Shadow(TRgb& aColor,TInt aShadowMode)
+	TBool iLastFailTestNo;
+	};//end of - class TestLowLevel
+
+class CTLowLevel1 : public CTLowLevel
+	{
+public:
+	CTLowLevel1(CTestStep* aStep);
+protected:
+//from 	CTGraphicsStep
+	virtual void RunTestCaseL(TInt aCurTestCase);
+	};
+
+class CTLowLevelStep : public CTGraphicsStep
+	{
+public:
+	CTLowLevelStep();
+protected:
+	//from CTGraphicsStep
+	virtual CTGraphicsBase* CreateTestL();
+	};
+
+_LIT(KTLowLevelStep,"TLowLevel");
+
+class CTLowLevel1Step : public CTGraphicsStep
+	{
+public:
+	CTLowLevel1Step();
+protected:
+	//from CTGraphicsStep
+	virtual CTGraphicsBase* CreateTestL();
+	};
+
+_LIT(KTLowLevel1Step,"TLowLevel1");
+
+#endif//__TLLD_H_