From eb917ce0edd6dc32be067c497e987eeaf74020fe Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Wed, 11 Nov 2009 18:17:42 +0000 Subject: [PATCH] =?UTF-8?q?Fixed=20stupid=20bug=20:=20it=20was=20not=20pos?= =?UTF-8?q?sible=20to=20rotate=20a=20brush=20180=C2=B0=20from=20the=20brus?= =?UTF-8?q?h=20transform=20menu=20if=20hte=20height=20was=20even=20!!=3F?= =?UTF-8?q?=20Also=20use=20proper=20NAN=20value=20if=20it=20exists=20when?= =?UTF-8?q?=20rotating=20a=20brush=20(we=20use=20some=20floats=20there=20a?= =?UTF-8?q?nd=20it's=20better=20to=20do=20it=20this=20way)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1170 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- brush.c | 29 ++++++++++++++++------------- buttons.c | 1 - misc.c | 1 + 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/brush.c b/brush.c index b24451f8..3af71d4f 100644 --- a/brush.c +++ b/brush.c @@ -1540,7 +1540,10 @@ void Distort_brush(short x1, short y1, short x2, short y2, short x3, short y3, s //------------------------- Rotation de la brosse --------------------------- - #define UNDEFINED (-1.0e20F) +#ifndef NAN + #define NAN (-1.0e20F) + #define isnan(x) ((x)==NAN) +#endif float * ScanY_Xt[2]; float * ScanY_Yt[2]; float * ScanY_X[2]; @@ -1600,7 +1603,7 @@ void Interpolate_texture(int start_x,int start_y,int xt1,int yt1, { xt=(((float)((x_pos-start_x)*delta_xt))/(float)delta_x2) + (float)xt1; yt=(((float)((x_pos-start_x)*delta_yt))/(float)delta_x2) + (float)yt1; - if (ScanY_X[0][y_pos]==UNDEFINED) // Gauche non défini + if (isnan(ScanY_X[0][y_pos])) // Gauche non défini { ScanY_X[0][y_pos]=(float)x_pos; ScanY_Xt[0][y_pos]=xt; @@ -1610,7 +1613,7 @@ void Interpolate_texture(int start_x,int start_y,int xt1,int yt1, { if ((float)x_pos>=ScanY_X[0][y_pos]) { - if ((ScanY_X[1][y_pos]==UNDEFINED) // Droit non défini + if (isnan(ScanY_X[1][y_pos]) // Droit non défini || (x_pos>ScanY_X[1][y_pos])) { ScanY_X[1][y_pos]=(float)x_pos; @@ -1620,7 +1623,7 @@ void Interpolate_texture(int start_x,int start_y,int xt1,int yt1, } else { - if (ScanY_X[1][y_pos]==UNDEFINED) // Droit non défini + if (isnan(ScanY_X[1][y_pos])) // Droit non défini { ScanY_X[1][y_pos]=ScanY_X[0][y_pos]; ScanY_Xt[1][y_pos]=ScanY_Xt[0][y_pos]; @@ -1657,7 +1660,7 @@ void Interpolate_texture(int start_x,int start_y,int xt1,int yt1, { xt=(((float)((y_pos-start_y)*delta_xt))/(float)delta_y2) + (float)xt1; yt=(((float)((y_pos-start_y)*delta_yt))/(float)delta_y2) + (float)yt1; - if (ScanY_X[0][y_pos]==UNDEFINED) // Gauche non défini + if (isnan(ScanY_X[0][y_pos])) // Gauche non défini { ScanY_X[0][y_pos]=(float)x_pos; ScanY_Xt[0][y_pos]=xt; @@ -1667,7 +1670,7 @@ void Interpolate_texture(int start_x,int start_y,int xt1,int yt1, { if ((float)x_pos>=ScanY_X[0][y_pos]) { - if ((ScanY_X[1][y_pos]==UNDEFINED) // Droit non défini + if (isnan(ScanY_X[1][y_pos]) // Droit non défini || (x_pos>ScanY_X[1][y_pos])) { ScanY_X[1][y_pos]=(float)x_pos; @@ -1677,7 +1680,7 @@ void Interpolate_texture(int start_x,int start_y,int xt1,int yt1, } else { - if (ScanY_X[1][y_pos]==UNDEFINED) // Droit non défini + if (isnan(ScanY_X[1][y_pos])) // Droit non défini { ScanY_X[1][y_pos]=ScanY_X[0][y_pos]; ScanY_Xt[1][y_pos]=ScanY_Xt[0][y_pos]; @@ -1725,11 +1728,11 @@ void Compute_quad_texture(int x1,int y1,int xt1,int yt1, ScanY_X[0] =(float *)malloc(height*sizeof(float)); ScanY_X[1] =(float *)malloc(height*sizeof(float)); - // Fill_general avec des valeurs égales à UNDEFINED. + // Fill_general avec des valeurs égales à NAN. for (y=0; y>1); Brush_offset_Y=(Brush_height>>1); diff --git a/misc.c b/misc.c index 3cba3c1d..47ac7d80 100644 --- a/misc.c +++ b/misc.c @@ -571,6 +571,7 @@ void Rotate_180_deg_lowlevel(byte *src, short width, short height) return; } + while(ESI < EDI) { // On échange les deux lignes pointées par EDI et