--- 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)