diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/Client/src/alfborderbrush.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/Client/src/alfborderbrush.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,412 @@ +/* +* Copyright (c) 2006 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: Border brush +* +*/ + + + +#include "alf/alfborderbrush.h" +#include "alf/alfenv.h" +#include "alf/alfgencomponent.h" +#include "alf/alfimage.h" +#include "alf/alftexture.h" +#include "alflogger.h" +#include "alfskinnableimage.h" +#include "alf/alfconstants.h" + +#include + +struct CAlfBorderBrush::TBorderBrushPrivateData + { + TAlfTimedPoint iThickness; + TAlfTimedPoint iEdgeOffset; + TAlfTimedPoint iImageOffset; + CAlfSkinnableImage* iImage; + }; + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +CAlfBorderBrush::CAlfBorderBrush() + : CAlfBrush() + { + } + +// --------------------------------------------------------------------------- +// ConstructL +// --------------------------------------------------------------------------- +// +void CAlfBorderBrush::ConstructL( + CAlfEnv& aEnv, + const TAlfXYMetric& aThickness, + const TAlfXYMetric& aEdgeOffset) + { + + TAlfCreateBorderBrushMetricParams params; + params.iThickness = aThickness; + params.iEdgeOffset = aEdgeOffset; + TPckgC paramsPckg(params); + + + CAlfBrush::ConstructL( + aEnv, + EAlfBorderBrushCreateMetric, + 0, + paramsPckg + ); + + iBorderBrushData = new (ELeave) TBorderBrushPrivateData; + iBorderBrushData->iImage = NULL; + iBorderBrushData->iImage = new (ELeave) CAlfSkinnableImage(&aEnv); + } + + +// --------------------------------------------------------------------------- +// ConstructL +// --------------------------------------------------------------------------- +// +void CAlfBorderBrush::ConstructL( + CAlfEnv& aEnv, + TInt aThicknessWidth, + TInt aThicknessHeight, + TInt aEdgeOffsetX, + TInt aEdgeOffsetY ) + { + + TAlfCreateBorderBrushParams params; + params.iThicknessWidth = aThicknessWidth; + params.iThicknessHeight = aThicknessHeight; + params.iEdgeOffsetX = aEdgeOffsetX; + params.iEdgeOffsetY = aEdgeOffsetY; + TPckgC paramsPckg(params); + + + CAlfBrush::ConstructL( + aEnv, + EAlfBorderBrushCreate, + 0, + paramsPckg + ); + + iBorderBrushData = new (ELeave) TBorderBrushPrivateData; + iBorderBrushData->iImage = NULL; + iBorderBrushData->iImage = new (ELeave) CAlfSkinnableImage(&aEnv); + } + + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +EXPORT_C CAlfBorderBrush* CAlfBorderBrush::NewL( + CAlfEnv& aEnv, + const TAlfXYMetric& aThickness, + const TAlfXYMetric& aEdgeOffset) + { + CAlfBorderBrush* self = CAlfBorderBrush::NewLC( + aEnv, + aThickness, + aEdgeOffset); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +EXPORT_C CAlfBorderBrush* CAlfBorderBrush::NewLC( + CAlfEnv& aEnv, + const TAlfXYMetric& aThickness, + const TAlfXYMetric& aEdgeOffset) + { + CAlfBorderBrush* self = new( ELeave ) CAlfBorderBrush; + CleanupStack::PushL( self ); + self->ConstructL( + aEnv, + aThickness, + aEdgeOffset); + return self; + } + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +EXPORT_C CAlfBorderBrush* CAlfBorderBrush::NewL( + CAlfEnv& aEnv, + TInt aThicknessWidth, + TInt aThicknessHeight, + TInt aEdgeOffsetX, + TInt aEdgeOffsetY ) + { + CAlfBorderBrush* self = CAlfBorderBrush::NewLC( + aEnv, + aThicknessWidth, + aThicknessHeight, + aEdgeOffsetX, + aEdgeOffsetY ); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +EXPORT_C CAlfBorderBrush* CAlfBorderBrush::NewLC( + CAlfEnv& aEnv, + TInt aThicknessWidth, + TInt aThicknessHeight, + TInt aEdgeOffsetX, + TInt aEdgeOffsetY) + { + CAlfBorderBrush* self = new( ELeave ) CAlfBorderBrush; + CleanupStack::PushL( self ); + self->ConstructL( + aEnv, + aThicknessWidth, + aThicknessHeight, + aEdgeOffsetX, + aEdgeOffsetY ); + return self; + } + + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CAlfBorderBrush::~CAlfBorderBrush() + { + if (iBorderBrushData) + { + delete iBorderBrushData->iImage; + iBorderBrushData->iImage = NULL; + } + + delete iBorderBrushData; + } + +// --------------------------------------------------------------------------- +// Set image +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfBorderBrush::SetImage(const TAlfImage& aImage) + { + iBorderBrushData->iImage->SetImage(aImage); // This texturizes skin graphics if needed + + TAlfImageParams params(iBorderBrushData->iImage->Image()); + + TPckgC buf(params); + TInt err = Comms()->DoCmdNoReply(EAlfBorderBrushSetImage, buf ); + + if ( err ) + { + __ALFLOGSTRING1( "CAlfBorderBrush::SetImage ignore error %d", err ) + } + } + +// --------------------------------------------------------------------------- +// Get image +// --------------------------------------------------------------------------- +// +EXPORT_C const TAlfImage& CAlfBorderBrush::Image() const + { + return iBorderBrushData->iImage->Image(); + } + +// --------------------------------------------------------------------------- +// Set color +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfBorderBrush::SetColor(const TRgb& aColor) + { + // Just send to server + TPckgC inBuf(aColor); + TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetColor, inBuf ); + if ( err ) + { + __ALFLOGSTRING1( "CAlfBorderBrush::SetColor ignore error %d", err ) + } + } + +// --------------------------------------------------------------------------- +// Thickness +// --------------------------------------------------------------------------- +// +EXPORT_C const TAlfTimedPoint& CAlfBorderBrush::Thickness() const + { + TPckg buf(iBorderBrushData->iThickness); + TInt err = Comms()->DoSynchronousCmd( EAlfBorderBrushGetThickness, buf, buf); + + if ( err != KErrNone ) + { + __ALFLOGSTRING1( "CAlfBorderBrush::Thickness panic error %d", err ) + USER_INVARIANT(); + } + + return iBorderBrushData->iThickness; + } + +// --------------------------------------------------------------------------- +// Sets thickness +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfBorderBrush::SetThickness(const TAlfTimedPoint& aThickness) + { + TPckgC buf(aThickness); + TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetThickness, buf); + + if ( err == KErrNone ) + { + iBorderBrushData->iThickness = aThickness; + } + else + { + __ALFLOGSTRING1( "CAlfBorderBrush::SetThickness panic error %d", err ) + USER_INVARIANT(); + } + } + +// --------------------------------------------------------------------------- +// Edge offset +// --------------------------------------------------------------------------- +// +EXPORT_C const TAlfTimedPoint& CAlfBorderBrush::EdgeOffset() const + { + TPckg buf(iBorderBrushData->iEdgeOffset); + TInt err = Comms()->DoSynchronousCmd( EAlfBorderBrushGetEdgeOffset, buf, buf); + + if ( err != KErrNone ) + { + __ALFLOGSTRING1( "CAlfBorderBrush::EdgeOffset panic error %d", err ) + USER_INVARIANT(); + } + + return iBorderBrushData->iEdgeOffset; + } + +// --------------------------------------------------------------------------- +// Set edge offset +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfBorderBrush::SetEdgeOffset(const TAlfTimedPoint& aEdgeOffset) + { + TPckgC buf(aEdgeOffset); + TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetEdgeOffset, buf ); + + if ( err == KErrNone ) + { + iBorderBrushData->iEdgeOffset = aEdgeOffset; + } + else + { + __ALFLOGSTRING1( "CAlfBorderBrush::SetEdgeOffset panic error %d", err ) + USER_INVARIANT(); + } + } + +// --------------------------------------------------------------------------- +// Image offset +// --------------------------------------------------------------------------- +// +EXPORT_C const TAlfTimedPoint& CAlfBorderBrush::ImageOffset() const + { + TPckg buf(iBorderBrushData->iImageOffset); + TInt err = Comms()->DoSynchronousCmd( EAlfBorderBrushGetImageOffset, buf, buf); + + if ( err != KErrNone ) + { + __ALFLOGSTRING1( "CAlfBorderBrush::ImageOffset panic error %d", err ) + USER_INVARIANT(); + } + + return iBorderBrushData->iImageOffset; + } + +// --------------------------------------------------------------------------- +// Sets image offset +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfBorderBrush::SetImageOffset(const TAlfTimedPoint& aImageOffset) + { + TPckgC buf(aImageOffset); + + TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetImageOffset, buf ); + + if ( err == KErrNone ) + { + iBorderBrushData->iImageOffset = aImageOffset; + } + else + { + __ALFLOGSTRING1( "CAlfBorderBrush::SetImageOffset panic error %d", err ) + USER_INVARIANT(); + } + } + +// --------------------------------------------------------------------------- +// Sets image offset +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfBorderBrush::SetImageOffset(const TAlfXYMetric& aImageOffset) + { + TPckgC buf(aImageOffset); + + TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetImageOffsetMetric, buf ); + + if ( err != KErrNone ) + { + __ALFLOGSTRING1( "CAlfBorderBrush::SetImageOffset panic error %d", err ) + USER_INVARIANT(); + } + } +// --------------------------------------------------------------------------- +// Sets edge offset +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfBorderBrush::SetEdgeOffset(const TAlfXYMetric& aEdgeOffset) + { + TPckgC buf(aEdgeOffset); + TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetEdgeOffsetMetric, buf); + + if ( err != KErrNone ) + { + __ALFLOGSTRING1( "CAlfBorderBrush::SetEdgeOffset panic error %d", err ) + USER_INVARIANT(); + } + } + +// --------------------------------------------------------------------------- +// Sets thickness +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfBorderBrush::SetThickness(const TAlfXYMetric& aThickness) + { + TPckgC buf(aThickness); + TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetThicknessMetric, buf); + + if ( err != KErrNone ) + { + __ALFLOGSTRING1( "CAlfBorderBrush::SetThickness panic error %d", err ) + USER_INVARIANT(); + } + }