widgetmodel/alfwidgetmodel/src/alfcommonvisualattributesetter.cpp
changeset 17 3eca7e70b1b8
parent 3 4526337fb576
--- a/widgetmodel/alfwidgetmodel/src/alfcommonvisualattributesetter.cpp	Tue Feb 02 00:28:09 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,843 +0,0 @@
-/*
-* 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:  attributesetter for common visual attributes
-*
-*/
-
-
-#include "alf/alfattribute.h"
-#include "alf/alfcommonvisualattributesetter.h"
-#include "alf/alfattributevaluetype.h"
-#include <alf/alfvisual.h>
-#include <alf/alfattributeexception.h>
-#include <alf/alfdataexception.h>
-#include <alf/alfvisualexception.h>
-#include "alf/alfattributecontainer.h"
-#include <libc/string.h>
-#include <osn/ustring.h>
-#include "alf/attrproperty.h"
-#include <alf/alfenv.h>
-
-using namespace osncore;
-
-using namespace duiuimodel::commonattributes;
-using namespace duiuimodel::commonattributevalues;
-using namespace duiuimodel::commonvisualattributes;
-using namespace duiuimodel::layoutattributes;
-using namespace duiuimodel::rect;
-using namespace duiuimodel::padding;
-using namespace duiuimodel::tactileattributes;
-
-namespace Alf
-    {
-
-// ---------------------------------------------------------------------------
-// gets the data from map pointed by attribute's field name.
-// ---------------------------------------------------------------------------
-//
-IAlfVariantType* getData(const AlfAttribute& aAttr, IAlfMap* aData)
-    {
-    IAlfVariantType* data = 0;
-    const char* dataField = aAttr.getDataField();
-    if (dataField)
-        {
-        data = aData->item(UString(dataField));
-        }
-    return data;
-    }
-
-// ---------------------------------------------------------------------------
-// gets the time from attribute safely.
-// ---------------------------------------------------------------------------
-//
-int getTime(const AlfAttribute& aAttr, bool aImmediate = false)
-    {
-    int time = 0;
-    if (!aImmediate)
-        {
-        time = aAttr.getTime();
-        }
-
-    return time;
-    }
-
-// ---------------------------------------------------------------------------
-// sets source values from aAttr to aPoint.
-// ---------------------------------------------------------------------------
-//
-void setSourceValue(TAlfTimedValue& aValue, const AlfAttribute& aAttr)
-    {
-    if (aAttr.getSourceValueCount() > 0)
-        {
-        aValue.SetValueNow(aAttr.getSourceValue()->realValue());
-        }
-    }
-// ---------------------------------------------------------------------------
-// sets source values to aPoint.
-// ---------------------------------------------------------------------------
-//
-void SetSourceValues(TAlfTimedPoint& aPoint, const AlfAttribute& aAttrX,
-                     const AlfAttribute& aAttrY)
-    {
-    if (aAttrX.getSourceValueCount() > 0)
-        {
-        aPoint.iX.SetValueNow(aAttrX.getSourceValue()->realValue());
-        }
-    if (aAttrY.getSourceValueCount() > 0)
-        {
-        aPoint.iY.SetValueNow(aAttrY.getSourceValue()->realValue());
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// sets source values to aRect.
-// ---------------------------------------------------------------------------
-//
-void SetSourceRect(TAlfRealRect& aRect, const AlfAttribute& aAttrTopX,
-                   const AlfAttribute& aAttrTopY,
-                   const AlfAttribute& aAttrBottomRightX,
-                   const AlfAttribute& aAttrBottomRightY)
-    {
-    if (aAttrTopX.getSourceValueCount() > 0)
-        {
-        aRect.iTl.iX = aAttrTopX.getSourceValue()->realValue();
-        }
-    if (aAttrTopY.getSourceValueCount() > 0)
-        {
-        aRect.iTl.iY = aAttrTopY.getSourceValue()->realValue();
-        }
-    if (aAttrBottomRightX.getSourceValueCount() > 0)
-        {
-        aRect.iBr.iX = aAttrBottomRightX.getSourceValue()->realValue();
-        }
-    if (aAttrBottomRightY.getSourceValueCount() > 0)
-        {
-        aRect.iBr.iY = aAttrBottomRightY.getSourceValue()->realValue();
-        }
-    }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-OSN_EXPORT AlfCommonVisualAttributeSetter::AlfCommonVisualAttributeSetter()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-OSN_EXPORT AlfCommonVisualAttributeSetter::~AlfCommonVisualAttributeSetter()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// creates one command.
-// deprecated
-// ---------------------------------------------------------------------------
-//
-OSN_EXPORT TAlfCommand* AlfCommonVisualAttributeSetter::createCommand(
-    CAlfVisual& /*aVisual*/, AlfAttributeContainer* /*aContainer*/,
-    IAlfMap* /*aData*/, int /*aTransitionTime*/, CAlfVisual* /*aRefVisual*/ )
-    {
-    return 0;
-    }
-
-// ---------------------------------------------------------------------------
-// creates and sends one or more commands.
-// ---------------------------------------------------------------------------
-//
-OSN_EXPORT void AlfCommonVisualAttributeSetter::createAndSendCommands(
-    CAlfVisual& aVisual,
-    AlfAttributeContainer* aContainer,
-    CAlfVisual* aRefVisual )
-    {
-    unsigned int attrCount = aContainer->attributeCount();
-
-    for ( int i = 0; i < attrCount; ++i )
-        {
-        AlfAttribute& attr = aContainer->getAttribute(i);
-        sendCommandsForAttribute(aVisual, *aContainer, attr, aRefVisual);
-        }
-
-    // Call the base class implementation also.
-    // It goes through the same loop again and checks if there are attributes
-    // that it handles.
-    AlfCommonAttributeSetter::createAndSendCommands(
-        aVisual,
-        aContainer,
-        aRefVisual );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets an value of a static attribute to target visual immediately
-// without a transition.
-// ---------------------------------------------------------------------------
-//
-void AlfCommonVisualAttributeSetter::handleStaticAttribute(
-    CAlfVisual &aVisual, AlfAttribute& aAttr,
-    AlfAttributeContainer& aContainer)
-    {
-    const char* attrName = aAttr.name();
-    if ( !strcmp(attrName, KParentVisual))
-        {
-        }
-    else if (!strcmp(attrName, KMaxHeight)||!strcmp(attrName, KMaxWidth))
-        {
-        setMaxSize(aVisual,aContainer,NULL);
-        }
-    else if (!strcmp(attrName, KMinHeight)||!strcmp(attrName, KMinWidth))
-        {
-        setMinSize(aVisual,aContainer,NULL);
-        }
-    else if (!strcmp(attrName, KPaddingTop)||!strcmp(attrName, KPaddingBottom)
-             ||!strcmp(attrName, KPaddingLeft)||!strcmp(attrName, KPaddingRight))
-        {
-        setPadding(aVisual,aContainer,NULL);
-
-        }
-    else if (!strcmp(attrName, KSetFlags))
-        {
-        int val = aAttr.intValue();
-        aVisual.SetFlags(val);
-        }
-    else if (!strcmp(attrName, KClearFlags))
-        {
-        int val = aAttr.intValue();
-        aVisual.ClearFlags(val);
-        }
-    else if (!strcmp(attrName, KEventInput) || !strcmp(attrName, KFeedbackType))
-        {
-        setTactileFeedback(aVisual,aContainer,NULL);
-        }
-    // turnangle and secondaryalpha are implemented by derived attributesetters
-    else
-        {
-        //check, if dynamic attribute, if so, set attributes immediately.
-        if (!doHandleDynamicAttribute(aVisual, aAttr, aContainer, true))
-            {
-            //not handled here, try base class.
-            AlfCommonAttributeSetter::handleStaticAttribute(aVisual,
-                    aAttr, aContainer);
-            }
-        }
-    }
-
-void AlfCommonVisualAttributeSetter::setTactileFeedback(CAlfVisual &aVisual,AlfAttributeContainer& aContainer,IAlfMap* /*aData*/)
-    {
-    TRAPD( error, aVisual.SetTactileFeedbackL(
-        aContainer.getAttributeByName( KEventInput ).intValue(),
-        aContainer.getAttributeByName( KFeedbackType ).intValue() ) );
-
-	if(error != KErrNone)
-	    {
-		ALF_THROW(AlfVisualException,EInvalidAttribute,"AlfCommonVisualAttributeSetter")
-	    }
-	try
-    	{
-        aContainer.getAttributeByName( duiuimodel::tactileattributes::KEventInput ).setDirty( false );
-        aContainer.getAttributeByName( duiuimodel::tactileattributes::KFeedbackType ).setDirty( false );
-    	}
-    	
-    catch( AlfDataException& exception )
-	    {
-		//exception needed here?
-	    }
-    }
-
-// ---------------------------------------------------------------------------
-// Sets an dynamic attribute value in the target visual
-// using transitions defined in attributes
-// ---------------------------------------------------------------------------
-//
-void AlfCommonVisualAttributeSetter::handleDynamicAttribute(
-    CAlfVisual& aVisual, AlfAttribute& aAttr,
-    AlfAttributeContainer& aContainer)
-    {
-    if (!doHandleDynamicAttribute(aVisual, aAttr, aContainer))
-        {
-        //not handled here, try base class.
-        AlfCommonAttributeSetter::handleDynamicAttribute(aVisual, aAttr,
-                aContainer);
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Sets an value for static attribute in the target visual immediately
-// without a transition using data in map.
-// ---------------------------------------------------------------------------
-//
-void AlfCommonVisualAttributeSetter::handleStaticDataAttribute(
-    CAlfVisual &aVisual, AlfAttribute& aAttr,
-    AlfAttributeContainer& aContainer, IAlfMap* aData)
-    {
-
-    if (aData)
-        {
-        const char* attrName = aAttr.name();
-
-        if (!strcmp(attrName, KMaxHeight))
-            {
-            // If maxheight exists, maxwidth must exists also.
-            const IAlfVariantType* maxHeight = getData(aAttr, aData);
-            const IAlfVariantType* maxWidth = getData(
-                                                  aContainer.getAttributeByName(KMaxWidth), aData);
-
-            if (maxHeight && maxHeight->type() == IAlfVariantType::EReal &&
-                    maxWidth && maxWidth->type() == IAlfVariantType::EReal)
-                {
-                TAlfRealSize size( maxWidth->real(), maxHeight->real() );
-                aVisual.SetMaxSize(size);
-                }
-            }
-        else if (!strcmp(attrName, KMinHeight))
-            {
-            //If minheight exists, minwidth must exists also.
-            const IAlfVariantType* minHeight = getData(aAttr, aData);
-            const IAlfVariantType* minWidth = getData(
-                                                  aContainer.getAttributeByName(KMinWidth), aData);
-
-            if (minHeight && minHeight->type() == IAlfVariantType::EReal &&
-                    minWidth && minWidth->type() == IAlfVariantType::EReal)
-                {
-                TAlfRealSize size( minWidth->real(), minHeight->real() );
-                aVisual.SetMinSize(size);
-                }
-            }
-        else if (!strcmp(attrName, KPaddingTop))
-            {
-            const IAlfVariantType* top = getData(aAttr, aData);
-            const IAlfVariantType* right = getData(
-                                               aContainer.getAttributeByName(KPaddingRight), aData);
-            const IAlfVariantType* bottom = getData(
-                                                aContainer.getAttributeByName(KPaddingBottom), aData);
-            const IAlfVariantType* left = getData(
-                                              aContainer.getAttributeByName(KPaddingLeft), aData);
-
-            if (top && top->type() == IAlfVariantType::EReal &&
-                    right && right->type() == IAlfVariantType::EReal &&
-                    bottom && bottom->type() == IAlfVariantType::EReal &&
-                    left && left->type() == IAlfVariantType::EReal)
-                {
-                float l = left->real();
-                float r = right->real();
-                float t = top->real();
-                float b = bottom->real();
-                TAlfBoxMetric metric(l, r, t, b);
-                aVisual.SetPadding(metric);
-                }
-            }
-        else if (!strcmp(attrName, KSetFlags))
-            {
-            const IAlfVariantType* flag = getData(aAttr, aData);
-            if (flag && flag->type() == IAlfVariantType::EInt)
-                {
-                int flagValue  = flag->integer();
-                aVisual.SetFlags(flagValue);
-                }
-            }
-        else if (!strcmp(attrName, KClearFlags))
-            {
-            const IAlfVariantType* flag = getData(aAttr, aData);
-            if (flag && flag->type() == IAlfVariantType::EInt)
-                {
-                int flagValue  = flag->integer();
-                aVisual.ClearFlags(flagValue);
-                }
-            }
-        // turnangle and secondaryalpha are implemented by derived attributesetters
-        else if (strcmp(attrName, KMaxWidth) &&         //these are already
-                 strcmp(attrName, KMinWidth) &&         //handled above
-                 strcmp(attrName, KPaddingRight) &&
-                 strcmp(attrName, KPaddingBottom) &&
-                 strcmp(attrName, KPaddingLeft))
-            {
-            //check, if dynamic attribute, if so, set attributes immediately.
-            //If not, the function will call baseclass SetAttributeValue.
-            if (!doHandleDynamicDataAttribute(aVisual, aAttr,
-                                              aContainer, aData, true))
-                {
-                //not handled here, try base class.
-                AlfCommonAttributeSetter::handleStaticDataAttribute(
-                    aVisual, aAttr, aContainer, aData);
-                }
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From AlfCommonAttributeSetter
-//
-// Sets a value for dynamic data attribute value in the target visual
-// using transitions and data in map.
-// ---------------------------------------------------------------------------
-//
-void AlfCommonVisualAttributeSetter::handleDynamicDataAttribute(
-    CAlfVisual& aVisual, AlfAttribute& aAttr,
-    AlfAttributeContainer& aContainer, IAlfMap* aData)
-    {
-    if (!doHandleDynamicDataAttribute(aVisual, aAttr, aContainer, aData))
-        {
-        //not handled here, try base class.
-        AlfCommonAttributeSetter::handleDynamicDataAttribute(aVisual, aAttr,
-                aContainer, aData);
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Sets an dynamic attribute value in the target visual
-// using transitions defined in attributes
-// Handles only attributes, belonging to this attributesetter, not bases.
-// ---------------------------------------------------------------------------
-//
-bool AlfCommonVisualAttributeSetter::doHandleDynamicAttribute(
-    CAlfVisual& aVisual, AlfAttribute& aAttr,
-    AlfAttributeContainer& aContainer, bool aImmediate)
-    {
-    const char* attrName = aAttr.name();
-    bool handled = true;
-
-    if ( !strcmp( attrName, KOpacity ) )
-        {
-        TAlfTimedValue v;
-        setSourceValue(v, aAttr);
-
-        float targetValue(aAttr.realValue());
-        int time = getTime(aAttr, aImmediate);
-        v.SetTarget(targetValue, time);
-        v.SetStyle(aAttr.getInterpolationStyle());
-        aVisual.SetOpacity(v);
-        }
-
-    else if (!strcmp( attrName, KPositionX)||!strcmp( attrName, KPositionY)) ////also handles: KPositionY
-        {
-        setPos(aVisual,aContainer,NULL,aImmediate);
-        }
-
-    else if (!strcmp( attrName, KWidth)||!strcmp( attrName, KHeight)) //also handles: KHeight
-        {
-        setSize(aVisual,aContainer,NULL,aImmediate);
-        }
-    else if (!strcmp(attrName, KTopLeftX)||!strcmp(attrName, KTopLeftY)
-             ||!strcmp(attrName, KBottomRightX)||!strcmp(attrName, KBottomRightY))
-        {
-        setRect(aVisual,aContainer,NULL,aImmediate);
-        }
-    else
-        {
-        handled = false;
-        }
-
-    return handled;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets an value for dynamic attribute value in the target visual
-// using transitions and data in map.
-// ---------------------------------------------------------------------------
-//
-bool AlfCommonVisualAttributeSetter::doHandleDynamicDataAttribute(
-    CAlfVisual& aVisual, AlfAttribute& aAttr,
-    AlfAttributeContainer& aContainer, IAlfMap* aData, bool aImmediate )
-    {
-    bool handled = true;
-    if (aData)
-        {
-        const char* attrName = aAttr.name();
-
-        if ( !strcmp( attrName, KOpacity ) )
-            {
-            const IAlfVariantType* data = getData(aAttr, aData);
-            if (data && data->type() == IAlfVariantType::EReal)
-                {
-                TAlfTimedValue v;
-                setSourceValue(v, aAttr);
-
-                float targetValue(data->real());
-                int time = getTime(aAttr, aImmediate);
-                v.SetTarget(targetValue, time);
-                v.SetStyle(aAttr.getInterpolationStyle());
-                aVisual.SetOpacity(v);
-                }
-            }
-        else if (!strcmp( attrName, KPositionX)) //also handles: KPositionY
-            {
-            //If positionx exists, positiony must exists also
-            const AlfAttribute& attrX = aAttr;
-            const AlfAttribute& attrY = aContainer.getAttributeByName(KPositionY);
-
-            const IAlfVariantType* posX = getData(attrX, aData);
-            const IAlfVariantType* posY = getData(attrY, aData);
-
-            if (posX && posX->type() == IAlfVariantType::EReal &&
-                    posY && posY->type() == IAlfVariantType::EReal)
-                {
-                TAlfTimedPoint pos;
-                SetSourceValues(pos, attrX, attrY);
-
-                pos.iX.SetStyle(attrX.getInterpolationStyle());
-                pos.iX.SetTarget(posX->real(), getTime(attrX, aImmediate));
-                pos.iY.SetStyle(attrY.getInterpolationStyle());
-                pos.iY.SetTarget(posY->real(), getTime(attrY, aImmediate));
-                aVisual.SetPos(pos);
-                }
-            }
-        else if (!strcmp( attrName, KWidth)) //also handles: KHeight
-            {
-            const AlfAttribute& attrWidth = aAttr;
-            const AlfAttribute& attrHeight =
-                aContainer.getAttributeByName(KHeight);
-
-            const IAlfVariantType* width = getData(attrWidth, aData);
-            const IAlfVariantType* height = getData(attrHeight, aData);
-
-            if (width && width->type() == IAlfVariantType::EReal &&
-                    height && height->type() == IAlfVariantType::EReal)
-                {
-                TAlfTimedPoint size;
-                SetSourceValues(size, attrWidth, attrHeight);
-
-                size.iX.SetStyle(attrWidth.getInterpolationStyle());
-                size.iX.SetTarget(width->real(),
-                                  getTime(attrWidth, aImmediate));
-                size.iY.SetStyle(attrHeight.getInterpolationStyle());
-                size.iY.SetTarget(height->real(),
-                                  getTime(attrHeight, aImmediate));
-
-                aVisual.SetSize(size);
-                }
-            }
-        else if (!strcmp(attrName, KTopLeftX))
-            {
-            //If topleftx exists, topy, bottomx and bottomy must exists also
-            const AlfAttribute& attrTopX = aAttr;
-            const AlfAttribute& attrTopY =
-                aContainer.getAttributeByName(KTopLeftY);
-            const AlfAttribute& attrBottomRightX =
-                aContainer.getAttributeByName(KBottomRightX);
-            const AlfAttribute& attrBottomRightY =
-                aContainer.getAttributeByName(KBottomRightY);
-
-            const IAlfVariantType* topX = getData(attrTopX, aData);
-            const IAlfVariantType* topY = getData(attrTopY, aData);
-            const IAlfVariantType* bottomX = getData(attrBottomRightX, aData);
-            const IAlfVariantType* bottomY = getData(attrBottomRightY, aData);
-
-            if (topX && topX->type() == IAlfVariantType::EReal &&
-                    topY && topY->type() == IAlfVariantType::EReal &&
-                    bottomX && bottomX->type() == IAlfVariantType::EReal &&
-                    bottomY && bottomY->type() == IAlfVariantType::EReal)
-                {
-                const TAlfRealPoint sTopLeft(aVisual.Pos().ValueNow());
-                TAlfRealPoint size(aVisual.Size().ValueNow());
-                TAlfRealRect sRect(sTopLeft, TAlfRealPoint(
-                                       sTopLeft.iX + size.iX, sTopLeft.iY + size.iY));
-
-                SetSourceRect(sRect, attrTopX, attrTopY, attrBottomRightX,
-                              attrBottomRightY);
-
-                aVisual.SetRect(sRect, 0);
-
-                TAlfRealPoint topLeft(topX->real(), topY->real());
-                TAlfRealPoint bottomRight(bottomX->real(), bottomY->real());
-                TAlfRealRect realRect(topLeft, bottomRight);
-                aVisual.SetRect(realRect, getTime(aAttr, aImmediate));
-                }
-            }
-        else if (strcmp(attrName, KPositionY) &&      //these are already
-                 strcmp(attrName, KHeight) &&         //handled above
-                 strcmp(attrName, KTopLeftY) &&
-                 strcmp(attrName, KBottomRightX) &&
-                 strcmp(attrName, KBottomRightY))
-            {
-            handled = false;
-            }
-        }
-
-    return handled;
-    }
-
-// ---------------------------------------------------------------------------
-// Creates and returns one command
-// ---------------------------------------------------------------------------
-//
-void AlfCommonVisualAttributeSetter::sendCommandsForAttribute(
-    CAlfVisual& aVisual, AlfAttributeContainer& aContainer,
-    AlfAttribute& aAttr, CAlfVisual* aRefVisual)
-    {
-    const char* attrName = aAttr.name();
-
-    if ( !strcmp( attrName, KOpacity ) )
-        {
-        float value(aAttr.realValue());
-
-        if (aRefVisual)
-            {
-            // Add the opacity of the reference visual to the value
-            // of the opacity provided in the attribute 
-            value += aRefVisual->Opacity().ValueNow(); 
-            }
-
-        int time = getTime(aAttr);
-
-        //setting interpolation style
-        TAlfInterpolationStyle style = aAttr.getInterpolationStyle();
-        TAlfTimedValue v;
-        v.SetStyle(style);
-        aVisual.SetOpacity(v);
-
-        //create command
-        TAlfValueCommand cmd(&aVisual, EAlfValueCommandVisualSetOpacity,
-                             EAlfOpSet, value, time);
-
-        //send with delay.
-        CAlfEnv::Static()->Send(cmd, aAttr.getDelay());
-        }
-
-    else if (!strcmp( attrName, KPositionX)) ////also handles: KPositionY
-        {
-        // Must contain both KPositionX and KPositionY
-        const AlfAttribute& posXattrib = aAttr;
-        const AlfAttribute& posYattrib =
-            aContainer.getAttributeByName(KPositionY);
-
-        TAlfRealPoint value(posXattrib.realValue(),
-                            posYattrib.realValue());
-
-        if ( aRefVisual )
-            {
-            value += aRefVisual->Pos().ValueNow(); // Add the reference point
-            }
-
-        int time = getTime(aAttr);
-
-        //create command
-        TAlfPointCommand cmd(&aVisual, EAlfPointCommandVisualSetPos,
-                             value, time);
-
-        //send with delay.
-        CAlfEnv::Static()->Send(cmd, aAttr.getDelay());
-        }
-
-    else if (!strcmp( attrName, KWidth)) //also handles: KHeight
-        {
-        // Must contain both KWidth and KHeight
-        const AlfAttribute& widthAttrib = aAttr;
-        const AlfAttribute& heightAttrib =
-            aContainer.getAttributeByName(KHeight);
-
-        TAlfRealPoint value(widthAttrib.realValue(),
-                            heightAttrib.realValue());
-
-        if (aRefVisual)
-            {
-            value += aRefVisual->Size().ValueNow(); // Add the reference point
-            }
-        int time = getTime(aAttr);
-
-        //create command
-        TAlfPointCommand cmd(&aVisual,
-                             EAlfPointCommandVisualSetSize, value, time);
-
-        //send with delay.
-        CAlfEnv::Static()->Send(cmd, aAttr.getDelay());
-        }
-    else if (!strcmp(attrName, KTopLeftX))
-        {
-        //If topleftx exists, topy, bottomx and bottomy must exists also
-        float topX = aAttr.realValue();
-        const AlfAttribute& attrTopY =
-            aContainer.getAttributeByName(KTopLeftY);
-        const AlfAttribute& attrBottomX =
-            aContainer.getAttributeByName(KBottomRightX);
-        const AlfAttribute& attrBottomY =
-            aContainer.getAttributeByName(KBottomRightY);
-        TAlfRealPoint topLeft(topX, attrTopY.realValue());
-        TAlfRealPoint size(attrBottomX.realValue() - topLeft.iX,
-                           attrBottomY.realValue() - topLeft.iY);
-        if (aRefVisual)
-            {
-            // Add the reference point
-            topLeft += aRefVisual->Pos().ValueNow();
-            size += aRefVisual->Size().ValueNow();
-            }
-
-        int posTime = getTime(aAttr);
-        int sizeTime = getTime(attrBottomX);
-
-        //create position command
-        TAlfPointCommand posCmd(&aVisual, EAlfPointCommandVisualSetPos,
-                                topLeft, posTime);
-        TAlfPointCommand sizeCmd(&aVisual, EAlfPointCommandVisualSetPos,
-                                 size, sizeTime);
-
-        //send with delay.
-        CAlfEnv::Static()->Send(posCmd, aAttr.getDelay());
-        CAlfEnv::Static()->Send(sizeCmd, attrBottomX.getDelay());
-        }
-    }
-
-    
-void AlfCommonVisualAttributeSetter::setPadding(CAlfVisual &aVisual,AlfAttributeContainer& aContainer,IAlfMap* /*aData*/)
-    {
-    //If padding-top exists, right, bottom and left must exists also
-
-    AlfAttribute& attrTop =
-        aContainer.getAttributeByName(KPaddingTop);
-    AlfAttribute& attrRight =
-        aContainer.getAttributeByName(KPaddingRight);
-    AlfAttribute& attrBottom =
-        aContainer.getAttributeByName(KPaddingBottom);
-    AlfAttribute& attrLeft =
-        aContainer.getAttributeByName(KPaddingLeft);
-
-    TAlfBoxMetric metric(
-        TAlfMetric(attrLeft.realValue(), attrLeft.unit()),
-        TAlfMetric(attrRight.realValue(), attrRight.unit()),
-        TAlfMetric(attrTop.realValue(), attrTop.unit()),
-        TAlfMetric(attrBottom.realValue(), attrBottom.unit()));
-
-    aVisual.SetPadding(metric);
-
-    attrTop.setDirty(false);
-    attrRight.setDirty(false);
-    attrBottom.setDirty(false);
-    attrLeft.setDirty(false);
-
-    }
-
-void AlfCommonVisualAttributeSetter::setMinSize(CAlfVisual &aVisual,AlfAttributeContainer& aContainer,IAlfMap* /*aData*/)
-    {
-    //If minheight exists, minwidth must exists also.
-    AlfAttribute& attrHt =
-        aContainer.getAttributeByName(KMinHeight);
-    AlfAttribute& attrWidth =
-        aContainer.getAttributeByName(KMinWidth);
-    float height = attrHt.realValue();
-    float width = attrWidth.realValue();
-    TAlfRealSize size( width, height );
-
-    aVisual.SetMinSize(size);
-
-    attrHt.setDirty(false);
-    attrWidth.setDirty(false);
-    }
-
-void AlfCommonVisualAttributeSetter::setMaxSize(CAlfVisual &aVisual,AlfAttributeContainer& aContainer,IAlfMap* /*aData*/)
-    {
-    AlfAttribute& attrHt =
-        aContainer.getAttributeByName(KMaxHeight);
-    AlfAttribute& attrWidth =
-        aContainer.getAttributeByName(KMaxWidth);
-    float height = attrHt.realValue();
-    float width = attrWidth.realValue();
-    TAlfRealSize size( width, height );
-
-    aVisual.SetMaxSize(size);
-
-
-    attrHt.setDirty(false);
-    attrWidth.setDirty(false);
-
-
-    }
-
-void AlfCommonVisualAttributeSetter::setSize(CAlfVisual &aVisual,AlfAttributeContainer& aContainer,IAlfMap* /*aData*/,bool aImmediate)
-    {
-    // Must contain both KWidth and KHeight
-    AlfAttribute& attrWidth =
-        aContainer.getAttributeByName(KWidth);;
-    AlfAttribute& attrHeight =
-        aContainer.getAttributeByName(KHeight);
-
-    TAlfTimedPoint size(aVisual.Size());
-    SetSourceValues(size, attrWidth, attrHeight);
-
-    size.iX.SetStyle(attrWidth.getInterpolationStyle());
-    size.iX.SetTarget(attrWidth.realValue(),
-                      getTime(attrWidth, aImmediate));
-    size.iY.SetStyle(attrHeight.getInterpolationStyle());
-    size.iY.SetTarget(attrHeight.realValue(),
-                      getTime(attrHeight, aImmediate));
-
-
-    aVisual.SetSize(size);
-
-
-    attrWidth.setDirty(false);
-    attrHeight.setDirty(false);
-    }
-
-void AlfCommonVisualAttributeSetter::setPos(CAlfVisual &aVisual,AlfAttributeContainer& aContainer,IAlfMap* /*aData*/,bool aImmediate)
-    {
-    // Must contain both KPositionX and KPositionY
-    AlfAttribute& attrX = aContainer.getAttributeByName(KPositionX);
-    AlfAttribute& attrY = aContainer.getAttributeByName(KPositionY);
-
-    TAlfTimedPoint pos(aVisual.Pos());
-    SetSourceValues(pos, attrX, attrY);
-
-    pos.iX.SetStyle(attrX.getInterpolationStyle());
-    pos.iX.SetTarget(attrX.realValue(), getTime(attrX, aImmediate));
-    pos.iY.SetStyle(attrY.getInterpolationStyle());
-    pos.iY.SetTarget(attrY.realValue(), getTime(attrY, aImmediate));
-
-    aVisual.SetPos(pos);
-
-
-    attrX.setDirty(false);
-    attrY.setDirty(false);
-    }
-
-void AlfCommonVisualAttributeSetter::setRect(CAlfVisual &aVisual,AlfAttributeContainer& aContainer,IAlfMap* /*aData*/,bool aImmediate)
-    {
-    //If topleftx exists, topy, bottomx and bottomy must exists also
-    AlfAttribute& attrTopX =
-        aContainer.getAttributeByName(KTopLeftX);
-    AlfAttribute& attrTopY =
-        aContainer.getAttributeByName(KTopLeftY);
-    AlfAttribute& attrBottomRightX =
-        aContainer.getAttributeByName(KBottomRightX);
-    AlfAttribute& attrBottomRightY =
-        aContainer.getAttributeByName(KBottomRightY);
-
-    const TAlfRealPoint sTopLeft(aVisual.Pos().ValueNow());
-    TAlfRealPoint size(aVisual.Size().ValueNow());
-    TAlfRealRect sRect(sTopLeft, TAlfRealPoint(sTopLeft.iX + size.iX,
-                       sTopLeft.iY + size.iY));
-
-    SetSourceRect(sRect, attrTopX, attrTopY, attrBottomRightX,
-                  attrBottomRightY);
-
-    aVisual.SetRect(sRect, 0);
-
-    TAlfRealPoint tTopLeft(attrTopX.realValue(), attrTopY.realValue());
-    TAlfRealPoint tBottomRight(attrBottomRightX.realValue(),
-                               attrBottomRightY.realValue());
-    TAlfRealRect tRealRect(tTopLeft, tBottomRight);
-
-    int time = getTime(attrTopX, aImmediate);
-    aVisual.SetRect(tRealRect, time);
-
-
-    attrTopX.setDirty(false);
-    attrTopY.setDirty(false);
-    attrBottomRightX.setDirty(false);
-    attrBottomRightY.setDirty(false);
-
-    }
-} // Alf