diff --git a/buttons.c b/buttons.c index b823e99d..8a8be8f5 100644 --- a/buttons.c +++ b/buttons.c @@ -284,10 +284,7 @@ void Button_Select_forecolor(void) else if (color!=-1) { Hide_cursor(); - Frame_menu_color(Fore_color, MC_Black); - Fore_color=color; - Frame_menu_color(Fore_color, MC_White); - Display_foreback(); + Set_fore_color(color); Display_cursor(); } } @@ -300,10 +297,7 @@ void Button_Select_backcolor(void) if (color!=-1) { Hide_cursor(); - Frame_menu_color(Back_color, MC_Black); - Back_color=color; - Frame_menu_color(Back_color, MC_Dark); - Display_foreback(); + Set_back_color(color); Display_cursor(); } } @@ -2918,23 +2912,17 @@ void Button_Invert_foreback(void) { byte temp_color; - Hide_cursor(); - - Frame_menu_color(Fore_color, MC_Dark); - Frame_menu_color(Back_color, MC_White); - temp_color=Fore_color; Fore_color =Back_color; Back_color =temp_color; + Hide_cursor(); + Frame_menu_color(Back_color); + Frame_menu_color(Fore_color); Reposition_palette(); - - //Frame_menu_color(MC_Black); - Display_foreback(); Unselect_button(BUTTON_COLORPICKER); - - Display_cursor(); + Display_cursor(); } diff --git a/operatio.c b/operatio.c index ca2ede1e..eed56923 100644 --- a/operatio.c +++ b/operatio.c @@ -1412,18 +1412,11 @@ void Colorpicker_12_0(void) if (Mouse_K==LEFT_SIDE) { - Frame_menu_color(Fore_color, MC_Black); - Fore_color=Colorpicker_color; - Reposition_palette(); - Display_foreback(); - Frame_menu_color(Fore_color, MC_White); + Set_fore_color(Colorpicker_color); } else { - Frame_menu_color(Back_color, MC_Black); - Back_color=Colorpicker_color; - Display_foreback(); - Frame_menu_color(Back_color, MC_Dark); + Set_back_color(Colorpicker_color); } Operation_push(Mouse_K); } @@ -1456,11 +1449,7 @@ void Colorpicker_1_1(void) if (Colorpicker_color!=Fore_color) { - Frame_menu_color(Fore_color, MC_Black); - Fore_color=Colorpicker_color; - Reposition_palette(); - Display_foreback(); - Frame_menu_color(Fore_color, MC_White); + Set_fore_color(Colorpicker_color); } if (Menu_is_visible) @@ -1502,10 +1491,7 @@ void Colorpicker_2_1(void) if (Colorpicker_color!=Back_color) { - Frame_menu_color(Back_color, MC_Black); - Back_color=Colorpicker_color; - Display_foreback(); - Frame_menu_color(Back_color, MC_Dark); + Set_back_color(Colorpicker_color); } if (Menu_is_visible) @@ -1535,18 +1521,11 @@ void Colorpicker_0_1(void) Operation_pop(&click); if (click==LEFT_SIDE) { - Frame_menu_color(Fore_color, MC_Black); - Fore_color=Colorpicker_color; - Reposition_palette(); - Display_foreback(); - Frame_menu_color(Fore_color, MC_White); + Set_fore_color(Colorpicker_color); } else { - Frame_menu_color(Back_color, MC_Black); - Back_color=Colorpicker_color; - Display_foreback(); - Frame_menu_color(Back_color, MC_Dark); + Set_back_color(Colorpicker_color); } Unselect_button(BUTTON_COLORPICKER); } diff --git a/special.c b/special.c index 5791f045..61a09152 100644 --- a/special.c +++ b/special.c @@ -216,14 +216,7 @@ void Bigger_paintbrush(void) void Special_next_forecolor(void) { Hide_cursor(); - Frame_menu_color(Fore_color, MC_Black); - - Fore_color++; - - Reposition_palette(); - Display_foreback(); - - Frame_menu_color(Fore_color, MC_White); + Set_fore_color(Fore_color+1); Display_cursor(); } @@ -231,14 +224,7 @@ void Special_next_forecolor(void) void Special_previous_forecolor(void) { Hide_cursor(); - Frame_menu_color(Fore_color, MC_Black); - - Fore_color--; - - Reposition_palette(); - Display_foreback(); - - Frame_menu_color(Fore_color, MC_White); + Set_fore_color(Fore_color-1); Display_cursor(); } @@ -246,10 +232,7 @@ void Special_previous_forecolor(void) void Special_next_backcolor(void) { Hide_cursor(); - Frame_menu_color(Back_color, MC_Black); - Back_color++; - Frame_menu_color(Back_color, MC_Dark); - Display_foreback(); + Set_back_color(Back_color+1); Display_cursor(); } @@ -257,10 +240,7 @@ void Special_next_backcolor(void) void Special_previous_backcolor(void) { Hide_cursor(); - Frame_menu_color(Back_color, MC_Black); - Back_color--; - Frame_menu_color(Back_color, MC_Dark); - Display_foreback(); + Set_back_color(Back_color-1); Display_cursor(); } @@ -268,14 +248,7 @@ void Special_previous_backcolor(void) void Special_next_user_forecolor(void) { Hide_cursor(); - Frame_menu_color(Fore_color, MC_Black); - - Fore_color=Shade_table_left[Fore_color]; - - Reposition_palette(); - Display_foreback(); - - Frame_menu_color(Fore_color, MC_White); + Set_fore_color(Shade_table_left[Fore_color]); Display_cursor(); } @@ -283,14 +256,7 @@ void Special_next_user_forecolor(void) void Special_previous_user_forecolor(void) { Hide_cursor(); - Frame_menu_color(Fore_color, MC_Black); - - Fore_color=Shade_table_right[Fore_color]; - - Reposition_palette(); - Display_foreback(); - - Frame_menu_color(Fore_color, MC_White); + Set_fore_color(Shade_table_right[Fore_color]); Display_cursor(); } @@ -298,10 +264,7 @@ void Special_previous_user_forecolor(void) void Special_next_user_backcolor(void) { Hide_cursor(); - Frame_menu_color(Back_color, MC_Black); - Back_color=Shade_table_left[Back_color]; - Display_foreback(); - Frame_menu_color(Back_color, MC_Dark); + Set_back_color(Shade_table_left[Back_color]); Display_cursor(); } @@ -309,10 +272,7 @@ void Special_next_user_backcolor(void) void Special_previous_user_backcolor(void) { Hide_cursor(); - Frame_menu_color(Back_color, MC_Black); - Back_color=Shade_table_right[Back_color]; - Display_foreback(); - Frame_menu_color(Back_color, MC_Dark); + Set_back_color(Shade_table_right[Back_color]); Display_cursor(); } diff --git a/windows.c b/windows.c index e6a32213..6ae0a446 100644 --- a/windows.c +++ b/windows.c @@ -185,16 +185,44 @@ word Palette_cell_Y(byte index) } } +void Set_fore_color(byte color) +{ + byte old_fore_color = Fore_color; + + Fore_color=color; + Reposition_palette(); + Display_foreback(); + Frame_menu_color(old_fore_color); + Frame_menu_color(Fore_color); +} + +void Set_back_color(byte color) +{ + byte old_back_color = Back_color; + + Back_color=color; + Display_foreback(); + Frame_menu_color(old_back_color); + Frame_menu_color(Back_color); +} + /// /// Redraw the cell in the menu palette for ::Fore_color. /// This function checks bounds, it won't draw anything if Fore_color is not visible. -/// @param color: Pass MC_White to mark the color with a frame, MC_Black to unmark it. /// @param id:Color number to frame -void Frame_menu_color(byte id, byte color) +void Frame_menu_color(byte id) { word start_x,start_y,end_x,end_y; word index; word cell_height=32/Menu_cells_Y; + byte color; + + if (id==Fore_color) + color = MC_White; + else if (id==Back_color) + color = MC_Dark; + else + color = MC_Black; if ((id>=First_color_in_palette) && (id