From 8862c1994f89b7d436bffedad4ae943086ccbf38 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Sat, 20 Dec 2008 17:50:54 +0000 Subject: [PATCH] Fixes a SIGSEGV when using line,polyline,polygon etc. with a starting point below the picture (outside). git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@405 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- graph.c | 9 +++++++++ graph.h | 1 + operatio.c | 12 ++++++------ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/graph.c b/graph.c index 56423cf2..21faa94f 100644 --- a/graph.c +++ b/graph.c @@ -800,6 +800,15 @@ void Remplir(byte Couleur_de_remplissage) (Pos_Y<=Limite_Bas) ) Pixel_Preview(Pos_X,Pos_Y,Couleur); } + // Affichage d'un point pour une preview, avec sa propre couleur + void Pixel_figure_Preview_auto(word Pos_X,word Pos_Y) + { + if ( (Pos_X>=Limite_Gauche) && + (Pos_X<=Limite_Droite) && + (Pos_Y>=Limite_Haut) && + (Pos_Y<=Limite_Bas) ) + Pixel_Preview(Pos_X,Pos_Y,Lit_pixel_dans_ecran_courant(Pos_X,Pos_Y)); + } // Affichage d'un point pour une preview en xor void Pixel_figure_Preview_xor(word Pos_X,word Pos_Y,__attribute__((unused)) byte Couleur) diff --git a/graph.h b/graph.h index 189509ac..58a4b35a 100644 --- a/graph.h +++ b/graph.h @@ -50,6 +50,7 @@ void Remplir(byte Couleur_de_remplissage); void Remplacer(byte Nouvelle_couleur); void Pixel_figure_Preview (word Pos_X,word Pos_Y,byte Couleur); +void Pixel_figure_Preview_auto(word Pos_X,word Pos_Y); void Pixel_figure_Preview_xor(word Pos_X,word Pos_Y,byte Couleur); void Pixel_figure_Dans_brosse(word Pos_X,word Pos_Y,byte Couleur); diff --git a/operatio.c b/operatio.c index cb76ba5a..a4e6da4f 100644 --- a/operatio.c +++ b/operatio.c @@ -523,7 +523,7 @@ void Ligne_0_5(void) Pinceau_Forme=Pinceau_Forme_avant_operation; - Pixel_figure_Preview (Debut_X,Debut_Y,Lit_pixel_dans_ecran_courant(Debut_X,Debut_Y)); + Pixel_figure_Preview_auto (Debut_X,Debut_Y); Effacer_ligne_Preview (Debut_X,Debut_Y,Fin_X,Fin_Y); Afficher_pinceau (Debut_X,Debut_Y,Couleur,0); Tracer_ligne_Definitif(Debut_X,Debut_Y,Fin_X,Fin_Y,Couleur); @@ -636,7 +636,7 @@ void K_Ligne_0_6(void) if ((Config.Coords_rel) && (Menu_visible)) Print_dans_menu("X:± 0 Y:± 0",0); - Pixel_figure_Preview (Debut_X,Debut_Y,Lit_pixel_dans_ecran_courant(Debut_X,Debut_Y)); + Pixel_figure_Preview_auto (Debut_X,Debut_Y); Effacer_ligne_Preview (Debut_X,Debut_Y,Fin_X,Fin_Y); Pinceau_Forme=Pinceau_Forme_avant_operation; @@ -695,7 +695,7 @@ void K_Ligne_12_7(void) { // La série de ligne est terminée, il faut donc effacer la dernière // preview de ligne - Pixel_figure_Preview (Debut_X,Debut_Y,Lit_pixel_dans_ecran_courant(Debut_X,Debut_Y)); + Pixel_figure_Preview_auto (Debut_X,Debut_Y); Effacer_ligne_Preview (Debut_X,Debut_Y,Fin_X,Fin_Y); Afficher_curseur(); @@ -2160,7 +2160,7 @@ void Polygone_12_9(void) { // La série de ligne est terminée, il faut donc effacer la dernière // preview de ligne et relier le dernier point avec le premier - Pixel_figure_Preview (Debut_X,Debut_Y,Lit_pixel_dans_ecran_courant(Debut_X,Debut_Y)); + Pixel_figure_Preview_auto (Debut_X,Debut_Y); Effacer_ligne_Preview (Debut_X,Debut_Y,Fin_X,Fin_Y); Operation_POP(&Fin_Y); Operation_POP(&Fin_X); @@ -4561,7 +4561,7 @@ void Lignes_centrees_12_7(void) Pinceau_Forme=Pinceau_Forme_avant_operation; - Pixel_figure_Preview (Debut_X,Debut_Y,Lit_pixel_dans_ecran_courant(Debut_X,Debut_Y)); + Pixel_figure_Preview_auto (Debut_X,Debut_Y); Effacer_ligne_Preview (Debut_X,Debut_Y,Dernier_X,Dernier_Y); Smear_Debut=1; @@ -4589,7 +4589,7 @@ void Lignes_centrees_12_7(void) Pinceau_Forme=Pinceau_Forme_avant_operation; - Pixel_figure_Preview (Debut_X,Debut_Y,Lit_pixel_dans_ecran_courant(Debut_X,Debut_Y)); + Pixel_figure_Preview_auto (Debut_X,Debut_Y); Effacer_ligne_Preview (Debut_X,Debut_Y,Dernier_X,Dernier_Y); if ( (Config.Coords_rel) && (Menu_visible) )