KisIterator, quantum and pixels
Boudewijn Rempt
boud at valdyas.org
Mon Jul 5 14:38:45 CEST 2004
On Monday 05 July 2004 14:13, Casper Boemann wrote:
<...>
> Which is in fact similar to my proposal. But I use C technique, because a
> true class can't reserve a runtime dynamic number of bytes as part of the
> class structure. Inside the colorstrategy the pixeldata can be cast to a
> specific class, if it feels better.
Which is the reason for using templates, I guess, because then you can let the
compiler make the decision based on the pixel type.
> Yes simple, but it would however be too slow. The amount of data in an
> image requires efficient access,with small loops that remains in cache.
> Calling a function for every pixel is simply to much overhead. Sad but
> true. This is why we need iterators.
Mwah. I'm not convinced... (Don't take that too serious -- it's just that I
really, really hate premature optimization, especially if it means
complicating an interface. But I guess I'll just have to get rid of my Java
prejudices.)
>
> No I don't think so. There is no benefit from not using tiles, but the
> interface needs to be simpler. I'm working on that.
>
I'm waiting with bated breath -- although I still do thing that tiles give an
extra overhead we don't always need.
> > But as for the iterators: it would be useful to have a set of iterators
>
> that
>
> > provide access by:
> >
> > * channel
> > * pixel
> > * kernel
>
> channel and kernel: please explain
channel: an iterator that skips the channels the caller isn't interested in. A
kernel is a (often small) array of values used in convolution ops. An example
of using a kernel for edge enhancement is at
http://java.sun.com/j2se/1.3/docs/guide/2d/spec/j2d-image.fm8.html.
Oh, and what I forgot: if we have tiles, we might have an opportunity of
feeding the tiles to something that can parallel process them, as in vips
(see the libs file in Krita's root for link).
--
Boudewijn Rempt | http://www.valdyas.org/fading/index.cgi
More information about the kimageshop
mailing list