📄 color.inc
字号:
{* ______ ___ ___
* /\ _ \ /\_ \ /\_ \
* \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___
* \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\
* \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \
* \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
* \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
* /\____/
* \_/__/
*
* Color manipulation routines.
*
* By Shawn Hargreaves.
*
* See readme.txt for copyright information.
*}
{$IFDEF ALLEGRO_INTERFACE}
var
black_palette : P_PALETTE;
desktop_palette : P_PALETTE;
default_palette : P_PALETTE;
type
P_RGB_MAP = ^RGB_MAP;
RGB_MAP = record
data : array[0..31, 0..31, 0..31] of uint8;
end;
P_COLOR_MAP = ^COLOR_MAP;
COLOR_MAP = record
data : array[0..PAL_SIZE - 1, 0..PAL_SIZE - 1] of uint8;
end;
var
the_rgb_map : ^P_RGB_MAP;
the_color_map : ^P_COLOR_MAP;
_current_palette : P_PALETTE;
_rgb_r_shift_15 : p_sint32;
_rgb_g_shift_15 : p_sint32;
_rgb_b_shift_15 : p_sint32;
_rgb_r_shift_16 : p_sint32;
_rgb_g_shift_16 : p_sint32;
_rgb_b_shift_16 : p_sint32;
_rgb_r_shift_24 : p_sint32;
_rgb_g_shift_24 : p_sint32;
_rgb_b_shift_24 : p_sint32;
_rgb_r_shift_32 : p_sint32;
_rgb_g_shift_32 : p_sint32;
_rgb_b_shift_32 : p_sint32;
_rgb_a_shift_32 : p_sint32;
_rgb_scale_5 : p_sint32s;
_rgb_scale_6 : p_sint32s;
const
MASK_COLOR_8 = 0;
MASK_COLOR_15 = $7C1F;
MASK_COLOR_16 = $F81F;
MASK_COLOR_24 = $FF00FF;
MASK_COLOR_32 = $FF00FF;
type
table_ptr = procedure(pos: sint32); cdecl;
blend_ptr = procedure(const pal: PALETTE; x, y: sint32; rgb: P_RGB); cdecl;
blender_func = function(x, y, n: uint32): uint32; cdecl;
var
palette_color: ^p_sint32;
set_color: procedure(idx: sint32; const p: P_RGB); cdecl;
set_palette: procedure(const p: PALETTE); cdecl;
set_palette_range: procedure(const p: PALETTE; from, tos, retracesync: sint32); cdecl;
get_color: procedure(idx: sint32; var p: RGB); cdecl;
get_palette: procedure(p: PALETTE); cdecl;
get_palette_range: procedure(p: PALETTE; from, tos: sint32); cdecl;
fade_interpolate: procedure(const source, dest: PALETTE; output: PALETTE; pos, from, tos: sint32); cdecl;
fade_from_range: procedure(const source, dest: PALETTE; speed, from, tos: sint32); cdecl;
fade_in_range: procedure(const p: PALETTE; speed, from, tos: sint32); cdecl;
fade_out_range: procedure(speed, from, tos: sint32); cdecl;
fade_from: procedure(const source, dest: PALETTE; speed: sint32); cdecl;
fade_in: procedure(const p: PALETTE; speed: sint32); cdecl;
fade_out: procedure(speed: sint32); cdecl;
select_palette: procedure(const p: PALETTE); cdecl;
unselect_palette: procedure; cdecl;
generate_332_palette: procedure(pal: PALETTE); cdecl;
generate_optimized_palette: function(image: P_BITMAP; pal: PALETTE; const rsvdcols: array {[256]} of sint8): sint32; cdecl;
create_rgb_table: procedure(table: P_RGB_MAP; const pal: PALETTE; callback: table_ptr); cdecl;
create_light_table: procedure(table: P_COLOR_MAP; const pal: PALETTE; r, g, b: sint32; callback: table_ptr); cdecl;
create_trans_table: procedure(table: P_COLOR_MAP; const pal: PALETTE; r, g, b: sint32; callback: table_ptr); cdecl;
create_color_table: procedure(table: P_COLOR_MAP; const pal: PALETTE; blend: blend_ptr; callback: table_ptr); cdecl;
create_blender_table: procedure(table: P_COLOR_MAP; const pal: PALETTE; callback: table_ptr); cdecl;
set_blender_mode: procedure(b15, b16, b24: blender_func; r, g, b, a: sint32); cdecl;
set_blender_mode_ex: procedure(b15, b16, b24, b32, b15x, b16x, b24x, b32x: blender_func; r, g, b, a: sint32); cdecl;
set_alpha_blender: procedure; cdecl;
set_write_alpha_blender: procedure; cdecl;
set_trans_blender: procedure(r, g, b, a: sint32); cdecl;
set_add_blender: procedure(r, g, b, a: sint32); cdecl;
set_burn_blender: procedure(r, g, b, a: sint32); cdecl;
set_color_blender: procedure(r, g, b, a: sint32); cdecl;
set_difference_blender: procedure(r, g, b, a: sint32); cdecl;
set_dissolve_blender: procedure(r, g, b, a: sint32); cdecl;
set_dodge_blender: procedure(r, g, b, a: sint32); cdecl;
set_hue_blender: procedure(r, g, b, a: sint32); cdecl;
set_invert_blender: procedure(r, g, b, a: sint32); cdecl;
set_luminance_blender: procedure(r, g, b, a: sint32); cdecl;
set_multiply_blender: procedure(r, g, b, a: sint32); cdecl;
set_saturation_blender: procedure(r, g, b, a: sint32); cdecl;
set_screen_blender: procedure(r, g, b, a: sint32); cdecl;
hsv_to_rgb: procedure(h, s, v: single; var r, g, b: sint32); cdecl;
rgb_to_hsv: procedure(r, g, b: sint32; var h, s, v: single); cdecl;
bestfit_color: function(const pal: PALETTE; r, g, b: sint32): sint32; cdecl;
makecol: function(r, g, b: sint32): sint32; cdecl;
makecol8: function(r, g, b: sint32): sint32; cdecl;
makecol_depth: function(color_depth, r, g, b: sint32): sint32; cdecl;
makeacol: function(r, g, b, a: sint32): sint32; cdecl;
makeacol_depth: function(color_depth, r, g, b, a: sint32): sint32; cdecl;
makecol15_dither: function(r, g, b, x, y: sint32): sint32; cdecl;
makecol16_dither: function(r, g, b, x, y: sint32): sint32; cdecl;
getr: function(c: sint32): sint32; cdecl;
getg: function(c: sint32): sint32; cdecl;
getb: function(c: sint32): sint32; cdecl;
geta: function(c: sint32): sint32; cdecl;
getr_depth: function(color_depth, c: sint32): sint32; cdecl;
getg_depth: function(color_depth, c: sint32): sint32; cdecl;
getb_depth: function(color_depth, c: sint32): sint32; cdecl;
geta_depth: function(color_depth, c: sint32): sint32; cdecl;
{$ENDIF ALLEGRO_INTERFACE}
{$IFDEF ALLEGRO_IMPLEMENTATION}
{$ENDIF ALLEGRO_IMPLEMENTATION}
{$IFDEF ALLEGRO_LOADVARIABLE}
black_palette := LoadDLL('black_palette');
desktop_palette := LoadDLL('desktop_palette');
default_palette := LoadDLL('default_palette');
the_rgb_map := LoadDLL('rgb_map');
the_color_map := LoadDLL('color_map');
_current_palette := LoadDLL('_current_palette');
_rgb_r_shift_15 := LoadDLL('_rgb_r_shift_15');
_rgb_g_shift_15 := LoadDLL('_rgb_g_shift_15');
_rgb_b_shift_15 := LoadDLL('_rgb_b_shift_15');
_rgb_r_shift_16 := LoadDLL('_rgb_r_shift_16');
_rgb_g_shift_16 := LoadDLL('_rgb_g_shift_16');
_rgb_b_shift_16 := LoadDLL('_rgb_b_shift_16');
_rgb_r_shift_24 := LoadDLL('_rgb_r_shift_24');
_rgb_g_shift_24 := LoadDLL('_rgb_g_shift_24');
_rgb_b_shift_24 := LoadDLL('_rgb_b_shift_24');
_rgb_r_shift_32 := LoadDLL('_rgb_r_shift_32');
_rgb_g_shift_32 := LoadDLL('_rgb_g_shift_32');
_rgb_b_shift_32 := LoadDLL('_rgb_b_shift_32');
_rgb_a_shift_32 := LoadDLL('_rgb_a_shift_32');
_rgb_scale_5 := LoadDLL('_rgb_scale_5');
_rgb_scale_6 := LoadDLL('_rgb_scale_6');
palette_color := LoadDLL('palette_color');
set_color := LoadDLL('set_color');
set_palette := LoadDLL('set_palette');
set_palette_range := LoadDLL('set_palette_range');
get_color := LoadDLL('get_color');
get_palette := LoadDLL('get_palette');
get_palette_range := LoadDLL('get_palette_range');
fade_interpolate := LoadDLL('fade_interpolate');
fade_from_range := LoadDLL('fade_from_range');
fade_in_range := LoadDLL('fade_in_range');
fade_out_range := LoadDLL('fade_out_range');
fade_from := LoadDLL('fade_from');
fade_in := LoadDLL('fade_in');
fade_out := LoadDLL('fade_out');
select_palette := LoadDLL('select_palette');
unselect_palette := LoadDLL('unselect_palette');
generate_332_palette := LoadDLL('generate_332_palette');
generate_optimized_palette := LoadDLL('generate_optimized_palette');
create_rgb_table := LoadDLL('create_rgb_table');
create_light_table := LoadDLL('create_light_table');
create_trans_table := LoadDLL('create_trans_table');
create_color_table := LoadDLL('create_color_table');
create_blender_table := LoadDLL('create_blender_table');
set_blender_mode := LoadDLL('set_blender_mode');
set_blender_mode_ex := LoadDLL('set_blender_mode_ex');
set_alpha_blender := LoadDLL('set_alpha_blender');
set_write_alpha_blender := LoadDLL('set_write_alpha_blender');
set_trans_blender := LoadDLL('set_trans_blender');
set_add_blender := LoadDLL('set_add_blender');
set_burn_blender := LoadDLL('set_burn_blender');
set_color_blender := LoadDLL('set_color_blender');
set_difference_blender := LoadDLL('set_difference_blender');
set_dissolve_blender := LoadDLL('set_dissolve_blender');
set_dodge_blender := LoadDLL('set_dodge_blender');
set_hue_blender := LoadDLL('set_hue_blender');
set_invert_blender := LoadDLL('set_invert_blender');
set_luminance_blender := LoadDLL('set_luminance_blender');
set_multiply_blender := LoadDLL('set_multiply_blender');
set_saturation_blender := LoadDLL('set_saturation_blender');
set_screen_blender := LoadDLL('set_screen_blender');
hsv_to_rgb := LoadDLL('hsv_to_rgb');
rgb_to_hsv := LoadDLL('rgb_to_hsv');
bestfit_color := LoadDLL('bestfit_color');
makecol := LoadDLL('makecol');
makecol8 := LoadDLL('makecol8');
makecol_depth := LoadDLL('makecol_depth');
makeacol := LoadDLL('makeacol');
makeacol_depth := LoadDLL('makeacol_depth');
makecol15_dither := LoadDLL('makecol15_dither');
makecol16_dither := LoadDLL('makecol16_dither');
getr := LoadDLL('getr');
getg := LoadDLL('getg');
getb := LoadDLL('getb');
geta := LoadDLL('geta');
getr_depth := LoadDLL('getr_depth');
getg_depth := LoadDLL('getg_depth');
getb_depth := LoadDLL('getb_depth');
geta_depth := LoadDLL('geta_depth');
{$ENDIF ALLEGRO_LOADVARIABLE}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -