uiacceltk/hitchcock/coretoolkit/inc/HuiFxParameter.h
changeset 0 15bf7259bb7c
child 7 433cbbb6a04b
equal deleted inserted replaced
-1:000000000000 0:15bf7259bb7c
       
     1 /*
       
     2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #ifndef HUIFXPARAMETER_H_
       
    21 #define HUIFXPARAMETER_H_
       
    22 
       
    23 #include <e32std.h>
       
    24 #include <gdi.h>
       
    25 
       
    26 enum THuiFxParameterType
       
    27     {
       
    28     EParameterTypeScalar,
       
    29     EParameterTypeColor,
       
    30     };
       
    31 
       
    32 enum THuiFxReferencePoint
       
    33     {
       
    34     EReferencePointIdentity,
       
    35     EReferencePointUndefined,
       
    36     EReferencePointVisualWidth,
       
    37     EReferencePointVisualHeight,
       
    38     EReferencePointVisualTop,
       
    39     EReferencePointVisualBottom,
       
    40     EReferencePointVisualLeft,
       
    41     EReferencePointVisualRight,
       
    42     EReferencePointDisplayWidth,
       
    43     EReferencePointDisplayHeight,
       
    44     EReferencePointDisplayTop,
       
    45     EReferencePointDisplayBottom,
       
    46     EReferencePointDisplayLeft,
       
    47     EReferencePointDisplayRight,
       
    48     EReferencePointExtRectWidth,
       
    49     EReferencePointExtRectHeight,
       
    50     EReferencePointExtRectTop,
       
    51     EReferencePointExtRectBottom,
       
    52     EReferencePointExtRectLeft,
       
    53     EReferencePointExtRectRight,
       
    54    
       
    55     };
       
    56 
       
    57 class MHuiFxParameter
       
    58     {
       
    59 public:
       
    60     virtual ~MHuiFxParameter();
       
    61     virtual void AdvanceTime(TReal32 aElapsedTime) = 0;
       
    62     virtual THuiFxParameterType Type() const = 0;
       
    63     virtual TBool IsAnimated() const = 0;
       
    64     virtual void Update() = 0;
       
    65     
       
    66     virtual void SetReferencePoint(THuiFxReferencePoint aRef) = 0;
       
    67     virtual THuiFxReferencePoint ReferencePoint() const = 0;
       
    68     virtual void SetReferenceValue(TReal32 aValue) = 0;
       
    69     virtual TReal32 ReferenceValue() const = 0;
       
    70     
       
    71     virtual void SetStartReference( THuiFxReferencePoint aRef ) = 0; 
       
    72     virtual THuiFxReferencePoint StartReference() const = 0;
       
    73     virtual void SetStartValue( TReal32 aValue ) = 0;
       
    74     virtual TReal32 StartValue() const = 0;
       
    75     virtual void SetStartMultiplier( TReal32 aValue ) = 0;
       
    76     
       
    77     virtual void SetEndReference( THuiFxReferencePoint aRef ) = 0; 
       
    78     virtual THuiFxReferencePoint EndReference() const = 0;
       
    79     virtual void SetEndValue( TReal32 aValue ) = 0;
       
    80     virtual TReal32 EndValue() const = 0;
       
    81     virtual void SetEndMultiplier( TReal32 aValue ) = 0;
       
    82 
       
    83     virtual MHuiFxParameter *CloneL() const=0;
       
    84     virtual void ReRef(TReal32 *aValue)=0;
       
    85     virtual void ReRef(TRgb *aValue)=0;
       
    86     };
       
    87 
       
    88 template <typename TYPE, typename TIMELINE_TYPE, THuiFxParameterType TYPE_CODE>
       
    89 // This class is not derived from CBase because it is a template class + a mixin class.
       
    90 // If the class is derived from CBase, the static_cast to actual class points to a wrong place
       
    91 // All members are zeroed or set to default values in the constructor, so deriving from
       
    92 // CBase does not really provide any additional functionality.
       
    93 class CHuiFxGenericParameter: /*public CBase,*/ public MHuiFxParameter
       
    94     {
       
    95 public:
       
    96     typedef TYPE ValueType;
       
    97     
       
    98     CHuiFxGenericParameter(TYPE* aValue);
       
    99     ~CHuiFxGenericParameter();
       
   100     void SetTimeLine(TIMELINE_TYPE* aTimeLine); // takes ownership
       
   101     void AdvanceTime(TReal32 aElapsedTime);
       
   102     TBool IsAnimated() const;
       
   103     THuiFxParameterType Type() const;
       
   104     void SetValue(TYPE aValue);
       
   105     void Update();
       
   106 
       
   107     void SetReferencePoint(THuiFxReferencePoint aRef);
       
   108     THuiFxReferencePoint ReferencePoint() const;
       
   109     void SetReferenceValue(TReal32 aValue);
       
   110     TReal32 ReferenceValue() const;
       
   111     
       
   112     void SetStartReference( THuiFxReferencePoint aRef ); 
       
   113     THuiFxReferencePoint StartReference() const;
       
   114     void SetStartValue( TReal32 aValue );
       
   115     TReal32 StartValue() const;
       
   116     void SetStartMultiplier( TReal32 aValue );
       
   117     void SetEndReference( THuiFxReferencePoint aRef ); 
       
   118     THuiFxReferencePoint EndReference() const;
       
   119     void SetEndValue( TReal32 aValue );
       
   120     TReal32 EndValue() const;
       
   121     void SetEndMultiplier( TReal32 aValue );
       
   122     CHuiFxGenericParameter<TYPE, TIMELINE_TYPE, TYPE_CODE> *CloneL() const;
       
   123     void ReRef(TReal32 *aValue);
       
   124     void ReRef(TRgb *aValue);
       
   125 
       
   126 private:
       
   127     // Not implemented, not supported
       
   128     CHuiFxGenericParameter(const CHuiFxGenericParameter&);
       
   129     CHuiFxGenericParameter& operator=(const CHuiFxGenericParameter&);
       
   130 
       
   131 private:
       
   132     TIMELINE_TYPE*              iTimeLine;
       
   133     TYPE                        iRelValue;
       
   134     TYPE*                       iValue;
       
   135     TReal32                     iTime;
       
   136     TBool                       iAnimationFinished;
       
   137     TBool                       iLastFrameDrawn;
       
   138     THuiFxReferencePoint        iRefPoint;
       
   139     TReal32                     iRefValue;
       
   140     THuiFxReferencePoint        iStartRef;
       
   141     TReal32                     iStartValue;
       
   142     TReal32                     iStartMultiplier;
       
   143     THuiFxReferencePoint        iEndRef;
       
   144     TReal32                     iEndValue;
       
   145     TReal32                     iEndMultiplier;
       
   146     };
       
   147 
       
   148 #include "HuiFxParameter.inl"
       
   149 
       
   150 #endif /*HUIFXPARAMETER_H_*/