[gthumb/gthumb-2-14] optimized the draw of an arc when the radius is 0 or 1



commit 7d7db3f2769a6cdaf24ef70e12b4a68c0599f241
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 8ea89f9..d3c0336 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]