Glenn Wurster gwurster@scs.carleton.ca writes:
Description:
- When we are working with a palette, we need to disable antialiasing.
Antialiasing results in a lot of extra colour values which are not mapped in the palette, causing bad display artifacts.
Changelog:
- Disable antialiasing when working with the palette
You shouldn't change the global antialias flag, this is ugly and it will most likely break the font caching. You have to add checks for a palette directly at the places that handle the anti-aliasing (and your palette check is wrong too, you shouldn't peek into the internals of the DC bitmap).
You shouldn't change the global antialias flag, this is ugly and it will most likely break the font caching. You have to add checks for a palette directly at the places that handle the anti-aliasing (and your palette check is wrong too, you shouldn't peek into the internals of the DC bitmap).
Ok, I've removed the setting of antialias. A revised patch will be forthcoming when we settle on the use of the DIB (unless you want it sooner).
I'm not sure we can get around poking in the DIB. The problem is that we are working with a bitmap which is at a different colour depth in X and Windows. X is operating with a 24(or whatever) bit bitmap, while the windows equivilent DIB is running at 8 bit. Lower down, we render in the full 24 bit happyness, but when it gets converted back to the 8 bit palette for windows, we loose all of the pixels which were antialiased because they can not be matched against known palette values. That's why we need to check the depth of the DIB at this level as opposed to lower down where we only ever get to see what X thinks the depth is.
Glenn & Doug.