diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/Client/src/alfcanvasvisual.cpp --- /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 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 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 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 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); + } +