Consecutive Convolutions

Ed . schumifer at hotmail.com
Tue Dec 22 15:45:24 CET 2009


Adding a transaction for the src had no positive effect. Moreover, adding it causes the filter to work incorrectly as a filter layer (only 2nd convolution is computed).

Date: Tue, 22 Dec 2009 17:34:05 +0300
Subject: Re: Consecutive Convolutions
From: dimula73 at gmail.com
To: kimageshop at kde.org

Hm.. stack is not needed actually.

Add for the source:
KisTransaction *t0 = new KisTransaction("", src);

On Tue, Dec 22, 2009 at 5:29 PM, Ed . <schumifer at hotmail.com> wrote:







Do you mean, like so?

        QUndoStack stack;

        KisTransaction *t1 = new KisTransaction("", interm);
        KisConvolutionPainter horizPainter(interm, dstInfo.selection());

        horizPainter.applyMatrix(kernelHoriz, src, srcTopLeft, srcTopLeft, size, BORDER_REPEAT);
        stack.push(t1);

        KisTransaction *t2 = new KisTransaction("", dst);

        KisConvolutionPainter verticalPainter(dst, dstInfo.selection());
        verticalPainter.applyMatrix(kernelVertical, interm, srcTopLeft, dstTopLeft, size, BORDER_REPEAT);
        stack.push(t2);


This had no effect whatsoever.

Date: Tue, 22 Dec 2009 17:05:21 +0300
Subject: Re: Consecutive Convolutions
From: dimula73 at gmail.com
To: kimageshop at kde.org


Could you try to create transactions for both devices? Directly or using KisPainter's method. Filters rely on oldData feature but this do not work without a transaction created.


On Tue, Dec 22, 2009 at 4:57 PM, Ed . <schumifer at hotmail.com> wrote:






Hi,

I am performing two consecutive convolution operations, one after each other in a filter (the Gaussian Blur filter in the review board). Of course, I need a temporary buffer to do this. Below is what I'm doing.



  KisPaintDeviceSP interm = new KisPaintDevice(*src);

  KisConvolutionPainter horizPainter(interm, dstInfo.selection());
  horizPainter.applyMatrix(kernelHoriz, src, srcTopLeft, srcTopLeft, size, BORDER_REPEAT);



  KisConvolutionPainter verticalPainter(dst, dstInfo.selection());
  verticalPainter.applyMatrix(kernelVertical, interm, srcTopLeft, dstTopLeft, size, BORDER_REPEAT);

The output I'm getting when I apply the rasterizing filter, is the result of the second convolution only. However, if I apply the filter as a filter layer, I get the combined result of both convolutions.



As boud suggested on IRC, I switched Krita to the old tile engine, and the results are correct in both cases. Therefore, the indication is that this is a problem with the new tile engine. Could anyone investigate further?


 		 	   		  
Windows Live:  Friends get your Flickr, Yelp, and Digg updates when they e-mail you.



_______________________________________________

kimageshop mailing list

kimageshop at kde.org

https://mail.kde.org/mailman/listinfo/kimageshop




-- 
Dmitry Kazakov
 		 	   		  
Windows Live: Make it easier for your friends to see  what you’re up to on Facebook.


_______________________________________________

kimageshop mailing list

kimageshop at kde.org

https://mail.kde.org/mailman/listinfo/kimageshop




-- 
Dmitry Kazakov
 		 	   		  
_________________________________________________________________
Windows Live: Friends get your Flickr, Yelp, and Digg updates when they e-mail you.
http://www.microsoft.com/middleeast/windows/windowslive/see-it-in-action/social-network-basics.aspx?ocid=PID23461::T:WLMTAGL:ON:WL:en-xm:SI_SB_3:092010
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/kimageshop/attachments/20091222/475a8c97/attachment.htm 


More information about the kimageshop mailing list