From 6bf0138a4ea6c7299b3b1216fd84f3be0c35ee78 Mon Sep 17 00:00:00 2001 From: Bradley Bell Date: Thu, 15 Aug 2002 05:42:33 +0000 Subject: [PATCH] set transparency and swap 0/255 correctly for mac data files --- 2d/font.c | 19 ++++++++++++------- 2d/rle.c | 38 +++++++++++++++++++++++++++++++++++--- include/gr.h | 12 ++++-------- include/rle.h | 11 ++++++++--- 4 files changed, 59 insertions(+), 21 deletions(-) diff --git a/2d/font.c b/2d/font.c index 16758ff8..79755c67 100644 --- a/2d/font.c +++ b/2d/font.c @@ -1,4 +1,4 @@ -/* $Id: font.c,v 1.17 2002-08-06 09:28:00 btb Exp $ */ +/* $Id: font.c,v 1.18 2002-08-15 05:42:33 btb Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -1725,7 +1725,11 @@ grs_font * gr_init_font( char * fontname ) build_colormap_good( (ubyte *)&palette, colormap, freq ); - colormap[TRANSPARENCY_COLOR] = TRANSPARENCY_COLOR; // chaged from colormap[255] = 255 to this for macintosh +#ifdef MACINTOSH + colormap[TRANSPARENCY_COLOR] = TRANSPARENCY_COLOR; // changed from colormap[255] = 255 to this for macintosh +#else + colormap[255] = 255; +#endif decode_data_asm(font->ft_data, ptr - font->ft_data, colormap, freq ); @@ -1733,9 +1737,6 @@ grs_font * gr_init_font( char * fontname ) cfclose(fontfile); -// memcpy(newfont,font,(ubyte*)&newfont->oldfont-(ubyte*)newfont);//fill in newfont data from oldfont struct -// mprintf((0,"%i %i %i\n",sizeof(grs_font),sizeof(old_grs_font),(ubyte*)&newfont->oldfont-(ubyte*)newfont)); - //set curcanv vars FONT = font; @@ -1855,11 +1856,15 @@ void gr_remap_font( grs_font *font, char * fontname, char *font_data ) build_colormap_good( (ubyte *)&palette, colormap, freq ); - colormap[TRANSPARENCY_COLOR] = TRANSPARENCY_COLOR; // chaged from colormap[255] = 255 to this for macintosh +#ifdef MACINTOSH + colormap[TRANSPARENCY_COLOR] = TRANSPARENCY_COLOR; // changed from colormap[255] = 255 to this for macintosh +#else + colormap[255] = 255; +#endif decode_data_asm(font->ft_data, ptr - font->ft_data, colormap, freq ); - } + } cfclose(fontfile); diff --git a/2d/rle.c b/2d/rle.c index ba054887..a2421d35 100644 --- a/2d/rle.c +++ b/2d/rle.c @@ -1,4 +1,4 @@ -/* $Id: rle.c,v 1.4 2002-07-17 21:55:19 bradleyb Exp $ */ +/* $Id: rle.c,v 1.5 2002-08-15 05:42:33 btb Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -21,7 +21,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #endif #ifdef RCS -static char rcsid[] = "$Id: rle.c,v 1.4 2002-07-17 21:55:19 bradleyb Exp $"; +static char rcsid[] = "$Id: rle.c,v 1.5 2002-08-15 05:42:33 btb Exp $"; #endif #include @@ -664,5 +664,37 @@ void gr_rle_expand_scanline_generic( grs_bitmap * dest, int dx, int dy, ubyte *s gr_bm_pixel( dest, dx++, dy, color ); i += count; } - } + } +} + +void rle_swap_0_255(grs_bitmap *bmp) +{ + int i, j; + + if (!bmp->bm_data) + return; + + if (bmp->bm_flags & BM_FLAG_RLE_BIG) + j = 4 + 2 * bmp->bm_h; + else + j = 4 + bmp->bm_h; + + for (i = 0; i < bmp->bm_h; i++) { + if ((bmp->bm_data[j] & RLE_CODE) != RLE_CODE) { + if (bmp->bm_data[j] == 0) + bmp->bm_data[j] = 255; + else if (bmp->bm_data[j] == 255) + bmp->bm_data[j] = 0; + j++; + } else { + if ((bmp->bm_data[j] & NOT_RLE_CODE) == 0) + continue; + j++; + if (bmp->bm_data[j] == 0) + bmp->bm_data[j] = 255; + else if (bmp->bm_data[j] == 255) + bmp->bm_data[j] = 0; + j++; + } + } } diff --git a/include/gr.h b/include/gr.h index bbe7c555..042086e7 100644 --- a/include/gr.h +++ b/include/gr.h @@ -1,4 +1,4 @@ -/* $Id: gr.h,v 1.11 2002-08-09 00:48:57 btb Exp $ */ +/* $Id: gr.h,v 1.12 2002-08-15 05:42:33 btb Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -18,13 +18,9 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #include "pstypes.h" #include "fix.h" -#ifdef MACINTOSH -#define SWAP_0_255 1 // swap black and white -#define TRANSPARENCY_COLOR 0 // palette entry of transparency color -- 0 on the mac -#else -#define SWAP_0_255 0 // no swapping for PC people -#define TRANSPARENCY_COLOR 255 // palette entry of transparency color -- 255 on the PC -#endif +extern int Gr_transparency_color; + +#define TRANSPARENCY_COLOR Gr_transparency_color // palette entry of transparency color -- 255 on pc, 0 on the mac #define GR_FADE_LEVELS 34 #define GR_ACTUAL_FADE_LEVELS 32 diff --git a/include/rle.h b/include/rle.h index 3bc9212a..2c4bb03a 100644 --- a/include/rle.h +++ b/include/rle.h @@ -12,13 +12,16 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ /* * $Source: /cvs/cvsroot/d2x/include/rle.h,v $ - * $Revision: 1.1.1.1 $ - * $Author: bradleyb $ - * $Date: 2001-01-19 03:30:16 $ + * $Revision: 1.2 $ + * $Author: btb $ + * $Date: 2002-08-15 05:42:33 $ * * Protypes for rle functions. * * $Log: not supported by cvs2svn $ + * Revision 1.1.1.1 2001/01/19 03:30:16 bradleyb + * Import of d2x-0.0.8 + * * Revision 1.1.1.1 1999/06/14 22:02:19 donut * Import of d1x 1.37 source. * @@ -60,5 +63,7 @@ grs_bitmap * rle_expand_texture( grs_bitmap * bmp ); void rle_cache_flush(); +void rle_swap_0_255(grs_bitmap *bmp); + #endif -- 2.39.2