diff --git a/src/Makefile b/src/Makefile
index a722f7bf..51607b4a 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -203,7 +203,8 @@ endif
LOPT = $(shell sdl-config --libs) -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) -lfreetype -lbe $(LUALOPT)
CC = gcc
#Append the gcc kind to the objdir (gcc2 or gcc4) to avoid conflicts when switching from one to other.
- OBJDIR = ../obj/haiku
+ OBJKIND = $(shell gcc -dumpversion)
+ OBJDIR = ../obj/haiku/$(OBJKIND)
ZIP = zip
else
@@ -286,8 +287,8 @@ endif
LUACOPT =
LUALOPT =
else
- LUACOPT = `pkg-config lua --cflags --silence-errors ||pkg-config lua5.1 --cflags --silence-errors ||pkg-config lua-5.1 --cflags`
- LUALOPT = `pkg-config lua --libs --silence-errors ||pkg-config lua5.1 --libs --silence-errors ||pkg-config lua-5.1 --libs`
+ LUACOPT = $(shell pkg-config lua --cflags --silence-errors ||pkg-config lua5.1 --cflags --silence-errors ||pkg-config lua-5.1 --cflags)
+ LUALOPT = $(shell pkg-config lua --libs --silence-errors ||pkg-config lua5.1 --libs --silence-errors ||pkg-config lua-5.1 --libs)
endif
endif
@@ -358,8 +359,8 @@ endif
# Compiles a regular linux executable for the native platform
BIN = ../bin/grafx2
- COPT = -W -Wall -Wdeclaration-after-statement -std=c99 -c -g `sdl-config --cflags` $(TTFCOPT) $(LUACOPT) $(JOYCOPT) -O$(OPTIM) `pkg-config --cflags libpng`
- LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT) `pkg-config --libs libpng` $(LUALOPT) -lm
+ COPT = -W -Wall -Wdeclaration-after-statement -std=c99 -c -g $(shell sdl-config --cflags) $(TTFCOPT) $(LUACOPT) $(JOYCOPT) -O$(OPTIM) $(shell pkg-config --cflags libpng) -D_XOPEN_SOURCE=700
+ LOPT = $(shell sdl-config --libs) -lSDL_image $(TTFLOPT) $(shell pkg-config --libs libpng) $(LUALOPT) -lm
CC = gcc
OBJDIR = ../obj/unix
FCLOPT = -lfontconfig
@@ -581,7 +582,7 @@ $(OBJDIR)/winres.o : gfx2.ico
# Compile the C++ file needed in Haiku to use the API
$(OBJDIR)/haiku.o : haiku.cpp
- g++ -c haiku.cpp -o $(OBJDIR)/haiku.o
+ g++ -c haiku.cpp -o $(OBJDIR)/haiku.o $(COPT) -Wno-multichar
clean :
$(DELCOMMAND) $(OBJ)
diff --git a/src/buttons.c b/src/buttons.c
index 4ab65748..743179ce 100644
--- a/src/buttons.c
+++ b/src/buttons.c
@@ -157,9 +157,7 @@ void Button_Message_initial(void)
Open_window(260,172,str);
Window_display_frame_in(10,20,239,62);
- Block(Window_pos_X+(Menu_factor_X*11),
- Window_pos_Y+(Menu_factor_Y*21),
- Menu_factor_X*237,Menu_factor_Y*60,MC_Black);
+ Window_rectangle(11,21,237,60,MC_Black);
for (y=23,offs_y=0; y<79; offs_y+=231,y++)
for (x=14,x_pos=0; x_pos<231; x_pos++,x++)
Pixel_in_window(x,y,Gfx->Logo_grafx2[offs_y+x_pos]);
@@ -1852,11 +1850,8 @@ void Check_mode_button(short x_pos, short y_pos, byte state)
case 2 : color=MC_Dark; break;
default: color=MC_Black;
}
- Block(Window_pos_X+Menu_factor_X*x_pos,Window_pos_Y+Menu_factor_Y*y_pos,
- Menu_factor_X*9,Menu_factor_Y*3,color);
-
- Update_rect(Window_pos_X+Menu_factor_X*x_pos,Window_pos_Y+Menu_factor_Y*y_pos,
- Menu_factor_X*9,Menu_factor_Y*3);
+ Window_rectangle(x_pos, y_pos, 9, 3, color);
+ Update_window_area(x_pos, y_pos,9,3);
}
/// Number of video modes to display in the resolution menu
@@ -2422,15 +2417,9 @@ void Draw_button_gradient_style(short x_pos,short y_pos,int technique)
// On commence par afficher les 2 côtés qui constituent le dégradé de base:
// Côté gauche (noir)
- Block(Window_pos_X+((x_pos+2)*Menu_factor_X),
- Window_pos_Y+((y_pos+2)*Menu_factor_Y),
- Menu_factor_X*6,
- Menu_factor_Y*10,MC_Black);
+ Window_rectangle(x_pos+2, y_pos+2, 6, 10, MC_Black);
// Côté droit (blanc)
- Block(Window_pos_X+((x_pos+8)*Menu_factor_X),
- Window_pos_Y+((y_pos+2)*Menu_factor_Y),
- Menu_factor_X*5,
- Menu_factor_Y*10,MC_White);
+ Window_rectangle(x_pos+8, y_pos+2, 5, 10, MC_White);
switch(technique)
{
@@ -2469,8 +2458,7 @@ void Draw_button_gradient_style(short x_pos,short y_pos,int technique)
}
}
- Update_rect(Window_pos_X+((x_pos+2)*Menu_factor_X),Window_pos_Y+((y_pos+2)*Menu_factor_Y),
- Menu_factor_X*10,Menu_factor_Y*10);
+ Update_window_area(x_pos+2,y_pos+2,10,10);
}
void Load_gradient_data(int index)
@@ -3940,20 +3928,20 @@ void Button_Brush_FX(void)
}
// Dessin des coins et du centre pour les boutons du "brush handle"
// Coin HG
- Block(Window_pos_X+(Menu_factor_X* 77),Window_pos_Y+(Menu_factor_Y* 92),Menu_factor_X*7,Menu_factor_Y,MC_Black);
- Block(Window_pos_X+(Menu_factor_X* 77),Window_pos_Y+(Menu_factor_Y* 92),Menu_factor_X,Menu_factor_Y*7,MC_Black);
+ Window_rectangle(77, 92, 7, 1, MC_Black);
+ Window_rectangle(77, 92, 1, 7, MC_Black);
// Coin HD
- Block(Window_pos_X+(Menu_factor_X*105),Window_pos_Y+(Menu_factor_Y* 92),Menu_factor_X*7,Menu_factor_Y,MC_Black);
- Block(Window_pos_X+(Menu_factor_X*111),Window_pos_Y+(Menu_factor_Y* 92),Menu_factor_X,Menu_factor_Y*7,MC_Black);
+ Window_rectangle(105, 92, 7, 1, MC_Black);
+ Window_rectangle(111, 92, 1, 7, MC_Black);
// Centre
- Block(Window_pos_X+(Menu_factor_X* 91),Window_pos_Y+(Menu_factor_Y*109),Menu_factor_X*7,Menu_factor_Y,MC_Black);
- Block(Window_pos_X+(Menu_factor_X* 94),Window_pos_Y+(Menu_factor_Y*106),Menu_factor_X,Menu_factor_Y*7,MC_Black);
+ Window_rectangle(91, 109, 7, 1, MC_Black);
+ Window_rectangle(94, 106, 1, 7, MC_Black);
// Coin BG
- Block(Window_pos_X+(Menu_factor_X* 77),Window_pos_Y+(Menu_factor_Y*126),Menu_factor_X*7,Menu_factor_Y,MC_Black);
- Block(Window_pos_X+(Menu_factor_X* 77),Window_pos_Y+(Menu_factor_Y*120),Menu_factor_X,Menu_factor_Y*7,MC_Black);
+ Window_rectangle(77, 126, 7, 1, MC_Black);
+ Window_rectangle(77, 120, 1, 7, MC_Black);
// Coin BD
- Block(Window_pos_X+(Menu_factor_X*105),Window_pos_Y+(Menu_factor_Y*126),Menu_factor_X*7,Menu_factor_Y,MC_Black);
- Block(Window_pos_X+(Menu_factor_X*111),Window_pos_Y+(Menu_factor_Y*120),Menu_factor_X,Menu_factor_Y*7,MC_Black);
+ Window_rectangle(105, 126, 7, 1, MC_Black);
+ Window_rectangle(111, 120, 1, 7, MC_Black);
Update_window_area(0,0,Window_width, Window_height);
@@ -4105,9 +4093,9 @@ void Refresh_airbrush_settings(byte selected_color, byte update_slider)
Num2str(Airbrush_multi_flow[selected_color],str,2);
Print_in_window(196,130,str,MC_Black,MC_Light);
- Update_rect(Window_pos_X+(Menu_factor_X*(Window_palette_button_list->Pos_X+4+(selected_color >> 4)*10)),
- Window_pos_Y+(Menu_factor_Y*(Window_palette_button_list->Pos_Y+3+(selected_color & 15)* 5)),
- Menu_factor_X<<1,Menu_factor_Y*5);
+ Update_window_area(Window_palette_button_list->Pos_X+4+(selected_color >> 4)*10,
+ Window_palette_button_list->Pos_Y+3+(selected_color & 15)* 5,
+ 2,5);
}
@@ -4254,7 +4242,7 @@ void Button_Airbrush_menu(void)
Print_in_window(50,151," Mono",MC_Black,MC_Light);
else
Print_in_window(50,151,"Multi",MC_Black,MC_Light);
- Update_rect(Window_pos_X+50*Menu_factor_X,Window_pos_Y+151*Menu_factor_Y,5*8*Menu_factor_X,8*Menu_factor_Y);
+ Update_window_area(50,151,5*8,8);
Display_cursor();
break;
@@ -4513,8 +4501,7 @@ void Display_effect_sprite(int sprite_number, short start_x, short start_y)
void Display_effect_state(short x, short y, char * label, byte state)
{
- Block(Window_pos_X+(x*Menu_factor_X),Window_pos_Y+(y*Menu_factor_Y),
- 12*Menu_factor_X,Menu_factor_Y<<3,MC_Light);
+ Window_rectangle(x,y,12,8,MC_Light);
Print_in_window(x,y,label,(state)?MC_White:MC_Black,MC_Light);
if (state)
@@ -5058,11 +5045,11 @@ void Button_Text(void)
}
}
- Update_rect(
- Window_pos_X+preview_button->Pos_X*Menu_factor_X,
- Window_pos_Y+preview_button->Pos_Y*Menu_factor_Y,
- preview_button->Width*Menu_factor_X,
- preview_button->Height*Menu_factor_Y);
+ Update_window_area(
+ preview_button->Pos_X,
+ preview_button->Pos_Y,
+ preview_button->Width,
+ preview_button->Height);
}
if (redraw_is_needed || preview_is_needed)
{
diff --git a/src/buttons_effects.c b/src/buttons_effects.c
index 4a727920..17d3ada2 100644
--- a/src/buttons_effects.c
+++ b/src/buttons_effects.c
@@ -296,16 +296,16 @@ void Button_Stencil_mode(void)
void Stencil_tag_color(byte color, byte tag_color)
{
- Block(Window_pos_X+(Menu_factor_X*(Window_palette_button_list->Pos_X+4+(color >> 4)*10)),
- Window_pos_Y+(Menu_factor_Y*(Window_palette_button_list->Pos_Y+3+(color & 15)* 5)),
- Menu_factor_X<<1,Menu_factor_Y*5,tag_color);
+ Window_rectangle(Window_palette_button_list->Pos_X+4+(color >> 4)*10,
+ Window_palette_button_list->Pos_Y+3+(color & 15)* 5,
+ 2,5,tag_color);
}
void Stencil_update_color(byte color)
{
- Update_rect(Window_pos_X+(Menu_factor_X*(Window_palette_button_list->Pos_X+4+(color >> 4)*10)),
- Window_pos_Y+(Menu_factor_Y*(Window_palette_button_list->Pos_Y+3+(color & 15)* 5)),
- Menu_factor_X<<1,Menu_factor_Y*5);
+ Update_window_area(Window_palette_button_list->Pos_X+4+(color >> 4)*10,
+ Window_palette_button_list->Pos_Y+3+(color & 15)* 5,
+ 2,5);
}
void Button_Stencil_menu(void)
@@ -1091,9 +1091,9 @@ void Button_Sieve_menu(void)
Window_set_normal_button( 97,126,11,11,"\033",0,1,SDLK_LEFT|MOD_SHIFT); // 10
Window_set_normal_button(121,126,11,11,"\032",0,1,SDLK_RIGHT|MOD_SHIFT); // 11
button_bg_color = Window_set_normal_button(109,126,11,11,"" ,0,1,SDLK_INSERT); // 12
- Block(Window_pos_X+(Menu_factor_X*(button_bg_color->Pos_X+2)),
- Window_pos_Y+(Menu_factor_Y*(button_bg_color->Pos_Y+2)),
- Menu_factor_X*7, Menu_factor_Y*7, (default_bg_color)?MC_White:MC_Black);
+ Window_rectangle(button_bg_color->Pos_X+2,
+ button_bg_color->Pos_Y+2,
+ 7, 7, (default_bg_color)?MC_White:MC_Black);
Window_set_repeatable_button(109, 69,11,11,"\030",0,1,SDLK_UP); // 13
Window_set_repeatable_button(109, 93,11,11,"\031",0,1,SDLK_DOWN); // 14
@@ -1287,15 +1287,15 @@ void Button_Sieve_menu(void)
case 12 : // Toggle octets insérés
Hide_cursor();
default_bg_color=!default_bg_color;
- Block(Window_pos_X+(Menu_factor_X*(button_bg_color->Pos_X+2)),
- Window_pos_Y+(Menu_factor_Y*(button_bg_color->Pos_Y+2)),
- Menu_factor_X*7, Menu_factor_Y*7, (default_bg_color)?MC_White:MC_Black);
+ Window_rectangle(button_bg_color->Pos_X+2,
+ button_bg_color->Pos_Y+2,
+ 7, 7, (default_bg_color)?MC_White:MC_Black);
Display_cursor();
- Update_rect(
- Window_pos_X+(Menu_factor_X*(button_bg_color->Pos_X+2)),
- Window_pos_Y+(Menu_factor_Y*(button_bg_color->Pos_Y+2)),
- Menu_factor_X*7,
- Menu_factor_Y*7);
+ Update_window_area(
+ button_bg_color->Pos_X+2,
+ button_bg_color->Pos_Y+2,
+ 7,
+ 7);
break;
diff --git a/src/engine.c b/src/engine.c
index 2051eac4..37b97e11 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -1611,7 +1611,7 @@ void Open_window(word width,word height, const char * title)
Save_background(&(Window_background[Windows_open-1]), Window_pos_X, Window_pos_Y, width, height);
// Fenêtre grise
- Block(Window_pos_X+(Menu_factor_X<<1),Window_pos_Y+(Menu_factor_Y<<1),(width-4)*Menu_factor_X,(height-4)*Menu_factor_Y,MC_Window);
+ Window_rectangle(2,2,width-4,height-4,MC_Window);
// -- Frame de la fenêtre ----- --- -- - -
@@ -1620,8 +1620,8 @@ void Open_window(word width,word height, const char * title)
Window_display_frame_out(1,1,width-2,height-2);
// Barre sous le titre
- Block(Window_pos_X+(Menu_factor_X<<3),Window_pos_Y+(11*Menu_factor_Y),(width-16)*Menu_factor_X,Menu_factor_Y,MC_Dark);
- Block(Window_pos_X+(Menu_factor_X<<3),Window_pos_Y+(12*Menu_factor_Y),(width-16)*Menu_factor_X,Menu_factor_Y,MC_White);
+ Window_rectangle(8,11,width-16,1,MC_Dark);
+ Window_rectangle(8,12,width-16,1,MC_White);
title_length = strlen(title);
if (title_length+2 > (size_t)(width/8))
@@ -1715,7 +1715,7 @@ void Close_window(void)
// Restore de ce que la fenêtre cachait
Restore_background(Window_background[Windows_open-1], Window_pos_X, Window_pos_Y, Window_width, Window_height);
Window_background[Windows_open-1]=NULL;
- Update_rect(Window_pos_X,Window_pos_Y,Window_width*Menu_factor_X,Window_height*Menu_factor_Y);
+ Update_window_area(0,0,Window_width,Window_height);
Windows_open--;
}
else
@@ -1774,9 +1774,8 @@ void Window_draw_normal_bouton(word x_pos,word y_pos,word width,word height,
Print_in_window(text_x_pos,text_y_pos,title,title_color,MC_Light);
if (undersc_letter)
- Block(Window_pos_X+((text_x_pos+((undersc_letter-1)<<3))*Menu_factor_X),
- Window_pos_Y+((text_y_pos+8)*Menu_factor_Y),
- Menu_factor_X<<3,Menu_factor_Y,MC_Dark);
+ Window_rectangle(text_x_pos+((undersc_letter-1)<<3),
+ text_y_pos+8,8,1,MC_Dark);
}
@@ -1784,14 +1783,14 @@ void Window_draw_normal_bouton(word x_pos,word y_pos,word width,word height,
void Window_select_normal_button(word x_pos,word y_pos,word width,word height)
{
Window_display_frame_generic(x_pos,y_pos,width,height,MC_Dark,MC_Black,MC_Dark,MC_Dark,MC_Black);
- Update_rect(Window_pos_X+x_pos*Menu_factor_X, Window_pos_Y+y_pos*Menu_factor_Y, width*Menu_factor_X, height*Menu_factor_Y);
+ Update_window_area(x_pos, y_pos, width, height);
}
// -- Button normal désenfoncé dans la fenêtre --
void Window_unselect_normal_button(word x_pos,word y_pos,word width,word height)
{
Window_display_frame_out(x_pos,y_pos,width,height);
- Update_rect(Window_pos_X+x_pos*Menu_factor_X, Window_pos_Y+y_pos*Menu_factor_Y, width*Menu_factor_X, height*Menu_factor_Y);
+ Update_window_area(x_pos, y_pos, width, height);
}
@@ -1801,7 +1800,7 @@ void Window_draw_palette_bouton(word x_pos,word y_pos)
word color;
for (color=0; color<=255; color++)
- Block( Window_pos_X+((((color >> 4)*10)+x_pos+6)*Menu_factor_X),Window_pos_Y+((((color & 15)*5)+y_pos+3)*Menu_factor_Y),Menu_factor_X*5,Menu_factor_Y*5,color);
+ Window_rectangle( ((color >> 4)*10)+x_pos+6,((color & 15)*5)+y_pos+3,5,5,color);
Window_display_frame(x_pos,y_pos,164,86);
}
@@ -1817,11 +1816,11 @@ void Window_clear_tags(void)
word window_x_pos;
//word window_y_pos;
- origin_x=Window_pos_X+(Window_palette_button_list->Pos_X+3)*Menu_factor_X;
- origin_y=Window_pos_Y+(Window_palette_button_list->Pos_Y+3)*Menu_factor_Y;
- for (x_pos=0,window_x_pos=origin_x;x_pos<16;x_pos++,window_x_pos+=(Menu_factor_X*10))
- Block(window_x_pos,origin_y,Menu_factor_X*3,Menu_factor_Y*80,MC_Light);
- Update_rect(origin_x,origin_y,ToWinL(160),ToWinH(80));
+ origin_x=Window_palette_button_list->Pos_X+3;
+ origin_y=Window_palette_button_list->Pos_Y+3;
+ for (x_pos=0,window_x_pos=origin_x;x_pos<16;x_pos++,window_x_pos+=10)
+ Window_rectangle(window_x_pos,origin_y,3,80,MC_Light);
+ Update_window_area(origin_x,origin_y,160,80);
}
@@ -1997,8 +1996,8 @@ void Window_input_content(T_Special_button * button, const char * content)
void Window_clear_input_button(T_Special_button * button)
{
- Block((button->Pos_X+2)*Menu_factor_X+Window_pos_X,(button->Pos_Y+2)*Menu_factor_Y+Window_pos_Y,(button->Width/8)*8*Menu_factor_X,8*Menu_factor_Y,MC_Light);
- Update_rect((button->Pos_X+2)*Menu_factor_X+Window_pos_X,(button->Pos_Y+2)*Menu_factor_Y+Window_pos_Y,button->Width/8*8*Menu_factor_X,8*Menu_factor_Y);
+ Window_rectangle(button->Pos_X+2,button->Pos_Y+2,(button->Width/8)*8,8,MC_Light);
+ Update_window_area(button->Pos_X+2,button->Pos_Y+2,button->Width/8*8,8);
}
@@ -2176,7 +2175,7 @@ T_Dropdown_button * Window_set_dropdown_button(word x_pos,word y_pos,word width,
temp->Next=Window_dropdown_button_list;
Window_dropdown_button_list=temp;
- Window_draw_normal_bouton(x_pos,y_pos,width,height,"",-1,1);
+ Window_draw_normal_bouton(x_pos,y_pos,width,height,"",0,1);
if (label && label[0])
Print_in_window(temp->Pos_X+2,temp->Pos_Y+(temp->Height-7)/2,label,MC_Black,MC_Light);
if (display_arrow)
@@ -2302,9 +2301,7 @@ void Open_popup(word x_pos, word y_pos, word width,word height)
/*
// Fenêtre grise
- Block(Window_pos_X+1*Menu_factor_X,
- Window_pos_Y+1*Menu_factor_Y,
- (width-2)*Menu_factor_X,(height-2)*Menu_factor_Y,MC_Light);
+ Window_rectangle(1,1,width-2,height-2,MC_Light);
// Frame noir puis en relief
Window_display_frame_mono(0,0,width,height,MC_White);
@@ -2389,7 +2386,7 @@ void Close_popup(void)
// Restore de ce que la fenêtre cachait
Restore_background(Window_background[Windows_open-1], Window_pos_X, Window_pos_Y, Window_width, Window_height);
Window_background[Windows_open-1]=NULL;
- Update_rect(Window_pos_X,Window_pos_Y,Window_width*Menu_factor_X,Window_height*Menu_factor_Y);
+ Update_window_area(0,0,Window_width,Window_height);
Windows_open--;
}
else
@@ -2594,7 +2591,7 @@ void Get_color_behind_window(byte * color, byte * click)
}
Restore_background(buffer,Window_pos_X,Window_pos_Y,Window_width,Window_height);
- Update_rect(Window_pos_X, Window_pos_Y, Window_width*Menu_factor_X, Window_height*Menu_factor_Y);
+ Update_window_area(0, 0, Window_width, Window_height);
Cursor_shape=CURSOR_SHAPE_ARROW;
Paintbrush_hidden=b;
Cursor_hidden=cursor_was_hidden;
@@ -2727,7 +2724,7 @@ void Move_window(short dx, short dy)
else
{
// Update pour effacer le rectangle XOR
- Update_rect(Window_pos_X, Window_pos_Y, Window_width*Menu_factor_X, Window_height*Menu_factor_Y);
+ Update_window_area(0, 0, Window_width, Window_height);
}
Cursor_shape=CURSOR_SHAPE_ARROW;
Display_cursor();
@@ -2771,34 +2768,34 @@ T_Dropdown_choice * Dropdown_activate(T_Dropdown_button *button, short off_x, sh
// Dessin de la boite
// Bord gauche
- Block(Window_pos_X,Window_pos_Y,Menu_factor_X,box_height*Menu_factor_Y,MC_Black);
+ Window_rectangle(0,0,1,box_height,MC_Black);
// Frame fonce et blanc
Window_display_frame_out(1,0,button->Dropdown_width-1,box_height);
// Ombre portée
if (SHADOW_BOTTOM)
{
- Block(Window_pos_X+SHADOW_RIGHT*Menu_factor_X,
- Window_pos_Y+box_height*Menu_factor_Y,
- button->Dropdown_width*Menu_factor_X,
- SHADOW_BOTTOM*Menu_factor_Y,
+ Window_rectangle(SHADOW_RIGHT,
+ box_height,
+ button->Dropdown_width,
+ SHADOW_BOTTOM,
MC_Black);
- Block(Window_pos_X,
- Window_pos_Y+box_height*Menu_factor_Y,
- SHADOW_RIGHT*Menu_factor_X,
- Menu_factor_Y,
+ Window_rectangle(0,
+ box_height,
+ SHADOW_RIGHT,
+ 1,
MC_Black);
}
if (SHADOW_RIGHT)
{
- Block(Window_pos_X+button->Dropdown_width*Menu_factor_X,
- Window_pos_Y+SHADOW_BOTTOM*Menu_factor_Y,
- SHADOW_RIGHT*Menu_factor_X,
- (box_height-SHADOW_BOTTOM)*Menu_factor_Y,
+ Window_rectangle(button->Dropdown_width,
+ SHADOW_BOTTOM,
+ SHADOW_RIGHT,
+ box_height-SHADOW_BOTTOM,
MC_Black);
- Block(Window_pos_X+button->Dropdown_width*Menu_factor_X,
- Window_pos_Y,
- Menu_factor_X,
- SHADOW_BOTTOM*Menu_factor_Y,
+ Window_rectangle(button->Dropdown_width,
+ 1,
+ 1,
+ SHADOW_BOTTOM,
MC_Black);
}
@@ -2807,9 +2804,7 @@ T_Dropdown_choice * Dropdown_activate(T_Dropdown_button *button, short off_x, sh
{
old_selected_index = selected_index;
// Fenêtre grise
- Block(Window_pos_X+2*Menu_factor_X,
- Window_pos_Y+1*Menu_factor_Y,
- (button->Dropdown_width-3)*Menu_factor_X,(box_height-2)*Menu_factor_Y,MC_Light);
+ Window_rectangle(2,1,button->Dropdown_width-3,box_height-2,MC_Light);
// Affichage des items
for(item=button->First_item,choice_index=0; item!=NULL; item=item->Next,choice_index++)
{
@@ -2819,9 +2814,8 @@ T_Dropdown_choice * Dropdown_activate(T_Dropdown_button *button, short off_x, sh
{
color_1=MC_White;
color_2=MC_Dark;
- Block(Window_pos_X+3*Menu_factor_X,
- Window_pos_Y+((2+choice_index*8)*Menu_factor_Y),
- (button->Dropdown_width-5)*Menu_factor_X,(8)*Menu_factor_Y,MC_Dark);
+ Window_rectangle(3,2+choice_index*8,
+ (button->Dropdown_width-5),8,MC_Dark);
}
else
{
@@ -2830,7 +2824,7 @@ T_Dropdown_choice * Dropdown_activate(T_Dropdown_button *button, short off_x, sh
}
Print_in_window(3,2+choice_index*8,item->Label,color_1,color_2);
}
- Update_rect(Window_pos_X,Window_pos_Y,Window_width*Menu_factor_X,Window_height*Menu_factor_Y);
+ Update_window_area(0,0,Window_width,Window_height);
Display_cursor();
do
diff --git a/src/help.c b/src/help.c
index 82177161..dfefdb02 100644
--- a/src/help.c
+++ b/src/help.c
@@ -159,9 +159,7 @@ void Window_set_shortcut(int action_id)
Window_set_normal_button(6,111,111,14,"Reset default",0,1,KEY_NONE); // 3
// Titre
- Block(Window_pos_X+(Menu_factor_X*5),
- Window_pos_Y+(Menu_factor_Y*16),
- Menu_factor_X*292,Menu_factor_Y*11,MC_Black);
+ Window_rectangle(5,16,292,11,MC_Black);
Print_in_window(7,18,ConfigKey[config_index].Label,MC_White,MC_Black);
// Zone de description
@@ -184,16 +182,12 @@ void Window_set_shortcut(int action_id)
if (redraw_controls)
{
Hide_cursor();
- Block(Window_pos_X+(Menu_factor_X*32),
- Window_pos_Y+(Menu_factor_Y*33),
- Menu_factor_X*21*8,Menu_factor_Y*8,MC_Light);
+ Window_rectangle(32,33,21*8,8,MC_Light);
Print_in_window_limited(32,33,Key_name(shortcut_ptr[0]),21,MC_Black,MC_Light);
- Block(Window_pos_X+(Menu_factor_X*32),
- Window_pos_Y+(Menu_factor_Y*52),
- Menu_factor_X*21*8,Menu_factor_Y*8,MC_Light);
+ Window_rectangle(32,52,21*8,8,MC_Light);
Print_in_window_limited(32,52,Key_name(shortcut_ptr[1]),21,MC_Black,MC_Light);
- Update_rect(Window_pos_X,Window_pos_Y,302*Menu_factor_X,131*Menu_factor_Y);
+ Update_window_area(0,0,302,131);
Display_cursor();
redraw_controls=0;
@@ -527,9 +521,7 @@ void Window_help(int section, const char *sub_section)
// dessiner de la fenêtre où va défiler le texte
Window_display_frame_in(8,17,274,132);
- Block(Window_pos_X+(Menu_factor_X*9),
- Window_pos_Y+(Menu_factor_Y*18),
- Menu_factor_X*272,Menu_factor_Y*130,MC_Black);
+ Window_rectangle(9, 18, 272, 130, MC_Black);
Window_set_normal_button(266,153,35,14,"Exit",0,1,KEY_ESC); // 1
scroller=Window_set_scroller_button(290,18,130,nb_lines,
@@ -545,7 +537,7 @@ void Window_help(int section, const char *sub_section)
Display_help();
- Update_rect(Window_pos_X,Window_pos_Y,310*Menu_factor_X,175*Menu_factor_Y);
+ Update_window_area(0,0,310,175);
Display_cursor();
@@ -702,9 +694,7 @@ void Button_Stats(void)
// Dessin de la fenetre ou va s'afficher le texte
Window_display_frame_in(8,17,294,132);
- Block(Window_pos_X+(Menu_factor_X*9),
- Window_pos_Y+(Menu_factor_Y*18),
- Menu_factor_X*292,Menu_factor_Y*130,MC_Black);
+ Window_rectangle(9,18,292,130,MC_Black);
Window_set_normal_button(120,153,70,14,"OK",0,1,KEY_ESC); // 1
@@ -879,7 +869,7 @@ void Button_Stats(void)
sprintf(buffer,"%dx%d",Screen_width,Screen_height);
Print_in_window(106,y,buffer,STATS_DATA_COLOR,MC_Black);
- Update_rect(Window_pos_X,Window_pos_Y,Menu_factor_X*310,Menu_factor_Y*174);
+ Update_window_area(0,0,310,174);
Display_cursor();
diff --git a/src/init.c b/src/init.c
index f0cdba10..49e598bb 100644
--- a/src/init.c
+++ b/src/init.c
@@ -23,8 +23,6 @@
along with Grafx2; if not, see
*/
-#define _XOPEN_SOURCE 500
-
// Signal handler: I activate it for the two platforms who certainly
// support them. Feel free to check with others.
#if defined(__WIN32__) || defined(__linux__)
diff --git a/src/input.c b/src/input.c
index 87b03ca8..e5c5d207 100644
--- a/src/input.c
+++ b/src/input.c
@@ -325,7 +325,6 @@ int Handle_mouse_click(SDL_MouseButtonEvent event)
else
Input_new_mouse_K |= 1;
break;
- break;
case SDL_BUTTON_RIGHT:
if (Button_inverter)
@@ -333,7 +332,6 @@ int Handle_mouse_click(SDL_MouseButtonEvent event)
else
Input_new_mouse_K |= 2;
break;
- break;
case SDL_BUTTON_MIDDLE:
Key = KEY_MOUSEMIDDLE|Key_modifiers(SDL_GetModState());
@@ -347,6 +345,7 @@ int Handle_mouse_click(SDL_MouseButtonEvent event)
case SDL_BUTTON_WHEELDOWN:
Key = KEY_MOUSEWHEELDOWN|Key_modifiers(SDL_GetModState());
return 0;
+
default:
return 0;
}
@@ -842,11 +841,11 @@ int Get_input(int sleep_time)
SDL_Event event;
int user_feedback_required = 0; // Flag qui indique si on doit arrêter de traiter les évènements ou si on peut enchainer
+ Color_cycling();
// Commit any pending screen update.
// This is done in this function because it's called after reading
// some user input.
Flush_update();
- Color_cycling();
Key_ANSI = 0;
Key = 0;
Mouse_moved=0;
diff --git a/src/io.c b/src/io.c
index b0d90429..6527a250 100644
--- a/src/io.c
+++ b/src/io.c
@@ -24,8 +24,6 @@
// Fonctions de lecture/ecriture file, gèrent les systèmes big-endian et
// little-endian.
-#define _XOPEN_SOURCE 500
-
#include
#include
#include
@@ -460,7 +458,7 @@ byte Create_lock_file(const char *file_directory)
#else
char lock_filename[MAX_PATH_CHARACTERS];
- #ifdef GCWZERO
+#ifdef GCWZERO
strcpy(lock_filename,"/media/home/.grafx2/");
#else
strcpy(lock_filename,file_directory);
diff --git a/src/readline.c b/src/readline.c
index 0dcf1efd..94c0c0a6 100644
--- a/src/readline.c
+++ b/src/readline.c
@@ -523,10 +523,8 @@ byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_siz
Hide_cursor();
// Effacement de la chaîne
- Block(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),
- visible_size*(Menu_factor_X<<3),(Menu_factor_Y<<3),BACKGROUND_COLOR);
- Update_rect(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),
- visible_size*(Menu_factor_X<<3),(Menu_factor_Y<<3));
+ Window_rectangle(x_pos,y_pos,visible_size<<3,8,BACKGROUND_COLOR);
+ Update_window_area(x_pos,y_pos,visible_size<<3,8);
// Mise à jour des variables se rapportant à la chaîne en fonction de la chaîne initiale
strcpy(initial_string,str);
@@ -544,8 +542,7 @@ byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_siz
display_string[visible_size-1]=RIGHT_TRIANGLE_CHARACTER;
Display_whole_string(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),display_string,position - offset);
- Update_rect(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),
- visible_size*(Menu_factor_X<<3),(Menu_factor_Y<<3));
+ Update_window_area(x_pos,y_pos,visible_size<<3,8);
Flush_update();
if (Mouse_K)
{
@@ -640,8 +637,7 @@ byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_siz
size--;
// Effacement de la chaîne
- Block(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),
- visible_size*(Menu_factor_X<<3),(Menu_factor_Y<<3),BACKGROUND_COLOR);
+ Window_rectangle(x_pos,y_pos,visible_size<<3,8,BACKGROUND_COLOR);
goto affichage;
}
break;
@@ -650,8 +646,7 @@ byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_siz
{
// Effacement de la chaîne
if (position==size)
- Block(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),
- visible_size*(Menu_factor_X<<3),(Menu_factor_Y<<3),BACKGROUND_COLOR);
+ Window_rectangle(x_pos,y_pos,visible_size<<3,8,BACKGROUND_COLOR);
position--;
if (offset > 0 && (position == 0 || position < (offset + 1)))
offset--;
@@ -674,8 +669,7 @@ byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_siz
{
// Effacement de la chaîne
if (position==size)
- Block(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),
- visible_size*(Menu_factor_X<<3),(Menu_factor_Y<<3),BACKGROUND_COLOR);
+ Window_rectangle(x_pos,y_pos,visible_size<<3,8,BACKGROUND_COLOR);
position = 0;
offset = 0;
goto affichage;
@@ -700,8 +694,7 @@ byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_siz
Remove_character(str,position);
size--;
// Effacement de la chaîne
- Block(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),
- visible_size*(Menu_factor_X<<3),(Menu_factor_Y<<3),BACKGROUND_COLOR);
+ Window_rectangle(x_pos,y_pos,visible_size<<3,8,BACKGROUND_COLOR);
goto affichage;
}
break;
@@ -709,8 +702,7 @@ byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_siz
str[0]='\0';
position=offset=0;
// Effacement de la chaîne
- Block(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),
- visible_size*(Menu_factor_X<<3),(Menu_factor_Y<<3),BACKGROUND_COLOR);
+ Window_rectangle(x_pos,y_pos,visible_size<<3,8,BACKGROUND_COLOR);
goto affichage;
case SDLK_RETURN :
break;
@@ -771,8 +763,7 @@ affichage:
}
#endif // defined(__ANDROID__)
// Effacement de la chaîne
- Block(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),
- visible_size*(Menu_factor_X<<3),(Menu_factor_Y<<3),BACKGROUND_COLOR);
+ Window_rectangle(x_pos,y_pos,visible_size<<3,8,BACKGROUND_COLOR);
// On raffiche la chaine correctement
if (input_type==INPUT_TYPE_INTEGER)
{
@@ -801,9 +792,8 @@ affichage:
{
Print_in_window_limited(x_pos,y_pos,str,visible_size,TEXT_COLOR,BACKGROUND_COLOR);
}
- Update_rect(window_x+(x_pos*Menu_factor_X),window_y+(y_pos*Menu_factor_Y),
- visible_size*(Menu_factor_X<<3),(Menu_factor_Y<<3));
-
+ Update_window_area(x_pos,y_pos,visible_size<<3,8);
+
return (input_key==SDLK_RETURN);
}
diff --git a/src/shade.c b/src/shade.c
index bab856db..1ee95ac7 100644
--- a/src/shade.c
+++ b/src/shade.c
@@ -134,10 +134,9 @@ void Shade_draw_grad_ranges(void)
else
{
Window_display_frame_out(224,35,64,48);
- Block(Window_pos_X+(Menu_factor_X*225),Window_pos_Y+(Menu_factor_Y*36),
- Menu_factor_X*62,Menu_factor_Y*46,MC_Light);
+ Window_rectangle(225,36,62,46,MC_Light);
}
- Update_rect(Window_pos_X+(Menu_factor_X*224),Window_pos_Y+(Menu_factor_Y*35),Menu_factor_X*64,Menu_factor_Y*48);
+ Update_window_area(224,35,64,48);
}
@@ -181,7 +180,7 @@ void Tag_shades(word selection_start,word selection_end)
Block(x_pos,y_pos,Menu_factor_X<<2,Menu_factor_Y<<1,MC_Light);
}
}
- Update_rect(Window_pos_X+8*Menu_factor_X,Window_pos_Y+131*Menu_factor_Y,Menu_factor_X*64<<2,Menu_factor_Y*8<<3);
+ Update_window_area(8,131,64<<2,8<<3);
}
@@ -245,17 +244,17 @@ void Display_all_shade(word selection_start1,word selection_end1,
if (Shade_list[Shade_current].List[position]&0x0100) // Vide
{
Window_display_frame_out((column<<2)+8,(line*7)+127,4,4);
- Block(Window_pos_X+(Menu_factor_X*((column<<2)+9)),
- Window_pos_Y+(Menu_factor_Y*((line*7)+128)),
- Menu_factor_X<<1,Menu_factor_Y<<1,MC_Light);
+ Window_rectangle((column<<2)+9,
+ (line*7)+128,
+ 2,2,MC_Light);
}
else // color
- Block(Window_pos_X+(Menu_factor_X*((column<<2)+8)),
- Window_pos_Y+(Menu_factor_Y*((line*7)+127)),
- Menu_factor_X<<2,Menu_factor_Y<<2,
+ Window_rectangle((column<<2)+8,
+ (line*7)+127,
+ 4,4,
Shade_list[Shade_current].List[position]&0xFF);
}
- Update_rect(Window_pos_X+7*Menu_factor_X,Window_pos_Y+126*Menu_factor_Y,Menu_factor_X*((64<<2)+2),Menu_factor_Y*((8<<2)+2));
+ Update_window_area(7,126,(64<<2)+2,(8<<2)+2);
Tag_shades(selection_start2,selection_end2);
Shade_draw_grad_ranges();
Display_selected_cell_color(selection_start2,selection_end2);
@@ -484,8 +483,7 @@ int Menu_shade(void)
// Tracé d'un cadre creux autour du bloc dégradé
Window_display_frame_in(171,26,18,66);
- Block(Window_pos_X+(Menu_factor_X*172),Window_pos_Y+(Menu_factor_Y*27),
- Menu_factor_X<<4,Menu_factor_Y<<6,MC_Black);
+ Window_rectangle(172,27,16,64,MC_Black);
// Tracé d'un cadre creux autour de tous les dégradés
Window_display_frame_in(223,34,66,50);
Shade_draw_grad_ranges();
@@ -526,7 +524,7 @@ int Menu_shade(void)
memcpy(buffer ,Shade_list[Shade_current].List,512*sizeof(word));
memcpy(undo_buffer,Shade_list[Shade_current].List,512*sizeof(word));
- Update_rect(Window_pos_X,Window_pos_Y,Menu_factor_X*310,Menu_factor_Y*190);
+ Update_window_area(0,0,310,190);
Display_cursor();
@@ -1070,7 +1068,7 @@ void Button_Quick_shade_menu(void)
Num2str(Quick_shade_step,str,3);
Window_input_content(step_button,str);
- Update_rect(Window_pos_X,Window_pos_Y,Menu_factor_X*142,Menu_factor_Y*56);
+ Update_window_area(0,0,142,56);
Display_cursor();
diff --git a/src/windows.c b/src/windows.c
index d8e04ef6..af667c4b 100644
--- a/src/windows.c
+++ b/src/windows.c
@@ -108,24 +108,16 @@ void Window_display_frame_generic(word x_pos,word y_pos,word width,word height,
// color_brc=Coin Bas-Droite
{
// Bord haut (sans les extrémités)
- Block(Window_pos_X+((x_pos+1)*Menu_factor_X),
- Window_pos_Y+(y_pos*Menu_factor_Y),
- (width-2)*Menu_factor_X,Menu_factor_Y,color_tl);
+ Window_rectangle(x_pos+1,y_pos,width-2,1,color_tl);
// Bord bas (sans les extrémités)
- Block(Window_pos_X+((x_pos+1)*Menu_factor_X),
- Window_pos_Y+((y_pos+height-1)*Menu_factor_Y),
- (width-2)*Menu_factor_X,Menu_factor_Y,color_br);
+ Window_rectangle(x_pos+1,y_pos+height-1,width-2,1,color_br);
// Bord gauche (sans les extrémités)
- Block(Window_pos_X+(x_pos*Menu_factor_X),
- Window_pos_Y+((y_pos+1)*Menu_factor_Y),
- Menu_factor_X,(height-2)*Menu_factor_Y,color_tl);
+ Window_rectangle(x_pos, y_pos+1,1,height-2,color_tl);
// Bord droite (sans les extrémités)
- Block(Window_pos_X+((x_pos+width-1)*Menu_factor_X),
- Window_pos_Y+((y_pos+1)*Menu_factor_Y),
- Menu_factor_X,(height-2)*Menu_factor_Y,color_br);
+ Window_rectangle(x_pos+width-1,y_pos+1,1,height-2,color_br);
// Coin haut gauche
Pixel_in_window(x_pos,y_pos,color_tlc);
@@ -706,15 +698,12 @@ void Print_char_in_window(short x_pos,short y_pos,const unsigned char c,byte tex
{
short x,y;
byte *pixel;
- x_pos=(x_pos*Menu_factor_X)+Window_pos_X;
- y_pos=(y_pos*Menu_factor_Y)+Window_pos_Y;
// Premier pixel du caractère
pixel=Menu_font + (c<<6);
for (y=0;y<8;y++)
for (x=0;x<8;x++)
- Block(x_pos+(x*Menu_factor_X), y_pos+(y*Menu_factor_Y),
- Menu_factor_X, Menu_factor_Y,
+ Pixel_in_window(x_pos+x, y_pos+y,
(*(pixel++)?text_color:background_color));
}
@@ -735,10 +724,15 @@ void Print_in_window_limited(short x,short y,const char * str,byte size,byte tex
/// Draws a string in a window
void Print_in_window(short x,short y,const char * str,byte text_color,byte background_color)
{
- Print_general((x*Menu_factor_X)+Window_pos_X,
- (y*Menu_factor_Y)+Window_pos_Y,
- str,text_color,background_color);
- Update_rect(x*Menu_factor_X+Window_pos_X,y*Menu_factor_Y+Window_pos_Y,8*Menu_factor_X*strlen(str),8*Menu_factor_Y);
+ short x_pos = x;
+ int index;
+
+ for (index=0;str[index]!='\0';index++)
+ {
+ Print_char_in_window(x,y,str[index],text_color,background_color);
+ x+=8;
+ }
+ Update_window_area(x_pos,y,8*strlen(str),8);
}
// Draws a string in the menu's status bar
@@ -1005,7 +999,7 @@ void Print_counter(short x,short y,const char * str,byte text_color,byte backgro
}
}
}
- Update_rect(Window_pos_X+x*Menu_factor_X,Window_pos_Y+y*Menu_factor_Y,strlen(str)*Menu_factor_X*6,8*Menu_factor_Y);
+ Update_window_area(x,y,strlen(str)*6,8);
}
@@ -1074,7 +1068,7 @@ byte Confirmation_box(char * message)
Window_set_normal_button((window_width/3)-20 ,29+(nb_lines<<3),40,14,"Yes",1,1,SDLK_y); // 1
Window_set_normal_button(((window_width<<1)/3)-20,29+(nb_lines<<3),40,14,"No" ,1,1,SDLK_n); // 2
- Update_rect(Window_pos_X, Window_pos_Y, Window_width*Menu_factor_X, Window_height*Menu_factor_Y);
+ Update_window_area(0, 0, Window_width, Window_height);
Display_cursor();
@@ -1116,8 +1110,7 @@ int Requester_window(char* message, int initial_value)
Window_set_normal_button(60 ,37,40,14,"OK",1,1,SDLK_y); // 2
Window_set_normal_button(130,37,60,14,"Cancel" ,1,1,SDLK_n); // 3
- Update_rect(Window_pos_X, Window_pos_Y, Menu_factor_X * window_width,
- Menu_factor_Y * 60);
+ Update_window_area(0, 0, window_width, 60);
Display_cursor();
do
@@ -1152,7 +1145,7 @@ void Warning_message(char * message)
Print_in_window((window_width>>1)-(strlen(message)<<2),20,message,MC_Black,MC_Light);
Window_set_normal_button((window_width>>1)-20 ,37,40,14,"OK",1,1,SDLK_RETURN); // 1
- Update_rect(Window_pos_X,Window_pos_Y,Menu_factor_X*window_width,Menu_factor_Y*60);
+ Update_window_area(0,0,window_width,60);
Display_cursor();
do