diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/Client/src/alfgradientbrush.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/Client/src/alfgradientbrush.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,234 @@ +/* +* 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: Gradient brush +* +*/ + + + +#include "alf/alfgradientbrush.h" +#include "alf/alfconstants.h" +#include "alf/alfgencomponent.h" +#include "alf/alfimage.h" +#include "alf/alftexture.h" +#include "alflogger.h" +#include "alf/alfenv.h" +#include "alfskinnableimage.h" + +#include + +struct CAlfGradientBrush::TGradientBrushPrivateData + { + CAlfSkinnableImage* iImage; + }; + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +EXPORT_C CAlfGradientBrush* CAlfGradientBrush::NewL( CAlfEnv& aEnv ) + { + CAlfGradientBrush* self = CAlfGradientBrush::NewLC( aEnv ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +EXPORT_C CAlfGradientBrush* CAlfGradientBrush::NewLC( CAlfEnv& aEnv ) + { + CAlfGradientBrush* self = new( ELeave ) CAlfGradientBrush; + CleanupStack::PushL( self ); + self->ConstructL( aEnv ); + return self; + } + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +CAlfGradientBrush::CAlfGradientBrush() + { + } + +// --------------------------------------------------------------------------- +// Second phase constructor +// --------------------------------------------------------------------------- +// +void CAlfGradientBrush::ConstructL( CAlfEnv& aEnv ) + { + CAlfBrush::ConstructL( + aEnv, + EAlfGradientBrushCreate, + 0, + KNullDesC8() + ); + + iGradientBrushData = new (ELeave) TGradientBrushPrivateData; + iGradientBrushData->iImage = NULL; + iGradientBrushData->iImage = new (ELeave) CAlfSkinnableImage(&aEnv); + + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CAlfGradientBrush::~CAlfGradientBrush() + { + if ( iGradientBrushData ) + { + delete iGradientBrushData->iImage; + iGradientBrushData->iImage = NULL; + } + delete iGradientBrushData; + iGradientBrushData = NULL; + } + +// --------------------------------------------------------------------------- +// Set gradient direction +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfGradientBrush::SetDirection(TDirection aDirection) + { + TPckgC buf(aDirection); + + TInt err = Comms()->DoCmdNoReply( EAlfGradientBrushSetDirection, buf ); + + if ( err != KErrNone ) + { + __ALFLOGSTRING1( "CAlfGradientBrush::SetDirection panic error %d", err ) + USER_INVARIANT(); + } + } + +// --------------------------------------------------------------------------- +// Set gradient base color +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfGradientBrush::SetColor(const TRgb& aColor, TReal32 aOpacity ) __SOFTFP + { + TAlfGradientBrushSetColorParams params; + params.iColor = aColor; + params.iOpacity = aOpacity; + + TPckgC buf(params); + + TInt err = Comms()->DoCmdNoReply( EAlfGradientBrushSetColor, buf ); + + if ( err != KErrNone ) + { + __ALFLOGSTRING1( "CAlfGradientBrush::SetColor panic error %d", err ) + USER_INVARIANT(); + } + } + +// --------------------------------------------------------------------------- +// Set gradient image +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfGradientBrush::SetImage(const TAlfImage& aImage) + { + iGradientBrushData->iImage->SetImage(aImage); // This texturizes skin graphics if needed + + TAlfImageParams params(iGradientBrushData->iImage->Image()); + + TPckgC buf(params); + + TInt err = Comms()->DoCmdNoReply(EAlfGradientBrushSetImage, buf ); + + if ( err ) + { + __ALFLOGSTRING1( "CAlfGradientBrush::SetImage ignore error %d", err ) + } + } + +// --------------------------------------------------------------------------- +// Return color at index +// --------------------------------------------------------------------------- +// +EXPORT_C TRgb CAlfGradientBrush::Color(TInt aIndex) const + { + TPckgC inBuf(aIndex); + TRgb result; + TPckg outBuf(result); + TInt err = Comms()->DoSynchronousCmd( EAlfGradientBrushColor, inBuf, outBuf); + + if ( err != KErrNone ) + { + __ALFLOGSTRING1( "CAlfGradientBrush::Color panic error %d", err ) + USER_INVARIANT(); + } + + return result; + } + +// --------------------------------------------------------------------------- +// Return opacity at index +// --------------------------------------------------------------------------- +// +EXPORT_C TReal32 CAlfGradientBrush::Opacity(TInt aIndex) const + { + TPckgC inBuf(aIndex); + TReal32 result = 1.f; + TPckg outBuf(result); + TInt err = Comms()->DoSynchronousCmd( EAlfGradientBrushOpacity, inBuf, outBuf); + + if ( err != KErrNone ) + { + __ALFLOGSTRING1( "CAlfGradientBrush::Opacity panic error %d", err ) + USER_INVARIANT(); + } + + return result; + } + +// --------------------------------------------------------------------------- +// Return image +// --------------------------------------------------------------------------- +// +EXPORT_C const TAlfImage& CAlfGradientBrush::Image() const + { + return iGradientBrushData->iImage->Image(); + } + +// --------------------------------------------------------------------------- +// Add color bar to gradient +// --------------------------------------------------------------------------- +// +EXPORT_C void CAlfGradientBrush::AppendColorL( + TReal32 aPosition, + const TRgb& aColor, + TReal32 aOpacity ) __SOFTFP + { + TAlfGradientBrushAppendColorParams params; + params.iPosition = aPosition; + params.iColor = aColor; + params.iOpacity = aOpacity; + + TPckgC buf(params); + TBuf8<1> dum; + TInt err = Comms()->DoSynchronousCmd( EAlfGradientBrushAppendColor, buf, dum); + + if ( err ) + { + __ALFLOGSTRING1( "CAlfGradientBrush::AppendColorL leave error %d", err ) + User::Leave( err ); + } + } +