comparison gtk/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 e6a2e6405d30
children c6ebff29a916
comparison
equal deleted inserted replaced
1633:c441c85baa57 1634:c3e08322b8f6
8387 else if(pixmap && pixmap->image) 8387 else if(pixmap && pixmap->image)
8388 cr = cairo_create(pixmap->image); 8388 cr = cairo_create(pixmap->image);
8389 if(cr) 8389 if(cr)
8390 { 8390 {
8391 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); 8391 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key);
8392 double a1 = atan2((y1-yorigin), (x1-xorigin)); 8392 int width = abs(x2-x1);
8393 double a2 = atan2((y2-yorigin), (x2-xorigin)); 8393 float scale = fabs((float)(y2-y1))/(float)width;
8394 int width = x2-x1; 8394
8395 float scale = (float)(y2-y1)/(float)width; 8395 if(flags & DW_DRAW_NOAA)
8396 8396 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
8397
8397 gdk_cairo_set_source_color (cr, foreground); 8398 gdk_cairo_set_source_color (cr, foreground);
8398 cairo_set_line_width(cr, 1); 8399 cairo_set_line_width(cr, 1);
8399 if(scale != 1.0) 8400 if(scale != 1.0)
8400 cairo_scale(cr, 1.0, scale); 8401 cairo_scale(cr, 1.0, scale);
8401 if(flags & DW_DRAW_FULL) 8402 if(flags & DW_DRAW_FULL)
8402 cairo_arc(cr, xorigin, yorigin / scale, (x2-x1)/2, 0, M_PI*2); 8403 cairo_arc(cr, xorigin, yorigin / scale, width/2, 0, M_PI*2);
8403 else 8404 else
8405 {
8406 double dx = xorigin - x1;
8407 double dy = yorigin - y1;
8408 double r = sqrt(dx*dx + dy*dy);
8409 double a1 = atan2((y1-yorigin), (x1-xorigin));
8410 double a2 = atan2((y2-yorigin), (x2-xorigin));
8411
8404 cairo_arc(cr, xorigin, yorigin, r, a1, a2); 8412 cairo_arc(cr, xorigin, yorigin, r, a1, a2);
8413 }
8405 if(flags & DW_DRAW_FILL) 8414 if(flags & DW_DRAW_FILL)
8406 cairo_fill(cr); 8415 cairo_fill(cr);
8407 cairo_stroke(cr); 8416 cairo_stroke(cr);
8408 cairo_destroy(cr); 8417 cairo_destroy(cr);
8409 } 8418 }