# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1320030187 0 # Node ID 87d6d11b63238be9863eedf924177cdfd358555c # Parent 4f0f816f1e7600c1c908b756c6b8de8148f75cef Initial support for ellipses on GTK3 and GTK2 Printing. diff -r 4f0f816f1e76 -r 87d6d11b6323 gtk/dw.c --- a/gtk/dw.c Mon Oct 31 02:39:40 2011 +0000 +++ b/gtk/dw.c Mon Oct 31 03:03:07 2011 +0000 @@ -8090,12 +8090,15 @@ GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); 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; gdk_cairo_set_source_color (cr, foreground); cairo_set_line_width(cr, 1); - /* TODO: Handle ellipses */ + if(scale != 1.0) + cairo_scale(cr, 1.0, scale); if(flags & DW_DRAW_FULL) - cairo_arc(cr, xorigin, yorigin, (x2-x1)/2, 0, M_PI*2); + cairo_arc(cr, xorigin, yorigin / scale, (x2-x1)/2, 0, M_PI*2); else cairo_arc(cr, xorigin, yorigin, r, a1, a2); if(flags & DW_DRAW_FILL) diff -r 4f0f816f1e76 -r 87d6d11b6323 gtk3/dw.c --- a/gtk3/dw.c Mon Oct 31 02:39:40 2011 +0000 +++ b/gtk3/dw.c Mon Oct 31 03:03:07 2011 +0000 @@ -6963,12 +6963,15 @@ 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; gdk_cairo_set_source_color (cr, foreground); cairo_set_line_width(cr, 1); - /* TODO: Handle ellipses */ + if(scale != 1.0) + cairo_scale(cr, 1.0, scale); if(flags & DW_DRAW_FULL) - cairo_arc(cr, xorigin, yorigin, (x2-x1)/2, 0, M_PI*2); + cairo_arc(cr, xorigin, yorigin / scale, (x2-x1)/2, 0, M_PI*2); else cairo_arc(cr, xorigin, yorigin, r, a1, a2); if(flags & DW_DRAW_FILL)