[calligra] libs/pigment/compositeops: Fix Erase composite op to handle the selections properly

Boudewijn Rempt boud at valdyas.org
Thu Jul 3 08:03:30 UTC 2014


Does this by any chance also fix the bug with painting with the shape brush on a mask? https://bugs.kde.org/show_bug.cgi?id=318882

On Thursday 03 July 2014 Jul 07:52:43 Dmitry Kazakov wrote:
> Git commit db5b27198e29370da8df4b8674cea8c107fa1396 by Dmitry Kazakov.
> Committed on 02/07/2014 at 06:42.
> Pushed by dkazakov into branch 'master'.
> 
> Fix Erase composite op to handle the selections properly
> 
> Using blend() for applying a mask is surely a bad idea. Don't know why it
> was used, but it was dated to 2007. Thanks Timothee for pointing out this
> bug.
> 
> <Animtim> dmitryK: hey yesterday I noticed a nasty bug, and just took time to understand what trigger it : if I have a "transparent" selection, and try to paint in erase mode inside, it makes bad tip tiles artifacts
> <Animtim> (to reproduce: create paint something at low opacity, do select opaque, and try to erase..)
> <Animtim> erasing with any kind of brush engine makes the bug
> 
> CCMAIL:kimageshop at kde.org
> 
> M  +2    -3    libs/pigment/compositeops/KoCompositeOpErase.h
> 
> http://commits.kde.org/calligra/db5b27198e29370da8df4b8674cea8c107fa1396
> 
> diff --git a/libs/pigment/compositeops/KoCompositeOpErase.h b/libs/pigment/compositeops/KoCompositeOpErase.h
> index 3391ebb..d6968c6 100644
> --- a/libs/pigment/compositeops/KoCompositeOpErase.h
> +++ b/libs/pigment/compositeops/KoCompositeOpErase.h
> @@ -71,9 +71,8 @@ public:
>                      quint8 U8_mask = *mask;
>  
>                      if (U8_mask != OPACITY_TRANSPARENT_U8) {
> -                        srcAlpha = KoColorSpaceMaths< channels_type, channels_type >::blend(srcAlpha,
> -                                   NATIVE_OPACITY_OPAQUE,
> -                                   KoColorSpaceMaths<quint8, channels_type>::scaleToA(U8_mask));
> +                        srcAlpha = KoColorSpaceMaths<channels_type>::
> +                            multiply(srcAlpha, KoColorSpaceMaths<quint8, channels_type>::scaleToA(U8_mask));
>                      } else {
>                          srcAlpha = 0;
>                      }
> 

-- 
Boudewijn Rempt
http://www.valdyas.org, http://www.krita.org, http://www.boudewijnrempt.nl



More information about the kimageshop mailing list