Re: how to do fast drawing in plugin, pdb paintbrush api is slow

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Oct 6, 2010 at 2:39 PM, Alexia Death <alexiadeath@xxxxxxxxx> wrote:
> On Wed, Oct 6, 2010 at 8:22 AM, éæ <yi.codeplayer@xxxxxxxxx> wrote:
>> I'm trying to write a plugin to apply effects like
>> this(http://mrdoob.com/projects/harmony/) to any path.
>> I've done the coding, but it runs too slow, it speed several minutes
>> to draw 7000 lines on my laptop.
>> Currently i use following methods to draw lines:
>>
>> Â Âpdb.gimp_context_set_opacity(alpha)
>> Â Âpdb.gimp_paintbrush_default(drawable, 4, [x1,y1,x2,y2])
>>
>> I guess the overhead of pdb api is too heavy. Is there any alternate
>> way to achieve my purpose?
>> I can't find a proper one in pdb, maybe i should use cairo api to draw
>> a back buffer, then send it to gimp, but i have no idea how to do
>> that.
>>
>
> Several minutes for 7000 strokes to me seems pretty much on par or
> even above with paint core normal performance. You can try drawing on
> a drawable/image that isn't visible, if you aren't already, but other
> than that... Painting is rather expensive operation and is generally
> optimized to keep up with human speeds, that usually at best do 4 or 5
> strokes per second and I have to admit, with large brushes even there
> it sometimes isn't good enough.
>

Make the layer invisible don't make it better, using pycairo does.

With pycairo, drawing random lines with random alpha value on gtk surface, 100000 strokes only take 21 seconds.

for i in range(100000):
ÂÂ cr = self.window.cairo_create()
ÂÂ cr.set_source_rgba(0,0,0,random.random())
ÂÂ cr.move_to(random.randint(0,200), random.randint(0,200))
ÂÂ cr.line_to(random.randint(0,200), random.randint(0,200))
 Âcr.stroke()

Now i use pycairo to draw to a memory buffer, then copy to gimp layer, that's fast enough, the code still needs to be adjusted though.

Thank you very much.

--
http://www.yi-programmer.com/blog/

_______________________________________________
Gimp-developer mailing list
Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer

[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux