89b8e99
From dab2e6b44c57e14dd373adf04d4530bd5915f582 Mon Sep 17 00:00:00 2001
f3645f2
From: William Jon McCann <jmccann@redhat.com>
f3645f2
Date: Wed, 23 Sep 2009 20:23:31 -0400
89b8e99
Subject: [PATCH 2/3] Use a rounded instead of curved rectangle
f3645f2
f3645f2
---
f3645f2
 plugins/media-keys/gsd-media-keys-window.c |  101 +++++++++++++---------------
f3645f2
 1 files changed, 48 insertions(+), 53 deletions(-)
f3645f2
f3645f2
diff --git a/plugins/media-keys/gsd-media-keys-window.c b/plugins/media-keys/gsd-media-keys-window.c
89b8e99
index f890344..cffbe3e 100644
f3645f2
--- a/plugins/media-keys/gsd-media-keys-window.c
f3645f2
+++ b/plugins/media-keys/gsd-media-keys-window.c
f3645f2
@@ -260,59 +260,54 @@ gsd_media_keys_window_set_volume_level (GsdMediaKeysWindow *window,
f3645f2
 }
f3645f2
 
f3645f2
 static void
f3645f2
-curved_rectangle (cairo_t *cr,
f3645f2
-                  double   x0,
f3645f2
-                  double   y0,
f3645f2
-                  double   width,
f3645f2
-                  double   height,
f3645f2
-                  double   radius)
f3645f2
-{
f3645f2
-        double x1;
f3645f2
-        double y1;
f3645f2
-
f3645f2
-        x1 = x0 + width;
f3645f2
-        y1 = y0 + height;
f3645f2
-
f3645f2
-        if (!width || !height) {
f3645f2
-                return;
f3645f2
-        }
f3645f2
-
f3645f2
-        if (width / 2 < radius) {
f3645f2
-                if (height / 2 < radius) {
f3645f2
-                        cairo_move_to  (cr, x0, (y0 + y1) / 2);
f3645f2
-                        cairo_curve_to (cr, x0 ,y0, x0, y0, (x0 + x1) / 2, y0);
f3645f2
-                        cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2);
f3645f2
-                        cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1);
f3645f2
-                        cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2);
f3645f2
-                } else {
f3645f2
-                        cairo_move_to  (cr, x0, y0 + radius);
f3645f2
-                        cairo_curve_to (cr, x0, y0, x0, y0, (x0 + x1) / 2, y0);
f3645f2
-                        cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
f3645f2
-                        cairo_line_to (cr, x1, y1 - radius);
f3645f2
-                        cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1);
f3645f2
-                        cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius);
f3645f2
-                }
f3645f2
-        } else {
f3645f2
-                if (height / 2 < radius) {
f3645f2
-                        cairo_move_to  (cr, x0, (y0 + y1) / 2);
f3645f2
-                        cairo_curve_to (cr, x0, y0, x0 , y0, x0 + radius, y0);
f3645f2
-                        cairo_line_to (cr, x1 - radius, y0);
f3645f2
-                        cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2);
f3645f2
-                        cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
f3645f2
-                        cairo_line_to (cr, x0 + radius, y1);
f3645f2
-                        cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2);
f3645f2
-                } else {
f3645f2
-                        cairo_move_to  (cr, x0, y0 + radius);
f3645f2
-                        cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
f3645f2
-                        cairo_line_to (cr, x1 - radius, y0);
f3645f2
-                        cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
f3645f2
-                        cairo_line_to (cr, x1, y1 - radius);
f3645f2
-                        cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
f3645f2
-                        cairo_line_to (cr, x0 + radius, y1);
f3645f2
-                        cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius);
f3645f2
-                }
f3645f2
-        }
f3645f2
-
f3645f2
+rounded_rectangle (cairo_t* cr,
f3645f2
+                   gdouble  aspect,
f3645f2
+                   gdouble  x,
f3645f2
+                   gdouble  y,
f3645f2
+                   gdouble  corner_radius,
f3645f2
+                   gdouble  width,
f3645f2
+                   gdouble  height)
f3645f2
+{
f3645f2
+        gdouble radius = corner_radius / aspect;
f3645f2
+
f3645f2
+        cairo_move_to (cr, x + radius, y);
f3645f2
+
f3645f2
+        cairo_line_to (cr,
f3645f2
+                       x + width - radius,
f3645f2
+                       y);
f3645f2
+        cairo_arc (cr,
f3645f2
+                   x + width - radius,
f3645f2
+                   y + radius,
f3645f2
+                   radius,
f3645f2
+                   -90.0f * G_PI / 180.0f,
f3645f2
+                   0.0f * G_PI / 180.0f);
f3645f2
+        cairo_line_to (cr,
f3645f2
+                       x + width,
f3645f2
+                       y + height - radius);
f3645f2
+        cairo_arc (cr,
f3645f2
+                   x + width - radius,
f3645f2
+                   y + height - radius,
f3645f2
+                   radius,
f3645f2
+                   0.0f * G_PI / 180.0f,
f3645f2
+                   90.0f * G_PI / 180.0f);
f3645f2
+        cairo_line_to (cr,
f3645f2
+                       x + radius,
f3645f2
+                       y + height);
f3645f2
+        cairo_arc (cr,
f3645f2
+                   x + radius,
f3645f2
+                   y + height - radius,
f3645f2
+                   radius,
f3645f2
+                   90.0f * G_PI / 180.0f,
f3645f2
+                   180.0f * G_PI / 180.0f);
f3645f2
+        cairo_line_to (cr,
f3645f2
+                       x,
f3645f2
+                       y + radius);
f3645f2
+        cairo_arc (cr,
f3645f2
+                   x + radius,
f3645f2
+                   y + radius,
f3645f2
+                   radius,
f3645f2
+                   180.0f * G_PI / 180.0f,
f3645f2
+                   270.0f * G_PI / 180.0f);
f3645f2
         cairo_close_path (cr);
f3645f2
 }
f3645f2
 
89b8e99
@@ -799,7 +794,7 @@ on_expose_event (GtkWidget          *widget,
f3645f2
         cairo_paint (cr);
f3645f2
 
f3645f2
         /* draw a box */
f3645f2
-        curved_rectangle (cr, 0.5, 0.5, width-1, height-1, height / 10);
f3645f2
+        rounded_rectangle (cr, 1.0, 0.5, 0.5, height / 10, width-1, height-1);
f3645f2
         color = GTK_WIDGET (window)->style->bg [GTK_STATE_NORMAL];
f3645f2
         r = (float)color.red / 65535.0;
f3645f2
         g = (float)color.green / 65535.0;
f3645f2
-- 
89b8e99
1.6.5.rc2
f3645f2