comparison 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
comparison
equal deleted inserted replaced
1633:c441c85baa57 1634:c3e08322b8f6
7025 else if(pixmap) 7025 else if(pixmap)
7026 cr = cairo_create(pixmap->image); 7026 cr = cairo_create(pixmap->image);
7027 if(cr) 7027 if(cr)
7028 { 7028 {
7029 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key); 7029 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
7030 double dx = xorigin - x1; 7030 int width = abs(x2-x1);
7031 double dy = yorigin - y1; 7031 float scale = fabs((float)(y2-y1))/(float)width;
7032 double r = sqrt(dx*dx + dy*dy);
7033 double a1 = atan2((y1-yorigin), (x1-xorigin));
7034 double a2 = atan2((y2-yorigin), (x2-xorigin));
7035 int width = x2-x1;
7036 float scale = (float)(y2-y1)/(float)width;
7037 7032
7038 if(flags & DW_DRAW_NOAA) 7033 if(flags & DW_DRAW_NOAA)
7039 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); 7034 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
7040 7035
7041 gdk_cairo_set_source_rgba(cr, foreground); 7036 gdk_cairo_set_source_rgba(cr, foreground);
7042 cairo_set_line_width(cr, 1); 7037 cairo_set_line_width(cr, 1);
7043 if(scale != 1.0) 7038 if(scale != 1.0)
7044 cairo_scale(cr, 1.0, scale); 7039 cairo_scale(cr, 1.0, scale);
7045 if(flags & DW_DRAW_FULL) 7040 if(flags & DW_DRAW_FULL)
7046 cairo_arc(cr, xorigin, yorigin / scale, (x2-x1)/2, 0, M_PI*2); 7041 cairo_arc(cr, xorigin, yorigin / scale, width/2, 0, M_PI*2);
7047 else 7042 else
7043 {
7044 double dx = xorigin - x1;
7045 double dy = yorigin - y1;
7046 double r = sqrt(dx*dx + dy*dy);
7047 double a1 = atan2((y1-yorigin), (x1-xorigin));
7048 double a2 = atan2((y2-yorigin), (x2-xorigin));
7049
7048 cairo_arc(cr, xorigin, yorigin, r, a1, a2); 7050 cairo_arc(cr, xorigin, yorigin, r, a1, a2);
7051 }
7049 if(flags & DW_DRAW_FILL) 7052 if(flags & DW_DRAW_FILL)
7050 cairo_fill(cr); 7053 cairo_fill(cr);
7051 cairo_stroke(cr); 7054 cairo_stroke(cr);
7052 cairo_destroy(cr); 7055 cairo_destroy(cr);
7053 } 7056 }