On Mon, 2004-10-18 at 17:22 +0200, Klaus Schmidinger wrote:
Just take a look at what's done in VDR/dvbosd.c.
cDvbOsd is derived from cOsd and implements what it takes
to get the bitmap(s) displayed on the screen. Your implemenation
of a derived cOsd class may do different things, but eventually
it will send the bitmap data to some display facility in the
Flush() function. There you can do your dithering stuff first.
If you need full control over text drawing, you can implement
the DrawText() function as well.
This is for creating a plugin that replaces the built in VDR osd?
I tried a simpler approach by just dithering in softdevice's Xv output
class just before the OSD is drawn using X calls. There's a check to
counter jagged edges for fonts as well, but it creates a shadow to the
right of solid areas as well.
That the right approach, WRT VDR, but on the softdevice front, you
shloud implement that in output-method independent class, in order to
share this code between the different methods that need it (FB, Xv,
maybe Vidix, and definitely DirectFB, even though DirectFB should do
transparent OSD - I can't make it work for now).