commonuisupport/grid/tef/TIMG0.CPP
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonuisupport/grid/tef/TIMG0.CPP	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,156 @@
+// Copyright (c) 2005-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:
+// Implements the CSheetLableImg class which is used as a Grid Label
+// for Grid0Step.\n
+// Provides handlers to draw a row label,column label,to draw the text in the cell
+// as well as calculate the side label width.\n
+// 
+//
+
+/**
+ @file
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <e32std.h>
+#include <gdi.h>
+#include <grdstd.h>
+#include "TIMG0.H"
+#include <w32std.h>
+
+
+#define KRgbGridLabelShadows	TRgb(85,85,85)
+/**
+  Constructor for CSheetLabelImg.\n
+  Used as a Grid Label for GRID0Step.\n
+*
+*/
+CSheetLabelImg::CSheetLabelImg(const TFontSpec& aFontSpec,MGraphicsDeviceMap* aGraphicsDeviceMap)
+	: CGridLabelImg(aFontSpec,aGraphicsDeviceMap)
+	{
+	}
+/**
+  Auxiliary Function for T-Grid0Step-RunTestStepL.\n
+  Function which draws the  Label for each row of the grid table.\n
+*/	
+void CSheetLabelImg::DrawRowLabelL(CGraphicsContext* aGc,TInt aRow,const TRect &aRect) const
+	{
+	TBuf<32> buf;
+	buf.Num(aRow+1);
+	DrawText(aGc,buf,aRect);
+	}
+/**
+  Auxiliary Function for T-Grid0Step-RunTestStepL.\n
+  Function which draws the  Label for each column of the grid table.\n
+*/
+void CSheetLabelImg::DrawColLabelL(CGraphicsContext* aGc,TInt aCol,const TRect &aRect) const
+	{
+	TBuf<32> buf;
+	if (aCol>25)
+		buf.Append(aCol/26+'A'-1);
+	buf.Append(aCol%26+'A');
+	DrawText(aGc,buf,aRect);
+	}
+/**
+  Auxiliary Function for T-Grid0Step-RunTestStepL.\n
+  Function to draw the text.\n
+  Invokes the DrawText of CGraphicsContext to Draw the specified 
+  text at a given position using the parameters supplied.\n
+  The Pen and brush settings are configured before drawing the text.\n
+*/
+void CSheetLabelImg::DrawText(CGraphicsContext* aGc,const TDesC& aDes,const TRect& aRect) const
+	{
+//	aGc->SetPenColor(KRgbGridBackground);
+	aGc->SetPenColor(iGridColors.iBackground);
+	aGc->DrawLine(aRect.iTl,TPoint(aRect.iBr.iX,aRect.iTl.iY));
+	aGc->DrawLine(aRect.iTl,TPoint(aRect.iTl.iX,aRect.iBr.iY));
+	TRect rect=aRect;
+	rect.iTl+=TPoint(1,1);
+	TInt offset = rect.Height()-iFont->DescentInPixels();
+//	aGc->SetPenColor(KRgbGridForeground);
+	aGc->SetPenColor(iGridColors.iForeground);
+	aGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
+	aGc->SetBrushColor(KRgbGridLabels);
+	aGc->UseFont(iFont);
+	aGc->DrawText(aDes,rect,offset,CGraphicsContext::ECenter);
+	aGc->SetBrushStyle(CGraphicsContext::ENullBrush);
+	}
+/**
+  Auxiliary Function for T-Grid0Step-RunTestStepL.\n
+  Function that draws the top left label of the grid table.\n
+  Sets the Pen colour using SetPenColor API of CGraphicsContext class.\n
+  Set the x and y co-ordinates and  Invokes the DrawLine of CGraphicsContext to 
+  draw a straight line between the points.\n
+  Calls the static implementation of FillRect in TGridUtils to 
+  fill the  rectangle with the specified colour(KRgbGridLabels).\n
+*/
+void CSheetLabelImg::DrawTopLeftLabelL(CGraphicsContext* aGc,const TRect& aRect) const
+	{
+	TRect rect=aRect;
+	for (TInt ii=0;ii<2;ii++)
+		{
+//		aGc->SetPenColor(KRgbGridBackground);
+		aGc->SetPenColor(iGridColors.iBackground);
+		TPoint finish(rect.iBr.iX,rect.iTl.iY);
+		aGc->DrawLine(rect.iTl,finish);
+		finish.SetXY(rect.iTl.iX,rect.iBr.iY);
+		aGc->DrawLine(rect.iTl,finish);
+		aGc->SetPenColor(KRgbGridLabelShadows);
+		TPoint start(rect.iTl.iX+1,rect.iBr.iY-1);
+		finish.SetXY(rect.iBr.iX,rect.iBr.iY-1);
+		aGc->DrawLine(start,finish);
+		start.SetXY(rect.iBr.iX-1,rect.iBr.iY-2);
+		finish.SetXY(rect.iBr.iX-1,rect.iTl.iY);
+		aGc->DrawLine(start,finish);
+		rect.Shrink(1,1);
+		}
+	TGridUtils::FillRect(aGc,KRgbGridLabels,rect);
+	}
+/**
+  Auxiliary Function for T-Grid0Step-RunTestStepL.\n
+  Draw function for the row cursor of the gridcell.\n
+*/
+void CSheetLabelImg::DrawRowCursorL(CGraphicsContext* aGc,const TRect& aRect) const
+	{
+	aGc->DrawText(_L(">"),aRect,(aRect.Height()+iFont->AscentInPixels())/2,CGraphicsContext::ERight);
+	}
+/**
+  Auxiliary Function for T-Grid0Step-RunTestStepL.\n
+  Gets the width of the side label.\n
+  @return  The width of the side label in pixels.\n
+*/
+TInt CSheetLabelImg::SideLabelWidthInPixels(TInt aStartRow,TInt aEndRow) const
+	{
+	TInt maxLen=Max(Abs(aStartRow),Abs(aEndRow));
+	if (maxLen<9)
+		maxLen=9;	//Single digit labels must be same width as double digit labels
+	TBuf<32> buf;
+	buf.Num(maxLen+1);
+	return (iFont->TextWidthInPixels(buf)
+		+ iGraphicsDeviceMap->HorizontalTwipsToPixels(ESideLabelMarginWidthInTwips));
+	}
+/**
+  Constructor for the SheetCellImg class.\n
+*/
+CSheetCellImg::CSheetCellImg()
+	{
+	}
+/**
+  Auxiliary Function for T-Grid0Step-RunTestStepL.\n
+  Draw function for a particular cell in the Grid table.\n
+  The function does nothing currently.\n
+*/
+void CSheetCellImg::DrawL(CGraphicsContext* /*aGc*/,const TCellRef& /*aCell*/,const TRect& /*aRect*/,
+	const TRect& /*aClipRect*/) const
+	{}