added function to create blend tables

This commit is contained in:
Bradley Bell 2004-05-12 22:06:02 +00:00
parent a13e9cb4af
commit 230a4aefcc
3 changed files with 25 additions and 2 deletions

View file

@ -1,4 +1,4 @@
/* $Id: palette.c,v 1.10 2003-06-10 17:50:50 btb Exp $ */
/* $Id: palette.c,v 1.11 2004-05-12 22:06:02 btb Exp $ */
/*
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
@ -402,3 +402,22 @@ void gr_make_cthru_table(ubyte * table, ubyte r, ubyte g, ubyte b )
}
}
void gr_make_blend_table(ubyte *blend_table, ubyte r, ubyte g, ubyte b)
{
int i, j;
float alpha;
ubyte r1, g1, b1;
for (j = 0; j < GR_FADE_LEVELS; j++)
{
alpha = 1.0 - (float)j / ((float)GR_FADE_LEVELS - 1);
for (i = 0; i < 255; i++)
{
r1 = (ubyte)((1.0 - alpha) * (float)gr_palette[i * 3 + 0] + (alpha * (float)r));
g1 = (ubyte)((1.0 - alpha) * (float)gr_palette[i * 3 + 1] + (alpha * (float)g));
b1 = (ubyte)((1.0 - alpha) * (float)gr_palette[i * 3 + 2] + (alpha * (float)b));
blend_table[i + j * 256] = gr_find_closest_color(r1, g1, b1);
}
blend_table[i + j * 256] = 255; // leave white alone
}
}

View file

@ -1,5 +1,8 @@
2004-05-12 Bradley Bell <btb@icculus.org>
* 2d/palette.c, include/palette.h: added function to create blend
tables
* maths/rand.c, maths/tables.c, maths/vecmat.c: formatting
2004-05-11 Bradley Bell <btb@icculus.org>

View file

@ -1,4 +1,4 @@
/* $Id: palette.h,v 1.3 2002-10-11 03:37:58 btb Exp $ */
/* $Id: palette.h,v 1.4 2004-05-12 22:06:02 btb Exp $ */
/*
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
@ -67,6 +67,7 @@ extern int gr_palette_fade_out(ubyte *pal, int nsteps, int allow_keys );
extern int gr_palette_fade_in(ubyte *pal,int nsteps, int allow_keys );
extern void gr_palette_load( ubyte * pal );
extern void gr_make_cthru_table(ubyte * table, ubyte r, ubyte g, ubyte b );
extern void gr_make_blend_table(ubyte *blend_table, ubyte r, ubyte g, ubyte b);
extern int gr_find_closest_color_current( int r, int g, int b );
extern void gr_palette_read(ubyte * palette);
extern void init_computed_colors(void);