uiacceltk/hitchcock/coretoolkit/rendervg10/src/HuiFxVg10BlurFilter.cpp
changeset 29 ac3859d43844
parent 0 15bf7259bb7c
equal deleted inserted replaced
28:423dd85009cf 29:ac3859d43844
    82     aMargin.iBottom = iBlurY;
    82     aMargin.iBottom = iBlurY;
    83     aMargin.iTop = iBlurY;
    83     aMargin.iTop = iBlurY;
    84 }
    84 }
    85 
    85 
    86 TBool CHuiFxVg10BlurFilter::Draw(CHuiFxEngine& aEngine, CHuiGc& /* aGc */, CHuiFxRenderbuffer& aTarget,
    86 TBool CHuiFxVg10BlurFilter::Draw(CHuiFxEngine& aEngine, CHuiGc& /* aGc */, CHuiFxRenderbuffer& aTarget,
    87                                  CHuiFxRenderbuffer& aSource, const TRect& aTargetRect, const TRect& aSourceRect)
    87                                  CHuiFxRenderbuffer& aSource, const TRect& aTargetRect, const TRect& aSourceRect, TBool aHasSurface)
    88     {
    88     {
    89     aTarget.BindAsTexture(ERenderbufferUsageWriteOnly);
    89     aTarget.BindAsTexture(ERenderbufferUsageWriteOnly);
    90     aSource.BindAsTexture(ERenderbufferUsageReadOnly);
    90     aSource.BindAsTexture(ERenderbufferUsageReadOnly);
    91     VGImage srcImage  = (reinterpret_cast<CHuiFxVg10RenderbufferBase*>(&aSource))->AcquireSubImage(aSourceRect);
    91     VGImage srcImage  = (reinterpret_cast<CHuiFxVg10RenderbufferBase*>(&aSource))->AcquireSubImage(aSourceRect);
    92     VGImage destImage = (reinterpret_cast<CHuiFxVg10RenderbufferBase*>(&aTarget))->AcquireSubImage(aTargetRect);
    92     VGImage destImage = (reinterpret_cast<CHuiFxVg10RenderbufferBase*>(&aTarget))->AcquireSubImage(aTargetRect);
    94     // take opacity into account
    94     // take opacity into account
    95     const VGfloat opacity = clamp(iOpacity, 0.0f, 1.0f);
    95     const VGfloat opacity = clamp(iOpacity, 0.0f, 1.0f);
    96 
    96 
    97     if(opacity > EPSILON)
    97     if(opacity > EPSILON)
    98         {
    98         {
    99         DrawEffect(aEngine, destImage, srcImage, aSourceRect.Width(), aSourceRect.Height());
    99         DrawEffect(aEngine, destImage, srcImage, aSourceRect.Width(), aSourceRect.Height(), aHasSurface);
   100         }
   100         }
   101     else
   101     else
   102         {
   102         {
   103 //        VGint width = vgGetParameteri(srcImage, VG_IMAGE_WIDTH);
   103 //        VGint width = vgGetParameteri(srcImage, VG_IMAGE_WIDTH);
   104 //        VGint height = vgGetParameteri(srcImage, VG_IMAGE_HEIGHT);
   104 //        VGint height = vgGetParameteri(srcImage, VG_IMAGE_HEIGHT);
   114     aSource.UnbindAsTexture();
   114     aSource.UnbindAsTexture();
   115     
   115     
   116     return wasEnoughMemory();
   116     return wasEnoughMemory();
   117     }
   117     }
   118 
   118 
   119 void CHuiFxVg10BlurFilter::DrawEffect(CHuiFxEngine& aEngine, VGImage aTargetImage, VGImage aSourceImage, TInt aWidth, TInt aHeight)
   119 void CHuiFxVg10BlurFilter::DrawEffect(CHuiFxEngine& aEngine, VGImage aTargetImage, VGImage aSourceImage, TInt aWidth, TInt aHeight, TBool /*aHasSurface*/)
   120     {
   120     {
   121     const VGfloat blur_x = clamp(iBlurX, EPSILON, 128.0f);
   121     const VGfloat blur_x = clamp(iBlurX, EPSILON, 128.0f);
   122     const VGfloat blur_y = clamp(iBlurY, EPSILON, 128.0f);
   122     const VGfloat blur_y = clamp(iBlurY, EPSILON, 128.0f);
   123     const VGfloat opacity = clamp(iOpacity, 0.0f, 1.0f);
   123     const VGfloat opacity = clamp(iOpacity, 0.0f, 1.0f);
   124     
   124