uiacceltk/hitchcock/coretoolkit/src/HuiVisual.cpp
branchRCL_3
changeset 57 eaa079afe64c
parent 52 31fccae4f8a7
child 63 e1987ab3768a
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiVisual.cpp	Tue Sep 14 23:02:38 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiVisual.cpp	Wed Sep 15 13:12:27 2010 +0300
@@ -60,6 +60,8 @@
         delete iDropShadow;
         delete iEffectParser;
         delete iEffect;
+        delete iEffectable; // Should be after deleting iEffect! 
+
         }
     
     // structs
@@ -83,32 +85,45 @@
     {
 public: // from MHuiEffectable
     CHuiEffectable(CHuiVisual *aVisual) : iVisual(aVisual) { }
+
     void EffectSetEffect(CHuiFxEffect* aEffect);
     TReal32 EffectOpacity() const;
     void EffectSetOpacityAdditive(TReal32 aOpacity, TBool aReplace);
     void EffectDrawSelf( CHuiGc &aGc, const TRect & aDisplayRect) const;
     THuiRealRect EffectDisplayRect() const __SOFTFP;
     void SetLoadingEffect(TBool aLoading);    
-    void EffectSetSource( TBool aIsInput1 );
-    TBool EffectGetSource() const;
+    void EffectSetSource( THuiFxVisualSrcType aSource );
+    THuiFxVisualSrcType EffectGetSource() const;
+    void SetExternalTexture(CHuiTexture* aTexture);
+    CHuiTexture* ExternalTexture();
     TBool EffectReadyToDrawNextFrame() const;
-
     
 private:
-    CHuiVisual *iVisual;
-    TBool iIsInput1;
+    CHuiVisual *iVisual; // not owned
+    CHuiTexture* iExtTexture; // not owned
+    THuiFxVisualSrcType iSourceType;
     };
 void CHuiEffectable::EffectSetEffect(CHuiFxEffect* aEffect)
     {
     iVisual->SetEffect(aEffect);
     }
-void CHuiEffectable::EffectSetSource( TBool aIsInput1 )
+void CHuiEffectable::EffectSetSource( THuiFxVisualSrcType aSource )
     {
-    iIsInput1 = aIsInput1;
+    iSourceType = aSource;
+    }
+THuiFxVisualSrcType CHuiEffectable::EffectGetSource() const
+    {
+    return iSourceType;
     }
-TBool CHuiEffectable::EffectGetSource() const
+
+void CHuiEffectable::SetExternalTexture(CHuiTexture* aTexture)
     {
-    return iIsInput1;
+    iExtTexture = aTexture;
+    }
+
+CHuiTexture* CHuiEffectable::ExternalTexture()
+    {
+    return iExtTexture;
     }
 
 TBool CHuiEffectable::EffectReadyToDrawNextFrame() const
@@ -192,9 +207,9 @@
     iVisualData->iFreezed = aEnabled;
     }
 TBool CHuiVisual::Freezed() const
-{
+    {
     return iVisualData->iFreezed;
-}
+    }
 
 EXPORT_C TBool CHuiVisual::EffectReadyToDrawNextFrame() const
     {
@@ -209,7 +224,6 @@
     return visual;
     }
 
-
 EXPORT_C CHuiVisual::CHuiVisual(MHuiVisualOwner& aOwner)
         : iOpacity(1.f),
           iEffectOpacity(1.f),
@@ -280,7 +294,6 @@
     delete iTransform;
     if (iVisualData)
         {
-        delete iVisualData->iEffectable;
         if (iVisualData->iStoredRenderBuffer)
             {
             iVisualData->iStoredRenderBuffer->UnInitialize();
@@ -2194,14 +2207,24 @@
         return EFalse;
     else
         {
-        TBool b = Effectable()->EffectGetSource();
-        if (!b)
-            { // if not found from this object, try the parent
-            CHuiLayout *l = Layout();
-            if (l)
-                return Layout()->IsDelayedEffectSource();
+        THuiFxVisualSrcType sourceType = Effectable()->EffectGetSource(); 
+
+        if (sourceType == EVisualSrcVisual)
+            { // if this object has visual source, check the parent
+            CHuiLayout *layout = Layout();
+            if (layout)
+                {
+                return (Layout()->IsDelayedEffectSource()); 
+                }
+	        else
+	            {
+	            return EFalse;
+	            }
             }
-        return b;
+        else
+            {
+            return ETrue;
+            }
         }
    }