| [AD] Patch for color font output |
[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]
Hi, As Andrew Durdin <andy@xxxxxxxxxx> rightly pointed out, color font output on a colored background is incorrect. I enclose a patch:
--- c:/home/cvs/allegro/src/font.c Mon Dec 4 23:47:42 2000
+++ ./font.c Thu Dec 28 04:09:46 2000
@@ -577,15 +577,13 @@
acquire_bitmap(bmp);
+ if(fg < 0 && bg >= 0) rectfill(bmp, x, y, x + text_length(f, text) - 1, y + text_height(f) - 1, bg);
+
while( (ch = ugetxc(&p)) ) {
BITMAP* g = color_findglyph(f, ch);
if(g) {
if(fg < 0) {
- if(bg < 0) {
- bmp->vtable->draw_256_sprite(bmp, g, x, y);
- } else {
- blit(g, bmp, 0, 0, x, y, g->w, g->h);
- }
+ bmp->vtable->draw_256_sprite(bmp, g, x, y);
} else {
bmp->vtable->draw_character(bmp, g, x, y, fg);
}
And also a test program, just to ensure that the change is correct and all is as it should be:
#include <allegro.h>
#include <stdio.h>
#define ALLEGRO_PATH "d:/allegro"
int black, white, trans, color;
typedef struct TEST {
const int* text_color;
const int* text_mode;
const char* desc;
}TEST;
const TEST tests[] = {
{ &white, &black, "White text on a black background" },
{ &color, &black, "Color text on a black background" },
{ &black, &trans, "Black text on a transparent background" },
{ &color, &trans, "Color text on a transparent background" },
{ 0, 0, 0 }
};
int main(void)
{
DATAFILE* dat = 0, * obj = 0;
const TEST* test = tests;
int y = 0;
FONT* f = 0;
if(allegro_init()) return -1;
if(install_timer()) return -1;
if(install_keyboard()) return -1;
set_color_depth(8);
if(set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0)) return -1;
set_palette(desktop_palette);
dat = load_datafile(ALLEGRO_PATH "/setup/setup.dat");
if(!dat) return -1;
obj = find_datafile_object(dat, "setup_font");
if(!obj) {
unload_datafile(dat);
return -1;
}
f = obj->dat;
black = makecol(0, 0, 0);
white = makecol(255, 255, 255);
trans = -1;
color = -1;
clear_to_color(screen, white);
while(test->text_color && test->text_mode && test->desc) {
text_mode(*(test->text_mode));
textout(screen, f, test->desc, 0, y, *(test->text_color));
y += text_height(f) * 5 / 4;
test++;
}
clear_keybuf();
readkey();
unload_datafile(dat);
return 0;
}
Bye for now,
--
Laurence Withers, lwithers@xxxxxxxxxx
http://www.lwithers.demon.co.uk/
Attachment:
signature.asc
Description: PGP signature
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |