Mercurial > dwindows
diff gtk3/dw.c @ 1634:c3e08322b8f6
Fixed issues drawing arcs on GTK3 and GTK2 for printing.
This issue was seen in the test program with the failure
to draw the bottom right arc. GTK2 printing may require
some other updates after looking at this change.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 29 Mar 2012 05:16:26 +0000 |
parents | ed09531b7f0e |
children | c8a0daa53e49 |
line wrap: on
line diff
--- a/gtk3/dw.c Wed Mar 28 23:11:12 2012 +0000 +++ b/gtk3/dw.c Thu Mar 29 05:16:26 2012 +0000 @@ -7027,13 +7027,8 @@ if(cr) { GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key); - double dx = xorigin - x1; - double dy = yorigin - y1; - double r = sqrt(dx*dx + dy*dy); - double a1 = atan2((y1-yorigin), (x1-xorigin)); - double a2 = atan2((y2-yorigin), (x2-xorigin)); - int width = x2-x1; - float scale = (float)(y2-y1)/(float)width; + int width = abs(x2-x1); + float scale = fabs((float)(y2-y1))/(float)width; if(flags & DW_DRAW_NOAA) cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); @@ -7043,9 +7038,17 @@ if(scale != 1.0) cairo_scale(cr, 1.0, scale); if(flags & DW_DRAW_FULL) - cairo_arc(cr, xorigin, yorigin / scale, (x2-x1)/2, 0, M_PI*2); + cairo_arc(cr, xorigin, yorigin / scale, width/2, 0, M_PI*2); else + { + double dx = xorigin - x1; + double dy = yorigin - y1; + double r = sqrt(dx*dx + dy*dy); + double a1 = atan2((y1-yorigin), (x1-xorigin)); + double a2 = atan2((y2-yorigin), (x2-xorigin)); + cairo_arc(cr, xorigin, yorigin, r, a1, a2); + } if(flags & DW_DRAW_FILL) cairo_fill(cr); cairo_stroke(cr);