[gthumb] optimized the draw of an arc when the radius is 0 or 1
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] optimized the draw of an arc when the radius is 0 or 1
- Date: Fri, 4 Nov 2011 16:59:56 +0000 (UTC)
commit 8a0a0c4df9cc504d76fd0fe948947c3743be180f
Author: Paolo Bacchilega <paobac src gnome org>
Date: Fri Nov 4 17:25:31 2011 +0100
optimized the draw of an arc when the radius is 0 or 1
gthumb/cairo-utils.c | 42 +++++++++++++++++++++++++++++-------------
1 files changed, 29 insertions(+), 13 deletions(-)
---
diff --git a/gthumb/cairo-utils.c b/gthumb/cairo-utils.c
index 3ca83b0..a9b1182 100644
--- a/gthumb/cairo-utils.c
+++ b/gthumb/cairo-utils.c
@@ -588,19 +588,35 @@ _cairo_draw_rounded_box (cairo_t *cr,
double h,
double r)
{
- cairo_move_to (cr, x, y + r);
- if (r > 0)
- cairo_arc (cr, x + r, y + r, r, 1.0 * M_PI, 1.5 * M_PI);
- cairo_rel_line_to (cr, w - (r * 2), 0);
- if (r > 0)
- cairo_arc (cr, x + w - r, y + r, r, 1.5 * M_PI, 2.0 * M_PI);
- cairo_rel_line_to (cr, 0, h - (r * 2));
- if (r > 0)
- cairo_arc (cr, x + w - r, y + h - r, r, 0.0 * M_PI, 0.5 * M_PI);
- cairo_rel_line_to (cr, - (w - (r * 2)), 0);
- if (r > 0)
- cairo_arc (cr, x + r, y + h - r, r, 0.5 * M_PI, 1.0 * M_PI);
- cairo_rel_line_to (cr, 0, - (h - (r * 2)));
+ if (r == 0) {
+ cairo_rectangle (cr, x, y, w, h);
+ }
+ else if (r == 1) {
+ cairo_move_to (cr, x + 1, y);
+ cairo_rel_line_to (cr, w - 2, 0);
+ cairo_rel_line_to (cr, 1, 1);
+ cairo_rel_line_to (cr, 0, h - 2);
+ cairo_rel_line_to (cr, -1, 1);
+ cairo_rel_line_to (cr, - (w - 2), 0);
+ cairo_rel_line_to (cr, -1, -1);
+ cairo_rel_line_to (cr, 0, - (h - 2));
+ cairo_rel_line_to (cr, 1, -1);
+ }
+ else {
+ cairo_move_to (cr, x, y + r);
+ if (r > 0)
+ cairo_arc (cr, x + r, y + r, r, 1.0 * M_PI, 1.5 * M_PI);
+ cairo_rel_line_to (cr, w - (r * 2), 0);
+ if (r > 0)
+ cairo_arc (cr, x + w - r, y + r, r, 1.5 * M_PI, 2.0 * M_PI);
+ cairo_rel_line_to (cr, 0, h - (r * 2));
+ if (r > 0)
+ cairo_arc (cr, x + w - r, y + h - r, r, 0.0 * M_PI, 0.5 * M_PI);
+ cairo_rel_line_to (cr, - (w - (r * 2)), 0);
+ if (r > 0)
+ cairo_arc (cr, x + r, y + h - r, r, 0.5 * M_PI, 1.0 * M_PI);
+ cairo_rel_line_to (cr, 0, - (h - (r * 2)));
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]