Mercurial > dwindows
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 |