Support for textured toolbars of variable length. Grafx2 repeats the last two columns, so the dither pattern of Modern skin works.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1191 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
22b5dc56e5
commit
f7a5b23541
20
buttons.c
20
buttons.c
@ -395,9 +395,9 @@ void Button_Hide_menu(void)
|
|||||||
Menu_is_visible=1;
|
Menu_is_visible=1;
|
||||||
Pixel_in_menu=Pixel_in_toolbar;
|
Pixel_in_menu=Pixel_in_toolbar;
|
||||||
Menu_Y=Screen_height;
|
Menu_Y=Screen_height;
|
||||||
for (current_menu = 0; current_menu < MENUBARS_COUNT; current_menu++)
|
for (current_menu = 0; current_menu < MENUBAR_COUNT; current_menu++)
|
||||||
if (Menu_bars[current_menu].visible)
|
if (Menu_bars[current_menu].Visible)
|
||||||
Menu_Y -= Menu_bars[current_menu].height * Menu_factor_Y;
|
Menu_Y -= Menu_bars[current_menu].Height * Menu_factor_Y;
|
||||||
|
|
||||||
Compute_magnifier_data();
|
Compute_magnifier_data();
|
||||||
if (Main_magnifier_mode)
|
if (Main_magnifier_mode)
|
||||||
@ -415,12 +415,12 @@ void Button_Hide_menu(void)
|
|||||||
void Button_Show_layerbar(void)
|
void Button_Show_layerbar(void)
|
||||||
{
|
{
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
if (Menu_bars[layers_bar].visible)
|
if (Menu_bars[MENUBAR_LAYERS].Visible)
|
||||||
{
|
{
|
||||||
// Hide it
|
// Hide it
|
||||||
Menu_bars[layers_bar].visible=0;
|
Menu_bars[MENUBAR_LAYERS].Visible=0;
|
||||||
Menu_Y += Menu_bars[layers_bar].height * Menu_factor_Y;
|
Menu_Y += Menu_bars[MENUBAR_LAYERS].Height * Menu_factor_Y;
|
||||||
Menu_height -= Menu_bars[layers_bar].height;
|
Menu_height -= Menu_bars[MENUBAR_LAYERS].Height;
|
||||||
|
|
||||||
if (Main_magnifier_mode)
|
if (Main_magnifier_mode)
|
||||||
{
|
{
|
||||||
@ -463,9 +463,9 @@ void Button_Show_layerbar(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Show it
|
// Show it
|
||||||
Menu_bars[layers_bar].visible = 1;
|
Menu_bars[MENUBAR_LAYERS].Visible = 1;
|
||||||
Menu_Y -= Menu_bars[layers_bar].height * Menu_factor_Y;
|
Menu_Y -= Menu_bars[MENUBAR_LAYERS].Height * Menu_factor_Y;
|
||||||
Menu_height += Menu_bars[layers_bar].height;
|
Menu_height += Menu_bars[MENUBAR_LAYERS].Height;
|
||||||
|
|
||||||
Compute_magnifier_data();
|
Compute_magnifier_data();
|
||||||
if (Main_magnifier_mode)
|
if (Main_magnifier_mode)
|
||||||
|
|||||||
1
const.h
1
const.h
@ -270,6 +270,7 @@ enum BUTTON_NUMBERS
|
|||||||
BUTTON_LAYER_REMOVE,
|
BUTTON_LAYER_REMOVE,
|
||||||
BUTTON_LAYER_UP,
|
BUTTON_LAYER_UP,
|
||||||
BUTTON_LAYER_DOWN,
|
BUTTON_LAYER_DOWN,
|
||||||
|
BUTTON_LAYER_SELECT,
|
||||||
|
|
||||||
// Main menu
|
// Main menu
|
||||||
BUTTON_PAINTBRUSHES,
|
BUTTON_PAINTBRUSHES,
|
||||||
|
|||||||
22
engine.c
22
engine.c
@ -74,7 +74,7 @@ char * Menu_tooltip[NB_BUTTONS]=
|
|||||||
"Drop layer ",
|
"Drop layer ",
|
||||||
"Raise layer ",
|
"Raise layer ",
|
||||||
"Lower layer ",
|
"Lower layer ",
|
||||||
|
"Layer select / toggle ",
|
||||||
"Paintbrush choice ",
|
"Paintbrush choice ",
|
||||||
"Adjust / Transform menu ",
|
"Adjust / Transform menu ",
|
||||||
"Freehand draw. / Toggle ",
|
"Freehand draw. / Toggle ",
|
||||||
@ -160,11 +160,11 @@ int Button_under_mouse(void)
|
|||||||
x_pos = Mouse_X / Menu_factor_X;
|
x_pos = Mouse_X / Menu_factor_X;
|
||||||
|
|
||||||
// Find in which menubar we are
|
// Find in which menubar we are
|
||||||
for (current_menu = 0; current_menu < MENUBARS_COUNT; current_menu ++)
|
for (current_menu = 0; current_menu < MENUBAR_COUNT; current_menu ++)
|
||||||
{
|
{
|
||||||
if (Menu_bars[current_menu].visible)
|
if (Menu_bars[current_menu].Visible)
|
||||||
{
|
{
|
||||||
current_offset -= Menu_bars[current_menu].height * Menu_factor_Y;
|
current_offset -= Menu_bars[current_menu].Height * Menu_factor_Y;
|
||||||
if (Mouse_Y >= current_offset)
|
if (Mouse_Y >= current_offset)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -172,9 +172,9 @@ int Button_under_mouse(void)
|
|||||||
y_pos=(Mouse_Y - current_offset)/Menu_factor_Y;
|
y_pos=(Mouse_Y - current_offset)/Menu_factor_Y;
|
||||||
|
|
||||||
if (current_menu == 0) first_button = 0;
|
if (current_menu == 0) first_button = 0;
|
||||||
else first_button = Menu_bars[current_menu - 1].last_button_index + 1;
|
else first_button = Menu_bars[current_menu - 1].Last_button_index + 1;
|
||||||
|
|
||||||
for (btn_number=first_button;btn_number<=Menu_bars[current_menu].last_button_index;btn_number++)
|
for (btn_number=first_button;btn_number<=Menu_bars[current_menu].Last_button_index;btn_number++)
|
||||||
{
|
{
|
||||||
switch(Buttons_Pool[btn_number].Shape)
|
switch(Buttons_Pool[btn_number].Shape)
|
||||||
{
|
{
|
||||||
@ -206,7 +206,7 @@ int Button_under_mouse(void)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define Pixel_in_skinmenu(x,y,color) Menu_bars[current_menu].skin[(y - y_off)*Menu_bars[current_menu].width + x] = color
|
#define Pixel_in_skinmenu(x,y,color) Menu_bars[current_menu].Skin[(y - y_off)*Menu_bars[current_menu].Skin_width + x] = color
|
||||||
#define Pixel_in_menu_and_skin(x,y,color) Pixel_in_skinmenu(x,y,color); Pixel_in_menu(x,y,color)
|
#define Pixel_in_menu_and_skin(x,y,color) Pixel_in_skinmenu(x,y,color); Pixel_in_menu(x,y,color)
|
||||||
|
|
||||||
///Draw the frame for a menu button
|
///Draw the frame for a menu button
|
||||||
@ -225,12 +225,12 @@ void Draw_menu_button_frame(byte btn_number,byte pressed)
|
|||||||
word y_off = 0;
|
word y_off = 0;
|
||||||
|
|
||||||
// Find in which menu the button is
|
// Find in which menu the button is
|
||||||
for (current_menu = 0; current_menu < MENUBARS_COUNT; current_menu++)
|
for (current_menu = 0; current_menu < MENUBAR_COUNT; current_menu++)
|
||||||
{
|
{
|
||||||
if(Menu_bars[current_menu].visible)
|
if(Menu_bars[current_menu].Visible)
|
||||||
{
|
{
|
||||||
y_off += Menu_bars[current_menu].height;
|
y_off += Menu_bars[current_menu].Height;
|
||||||
if (Menu_bars[current_menu].last_button_index >= btn_number)
|
if (Menu_bars[current_menu].Last_button_index >= btn_number)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
8
global.h
8
global.h
@ -476,12 +476,12 @@ GFX2_GLOBAL byte Menu_factor_Y;
|
|||||||
/// Size of a color cell in the menu's palette.
|
/// Size of a color cell in the menu's palette.
|
||||||
GFX2_GLOBAL word Menu_palette_cell_width;
|
GFX2_GLOBAL word Menu_palette_cell_width;
|
||||||
|
|
||||||
GFX2_GLOBAL T_Menu_Bar Menu_bars[MENUBARS_COUNT]
|
GFX2_GLOBAL T_Menu_Bar Menu_bars[MENUBAR_COUNT]
|
||||||
#ifdef GLOBAL_VARIABLES
|
#ifdef GLOBAL_VARIABLES
|
||||||
=
|
=
|
||||||
{{MENU_WIDTH, 9, 1, NULL, BUTTON_HIDE }, // Status
|
{{MENU_WIDTH, 9, 1, NULL, 20, BUTTON_HIDE }, // Status
|
||||||
{MENU_WIDTH, 10, 0, NULL, BUTTON_LAYER_DOWN }, // Layers
|
{MENU_WIDTH, 10, 0, NULL, 144, BUTTON_LAYER_SELECT }, // Layers
|
||||||
{MENU_WIDTH, 35, 1, NULL, BUTTON_CHOOSE_COL }} // Main
|
{MENU_WIDTH, 35, 1, NULL, 254, BUTTON_CHOOSE_COL }} // Main
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
16
helpfile.h
16
helpfile.h
@ -2538,7 +2538,22 @@ static const T_Help_table helptable_layerdown[] =
|
|||||||
HELP_TEXT ("Move the current layer below the previous one")
|
HELP_TEXT ("Move the current layer below the previous one")
|
||||||
|
|
||||||
};
|
};
|
||||||
|
static const T_Help_table helptable_layerselect[] =
|
||||||
|
{
|
||||||
|
|
||||||
|
HELP_TITLE("LAYER SELECTION")
|
||||||
|
HELP_TEXT ("")
|
||||||
|
HELP_BOLD ("LEFT CLICK")
|
||||||
|
HELP_TEXT ("")
|
||||||
|
HELP_TEXT ("Choose a layer as the current one for")
|
||||||
|
HELP_TEXT ("drawing.")
|
||||||
|
HELP_TEXT ("")
|
||||||
|
HELP_BOLD ("RIGHT CLICK")
|
||||||
|
HELP_TEXT ("")
|
||||||
|
HELP_TEXT ("Makes a layer visible or invisible.")
|
||||||
|
HELP_TEXT ("If you click the current layer, this toggles")
|
||||||
|
HELP_TEXT ("the visibility of all other layers instead.")
|
||||||
|
};
|
||||||
#define HELP_TABLE_DECLARATION(x) {x, sizeof(x)/sizeof(const T_Help_table)},
|
#define HELP_TABLE_DECLARATION(x) {x, sizeof(x)/sizeof(const T_Help_table)},
|
||||||
|
|
||||||
T_Help_section Help_section[] =
|
T_Help_section Help_section[] =
|
||||||
@ -2557,6 +2572,7 @@ T_Help_section Help_section[] =
|
|||||||
HELP_TABLE_DECLARATION(helptable_layerdel)
|
HELP_TABLE_DECLARATION(helptable_layerdel)
|
||||||
HELP_TABLE_DECLARATION(helptable_layerup)
|
HELP_TABLE_DECLARATION(helptable_layerup)
|
||||||
HELP_TABLE_DECLARATION(helptable_layerdown)
|
HELP_TABLE_DECLARATION(helptable_layerdown)
|
||||||
|
HELP_TABLE_DECLARATION(helptable_layerselect)
|
||||||
HELP_TABLE_DECLARATION(helptable_paintbrush)
|
HELP_TABLE_DECLARATION(helptable_paintbrush)
|
||||||
HELP_TABLE_DECLARATION(helptable_adjust)
|
HELP_TABLE_DECLARATION(helptable_adjust)
|
||||||
HELP_TABLE_DECLARATION(helptable_draw)
|
HELP_TABLE_DECLARATION(helptable_draw)
|
||||||
|
|||||||
42
init.c
42
init.c
@ -347,30 +347,30 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
|||||||
// Menu
|
// Menu
|
||||||
if (GUI_seek_down(gui, &cursor_x, &cursor_y, neutral_color, "menu"))
|
if (GUI_seek_down(gui, &cursor_x, &cursor_y, neutral_color, "menu"))
|
||||||
return 1;
|
return 1;
|
||||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Menu_block, Menu_bars[main_bar].width, Menu_bars[main_bar].height,"menu",0))
|
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Menu_block, Menu_bars[MENUBAR_TOOLS].Skin_width, Menu_bars[MENUBAR_TOOLS].Height,"menu",0))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
// Preview
|
// Preview
|
||||||
cursor_x += Menu_bars[main_bar].width;
|
cursor_x += Menu_bars[MENUBAR_TOOLS].Skin_width;
|
||||||
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "preview"))
|
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "preview"))
|
||||||
return 1;
|
return 1;
|
||||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Preview, 173, 16, "logo", 0))
|
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Preview, 173, 16, "logo", 0))
|
||||||
return 1;
|
return 1;
|
||||||
cursor_y+= Menu_bars[main_bar].height;
|
cursor_y+= Menu_bars[MENUBAR_TOOLS].Height;
|
||||||
|
|
||||||
// Layerbar
|
// Layerbar
|
||||||
if (GUI_seek_down(gui, &cursor_x, &cursor_y, neutral_color, "layer bar"))
|
if (GUI_seek_down(gui, &cursor_x, &cursor_y, neutral_color, "layer bar"))
|
||||||
return 1;
|
return 1;
|
||||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Layerbar_block, Menu_bars[layers_bar].width, Menu_bars[layers_bar].height,"layer bar",0))
|
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Layerbar_block, Menu_bars[MENUBAR_LAYERS].Skin_width, Menu_bars[MENUBAR_LAYERS].Height,"layer bar",0))
|
||||||
return 1;
|
return 1;
|
||||||
cursor_y+= Menu_bars[layers_bar].height;
|
cursor_y+= Menu_bars[MENUBAR_LAYERS].Height;
|
||||||
|
|
||||||
// Status bar
|
// Status bar
|
||||||
if (GUI_seek_down(gui, &cursor_x, &cursor_y, neutral_color, "status bar"))
|
if (GUI_seek_down(gui, &cursor_x, &cursor_y, neutral_color, "status bar"))
|
||||||
return 1;
|
return 1;
|
||||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Statusbar_block, Menu_bars[status_bar].width, Menu_bars[status_bar].height,"status bar",0))
|
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Statusbar_block, Menu_bars[MENUBAR_STATUS].Skin_width, Menu_bars[MENUBAR_STATUS].Height,"status bar",0))
|
||||||
return 1;
|
return 1;
|
||||||
cursor_y+= Menu_bars[status_bar].height;
|
cursor_y+= Menu_bars[MENUBAR_STATUS].Height;
|
||||||
|
|
||||||
|
|
||||||
// Effects
|
// Effects
|
||||||
@ -1266,50 +1266,56 @@ void Init_buttons(void)
|
|||||||
BUTTON_SHAPE_RECTANGLE,
|
BUTTON_SHAPE_RECTANGLE,
|
||||||
Button_Layer_menu, Button_Layer_menu,
|
Button_Layer_menu, Button_Layer_menu,
|
||||||
Do_nothing,
|
Do_nothing,
|
||||||
FAMILY_TOOLBAR);
|
FAMILY_INSTANT);
|
||||||
Init_button(BUTTON_LAYER_COLOR,
|
Init_button(BUTTON_LAYER_COLOR,
|
||||||
58,0,
|
58,0,
|
||||||
13,9,
|
13,9,
|
||||||
BUTTON_SHAPE_RECTANGLE,
|
BUTTON_SHAPE_RECTANGLE,
|
||||||
Button_Layer_color, Button_Layer_color,
|
Button_Layer_color, Button_Layer_color,
|
||||||
Do_nothing,
|
Do_nothing,
|
||||||
FAMILY_TOOLBAR);
|
FAMILY_INSTANT);
|
||||||
Init_button(BUTTON_LAYER_MERGE,
|
Init_button(BUTTON_LAYER_MERGE,
|
||||||
72,0,
|
72,0,
|
||||||
13,9,
|
13,9,
|
||||||
BUTTON_SHAPE_RECTANGLE,
|
BUTTON_SHAPE_RECTANGLE,
|
||||||
Button_Layer_merge, Button_Layer_merge,
|
Button_Layer_merge, Button_Layer_merge,
|
||||||
Do_nothing,
|
Do_nothing,
|
||||||
FAMILY_TOOLBAR);
|
FAMILY_INSTANT);
|
||||||
Init_button(BUTTON_LAYER_ADD,
|
Init_button(BUTTON_LAYER_ADD,
|
||||||
86,0,
|
86,0,
|
||||||
13,9,
|
13,9,
|
||||||
BUTTON_SHAPE_RECTANGLE,
|
BUTTON_SHAPE_RECTANGLE,
|
||||||
Button_Layer_add, Button_Layer_add,
|
Button_Layer_add, Button_Layer_add,
|
||||||
Do_nothing,
|
Do_nothing,
|
||||||
FAMILY_TOOLBAR);
|
FAMILY_INSTANT);
|
||||||
Init_button(BUTTON_LAYER_REMOVE,
|
Init_button(BUTTON_LAYER_REMOVE,
|
||||||
100,0,
|
100,0,
|
||||||
13,9,
|
13,9,
|
||||||
BUTTON_SHAPE_RECTANGLE,
|
BUTTON_SHAPE_RECTANGLE,
|
||||||
Button_Layer_remove, Button_Layer_remove,
|
Button_Layer_remove, Button_Layer_remove,
|
||||||
Do_nothing,
|
Do_nothing,
|
||||||
FAMILY_TOOLBAR);
|
FAMILY_INSTANT);
|
||||||
Init_button(BUTTON_LAYER_UP,
|
Init_button(BUTTON_LAYER_UP,
|
||||||
114,0,
|
114,0,
|
||||||
13,9,
|
13,9,
|
||||||
BUTTON_SHAPE_RECTANGLE,
|
BUTTON_SHAPE_RECTANGLE,
|
||||||
Button_Layer_up, Button_Layer_up,
|
Button_Layer_up, Button_Layer_up,
|
||||||
Do_nothing,
|
Do_nothing,
|
||||||
FAMILY_TOOLBAR);
|
FAMILY_INSTANT);
|
||||||
Init_button(BUTTON_LAYER_DOWN,
|
Init_button(BUTTON_LAYER_DOWN,
|
||||||
128,0,
|
128,0,
|
||||||
13,9,
|
13,9,
|
||||||
BUTTON_SHAPE_RECTANGLE,
|
BUTTON_SHAPE_RECTANGLE,
|
||||||
Button_Layer_down, Button_Layer_down,
|
Button_Layer_down, Button_Layer_down,
|
||||||
Do_nothing,
|
Do_nothing,
|
||||||
FAMILY_TOOLBAR);
|
FAMILY_INSTANT);
|
||||||
|
Init_button(BUTTON_LAYER_SELECT,
|
||||||
|
142,0,
|
||||||
|
13,9, // Will be updated according to actual number of layers
|
||||||
|
BUTTON_SHAPE_RECTANGLE,
|
||||||
|
Button_Layer_select, Button_Layer_select,
|
||||||
|
Do_nothing,
|
||||||
|
FAMILY_INSTANT);
|
||||||
// Status bar
|
// Status bar
|
||||||
Init_button(BUTTON_HIDE,
|
Init_button(BUTTON_HIDE,
|
||||||
0,0,
|
0,0,
|
||||||
@ -2592,7 +2598,7 @@ void Set_current_skin(const char *skinfile, T_Gui_skin *gfx)
|
|||||||
MC_Trans = gfx->Color_trans;
|
MC_Trans = gfx->Color_trans;
|
||||||
|
|
||||||
// Set menubars to point to the new data
|
// Set menubars to point to the new data
|
||||||
Menu_bars[main_bar].skin = (byte*)&(gfx->Menu_block);
|
Menu_bars[MENUBAR_TOOLS].Skin = (byte*)&(gfx->Menu_block);
|
||||||
Menu_bars[layers_bar].skin = (byte*)&(gfx->Layerbar_block);
|
Menu_bars[MENUBAR_LAYERS].Skin = (byte*)&(gfx->Layerbar_block);
|
||||||
Menu_bars[status_bar].skin = (byte*)&(gfx->Statusbar_block);
|
Menu_bars[MENUBAR_STATUS].Skin = (byte*)&(gfx->Statusbar_block);
|
||||||
}
|
}
|
||||||
|
|||||||
7
layers.c
7
layers.c
@ -63,6 +63,13 @@ void Button_Layer_remove(void)
|
|||||||
Unselect_button(BUTTON_LAYER_REMOVE);
|
Unselect_button(BUTTON_LAYER_REMOVE);
|
||||||
Display_cursor();
|
Display_cursor();
|
||||||
}
|
}
|
||||||
|
void Button_Layer_select(void)
|
||||||
|
{
|
||||||
|
Hide_cursor();
|
||||||
|
Unselect_button(BUTTON_LAYER_SELECT);
|
||||||
|
Display_cursor();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
void Button_Layer_1(void)
|
void Button_Layer_1(void)
|
||||||
{
|
{
|
||||||
|
|||||||
2
layers.h
2
layers.h
@ -37,3 +37,5 @@ void Button_Layer_color(void);
|
|||||||
void Button_Layer_merge(void);
|
void Button_Layer_merge(void);
|
||||||
void Button_Layer_up(void);
|
void Button_Layer_up(void);
|
||||||
void Button_Layer_down(void);
|
void Button_Layer_down(void);
|
||||||
|
void Button_Layer_select(void);
|
||||||
|
|
||||||
|
|||||||
23
struct.h
23
struct.h
@ -417,8 +417,8 @@ typedef struct
|
|||||||
|
|
||||||
/// Bitmap data for the menu, a single rectangle.
|
/// Bitmap data for the menu, a single rectangle.
|
||||||
byte Menu_block[35][MENU_WIDTH];
|
byte Menu_block[35][MENU_WIDTH];
|
||||||
byte Layerbar_block[10][MENU_WIDTH];
|
byte Layerbar_block[10][144];
|
||||||
byte Statusbar_block[9][MENU_WIDTH];
|
byte Statusbar_block[9][20];
|
||||||
/// Bitmap data for the icons that are displayed over the menu.
|
/// Bitmap data for the icons that are displayed over the menu.
|
||||||
byte Menu_sprite[NB_MENU_SPRITES][MENU_SPRITE_HEIGHT][MENU_SPRITE_WIDTH];
|
byte Menu_sprite[NB_MENU_SPRITES][MENU_SPRITE_HEIGHT][MENU_SPRITE_WIDTH];
|
||||||
/// Bitmap data for the different "effects" icons.
|
/// Bitmap data for the different "effects" icons.
|
||||||
@ -466,18 +466,19 @@ typedef struct
|
|||||||
|
|
||||||
// A menubar.
|
// A menubar.
|
||||||
typedef struct {
|
typedef struct {
|
||||||
word width;
|
word Width;
|
||||||
word height;
|
word Height;
|
||||||
byte visible;
|
byte Visible;
|
||||||
byte* skin;
|
byte* Skin;
|
||||||
byte last_button_index;
|
word Skin_width;
|
||||||
|
byte Last_button_index;
|
||||||
} T_Menu_Bar;
|
} T_Menu_Bar;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
status_bar = 0, // MUST be 0
|
MENUBAR_STATUS = 0, // MUST be 0
|
||||||
layers_bar,
|
MENUBAR_LAYERS,
|
||||||
main_bar,
|
MENUBAR_TOOLS,
|
||||||
MENUBARS_COUNT
|
MENUBAR_COUNT
|
||||||
} T_Menubars;
|
} T_Menubars;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
67
windows.c
67
windows.c
@ -183,11 +183,11 @@ word Palette_cell_Y(byte index)
|
|||||||
{
|
{
|
||||||
if (Config.Palette_vertical)
|
if (Config.Palette_vertical)
|
||||||
{
|
{
|
||||||
return Menu_Y+((2+(((index-First_color_in_palette)/Menu_cells_X)*(Menu_bars[main_bar].height/Menu_cells_Y)))*Menu_factor_Y);
|
return Menu_Y+((2+(((index-First_color_in_palette)/Menu_cells_X)*(Menu_bars[MENUBAR_TOOLS].Height/Menu_cells_Y)))*Menu_factor_Y);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return Menu_Y+((2+(((index-First_color_in_palette)%Menu_cells_Y)*(Menu_bars[main_bar].height/Menu_cells_Y)))*Menu_factor_Y);
|
return Menu_Y+((2+(((index-First_color_in_palette)%Menu_cells_Y)*(Menu_bars[MENUBAR_TOOLS].Height/Menu_cells_Y)))*Menu_factor_Y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,7 +220,7 @@ void Frame_menu_color(byte id)
|
|||||||
{
|
{
|
||||||
word start_x,start_y,end_x,end_y;
|
word start_x,start_y,end_x,end_y;
|
||||||
word index;
|
word index;
|
||||||
word cell_height=Menu_bars[main_bar].height*Menu_factor_Y/Menu_cells_Y;
|
word cell_height=Menu_bars[MENUBAR_TOOLS].Height*Menu_factor_Y/Menu_cells_Y;
|
||||||
byte color;
|
byte color;
|
||||||
|
|
||||||
if (id==Fore_color)
|
if (id==Fore_color)
|
||||||
@ -294,12 +294,17 @@ void Frame_menu_color(byte id)
|
|||||||
void Display_menu_palette(void)
|
void Display_menu_palette(void)
|
||||||
{
|
{
|
||||||
int color;
|
int color;
|
||||||
byte cell_height=(Menu_bars[main_bar].height)*Menu_factor_Y/Menu_cells_Y;
|
byte cell_height=(Menu_bars[MENUBAR_TOOLS].Height)*Menu_factor_Y/Menu_cells_Y;
|
||||||
// width: Menu_palette_cell_width
|
// width: Menu_palette_cell_width
|
||||||
|
|
||||||
if (Menu_is_visible)
|
if (Menu_is_visible)
|
||||||
{
|
{
|
||||||
Block(MENU_WIDTH*Menu_factor_X,Menu_Y,Screen_width-(MENU_WIDTH*Menu_factor_X),(Menu_height-11+2)*Menu_factor_Y,MC_Black);
|
Block(
|
||||||
|
Menu_bars[MENUBAR_TOOLS].Width*Menu_factor_X,
|
||||||
|
Menu_Y,
|
||||||
|
Screen_width-(Menu_bars[MENUBAR_TOOLS].Width*Menu_factor_X),
|
||||||
|
(Menu_bars[MENUBAR_TOOLS].Height)*Menu_factor_Y,
|
||||||
|
MC_Black);
|
||||||
|
|
||||||
if (Config.Separate_colors)
|
if (Config.Separate_colors)
|
||||||
for (color=First_color_in_palette;color<256&&(color-First_color_in_palette)<Menu_cells_X*Menu_cells_Y;color++)
|
for (color=First_color_in_palette;color<256&&(color-First_color_in_palette)<Menu_cells_X*Menu_cells_Y;color++)
|
||||||
@ -427,25 +432,25 @@ void Display_menu(void)
|
|||||||
if (Menu_is_visible)
|
if (Menu_is_visible)
|
||||||
{
|
{
|
||||||
// display menu sprite
|
// display menu sprite
|
||||||
for (current_menu = MENUBARS_COUNT - 1; current_menu >= 0; current_menu --)
|
for (current_menu = MENUBAR_COUNT - 1; current_menu >= 0; current_menu --)
|
||||||
{
|
{
|
||||||
if(Menu_bars[current_menu].visible)
|
if(Menu_bars[current_menu].Visible)
|
||||||
{
|
{
|
||||||
for (y_pos=0;y_pos<Menu_bars[current_menu].height;y_pos++)
|
// Skinned area
|
||||||
for (x_pos=0;x_pos<Menu_bars[current_menu].width;x_pos++)
|
for (y_pos=0;y_pos<Menu_bars[current_menu].Height;y_pos++)
|
||||||
Pixel_in_menu(x_pos, y_pos + y_off, Menu_bars[current_menu].skin[y_pos * Menu_bars[current_menu].width + x_pos]);
|
for (x_pos=0;x_pos<Menu_bars[current_menu].Skin_width;x_pos++)
|
||||||
y_off += Menu_bars[current_menu].height;
|
Pixel_in_menu(x_pos, y_pos + y_off, Menu_bars[current_menu].Skin[y_pos * Menu_bars[current_menu].Skin_width + x_pos]);
|
||||||
|
|
||||||
|
// If some area is remaining to the right, texture it with a copy of
|
||||||
|
// the last two columns
|
||||||
|
for (y_pos=0;y_pos<Menu_bars[current_menu].Height;y_pos++)
|
||||||
|
for (x_pos=Menu_bars[current_menu].Skin_width;x_pos<Screen_width/Menu_factor_X;x_pos++)
|
||||||
|
Pixel_in_menu(x_pos, y_pos + y_off, Menu_bars[current_menu].Skin[y_pos * Menu_bars[current_menu].Skin_width + Menu_bars[current_menu].Skin_width - 2 + (x_pos&1)]);
|
||||||
|
|
||||||
|
// Next bar
|
||||||
|
y_off += Menu_bars[current_menu].Height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Grey area for filename below palette
|
|
||||||
Block(MENU_WIDTH*Menu_factor_X,Menu_status_Y-Menu_factor_Y,Screen_width-(MENU_WIDTH*Menu_factor_X),9*Menu_factor_Y,MC_Light);
|
|
||||||
|
|
||||||
// Black area below palette
|
|
||||||
if(Menu_bars[layers_bar].visible)
|
|
||||||
Block(MENU_WIDTH*Menu_factor_X,
|
|
||||||
Menu_Y + Menu_bars[main_bar].height*Menu_factor_Y,
|
|
||||||
Screen_width-(MENU_WIDTH*Menu_factor_X),
|
|
||||||
Menu_bars[layers_bar].height*Menu_factor_Y,MC_Black);
|
|
||||||
|
|
||||||
// Display palette
|
// Display palette
|
||||||
Display_menu_palette();
|
Display_menu_palette();
|
||||||
@ -456,17 +461,17 @@ void Display_menu(void)
|
|||||||
|
|
||||||
if (!Windows_open)
|
if (!Windows_open)
|
||||||
{
|
{
|
||||||
if ((Mouse_Y<Menu_Y) && // Souris dans l'image
|
if ((Mouse_Y<Menu_Y) && // Mouse in the picture area
|
||||||
( (!Main_magnifier_mode) || (Mouse_X<Main_separator_position) || (Mouse_X>=Main_X_zoom) ))
|
( (!Main_magnifier_mode) || (Mouse_X<Main_separator_position) || (Mouse_X>=Main_X_zoom) ))
|
||||||
{
|
{
|
||||||
// Prepare display of XY coordinates even if in some cases they will be
|
// Prepare display of XY coordinates even if in some cases they will be
|
||||||
// erased with some other text
|
// erased with some other text
|
||||||
if ( (Current_operation!=OPERATION_COLORPICK)
|
if ( (Current_operation!=OPERATION_COLORPICK)
|
||||||
&& (Current_operation!=OPERATION_REPLACE) )
|
&& (Current_operation!=OPERATION_REPLACE) )
|
||||||
Print_in_menu("X: Y: ",0);
|
Print_in_menu("X: Y: ",0);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// The colorpicker display the color id between the parentheses
|
// The colorpicker display the color id between the parentheses
|
||||||
Print_in_menu("X: Y: ( )",0);
|
Print_in_menu("X: Y: ( )",0);
|
||||||
Num2str(Colorpicker_color,str,3);
|
Num2str(Colorpicker_color,str,3);
|
||||||
Print_in_menu(str,20);
|
Print_in_menu(str,20);
|
||||||
@ -476,7 +481,7 @@ void Display_menu(void)
|
|||||||
}
|
}
|
||||||
Print_filename();
|
Print_filename();
|
||||||
}
|
}
|
||||||
// Now update the area: menu height and whole screen width (including palette)
|
// Now update the area: menu height and whole screen width (including palette)
|
||||||
Update_rect(0,Menu_Y,Screen_width,Menu_height*Menu_factor_Y);
|
Update_rect(0,Menu_Y,Screen_width,Menu_height*Menu_factor_Y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2670,8 +2675,8 @@ void Remap_menu_sprites()
|
|||||||
for (i=0; i<CURSOR_SPRITE_WIDTH; i++)
|
for (i=0; i<CURSOR_SPRITE_WIDTH; i++)
|
||||||
Remap_pixel(&Gfx->Cursor_sprite[k][j][i]);
|
Remap_pixel(&Gfx->Cursor_sprite[k][j][i]);
|
||||||
// Main menu bar
|
// Main menu bar
|
||||||
for (j=0; j<35; j++)
|
for (j=0; j<Menu_bars[MENUBAR_TOOLS].Height; j++)
|
||||||
for (i=0; i<MENU_WIDTH; i++)
|
for (i=0; i<Menu_bars[MENUBAR_TOOLS].Skin_width; i++)
|
||||||
Remap_pixel(&Gfx->Menu_block[j][i]);
|
Remap_pixel(&Gfx->Menu_block[j][i]);
|
||||||
// Menu sprites
|
// Menu sprites
|
||||||
for (k=0; k<NB_MENU_SPRITES; k++)
|
for (k=0; k<NB_MENU_SPRITES; k++)
|
||||||
@ -2691,12 +2696,12 @@ void Remap_menu_sprites()
|
|||||||
Remap_pixel(&Gfx->Layer_sprite[l][k][j][i]);
|
Remap_pixel(&Gfx->Layer_sprite[l][k][j][i]);
|
||||||
|
|
||||||
// Status bar
|
// Status bar
|
||||||
for (j=0; j<9; j++)
|
for (j=0; j<Menu_bars[MENUBAR_STATUS].Height; j++)
|
||||||
for (i=0; i<MENU_WIDTH; i++)
|
for (i=0; i<Menu_bars[MENUBAR_STATUS].Skin_width; i++)
|
||||||
Remap_pixel(&Gfx->Statusbar_block[j][i]);
|
Remap_pixel(&Gfx->Statusbar_block[j][i]);
|
||||||
// Layer bar
|
// Layer bar
|
||||||
for (j=0; j<10; j++)
|
for (j=0; j<Menu_bars[MENUBAR_LAYERS].Height; j++)
|
||||||
for (i=0; i<MENU_WIDTH; i++)
|
for (i=0; i<Menu_bars[MENUBAR_LAYERS].Skin_width; i++)
|
||||||
Remap_pixel(&Gfx->Layerbar_block[j][i]);
|
Remap_pixel(&Gfx->Layerbar_block[j][i]);
|
||||||
|
|
||||||
// Help fonts
|
// Help fonts
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user