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