From fbdde8d16cc22809affd317d621fceaf0c289bb5 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Sun, 30 Sep 2012 16:25:52 +0000 Subject: [PATCH] Issue 490: color 255 selected FG by default git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@2021 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- src/main.c | 10 ++++++++-- src/windows.c | 41 +++++++++++++++++++++++++++++++++++++++++ src/windows.h | 1 + 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 84fa65c4..921548a6 100644 --- a/src/main.c +++ b/src/main.c @@ -707,8 +707,8 @@ int Init_program(int argc,char * argv[]) memcpy(Main_palette, Gfx->Default_palette, sizeof(T_Palette)); - Fore_color=Best_color_nonexcluded(255,255,255); - Back_color=Best_color_nonexcluded(0,0,0); + Fore_color=Best_color_range(255,255,255,Config.Palette_cells_X*Config.Palette_cells_Y); + Back_color=Best_color_range(0,0,0,Config.Palette_cells_X*Config.Palette_cells_Y); // Allocation de mémoire pour la brosse if (!(Brush =(byte *)malloc( 1* 1))) Error(ERROR_MEMORY); @@ -878,6 +878,12 @@ int Init_program(int argc,char * argv[]) Hide_cursor(); Compute_optimal_menu_colors(Main_palette); + Back_color=Main_backups->Pages->Background_transparent ? + Main_backups->Pages->Transparent_color : + Best_color_range(0,0,0,Config.Palette_cells_X*Config.Palette_cells_Y); + Fore_color=Main_palette[Back_color].R+Main_palette[Back_color].G+Main_palette[Back_color].B < 3*127 ? + Best_color_range(255,255,255,Config.Palette_cells_X*Config.Palette_cells_Y) : + Best_color_range(0,0,0,Config.Palette_cells_X*Config.Palette_cells_Y); Check_menu_mode(); Display_all_screen(); Display_menu(); diff --git a/src/windows.c b/src/windows.c index 0ac12d9a..2f2e9e19 100644 --- a/src/windows.c +++ b/src/windows.c @@ -2702,7 +2702,48 @@ byte Best_color_nonexcluded(byte red,byte green,byte blue) return best_color; } +byte Best_color_range(byte r, byte g, byte b, byte max) +{ + + int col; + float best_diff=255.0*1.56905; + byte best_color=0; + float target_bri; + float bri; + float diff_b, diff_c, diff; + // Similar to Perceptual_lightness(); + target_bri = sqrt(0.26*r*0.26*r + 0.55*g*0.55*g + 0.19*b*0.19*b); + + for (col=0; col