comparison gtk/dw.c @ 1284:8cb3650eb242

Fixed ellipses in GTK2.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 31 Oct 2011 06:06:09 +0000
parents 87d6d11b6323
children 5fb54aeba5e0
comparison
equal deleted inserted replaced
1283:87d6d11b6323 1284:8cb3650eb242
8074 cairo_t *cr = NULL; 8074 cairo_t *cr = NULL;
8075 #endif 8075 #endif
8076 double dx = xorigin - x1; 8076 double dx = xorigin - x1;
8077 double dy = yorigin - y1; 8077 double dy = yorigin - y1;
8078 double r = sqrt(dx*dx + dy*dy); 8078 double r = sqrt(dx*dx + dy*dy);
8079 int width = (int)(r*2);
8080 int height = width;
8079 8081
8080 DW_MUTEX_LOCK; 8082 DW_MUTEX_LOCK;
8081 if(handle) 8083 if(handle)
8082 gc = _set_colors(handle->window); 8084 gc = _set_colors(handle->window);
8083 else if(pixmap && pixmap->pixmap) 8085 else if(pixmap && pixmap->pixmap)
8114 8116
8115 if(flags & DW_DRAW_FULL) 8117 if(flags & DW_DRAW_FULL)
8116 { 8118 {
8117 radius1 = 0.0; 8119 radius1 = 0.0;
8118 radius2 = 360.0; 8120 radius2 = 360.0;
8121 width = x2-x1;
8122 height = y2-y1;
8119 } 8123 }
8120 else 8124 else
8121 { 8125 {
8122 radius2 = (x1 - xorigin == 0) ? (y1 - yorigin < 0) ? 90.0 : -90.0 : -atan2((double)y1-yorigin, (double)x1-xorigin) * (180/M_PI); 8126 radius2 = (x1 - xorigin == 0) ? (y1 - yorigin < 0) ? 90.0 : -90.0 : -atan2((double)y1-yorigin, (double)x1-xorigin) * (180/M_PI);
8123 radius1 = (x2 - xorigin == 0) ? (y2 - yorigin < 0) ? 90.0 : -90.0 : -atan2((double)y2-yorigin, (double)x2-xorigin) * (180/M_PI); 8127 radius1 = (x2 - xorigin == 0) ? (y2 - yorigin < 0) ? 90.0 : -90.0 : -atan2((double)y2-yorigin, (double)x2-xorigin) * (180/M_PI);
8125 alpha1 = (int)(radius1 * 64.0); 8129 alpha1 = (int)(radius1 * 64.0);
8126 alpha2 = (int)((radius2 - radius1) * 64.0); 8130 alpha2 = (int)((radius2 - radius1) * 64.0);
8127 while (alpha2 <= 0) alpha2 += 360*64; 8131 while (alpha2 <= 0) alpha2 += 360*64;
8128 while (alpha1 > 360*64) alpha1 -= 360*64; 8132 while (alpha1 > 360*64) alpha1 -= 360*64;
8129 8133
8130 gdk_draw_arc(handle ? handle->window : pixmap->pixmap, gc, FALSE, xorigin-r, yorigin-r, 2*r,2*r, alpha1, alpha2); 8134 gdk_draw_arc(handle ? handle->window : pixmap->pixmap, gc, FALSE, xorigin-(width/2), yorigin-(height/2), width, height, alpha1, alpha2);
8131 gdk_gc_unref(gc); 8135 gdk_gc_unref(gc);
8132 } 8136 }
8133 DW_MUTEX_UNLOCK; 8137 DW_MUTEX_UNLOCK;
8134 } 8138 }
8135 8139