On October 4, 2003 03:43 am, Boudewijn Rempt wrote: > On Saturday 04 October 2003 00:33, Patrick Julien wrote: > > Not quite, the code in QPainter probably just forwards to the native GUI > > library being used (XDrawRectangle in X, Rectangle in Windows and so on). > > Even if you had a look at the XFree86 code, that code can assumes a > > linear framebuffer, you have no such thing in Krita, hence the microtile > > data structure. > > There are bitblt functions that look useful -- if I make a brush mask and > blit that on KisPainter, that should work, shouldn't it. Hmm, don't remember, I haven't worked on it since December, I believe it will work if and only the if the right raster op is implemented. I believe only a handful of them are implemented, but: 1) New raster operations are easy to add. 2) BitBlt is implemented yes > > > Yes and no, there is both RGB and RGBA. However, it is dreadfully slow > > since values are not pre-multiplied. > > > > I'm assuming a familiarity with design patterns here, but this is what I > > wanted to do: > > > > 1) Keep the color model in the paint device (KisImage, KisPaintDevice, > > KisLayer, etc) in the device itself (done). > > 2) Make a colorspace strategy > > This strategy would actually hold the entire colorspace in > > pre-multiplied form > > 3) The strategies are flyweights. > > 4) When creating a KisPainter, the KisPainter takes the color model id > > found in the paint device and gives it to the flyweight factory to get > > back a color space strategy. > > 5) The actual algorithms for the drawing are in KisPainter since they are > > the same, but pixels are composed using the strategy. > > > > This means we can support all color models. > > This means rendering is actually fast since all pixel results given a > > source, a destination, an alpha and a raster operation are know in > > advance. Actually, made a small mistake here, it's only for alpha values, not for all raster operations. Assuming an 8 bit color channel, it's already an array of USHRT_MAX values here, so yeah, only for pre-multiplied alpha, not all raster operations. > > > Krita is already considerably faster than Krayon was, memory consumption > > for the image representation is down 85%. Also, Krayon could only do 8 > > bit per channel, that restriction has also been lifted. Also, using what > > was there, I'm not sure I had to courage to implement undo/redo. > > Well, I was impressed to see the speed with which I could combine two > images in layers and play with transparency and so on. That was fun. > Anyway, I guess that I can decide whether I feel confident enough to start > adding code by Sunday. I'll probably have some more questions for you soon. All right, I'll be waiting. _______________________________________________ kimageshop mailing list kimageshop@mail.kde.org http://mail.kde.org/mailman/listinfo/kimageshop