diff -r 1801340c26a2 -r e5af45d51884 uiacceltk/hitchcock/coretoolkit/src/HuiVisual.cpp --- 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)