"Hide" button now toggles the layerbar. Right-click works as before. Enjoy the layerbar !
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1179 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
6a4ba08343
commit
90595e3af6
74
buttons.c
74
buttons.c
@ -391,9 +391,81 @@ void Button_Hide_menu(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
byte current_menu;
|
||||
Menu_is_visible=1;
|
||||
Pixel_in_menu=Pixel_in_toolbar;
|
||||
Menu_Y=Screen_height-(Menu_height*Menu_factor_Y);
|
||||
Menu_Y=Screen_height;
|
||||
for (current_menu = 0; current_menu < MENUBARS_COUNT; current_menu++)
|
||||
if (Menu_bars[current_menu].visible)
|
||||
Menu_Y -= Menu_bars[current_menu].height * Menu_factor_Y;
|
||||
|
||||
Compute_magnifier_data();
|
||||
if (Main_magnifier_mode)
|
||||
Position_screen_according_to_zoom();
|
||||
Compute_limits();
|
||||
Compute_paintbrush_coordinates();
|
||||
Display_menu();
|
||||
if (Main_magnifier_mode)
|
||||
Display_all_screen();
|
||||
}
|
||||
Unselect_button(BUTTON_HIDE);
|
||||
Display_cursor();
|
||||
}
|
||||
|
||||
void Button_Show_layerbar(void)
|
||||
{
|
||||
Hide_cursor();
|
||||
if (Menu_bars[layers_bar].visible)
|
||||
{
|
||||
// Hide it
|
||||
Menu_bars[layers_bar].visible=0;
|
||||
Menu_Y += Menu_bars[layers_bar].height * Menu_factor_Y;
|
||||
Menu_height -= Menu_bars[layers_bar].height;
|
||||
|
||||
if (Main_magnifier_mode)
|
||||
{
|
||||
Compute_magnifier_data();
|
||||
if (Main_magnifier_offset_Y+Main_magnifier_height>Main_image_height)
|
||||
{
|
||||
if (Main_magnifier_height>Main_image_height)
|
||||
Main_magnifier_offset_Y=0;
|
||||
else
|
||||
Main_magnifier_offset_Y=Main_image_height-Main_magnifier_height;
|
||||
}
|
||||
}
|
||||
|
||||
// On repositionne le décalage de l'image pour qu'il n'y ait pas d'in-
|
||||
// -cohérences lorsqu'on sortira du mode Loupe.
|
||||
if (Main_offset_Y+Screen_height>Main_image_height)
|
||||
{
|
||||
if (Screen_height>Main_image_height)
|
||||
Main_offset_Y=0;
|
||||
else
|
||||
Main_offset_Y=Main_image_height-Screen_height;
|
||||
}
|
||||
// On fait pareil pour le brouillon
|
||||
if (Spare_offset_Y+Screen_height>Spare_image_height)
|
||||
{
|
||||
if (Screen_height>Spare_image_height)
|
||||
Spare_offset_Y=0;
|
||||
else
|
||||
Spare_offset_Y=Spare_image_height-Screen_height;
|
||||
}
|
||||
|
||||
Compute_magnifier_data();
|
||||
if (Main_magnifier_mode)
|
||||
Position_screen_according_to_zoom();
|
||||
Compute_limits();
|
||||
Compute_paintbrush_coordinates();
|
||||
Display_menu();
|
||||
Display_all_screen();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Show it
|
||||
Menu_bars[layers_bar].visible = 1;
|
||||
Menu_Y -= Menu_bars[layers_bar].height * Menu_factor_Y;
|
||||
Menu_height += Menu_bars[layers_bar].height;
|
||||
|
||||
Compute_magnifier_data();
|
||||
if (Main_magnifier_mode)
|
||||
|
||||
@ -629,6 +629,9 @@ void Button_Quit(void);
|
||||
*/
|
||||
void Button_Hide_menu(void);
|
||||
|
||||
/// Shows or hide the layerbar
|
||||
void Button_Show_layerbar(void);
|
||||
|
||||
|
||||
/*!
|
||||
Load picture from file.
|
||||
|
||||
10
const.h
10
const.h
@ -257,7 +257,14 @@ enum ICON_TYPES
|
||||
/// Identifiers for the buttons in the menu.
|
||||
enum BUTTON_NUMBERS
|
||||
{
|
||||
BUTTON_PAINTBRUSHES=0,
|
||||
// Status bar
|
||||
BUTTON_HIDE = 0,
|
||||
|
||||
// Layer bar
|
||||
BUTTON_LAYER_MENU,
|
||||
|
||||
// Main menu
|
||||
BUTTON_PAINTBRUSHES,
|
||||
BUTTON_ADJUST,
|
||||
BUTTON_DRAW,
|
||||
BUTTON_CURVES,
|
||||
@ -293,7 +300,6 @@ enum BUTTON_NUMBERS
|
||||
BUTTON_PAL_LEFT,
|
||||
BUTTON_PAL_RIGHT,
|
||||
BUTTON_CHOOSE_COL,
|
||||
BUTTON_HIDE,
|
||||
NB_BUTTONS ///< Number of buttons in the menu bar.
|
||||
};
|
||||
|
||||
|
||||
45
engine.c
45
engine.c
@ -65,6 +65,10 @@ byte* Window_background[8];
|
||||
///Table of tooltip texts for menu buttons
|
||||
char * Menu_tooltip[NB_BUTTONS]=
|
||||
{
|
||||
"Layerbar / Hide menu ",
|
||||
|
||||
"Layers manager ",
|
||||
|
||||
"Paintbrush choice ",
|
||||
"Adjust / Transform menu ",
|
||||
"Freehand draw. / Toggle ",
|
||||
@ -105,7 +109,6 @@ char * Menu_tooltip[NB_BUTTONS]=
|
||||
"Scroll pal. bkwd / Fast ",
|
||||
"Scroll pal. fwd / Fast ",
|
||||
"Color #" ,
|
||||
"Hide tool bar "
|
||||
};
|
||||
|
||||
///Save a screen block (usually before erasing it with a new window or a dropdown menu)
|
||||
@ -144,11 +147,28 @@ int Button_under_mouse(void)
|
||||
int btn_number;
|
||||
short x_pos;
|
||||
short y_pos;
|
||||
byte current_menu;
|
||||
word current_offset = Screen_height;
|
||||
byte first_button;
|
||||
|
||||
x_pos=(Mouse_X )/Menu_factor_X;
|
||||
y_pos=(Mouse_Y-Menu_Y)/Menu_factor_Y;
|
||||
x_pos = Mouse_X / Menu_factor_X;
|
||||
|
||||
for (btn_number=0;btn_number<NB_BUTTONS;btn_number++)
|
||||
// Find in which menubar we are
|
||||
for (current_menu = 0; current_menu < MENUBARS_COUNT; current_menu ++)
|
||||
{
|
||||
if (Menu_bars[current_menu].visible)
|
||||
{
|
||||
current_offset -= Menu_bars[current_menu].height * Menu_factor_Y;
|
||||
if (Mouse_Y >= current_offset)
|
||||
break;
|
||||
}
|
||||
}
|
||||
y_pos=(Mouse_Y - current_offset)/Menu_factor_Y;
|
||||
|
||||
if (current_menu == 0) first_button = 0;
|
||||
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++)
|
||||
{
|
||||
switch(Buttons_Pool[btn_number].Shape)
|
||||
{
|
||||
@ -193,9 +213,24 @@ void Draw_menu_button_frame(byte btn_number,byte pressed)
|
||||
word end_y;
|
||||
word x_pos;
|
||||
word y_pos;
|
||||
byte current_menu;
|
||||
word y_off = 0;
|
||||
|
||||
// Find in which menu the button is
|
||||
for (current_menu = 0; current_menu < MENUBARS_COUNT; current_menu++)
|
||||
{
|
||||
if(Menu_bars[current_menu].visible)
|
||||
{
|
||||
y_off += Menu_bars[current_menu].height;
|
||||
if (Menu_bars[current_menu].last_button_index >= btn_number)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
y_off = Menu_height - y_off;
|
||||
|
||||
start_x=Buttons_Pool[btn_number].X_offset;
|
||||
start_y=Buttons_Pool[btn_number].Y_offset;
|
||||
start_y=Buttons_Pool[btn_number].Y_offset + y_off;
|
||||
end_x =start_x+Buttons_Pool[btn_number].Width;
|
||||
end_y =start_y+Buttons_Pool[btn_number].Height;
|
||||
|
||||
|
||||
6
global.h
6
global.h
@ -479,9 +479,9 @@ GFX2_GLOBAL word Menu_palette_cell_width;
|
||||
GFX2_GLOBAL T_Menu_Bar Menu_bars[MENUBARS_COUNT]
|
||||
#ifdef GLOBAL_VARIABLES
|
||||
=
|
||||
{{MENU_WIDTH, 9, 1, NULL }, // Status
|
||||
{MENU_WIDTH, 10, 0, NULL }, // Layers
|
||||
{MENU_WIDTH, 35, 1, NULL }} // Main
|
||||
{{MENU_WIDTH, 9, 1, NULL, BUTTON_HIDE }, // Status
|
||||
{MENU_WIDTH, 10, 0, NULL, BUTTON_LAYER_MENU }, // Layers
|
||||
{MENU_WIDTH, 35, 1, NULL, BUTTON_CHOOSE_COL }} // Main
|
||||
#endif
|
||||
;
|
||||
|
||||
|
||||
20
init.c
20
init.c
@ -1234,11 +1234,21 @@ void Init_buttons(void)
|
||||
Do_nothing,
|
||||
FAMILY_INSTANT);
|
||||
|
||||
// Layer bar
|
||||
Init_button(BUTTON_LAYER_MENU,
|
||||
0,0,
|
||||
57,9,
|
||||
BUTTON_SHAPE_RECTANGLE,
|
||||
Do_nothing, Do_nothing,
|
||||
Do_nothing,
|
||||
FAMILY_TOOLBAR);
|
||||
|
||||
// Status bar
|
||||
Init_button(BUTTON_HIDE,
|
||||
0,35,
|
||||
0,0,
|
||||
16,9,
|
||||
BUTTON_SHAPE_RECTANGLE,
|
||||
Button_Hide_menu,Button_Hide_menu,
|
||||
Button_Show_layerbar, Button_Hide_menu,
|
||||
Do_nothing,
|
||||
FAMILY_TOOLBAR);
|
||||
}
|
||||
@ -2515,7 +2525,7 @@ void Set_current_skin(const char *skinfile, T_Gui_skin *gfx)
|
||||
MC_Trans = gfx->Color_trans;
|
||||
|
||||
// Set menubars to point to the new data
|
||||
Menu_bars[2].skin = (byte*)&(gfx->Menu_block);
|
||||
Menu_bars[1].skin = (byte*)&(gfx->Layerbar_block);
|
||||
Menu_bars[0].skin = (byte*)&(gfx->Statusbar_block);
|
||||
Menu_bars[main_bar].skin = (byte*)&(gfx->Menu_block);
|
||||
Menu_bars[layers_bar].skin = (byte*)&(gfx->Layerbar_block);
|
||||
Menu_bars[status_bar].skin = (byte*)&(gfx->Statusbar_block);
|
||||
}
|
||||
|
||||
1
struct.h
1
struct.h
@ -468,6 +468,7 @@ typedef struct {
|
||||
word height;
|
||||
byte visible;
|
||||
byte* skin;
|
||||
byte last_button_index;
|
||||
} T_Menu_Bar;
|
||||
|
||||
typedef enum {
|
||||
|
||||
35
windows.c
35
windows.c
@ -183,11 +183,11 @@ word Palette_cell_Y(byte index)
|
||||
{
|
||||
if (Config.Palette_vertical)
|
||||
{
|
||||
return Menu_Y+((2+(((index-First_color_in_palette)/Menu_cells_X)*((Menu_height-11)/Menu_cells_Y)))*Menu_factor_Y);
|
||||
return Menu_Y+((2+(((index-First_color_in_palette)/Menu_cells_X)*(Menu_bars[main_bar].height/Menu_cells_Y)))*Menu_factor_Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
return Menu_Y+((2+(((index-First_color_in_palette)%Menu_cells_Y)*((Menu_height-11)/Menu_cells_Y)))*Menu_factor_Y);
|
||||
return Menu_Y+((2+(((index-First_color_in_palette)%Menu_cells_Y)*(Menu_bars[main_bar].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 index;
|
||||
word cell_height=(Menu_height-11)/Menu_cells_Y;
|
||||
word cell_height=Menu_bars[main_bar].height*Menu_factor_Y/Menu_cells_Y;
|
||||
byte color;
|
||||
|
||||
if (id==Fore_color)
|
||||
@ -238,12 +238,12 @@ void Frame_menu_color(byte id)
|
||||
start_y=Palette_cell_Y(id)-1*Menu_factor_Y;
|
||||
|
||||
Block(start_x,start_y,(Menu_palette_cell_width+1)*Menu_factor_X,Menu_factor_Y,color);
|
||||
Block(start_x,start_y+(Menu_factor_Y*cell_height),(Menu_palette_cell_width+1)*Menu_factor_X,Menu_factor_Y,color);
|
||||
Block(start_x,start_y+cell_height,(Menu_palette_cell_width+1)*Menu_factor_X,Menu_factor_Y,color);
|
||||
|
||||
Block(start_x,start_y+Menu_factor_Y,Menu_factor_X,Menu_factor_Y*(cell_height-1),color);
|
||||
Block(start_x+(Menu_palette_cell_width*Menu_factor_X),start_y+Menu_factor_Y,Menu_factor_X,Menu_factor_Y*(cell_height-1),color);
|
||||
Block(start_x,start_y+Menu_factor_Y,Menu_factor_X,cell_height - Menu_factor_Y,color);
|
||||
Block(start_x+(Menu_palette_cell_width*Menu_factor_X),start_y+Menu_factor_Y,Menu_factor_X,cell_height - Menu_factor_Y,color);
|
||||
|
||||
Update_rect(start_x,start_y,(Menu_palette_cell_width+1)*Menu_factor_X,Menu_factor_Y*(cell_height+1));
|
||||
Update_rect(start_x,start_y,(Menu_palette_cell_width+1)*Menu_factor_X,cell_height + Menu_factor_Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -253,14 +253,14 @@ void Frame_menu_color(byte id)
|
||||
if (color==MC_Black)
|
||||
{
|
||||
Block(start_x,start_y,Menu_palette_cell_width*Menu_factor_X,
|
||||
cell_height*Menu_factor_Y,id);
|
||||
cell_height,id);
|
||||
|
||||
Update_rect(start_x,start_y,Menu_palette_cell_width*Menu_factor_X,cell_height*Menu_factor_Y);
|
||||
Update_rect(start_x,start_y,Menu_palette_cell_width*Menu_factor_X,cell_height);
|
||||
}
|
||||
else
|
||||
{
|
||||
end_x=Menu_palette_cell_width-1;
|
||||
end_y=cell_height-1;
|
||||
end_y=cell_height/Menu_factor_Y-1;
|
||||
|
||||
// Top line
|
||||
for (index=0; index<=end_x; index++)
|
||||
@ -283,7 +283,7 @@ void Frame_menu_color(byte id)
|
||||
Menu_factor_X,Menu_factor_Y,
|
||||
((index+end_y)&1)?color:MC_Black);
|
||||
|
||||
Update_rect(start_x*Menu_factor_X,start_y*Menu_factor_Y,Menu_palette_cell_width*Menu_factor_X,Menu_Y+Menu_factor_Y*cell_height);
|
||||
Update_rect(start_x*Menu_factor_X,start_y*Menu_factor_Y,Menu_palette_cell_width*Menu_factor_X,Menu_Y+cell_height);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -294,7 +294,7 @@ void Frame_menu_color(byte id)
|
||||
void Display_menu_palette(void)
|
||||
{
|
||||
int color;
|
||||
byte cell_height=(Menu_height-11)/Menu_cells_Y;
|
||||
byte cell_height=(Menu_bars[main_bar].height)*Menu_factor_Y/Menu_cells_Y;
|
||||
// width: Menu_palette_cell_width
|
||||
|
||||
if (Menu_is_visible)
|
||||
@ -306,14 +306,14 @@ void Display_menu_palette(void)
|
||||
Block(Palette_cell_X(color),
|
||||
Palette_cell_Y(color),
|
||||
(Menu_palette_cell_width-1)*Menu_factor_X,
|
||||
(cell_height-1)*Menu_factor_Y,
|
||||
cell_height-Menu_factor_Y,
|
||||
color);
|
||||
else
|
||||
for (color=First_color_in_palette;color<256&&color-First_color_in_palette<Menu_cells_X*Menu_cells_Y;color++)
|
||||
Block(Palette_cell_X(color),
|
||||
Palette_cell_Y(color),
|
||||
Menu_palette_cell_width*Menu_factor_X,
|
||||
cell_height*Menu_factor_Y,
|
||||
cell_height,
|
||||
color);
|
||||
|
||||
Frame_menu_color(Back_color);
|
||||
@ -440,6 +440,13 @@ void Display_menu(void)
|
||||
// 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_menu_palette();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user