uiacceltk/hitchcock/Client/src/alfcanvasvisual.cpp
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/Client/src/alfcanvasvisual.cpp	Tue Feb 02 07:56:43 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);
+    }
+