Issue 257: In the Paintbrush selection screen, outline the current brush

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1478 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2010-05-16 14:52:45 +00:00
parent a29c025156
commit f686d8a951
2 changed files with 39 additions and 14 deletions

View File

@ -2719,6 +2719,26 @@ void Button_Unselect_fill(void)
//---------------------------- Menu des pinceaux -----------------------------
/// Checks if the current brush is identical to a preset one.
byte Is_paintbrush(byte index)
{
if (Paintbrush_shape!=Gfx->Paintbrush_type[index] ||
Paintbrush_width!=Gfx->Preset_paintbrush_width[index] ||
Paintbrush_height!=Gfx->Preset_paintbrush_height[index])
return 0;
if (Paintbrush_shape==PAINTBRUSH_SHAPE_MISC)
{
// Check all pixels
int x,y;
for(y=0;y<Paintbrush_height;y++)
for(x=0;x<Paintbrush_width;x++)
if(Paintbrush_sprite[(y*MAX_PAINTBRUSH_SIZE)+x]!=Gfx->Paintbrush_sprite[index][y][x])
return 0;
}
return 1;
}
void Button_Paintbrush_menu(void)
{
short clicked_button;
@ -2736,6 +2756,10 @@ void Button_Paintbrush_menu(void)
x_pos=13+(index%12)*24;
y_pos=27+(index/12)*25;
Window_set_normal_button(x_pos ,y_pos ,20,20,"",0,1,SDLK_LAST);
// Highlight selected brush
if (Is_paintbrush(index))
Window_rectangle(x_pos,y_pos,20,20,MC_White);
Display_paintbrush_in_window(x_pos+2,y_pos+2,index);
}
for (index=0; index<BRUSH_CONTAINER_COLUMNS*BRUSH_CONTAINER_ROWS; index++)

View File

@ -1291,7 +1291,8 @@ void Display_paintbrush_in_window(word x,word y,int number)
for (window_y_pos=0,y_pos=0; y_pos<Gfx->Preset_paintbrush_height[number]; window_y_pos++,y_pos++)
for (window_x_pos=0,x_pos=0; x_pos<Gfx->Preset_paintbrush_width[number]; window_x_pos++,x_pos++)
Block(origin_x+window_x_pos*x_size,origin_y+window_y_pos*y_size,x_size,y_size,(Gfx->Paintbrush_sprite[number][y_pos][x_pos])?MC_Black:MC_Light);
if (Gfx->Paintbrush_sprite[number][y_pos][x_pos])
Block(origin_x+window_x_pos*x_size,origin_y+window_y_pos*y_size,x_size,y_size,MC_Black);
// On n'utilise pas Pixel_in_window() car on ne dessine pas
// forcément avec la même taille de pixel.