windowing/windowserverplugins/openwfc/src/debugbardrawer.cpp
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserverplugins/openwfc/src/debugbardrawer.cpp	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,71 @@
+// Copyright (c) 2008-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:
+//
+
+#include "debugbardrawer.h"
+
+CDebugBarDrawer::~CDebugBarDrawer()
+	{
+	if(iFontStore && iFont)
+		iFontStore->ReleaseFont(iFont);
+	delete iFontStore;
+	iGc=NULL;
+	}
+
+CDebugBarDrawer::CDebugBarDrawer(CWsRenderStage* aRenderStage, TInt aScreenWidth):
+	iRenderStage(aRenderStage), iScreenWidth(aScreenWidth)
+	{}
+
+void CDebugBarDrawer::ConstructL()
+	{
+	iGc = iRenderStage->ObjectInterface<MWsGraphicsContext>();
+	TFontSpec fspec(_L("DejaVu Sans Condensed"), KFontHeightInPixel);		
+	iFontStore = CFbsTypefaceStore::NewL(NULL);
+	User::LeaveIfError(iFontStore->GetNearestFontToDesignHeightInPixels(iFont, fspec));		
+	iBaseline = (iFont->BaselineOffsetInPixels() + iFont->AscentInPixels());
+	}
+
+CDebugBarDrawer* CDebugBarDrawer::NewL(CWsRenderStage* aRenderStage, TInt aScreenWidth)
+	{
+	CDebugBarDrawer* self = new(ELeave) CDebugBarDrawer(aRenderStage, aScreenWidth);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+	
+void CDebugBarDrawer::DrawDebugBar(const TArray<TPtrC>& aDebugText)
+	{
+	if (iDebugBarRect.IsEmpty())
+		{
+		iDebugBarRect=TRect(TSize(iScreenWidth, KFontHeightInPixel*aDebugText.Count()));
+		}
+	TRegionFix<1> iBarRegion=TRegionFix<1>(iDebugBarRect);
+	iRenderStage->Begin(&iBarRegion);
+	iGc->Reset();
+	iGc->SetDrawMode(MWsGraphicsContext::EDrawModePEN);
+	iGc->SetPenColor(KRgbWhite);
+	iGc->SetPenStyle(MWsGraphicsContext::ESolidPen);
+	iGc->SetBrushStyle(MWsGraphicsContext::ESolidBrush);
+	iGc->SetBrushColor(KRgbBlack);
+	iGc->DrawRect(iDebugBarRect);
+	iGc->SetFont(iFont);		
+	for (TInt k = 0; k < aDebugText.Count(); k++)
+		{
+		iGc->DrawText(aDebugText[k], NULL, TPoint(0, iBaseline*(k+1)+2));
+		}	
+	iRenderStage->End(NULL);	
+	}
+
+