uiacceltk/hitchcock/coretoolkit/src/HuiVisual.cpp
branchRCL_3
changeset 19 e5af45d51884
parent 18 1801340c26a2
child 20 31fccae4f8a7
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiVisual.cpp	Thu Aug 19 10:48:02 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiVisual.cpp	Tue Aug 31 16:07:35 2010 +0300
@@ -45,12 +45,10 @@
     {
 public: // Functions
     // Constructor: initialize the data
-    THuiVisualPrivateData() 
-        : iTacticons(), iDropShadow(NULL), iEffect(NULL),
-          iEffectParser(NULL), iEffectable(NULL), iStoredRenderBuffer(NULL),
-          iStoredRenderBufferModificationsEnabled(ETrue),
-          iFreezed(EFalse)
+    THuiVisualPrivateData() : iTacticons(), iDropShadow(NULL)
         {
+        iEffect = NULL;
+        iEffectParser = NULL;
         }
         
     // Destructor: destruct the data
@@ -84,16 +82,14 @@
 public: // from MHuiEffectable
     CHuiEffectable(CHuiVisual *aVisual) : iVisual(aVisual) { }
     void EffectSetEffect(CHuiFxEffect* aEffect);
-    TReal32 EffectOpacity() const;
-    void EffectSetOpacityAdditive(TReal32 aOpacity, TBool aReplace);
+    TReal32 EffectOpacityTarget() const;
+    void EffectSetOpacity(TReal32 aOpacity);
     void EffectDrawSelf( CHuiGc &aGc, const TRect & aDisplayRect) const;
     THuiRealRect EffectDisplayRect() const __SOFTFP;
     void SetLoadingEffect(TBool aLoading);    
     void EffectSetSource( TBool aIsInput1 );
     TBool EffectGetSource() const;
-    TBool EffectReadyToDrawNextFrame() const;
 
-    
 private:
     CHuiVisual *iVisual;
     TBool iIsInput1;
@@ -111,22 +107,14 @@
     return iIsInput1;
     }
 
-TBool CHuiEffectable::EffectReadyToDrawNextFrame() const
+TReal32 CHuiEffectable::EffectOpacityTarget() const
     {
-    return iVisual->EffectReadyToDrawNextFrame();
+    return iVisual->iOpacity.Target();
     }
 
-TReal32 CHuiEffectable::EffectOpacity() const
+void CHuiEffectable::EffectSetOpacity(TReal32 aOpacity)
     {
-    return iVisual->iEffectOpacity;
-    }
-
-void CHuiEffectable::EffectSetOpacityAdditive(TReal32 aOpacity, TBool aReplace)
-    {
-    if( aReplace || aOpacity > iVisual->iEffectOpacity)
-        {
-        iVisual->iEffectOpacity = aOpacity;
-        }
+    iVisual->iOpacity.Set( aOpacity );
     }
 
 void CHuiEffectable::EffectDrawSelf( CHuiGc &aGc, const TRect & aDisplayRect) const
@@ -196,11 +184,6 @@
     return iVisualData->iFreezed;
 }
 
-EXPORT_C TBool CHuiVisual::EffectReadyToDrawNextFrame() const
-    {
-    return  ETrue;
-    }
-
 EXPORT_C CHuiVisual* CHuiVisual::AddNewL(CHuiControl& aOwnerControl,
                                          CHuiLayout* aParentLayout)
     {
@@ -212,7 +195,6 @@
 
 EXPORT_C CHuiVisual::CHuiVisual(MHuiVisualOwner& aOwner)
         : iOpacity(1.f),
-          iEffectOpacity(1.f),
           iOwner(&aOwner), 
           // Set the maximum size to unlimited.
           iMaxSize(TSize(KMaxTInt, KMaxTInt)),
@@ -230,6 +212,7 @@
     {
     iVisualData = new (ELeave) THuiVisualPrivateData;
     iVisualData->iEffectable = new CHuiEffectable(this);
+    iVisualData->iStoredRenderBuffer = NULL;
     }
 
 
@@ -278,15 +261,12 @@
     delete iBrushes;
     delete iTag;
     delete iTransform;
-    if (iVisualData)
+    delete iVisualData->iEffectable;
+    if (iVisualData->iStoredRenderBuffer)
         {
-        delete iVisualData->iEffectable;
-        if (iVisualData->iStoredRenderBuffer)
-            {
-            iVisualData->iStoredRenderBuffer->UnInitialize();
-            }
-        delete iVisualData->iStoredRenderBuffer;
+        iVisualData->iStoredRenderBuffer->UnInitialize();
         }
+    delete iVisualData->iStoredRenderBuffer;
     delete iVisualData;
     
     iOwner = NULL;
@@ -937,30 +917,10 @@
         
         if (canUseEffectDrawing)
             {
-            Effectable()->EffectSetOpacityAdditive(0.0f, ETrue);
-            // PrepareDrawL will update iEffectOpacity for current frame
-            if(iVisualData->iEffect->PrepareDrawL(aGc, displayRect))
-                {
-                if(iEffectOpacity <= 0.f)
-                    {
-                    if(Clipping())
-                        {
-                        aGc.PopClip();
-                        }
-                    
-                    // Draw foreground brushes (over the content).
-                    DrawBrushes(aGc, EHuiBrushLayerForeground);
-
-                    // Undo local transformation.
-                    Transform(aGc, EFalse);
-                    EnterLocalProjection(aGc, EFalse);
-                    return;
-                    }
-                // Note that EHuiVisualFlagOpaqueHint improves performance a lot in cached effect drawing 
-                TBool transparent = !(Flags() & EHuiVisualFlagOpaqueHint);
-                TBool refreshCache = Changed();                
-                didDrawEffect = iVisualData->iEffect->CachedDraw(aGc, displayRect, refreshCache, !transparent);
-                }
+            // Note that EHuiVisualFlagOpaqueHint improves performance a lot in cached effect drawing 
+            TBool transparent = !(Flags() & EHuiVisualFlagOpaqueHint);
+            TBool refreshCache = Changed();                
+            didDrawEffect = iVisualData->iEffect->CachedDraw(aGc, displayRect, refreshCache, !transparent);
             }
 
         if (!didDrawEffect)