--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/Client/src/alfcanvasvisual.cpp Wed Nov 03 19:29:22 2010 +0200
@@ -0,0 +1,366 @@
+/*
+* Copyright (c) 2007 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: Canvas visual
+*
+*/
+
+
+
+#include "alf/alfcanvasvisual.h"
+#include "alf/alfcontrol.h"
+#include "alflogger.h"
+#include "alf/alfgencomponent.h"
+#include "alf/alfconstants.h"
+#include "alf/alfenv.h"
+#include "alf/alfgc.h"
+#include "alflogger.h"
+
+
+
+// ======== MEMBER FUNCTIONS ========
+
+struct CAlfCanvasVisual::TCanvasVisualPrivateData
+ {
+ TCanvasVisualPrivateData() : iObserver(NULL) {}
+ MAlfCanvasObserver* iObserver;
+ CAlfGc* iGc;
+ };
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+
+EXPORT_C CAlfCanvasVisual* CAlfCanvasVisual::AddNewL(
+ CAlfControl& aOwnerControl,
+ CAlfLayout* aParentLayout )
+ {
+ CAlfCanvasVisual* canvas = STATIC_CAST(CAlfCanvasVisual*,
+ aOwnerControl.AppendVisualL(EAlfVisualTypeCanvas, aParentLayout));
+ return canvas;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAlfCanvasVisual::CAlfCanvasVisual()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::ConstructL(CAlfControl& aOwner)
+ {
+ CAlfVisual::ConstructL(aOwner);
+
+ iCanvasVisualData = new (ELeave) TCanvasVisualPrivateData;
+ iCanvasVisualData->iGc = CAlfGc::NewL();
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAlfCanvasVisual::~CAlfCanvasVisual()
+ {
+ if ( iCanvasVisualData )
+ {
+ delete iCanvasVisualData->iGc;
+ }
+
+ delete iCanvasVisualData;
+ iCanvasVisualData = NULL;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::SetCanvasObserver( MAlfCanvasObserver* aObserver )
+ {
+ iCanvasVisualData->iObserver = aObserver;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CAlfCanvasVisual::SendBuffer( const TPtrC8& aBuffer )
+ {
+ TBuf8<1> dum;
+ TInt err = Comms()->DoSynchronousCmd(EAlfCanvasVisualSendbuffer, aBuffer, dum);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::BeginDraw()
+ {
+ TRAP_IGNORE(iCanvasVisualData->iGc->ActivateL());
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::EndDraw()
+ {
+ HBufC8* commandBuffer = iCanvasVisualData->iGc->CommandBuffer();
+ __ALFLOGSTRING1( "CAlfCanvasVisual::Refresh buffer length: %d", commandBuffer->Length() )
+ if (commandBuffer)
+ {
+ SendBuffer( commandBuffer->Des() );
+ }
+
+ iCanvasVisualData->iGc->Deactivate();
+ }
+
+// ---------------------------------------------------------------------------
+// Place holder from CAlfVisual
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::RemoveAndDestroyAllD()
+ {
+ CAlfVisual::RemoveAndDestroyAllD();
+ }
+
+// ---------------------------------------------------------------------------
+// Place holder from CAlfVisual
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::UpdateChildrenLayout(TInt aTransitionTime )
+ {
+ CAlfVisual::UpdateChildrenLayout( aTransitionTime );
+ }
+
+// ---------------------------------------------------------------------------
+// Place holder from CAlfVisual
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAlfVisual* CAlfCanvasVisual::FindTag(const TDesC8& aTag)
+ {
+ return CAlfVisual::FindTag( aTag );
+ }
+
+// ---------------------------------------------------------------------------
+// Place holder from CAlfVisual
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::DoRemoveAndDestroyAllD()
+ {
+ CAlfVisual::DoRemoveAndDestroyAllD();
+ }
+
+// ---------------------------------------------------------------------------
+// future proofing
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::PropertyOwnerExtension(const TUid& aExtensionUid, TAny** aExtensionParams)
+ {
+ CAlfVisual::PropertyOwnerExtension(aExtensionUid,aExtensionParams);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::DrawImage(const CAlfTexture& aTexture, const TAlfRealRect& aDestinationRect)
+ {
+ iCanvasVisualData->iGc->DrawImage(aTexture, aDestinationRect);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::DrawText(const TDesC& aText, const TAlfRealRect& aDestinationRect)
+ {
+ iCanvasVisualData->iGc->DrawText(aText, aDestinationRect);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::DrawLines(const TAlfRealLine* aLines, TInt aLineCount)
+ {
+ RArray<TReal32> linesPointCords;
+ for(TInt i = 0; i< aLineCount; i++)
+ {
+ linesPointCords.Append(aLines[i].iStart.iX);
+ linesPointCords.Append(aLines[i].iStart.iY);
+ linesPointCords.Append(aLines[i].iEnd.iX);
+ linesPointCords.Append(aLines[i].iEnd.iY);
+ }
+ iCanvasVisualData->iGc->DrawLines(linesPointCords);
+ linesPointCords.Close();
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::DrawEllipse(const TAlfRealRect& aDestinationRect)
+ {
+ iCanvasVisualData->iGc->DrawEllipse(aDestinationRect);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::DrawPoints(const TAlfRealPoint* aPoints, TInt aPointCount)
+ {
+ RArray<TReal32> pointCords;
+ for(TInt i = 0; i< aPointCount; i++)
+ {
+ pointCords.Append(aPoints[i].iX);
+ pointCords.Append(aPoints[i].iY);
+ }
+ iCanvasVisualData->iGc->DrawPoints(pointCords);
+ pointCords.Close();
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::DrawPolygon(const TAlfRealPoint* aPoints, TInt aPointCount)
+ {
+ RArray<TReal32> pointCords;
+ for(TInt i = 0; i< aPointCount; i++)
+ {
+ pointCords.Append(aPoints[i].iX);
+ pointCords.Append(aPoints[i].iY);
+ }
+ iCanvasVisualData->iGc->DrawPolygon(pointCords);
+ pointCords.Close();
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::DrawRects(const TAlfRealRect* aRects, TInt aRectCount)
+ {
+ RArray<TReal32> rectPointCords;
+ for(TInt i = 0; i< aRectCount; i++)
+ {
+ rectPointCords.Append(aRects[i].iTl.iX);
+ rectPointCords.Append(aRects[i].iTl.iY);
+ rectPointCords.Append(aRects[i].iBr.iX);
+ rectPointCords.Append(aRects[i].iBr.iY);
+ }
+ iCanvasVisualData->iGc->DrawRects(rectPointCords);
+ rectPointCords.Close();
+ }
+
+
+// Setters
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::SetTextStyle(const CAlfTextStyle& aTextStyle)
+ {
+ iCanvasVisualData->iGc->SetTextStyle(aTextStyle);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::SetPenColor(const TRgb& aColor)
+ {
+ iCanvasVisualData->iGc->SetPenColor(aColor);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::SetPenWidth(const TReal32& aWidth)
+ {
+ iCanvasVisualData->iGc->SetPenWidth(aWidth);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::SetPenOpacity(const TReal32& aOpacity)
+ {
+ iCanvasVisualData->iGc->SetOpacity(aOpacity);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::SetPolygonDrawMode(TAlfPolygonDrawMode aPolygonDrawMode)
+ {
+ iCanvasVisualData->iGc->SetPolygonDrawMode(aPolygonDrawMode);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::SetTextAlign(TAlfAlignHorizontal aAlignHorizontal, TAlfAlignVertical aAlignVertical)
+ {
+ iCanvasVisualData->iGc->SetTextAlign(aAlignHorizontal, aAlignVertical);
+ }
+
+
+// Transformations
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::LoadIdentity()
+ {
+ iCanvasVisualData->iGc->LoadIdentity();
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::Translate(const TReal32& aX, const TReal32& aY, const TReal32& aZ)
+ {
+ iCanvasVisualData->iGc->Translate(aX, aY, aZ);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::Scale(const TReal32& aX, const TReal32& aY, const TReal32& aZ)
+ {
+ iCanvasVisualData->iGc->Scale(aX, aY, aZ);
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfCanvasVisual::Rotate(const TReal32& aAngle, const TReal32& aX, const TReal32& aY, const TReal32& aZ)
+ {
+ iCanvasVisualData->iGc->Rotate(aAngle, aX, aY, aZ);
+ }
+