Hi,
FYI: The low-level drawing code for the new & improved graphics system
(does anybody happen to have a good name for it?) is now done; screenshots
are at http://freesci.cx/newgfx2.html (the old ones are still up for
comparison). There are two new problems, but none of them is nearly as bad
as the original artifact stuff, so I'll proceed without trying to wrestle
with the pic drawing code (we can still add features and remove minor
bugs later on, I'd better concentrate on the skeleton. It's bad
enough that I wasted so much time on the pic drawing code).
The last screenshot shows a new setup, with font, view, and cursor
resource stuff. They are pretty pixilated; a decent bi-linear filtering
algorithm might be a nice addition later on.
Anyway, everything is now translated into the native format used by the
display driver (providing that this format can be expressed as described
in gfx_system.h) and then cross-blit onto the back buffer, using a simple
custom function. The translation step extends to text as well; text is
rendered into a pixmap, translated into the native format, and can then be
displayed (eventually, graphics drivers with support for bitmaps will be
able to use the font bitmap infromation directly).
Regarding drivers:
Right now, I'm using a ggi driver, which is feature-complete (I haven't
tested pixmap grabbing yet). It uses a minimal amount of accellerated
functions, though, with only one capability flag being set; eventually,
testing with a high-capability driver (glx should provide everything,
except for multi-colored mouse pointers) will be neccessary.
The driver interface was changed again: Coordinates are now relative to
the resulution the driver is running, as are sizes, so scaling no longer
needs to be handled on the driver level. This removed the neccessity
for the rectangle drawing function.
The normal draw_line() function now has to take care of stippled lines
(which are only used horizontally and vertically, and are optional).
The sources will remain separate from FreeSCI until the graphical state
manager has been implemented; they are available on request, though.
I'd appreciate any help!
llap,
Christoph