f3e6fd3
From 20036534e2828417b75ea3a0cd830266f40f81f6 Mon Sep 17 00:00:00 2001
f3645f2
From: William Jon McCann <jmccann@redhat.com>
f3645f2
Date: Wed, 23 Sep 2009 21:15:45 -0400
f3e6fd3
Subject: [PATCH 3/5] Improve the media keys overlay design
f3645f2
f3e6fd3
https://bugzilla.gnome.org/show_bug.cgi?id=596136
f3645f2
---
f3e6fd3
 plugins/media-keys/gsd-media-keys-window.c |   57 +++++++++++++++++++++------
f3e6fd3
 1 files changed, 44 insertions(+), 13 deletions(-)
f3645f2
f3645f2
diff --git a/plugins/media-keys/gsd-media-keys-window.c b/plugins/media-keys/gsd-media-keys-window.c
f3e6fd3
index cffbe3e..ec69598 100644
f3645f2
--- a/plugins/media-keys/gsd-media-keys-window.c
f3645f2
+++ b/plugins/media-keys/gsd-media-keys-window.c
f3645f2
@@ -33,7 +33,7 @@
f3645f2
 #define DIALOG_FADE_TIMEOUT 1500 /* timeout before fade starts */
f3645f2
 #define FADE_TIMEOUT 10        /* timeout in ms between each frame of the fade */
f3645f2
 
f3645f2
-#define BG_ALPHA 0.50
f3645f2
+#define BG_ALPHA 0.75
f3645f2
 #define FG_ALPHA 1.00
f3645f2
 
f3645f2
 static void     gsd_media_keys_window_class_init (GsdMediaKeysWindowClass *klass);
f3645f2
@@ -593,6 +593,36 @@ render_speaker (GsdMediaKeysWindow *window,
f3645f2
 }
f3645f2
 
f3645f2
 static void
