Fix a drawing bug when selecting/deselecting buttons in the menu.

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1181 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2009-11-14 16:32:48 +00:00
parent a24557ff98
commit 7d1f8cd8da

View File

@ -200,6 +200,8 @@ int Button_under_mouse(void)
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_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
void Draw_menu_button_frame(byte btn_number,byte pressed)
@ -253,75 +255,59 @@ void Draw_menu_button_frame(byte btn_number,byte pressed)
break;
case BUTTON_SHAPE_RECTANGLE :
// On colorie le point haut droit
Pixel_in_menu(end_x,start_y,color_diagonal);
Gfx->Menu_block[start_y][end_x]=color_diagonal;
Pixel_in_menu_and_skin(end_x,start_y,color_diagonal);
// On colorie le point bas gauche
Pixel_in_menu(start_x,end_y,color_diagonal);
Gfx->Menu_block[end_y][start_x]=color_diagonal;
Pixel_in_menu_and_skin(start_x,end_y,color_diagonal);
// On colorie la partie haute
for (x_pos=start_x;x_pos<=end_x-1;x_pos++)
{
Pixel_in_menu(x_pos,start_y,color_top_left);
Gfx->Menu_block[start_y][x_pos]=color_top_left;
Pixel_in_menu_and_skin(x_pos,start_y,color_top_left);
}
for (y_pos=start_y+1;y_pos<=end_y-1;y_pos++)
{
// On colorie la partie gauche
Pixel_in_menu(start_x,y_pos,color_top_left);
Gfx->Menu_block[y_pos][start_x]=color_top_left;
Pixel_in_menu_and_skin(start_x,y_pos,color_top_left);
// On colorie la partie droite
Pixel_in_menu(end_x,y_pos,color_bottom_right);
Gfx->Menu_block[y_pos][end_x]=color_bottom_right;
Pixel_in_menu_and_skin(end_x,y_pos,color_bottom_right);
}
// On colorie la partie basse
for (x_pos=start_x+1;x_pos<=end_x;x_pos++)
{
Pixel_in_menu(x_pos,end_y,color_bottom_right);
Gfx->Menu_block[end_y][x_pos]=color_bottom_right;
Pixel_in_menu_and_skin(x_pos,end_y,color_bottom_right);
}
break;
case BUTTON_SHAPE_TRIANGLE_TOP_LEFT:
// On colorie le point haut droit
Pixel_in_menu(end_x,start_y,color_diagonal);
Gfx->Menu_block[start_y][end_x]=color_diagonal;
Pixel_in_menu_and_skin(end_x,start_y,color_diagonal);
// On colorie le point bas gauche
Pixel_in_menu(start_x,end_y,color_diagonal);
Gfx->Menu_block[end_y][start_x]=color_diagonal;
Pixel_in_menu_and_skin(start_x,end_y,color_diagonal);
// On colorie le coin haut gauche
for (x_pos=0;x_pos<Buttons_Pool[btn_number].Width;x_pos++)
{
Pixel_in_menu(start_x+x_pos,start_y,color_top_left);
Gfx->Menu_block[start_y][start_x+x_pos]=color_top_left;
Pixel_in_menu(start_x,start_y+x_pos,color_top_left);
Gfx->Menu_block[start_y+x_pos][start_x]=color_top_left;
Pixel_in_menu_and_skin(start_x+x_pos,start_y,color_top_left);
Pixel_in_menu_and_skin(start_x,start_y+x_pos,color_top_left);
}
// On colorie la diagonale
for (x_pos=1;x_pos<Buttons_Pool[btn_number].Width;x_pos++)
{
Pixel_in_menu(start_x+x_pos,end_y-x_pos,color_bottom_right);
Gfx->Menu_block[end_y-x_pos][start_x+x_pos]=color_bottom_right;
Pixel_in_menu_and_skin(start_x+x_pos,end_y-x_pos,color_bottom_right);
}
break;
case BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT:
// On colorie le point haut droit
Pixel_in_menu(end_x,start_y,color_diagonal);
Gfx->Menu_block[start_y][end_x]=color_diagonal;
Pixel_in_menu_and_skin(end_x,start_y,color_diagonal);
// On colorie le point bas gauche
Pixel_in_menu(start_x,end_y,color_diagonal);
Gfx->Menu_block[end_y][start_x]=color_diagonal;
Pixel_in_menu_and_skin(start_x,end_y,color_diagonal);
// On colorie la diagonale
for (x_pos=1;x_pos<Buttons_Pool[btn_number].Width;x_pos++)
{
Pixel_in_menu(start_x+x_pos,end_y-x_pos,color_top_left);
Gfx->Menu_block[end_y-x_pos][start_x+x_pos]=color_top_left;
Pixel_in_menu_and_skin(start_x+x_pos,end_y-x_pos,color_top_left);
}
// On colorie le coin bas droite
for (x_pos=0;x_pos<Buttons_Pool[btn_number].Width;x_pos++)
{
Pixel_in_menu(end_x-x_pos,end_y,color_bottom_right);
Gfx->Menu_block[end_y][end_x-x_pos]=color_bottom_right;
Pixel_in_menu(end_x,end_y-x_pos,color_bottom_right);
Gfx->Menu_block[end_y-x_pos][end_x]=color_bottom_right;
Pixel_in_menu_and_skin(end_x-x_pos,end_y,color_bottom_right);
Pixel_in_menu_and_skin(end_x,end_y-x_pos,color_bottom_right);
}
}
if (Menu_is_visible)