windowing/windowserver/stdgraphic/wsgraphicdrawerngacontext.cpp
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/stdgraphic/wsgraphicdrawerngacontext.cpp	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,114 @@
+// 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:
+//
+
+#define SYMBIAN_GRAPHICS_GCE
+
+#include "wsgraphicdrawercontext.h"
+#include "stdgraphictestdrawer.h"
+#include <graphics/wsgraphicscontext.h>
+
+MWsGraphicDrawerContext* CWsGraphicDrawerNgaContext::NewL()
+	{
+	return new(ELeave) CWsGraphicDrawerNgaContext();
+	}
+
+void CWsGraphicDrawerNgaContext::Destroy()
+	{
+	delete this;
+	}
+
+MWsClient& CWsGraphicDrawerNgaContext::Client(MWsGc& aGc)
+	{
+	return aGc.Client();
+	}
+
+MWsScreen& CWsGraphicDrawerNgaContext::Screen(MWsGc& aGc)
+	{
+	return aGc.Screen();
+	}
+
+const TTime& CWsGraphicDrawerNgaContext::Now(MWsGc& aGc) const
+	{
+	return aGc.Now();
+	}
+
+void CWsGraphicDrawerNgaContext::ScheduleAnimation(MWsGc& aGc, const TRect& aRect,const TTimeIntervalMicroSeconds& aFromNow)
+	{
+	aGc.ScheduleAnimation(aRect, aFromNow);
+	}
+
+void CWsGraphicDrawerNgaContext::ScheduleAnimation(MWsGc& aGc, const TRect& aRect,const TTimeIntervalMicroSeconds& aFromNow,const TTimeIntervalMicroSeconds& aFreq,const TTimeIntervalMicroSeconds& aStop)
+	{
+	aGc.ScheduleAnimation(aRect, aFromNow, aFreq, aStop);
+	}
+
+void CWsGraphicDrawerNgaContext::SetGcOrigin(MWsGc& aGc, const TPoint& aOrigin)
+	{
+	aGc.SetGcOrigin(aOrigin);
+	}
+
+TInt CWsGraphicDrawerNgaContext::Push(MWsGc& aGc) const
+	{
+	MWsGraphicsContext* context = aGc.ObjectInterface<MWsGraphicsContext>();
+	if (context)
+		{
+		return context->Push();
+		}
+	return KErrNotSupported;
+	}
+
+void CWsGraphicDrawerNgaContext::Pop(MWsGc& aGc) const
+	{
+	MWsGraphicsContext* context = aGc.ObjectInterface<MWsGraphicsContext>();
+	if (context)
+		{
+		context->Pop();
+		}
+	}
+
+void CWsGraphicDrawerNgaContext::DrawBitmap(MWsGc& aGc, const TPoint& aDestPos, const CFbsBitmap* aSourceBitmap, const TRect& aSourceRect, const CFbsBitmap* aMaskBitmap) const
+	{
+	MWsGraphicsContext* context = aGc.ObjectInterface<MWsGraphicsContext>();
+	if (context)
+		{
+		if (aMaskBitmap)
+			{
+			context->BitBltMasked(aDestPos, *aSourceBitmap, aSourceRect, *aMaskBitmap, EFalse);
+			}
+		else
+			{
+			context->BitBlt(aDestPos, *aSourceBitmap, aSourceRect);
+			}
+		}
+	}
+
+void CWsGraphicDrawerNgaContext::DrawFrameRate(MWsGc& aGc, const TRect& aRect, const CFrameRate& aFps) const
+	{
+	MWsGraphicsContext* context = aGc.ObjectInterface<MWsGraphicsContext>();
+	if (context)
+		{
+		context->SetDrawMode(MWsGraphicsContext::EDrawModePEN);
+		context->SetPenStyle(MWsGraphicsContext::ENullPen);
+		context->SetBrushStyle(MWsGraphicsContext::ENullBrush);
+
+		if ((aFps.CountSamples() > 1) && context->HasFont())
+			{
+			TBuf<20> buf;
+			buf.AppendNum(aFps.Fps());
+			context->SetPenColor(KRgbRed);
+			context->DrawText(buf,NULL,TPoint(aRect.iTl.iX,aRect.iBr.iY));
+			}
+		}
+	}