f3645f2
+color_reverse (const GdkColor *a,
f3645f2
+               GdkColor       *b)
f3645f2
+{
f3645f2
+        gdouble red;
f3645f2
+        gdouble green;
f3645f2
+        gdouble blue;
f3645f2
+        gdouble h;
f3645f2
+        gdouble s;
f3645f2
+        gdouble v;
f3645f2
+
f3645f2
+        red = (gdouble) a->red / 65535.0;
f3645f2
+        green = (gdouble) a->green / 65535.0;
f3645f2
+        blue = (gdouble) a->blue / 65535.0;
f3645f2
+
f3645f2
+        gtk_rgb_to_hsv (red, green, blue, &h, &s, &v);
f3645f2
+
f3645f2
+        v = 0.5 + (0.5 - v);
f3645f2
+        if (v > 1.0)
f3645f2
+                v = 1.0;
f3645f2
+        else if (v < 0.0)
f3645f2
+                v = 0.0;
f3645f2
+
f3645f2
+        gtk_hsv_to_rgb (h, s, v, &red, &green, &blue);
f3645f2
+
f3645f2
+        b->red = red * 65535.0;
f3645f2
+        b->green = green * 65535.0;
f3645f2
+        b->blue = blue * 65535.0;
f3645f2
+}
f3645f2
+
f3645f2
+static void
f3645f2
 draw_volume_boxes (GsdMediaKeysWindow *window,
f3645f2
                    cairo_t            *cr,
f3645f2
                    double              percentage,
f3e6fd3
@@ -612,30 +642,31 @@ draw_volume_boxes (GsdMediaKeysWindow *window,
f3e6fd3
         x1 = round ((width - 1) * percentage);
f3645f2
 
f3645f2
         /* bar background */
f3645f2
-        color = GTK_WIDGET (window)->style->dark [GTK_STATE_NORMAL];
f3645f2
+        color_reverse (&GTK_WIDGET (window)->style->dark[GTK_STATE_NORMAL], &color;;
f3645f2
         r = (float)color.red / 65535.0;
f3645f2
         g = (float)color.green / 65535.0;
f3645f2
         b = (float)color.blue / 65535.0;
f3645f2
-        cairo_rectangle (cr, x0, y0, width, height);
f3645f2
-        cairo_set_source_rgba (cr, r, g, b, FG_ALPHA);
f3645f2
-        cairo_fill (cr);
f3645f2
+        rounded_rectangle (cr, 1.0, x0, y0, height / 6, width, height);
f3645f2
+        cairo_set_source_rgba (cr, r, g, b, FG_ALPHA / 2);
f3645f2
+        cairo_fill_preserve (cr);
f3645f2
 
f3645f2
         /* bar border */
f3645f2
-        color = GTK_WIDGET (window)->style->dark [GTK_STATE_SELECTED];
f3645f2
+        color_reverse (&GTK_WIDGET (window)->style->light[GTK_STATE_NORMAL], &color;;
f3645f2
         r = (float)color.red / 65535.0;
f3645f2
         g = (float)color.green / 65535.0;
f3645f2
         b = (float)color.blue / 65535.0;
f3645f2
-        cairo_rectangle (cr, x0, y0, width, height);
f3645f2
-        cairo_set_source_rgba (cr, r, g, b, FG_ALPHA);
f3645f2
+        cairo_set_source_rgba (cr, r, g, b, FG_ALPHA / 2);
f3645f2
         cairo_set_line_width (cr, 1);
f3645f2
         cairo_stroke (cr);
f3645f2
 
f3645f2
         /* bar progress */
f3645f2
-        color = GTK_WIDGET (window)->style->bg [GTK_STATE_SELECTED];
b7674d0
+        if (percentage < 0.01)
b7674d0
+                return;
b7674d0
+        color = GTK_WIDGET (window)->style->bg[GTK_STATE_NORMAL];
b7674d0
         r = (float)color.red / 65535.0;
b7674d0
         g = (float)color.green / 65535.0;
b7674d0
         b = (float)color.blue / 65535.0;
b7674d0
-        cairo_rectangle (cr, x0 + 0.5, y0 + 0.5, x1, height - 1);
f3e6fd3
+        rounded_rectangle (cr, 1.0, x0 + 0.5, y0 + 0.5, height / 6 - 0.5, x1, height - 1);
b7674d0
         cairo_set_source_rgba (cr, r, g, b, FG_ALPHA);
b7674d0
         cairo_fill (cr);
f3645f2
 }
b7674d0
@@ -795,18 +826,18 @@ on_expose_event (GtkWidget          *widget,
f3645f2
 
f3645f2
         /* draw a box */
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
+        color_reverse (&GTK_WIDGET (window)->style->bg[GTK_STATE_NORMAL], &color;;
f3645f2
         r = (float)color.red / 65535.0;
f3645f2
         g = (float)color.green / 65535.0;
f3645f2
         b = (float)color.blue / 65535.0;
f3645f2
         cairo_set_source_rgba (cr, r, g, b, BG_ALPHA);
f3645f2
         cairo_fill_preserve (cr);
f3645f2
 
f3645f2
-        color = GTK_WIDGET (window)->style->fg [GTK_STATE_NORMAL];
f3645f2
+        color_reverse (&GTK_WIDGET (window)->style->text_aa[GTK_STATE_NORMAL], &color;;
f3645f2
         r = (float)color.red / 65535.0;
f3645f2
         g = (float)color.green / 65535.0;
f3645f2
         b = (float)color.blue / 65535.0;
f3645f2
-        cairo_set_source_rgba (cr, r, g, b, BG_ALPHA);
f3645f2
+        cairo_set_source_rgba (cr, r, g, b, BG_ALPHA / 2);
f3645f2
         cairo_set_line_width (cr, 1);
f3645f2
         cairo_stroke (cr);
f3645f2
 
f3645f2
-- 
b7674d0
1.6.5.rc2
f3645f2