X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fcanvas-simplerect.c;h=fe6e1855be03848cd092b7699c31b3032a8a3f52;hb=5e7d9d30e28e8022661497244ccd43a1f5a836c6;hp=55175c94c3de466bbd24050ecef7451a3ec09f9f;hpb=5c2bc0c03b5d379301c4924e067c50376e9ba11b;p=ardour.git diff --git a/gtk2_ardour/canvas-simplerect.c b/gtk2_ardour/canvas-simplerect.c index 55175c94c3..fe6e1855be 100644 --- a/gtk2_ardour/canvas-simplerect.c +++ b/gtk2_ardour/canvas-simplerect.c @@ -232,13 +232,9 @@ gnome_canvas_simplerect_init (GnomeCanvasSimpleRect *simplerect) static void gnome_canvas_simplerect_destroy (GtkObject *object) { - GnomeCanvasSimpleRect *rect; - g_return_if_fail (object != NULL); g_return_if_fail (GNOME_IS_CANVAS_SIMPLERECT (object)); - rect = GNOME_CANVAS_SIMPLERECT (object); - /* remember, destroy can be run multiple times! */ if (GTK_OBJECT_CLASS (parent_class)->destroy) @@ -323,7 +319,7 @@ gnome_canvas_simplerect_reset_bounds (GnomeCanvasItem *item) double start_x = MIN (item->x2, old_x2); double end_x = MAX (item->x2, old_x2); - gnome_canvas_request_redraw (item->canvas, start_x - 0.5, item->y1, end_x + 1.5, item->y2); + gnome_canvas_request_redraw (item->canvas, start_x - 0.5, item->y1, end_x + 1.5, item->y2 + 0.5); return; } else if (item->x2 == old_x2) { @@ -531,7 +527,6 @@ static void gnome_canvas_simplerect_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags) { GnomeCanvasSimpleRect *simplerect; - unsigned char foo; simplerect = GNOME_CANVAS_SIMPLERECT (item); @@ -550,7 +545,7 @@ gnome_canvas_simplerect_update (GnomeCanvasItem *item, double *affine, ArtSVP *c } UINT_TO_RGBA (simplerect->fill_color, &simplerect->fill_r, &simplerect->fill_g, &simplerect->fill_b, &simplerect->fill_a); - UINT_TO_RGBA (simplerect->outline_color, &simplerect->outline_r, &simplerect->outline_g, &simplerect->outline_b, &foo); + UINT_TO_RGBA (simplerect->outline_color, &simplerect->outline_r, &simplerect->outline_g, &simplerect->outline_b, &simplerect->outline_a); } // this can be useful for debugging/understanding how the canvas redraws @@ -627,28 +622,30 @@ gnome_canvas_simplerect_render (GnomeCanvasItem *item, } - for (i = 0; i < simplerect->outline_pixels; ++i) { - - if (simplerect->outline_what & 0x1) { - if (begin == simplerect->bbox_ulx) { - PAINT_VERT(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, begin + i, sy, ey); - } - } - - if (simplerect->outline_what & 0x2) { - if (end == (simplerect->bbox_lrx - 1)) { - PAINT_VERT(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, end - i, sy, ey + 1); - } - } - - if (simplerect->outline_what & 0x4) { - PAINT_HORIZ(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, begin, end, sy+i); - } - - if (simplerect->outline_what & 0x8) { - PAINT_HORIZ(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, begin, end + 1, ey-i); - } - } + if (simplerect->outline_a > 0) { + for (i = 0; i < simplerect->outline_pixels; ++i) { + + if (simplerect->outline_what & 0x1) { + if (begin == simplerect->bbox_ulx) { + PAINT_VERTA(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, simplerect->outline_a, begin + i, sy, ey); + } + } + + if (simplerect->outline_what & 0x2) { + if (end == (simplerect->bbox_lrx - 1)) { + PAINT_VERTA(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, simplerect->outline_a, end - i, sy, ey + 1); + } + } + + if (simplerect->outline_what & 0x4) { + PAINT_HORIZA(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, simplerect->outline_a, begin, end, sy+i); + } + + if (simplerect->outline_what & 0x8) { + PAINT_HORIZA(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, simplerect->outline_a, begin, end + 1, ey-i); + } + } + } } #else /* SIMPLERECT_FAST_RENDERER */ @@ -660,7 +657,7 @@ gnome_canvas_simplerect_render (GnomeCanvasItem *item, GnomeCanvasSimpleRect *simplerect; int end, begin; int ey, sy; - unsigned int i; + int i; simplerect = GNOME_CANVAS_SIMPLERECT (item); @@ -704,28 +701,30 @@ gnome_canvas_simplerect_render (GnomeCanvasItem *item, #endif } - for (i = 0; i < simplerect->outline_pixels; ++i) { - - if (simplerect->outline_what & 0x1) { - if (begin == simplerect->bbox_ulx) { - PAINT_VERT(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, begin + i, sy, ey); - } - } - - if (simplerect->outline_what & 0x2) { - if (end == (simplerect->bbox_lrx - 1)) { - PAINT_VERT(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, end - i, sy, ey + 1); - } - } - - if (simplerect->outline_what & 0x4) { - PAINT_HORIZ(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, begin, end, sy+i); - } - - if (simplerect->outline_what & 0x8) { - PAINT_HORIZ(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, begin, end + 1, ey-i); - } - } + if (simplerect->outline_a) { + for (i = 0; i < (int) simplerect->outline_pixels; ++i) { + + if (simplerect->outline_what & 0x1) { + if (begin == simplerect->bbox_ulx) { + PAINT_VERTA(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, simplerect->outline_a, begin + i, sy, ey); + } + } + + if (simplerect->outline_what & 0x2) { + if (end == (simplerect->bbox_lrx - 1)) { + PAINT_VERTA(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, simplerect->outline_a, end - i, sy, ey + 1); + } + } + + if (simplerect->outline_what & 0x4) { + PAINT_HORIZA(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, simplerect->outline_a, begin, end, sy+i); + } + + if (simplerect->outline_what & 0x8) { + PAINT_HORIZA(buf, simplerect->outline_r, simplerect->outline_g, simplerect->outline_b, simplerect->outline_a, begin, end + 1, ey-i); + } + } + } } #endif /* SIMPLERECT_FAST_RENDERER */ @@ -844,12 +843,9 @@ gnome_canvas_simplerect_point (GnomeCanvasItem *item, double x, double y, int cx (void) cx; (void) cy; - GnomeCanvasSimpleRect *simplerect; double x1, y1, x2, y2; double dx, dy; - simplerect = GNOME_CANVAS_SIMPLERECT (item); - *actual_item = item; /* Find the bounds for the rectangle plus its outline width */