1 /*
2  * OpenBOR - http://www.LavaLit.com
3  * -----------------------------------------------------------------------
4  * All rights reserved, see LICENSE in OpenBOR root for details.
5  *
6  * Copyright (c) 2004 - 2011 OpenBOR Team
7  */
8 
9 #ifndef PALETTE_H
10 #define PALETTE_H
11 
12 #include "globals.h"
13 
14 #define		gammacorrect(v,g)	(g<=0?((v*(65025+((255-v)*g)))/65025):(255-(((255-v)*(65025+(v*-g)))/65025)))
15 #define		brightnesscorrect(v,b)	(b<0?((v*(255+b))/255):(b+((v*(255-b))/255)))
16 #define		gbcorrect(vx,gx,bx)	(gammacorrect(brightnesscorrect(vx,bx),gx))
17 // Set gamma/brightness corrected palette.
18 // Valid values range between -255 and 255, where 0 is normal.
19 void palette_set_corrected(unsigned char *pal, int gr, int gg, int gb, int br, int bg, int bb);
20 
21 // Find colour in palette
22 int palette_find(unsigned char *pal, int r, int g, int b);
23 
24 typedef unsigned char* (*palette_table_function)(unsigned char*);
25 typedef unsigned char* (*blend_table_function)(void);
26 
27 // Create lookup tables
28 unsigned char * palette_table_multiply(unsigned char *pal);
29 unsigned char * palette_table_screen(unsigned char *pal);
30 unsigned char * palette_table_dodge(unsigned char *pal);
31 unsigned char * palette_table_half(unsigned char *pal);
32 unsigned char * palette_table_overlay(unsigned char *pal);
33 unsigned char * palette_table_hardlight(unsigned char *pal);
34 
35 // these are in pixelformat.c, technologically they are not palette related
36 // but move them here since they share similar logic
37 unsigned char * create_multiply32_tbl();
38 unsigned char * create_screen32_tbl();
39 unsigned char * create_dodge32_tbl();
40 unsigned char * create_half32_tbl();
41 unsigned char * create_overlay32_tbl();
42 unsigned char * create_hardlight32_tbl();
43 
44 unsigned char * create_multiply16_tbl();
45 unsigned char * create_screen16_tbl();
46 unsigned char * create_dodge16_tbl();
47 unsigned char * create_half16_tbl();
48 unsigned char * create_overlay16_tbl();
49 unsigned char * create_hardlight16_tbl();
50 #endif
51 
52 
53