diff --git a/src/servers/app/drawing/Painter/README b/src/servers/app/drawing/Painter/README index 22d493ab94..4faa4baf41 100644 --- a/src/servers/app/drawing/Painter/README +++ b/src/servers/app/drawing/Painter/README @@ -1,27 +1,23 @@ About: -Painter is a class implementing the BView drawing functions with the Anti-Grain Geometry 2D engine. It should be usable by the Haiku app_server as the complete drawing backend. It can be attached to a frame buffer and used just like a BView that is attached to a BBitmap. Full anti-aliased drawing is available as a compile time option (defines.h). I hope it will be possible to integrate this into the existing Haiku app_server framework without too much hassle. +Painter is a class implementing the BView drawing functions with the Anti-Grain Geometry 2D engine. It can be attached to a frame buffer and used just like a BView that is attached to a BBitmap and does full anti-aliased drawing. Status: -2) Only 32 bit frame buffers are support yet. +1) Only 32 bit frame buffers are support yet. -Most of the work in supporting other color spaces is only in the drawing_mode classes. It makes no sense to start work on these before I have even nailed the details once on the 32 bit case. +Most of the work in supporting other color spaces is only in the drawing_mode classes. Other colorspaces are currently handled by drawing into a 32 bit "back buffer" and doing the color space conversion when blitting it into the visible frame buffer. It may or may not be beneficial to add code working directly in other color spaces. Older computers would benefit. When improving or redesigning the accelerant API, it may make this obsolete though. -3) Only 32 bit Bitmaps are supported for drawing yet. +2) Only 32 bit Bitmaps are supported for drawing yet. -There is some work involved when trying to make this fast. The conversion should probably take place in the interpolator class that AGG uses for up/downscaling a bitmap. +Currently, there is a generic fallback bitmap drawing routine that handles all cases. Faster codepaths handle unscaled bitmaps and B_CMAP8 bitmaps are also supported by fast shortcuts. The AGG based codepath is too generic for what the app_server needs to implement, so that it will be beneficial to make a faster implementation as well. It may be easier to support other bitmap color spaces than by doing the conversion somewhere in the AGG pipeline. -4) Most of the BView behaviour for DrawString() is missing. - -Putting the current pen at the position of the virtual next char is now handled, but I have to figure out the escapment_delta stuff. Glyph spacing modes need to be supported. - -6) The framework is still developing. - -I'm still working on many ends of Painter and I might refactor things. The basic idea will likely stay for the most part, but is of course open for discussion by the rest of the team. I felt I wanted to get some results first, then see how it can all be improved. So, keep the comments comming. - -7) Article +3) Article I have written a Newsletter article, that explains the concepts of AGG, how Painter is therefor designed and how it can be improved with the knowledge of AGG inner workings. + + + + diff --git a/src/servers/app/drawing/Painter/TODO b/src/servers/app/drawing/Painter/TODO index 48cc178ee1..2745f354f2 100644 --- a/src/servers/app/drawing/Painter/TODO +++ b/src/servers/app/drawing/Painter/TODO @@ -6,15 +6,15 @@ Test: Implement: -* "escapment_delta" text rendering - (* handling of other BBitmap colorspaces) Improve: -* make special verions of DrawingModes for B_SOLID_* patterns +* make more special verions of DrawingModes for B_SOLID_* patterns -* get rid of virtual function use in DrawingMode framework +* fast versions of nearest neighbor upscaling / downscaling of BBitmaps + +* fast versions of bilinear scaling of BBitmaps