From 90f730ca714fb53f47ee16be46fcb06bd98d53ed Mon Sep 17 00:00:00 2001 From: Michael Roitzsch Date: Sun, 27 Jun 2004 11:58:47 +0000 Subject: include the new goom version 2k4-dev15 everybody: test, test, test CVS patchset: 6756 CVS date: 2004/06/27 11:58:47 --- src/post/goom/gfontlib.c | 71 +++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 34 deletions(-) (limited to 'src/post/goom/gfontlib.c') diff --git a/src/post/goom/gfontlib.c b/src/post/goom/gfontlib.c index b2ea0dca2..960ca43b9 100755 --- a/src/post/goom/gfontlib.c +++ b/src/post/goom/gfontlib.c @@ -1,23 +1,26 @@ #include "goom_config.h" -#include "gfontrle.c" +#include "gfontrle.h" +#include "gfontlib.h" #include #include -static int ***font_chars; +static Pixel ***font_chars; static int *font_width; static int *font_height; -static int ***small_font_chars; +static Pixel ***small_font_chars; static int *small_font_width; static int *small_font_height; -void gfont_load (void) { +void gfont_load () { unsigned char *gfont; unsigned int i = 0, j = 0; unsigned int nba = 0; unsigned int current = 32; int *font_pos; - // decompress le rle + /* decompress le rle */ + + gfont = malloc (the_font.width*the_font.height*the_font.bytes_per_pixel); while (i>2)<<(ROUGE*8))| (((g1 + g2 + g3 + g4)>>2)<<(VERT*8))| (((b1 + b2 + b3 + b4)>>2)<<(BLEU*8))| @@ -105,7 +108,7 @@ void gfont_load (void) { } } - // definir les lettres restantes + /* definir les lettres restantes */ for (i=0;i<256;i++) { if (font_chars[i]==0) { @@ -125,26 +128,26 @@ void gfont_load (void) { small_font_chars [32] = 0; } -void goom_draw_text (guint32 * buf,int resolx,int resoly, +void goom_draw_text (Pixel * buf,int resolx,int resoly, int x, int y, const char *str, float charspace, int center) { float fx = (float) x; int fin = 0; - int ***cur_font_chars; + Pixel ***cur_font_chars; int *cur_font_width; int *cur_font_height; if (resolx>320) { - //printf("use big\n"); + /* printf("use big\n"); */ cur_font_chars = font_chars; cur_font_width = font_width; cur_font_height = font_height; } else { - //printf ("use small\n"); + /* printf ("use small\n"); */ cur_font_chars = small_font_chars; cur_font_width = small_font_width; cur_font_height = small_font_height; @@ -198,26 +201,26 @@ void goom_draw_text (guint32 * buf,int resolx,int resoly, if (ymax >= (int) resoly - 1) ymax = resoly - 1; - for (; yy < ymax; yy++) - for (xx = xmin; xx < xmax; xx++) - { - unsigned int color = cur_font_chars[c][yy - ymin][xx - x]; - unsigned int transparency = color & 0xff000000; - if (transparency) - { - if (transparency==0xff000000) buf[yy * resolx + xx] = color; - else - { - unsigned int back = buf[yy * resolx + xx]; - unsigned int a1 = (color & 0xff000000) >> 24; - unsigned int a2 = 255 - a1; - buf[yy * resolx + xx] = - (((((color & 0x00ff0000) * a1) + ((back & 0x00ff0000) * a2)) & 0xff000000) >> 8) | - (((((color & 0x0000ff00) * a1) + ((back & 0x0000ff00) * a2)) & 0x00ff0000) >> 8) | - ((((color & 0x000000ff) * a1) + ((back & 0x000000ff) * a2)) >> 8); - } - } - } + for (; yy < ymax; yy++) + for (xx = xmin; xx < xmax; xx++) + { + Pixel color = cur_font_chars[c][yy - ymin][xx - x]; + Pixel transparency; + transparency.val = color.val & A_CHANNEL; + if (transparency.val) + { + if (transparency.val==A_CHANNEL) buf[yy * resolx + xx] = color; + else + { + Pixel back = buf[yy * resolx + xx]; + unsigned int a1 = color.channels.a; + unsigned int a2 = 255 - a1; + buf[yy * resolx + xx].channels.r = (unsigned char)((((unsigned int)color.channels.r * a1) + ((unsigned int)back.channels.r * a2)) >> 8); + buf[yy * resolx + xx].channels.g = (unsigned char)((((unsigned int)color.channels.g * a1) + ((unsigned int)back.channels.g * a2)) >> 8); + buf[yy * resolx + xx].channels.b = (unsigned char)((((unsigned int)color.channels.b * a1) + ((unsigned int)back.channels.b * a2)) >> 8); + } + } + } } fx += cur_font_width[c] + charspace; } -- cgit v1.2.3