rpms/gnome-settings-daemon/devel osd-rounded-rectangle.patch, NONE, 1.1 osd-visual-refresh.patch, NONE, 1.1 gnome-settings-daemon.spec, 1.126, 1.127

Matthias Clasen mclasen at fedoraproject.org
Fri Sep 25 17:48:56 UTC 2009


Author: mclasen

Update of /cvs/pkgs/rpms/gnome-settings-daemon/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv7066

Modified Files:
	gnome-settings-daemon.spec 
Added Files:
	osd-rounded-rectangle.patch osd-visual-refresh.patch 
Log Message:
Update the OSD visuals


osd-rounded-rectangle.patch:
 gsd-media-keys-window.c |  104 ++++++++++++++++++++++--------------------------
 1 file changed, 49 insertions(+), 55 deletions(-)

--- NEW FILE osd-rounded-rectangle.patch ---
>From 8fe2c6627deb4d783715f3bbd315c65023451775 Mon Sep 17 00:00:00 2001
From: William Jon McCann <jmccann at redhat.com>
Date: Wed, 23 Sep 2009 20:23:31 -0400
Subject: [PATCH 1/2] Use a rounded instead of curved rectangle

---
 plugins/media-keys/gsd-media-keys-window.c |  101 +++++++++++++---------------
 1 files changed, 48 insertions(+), 53 deletions(-)

diff --git a/plugins/media-keys/gsd-media-keys-window.c b/plugins/media-keys/gsd-media-keys-window.c
index 9306b92..89071b8 100644
--- a/plugins/media-keys/gsd-media-keys-window.c
+++ b/plugins/media-keys/gsd-media-keys-window.c
@@ -260,59 +260,54 @@ gsd_media_keys_window_set_volume_level (GsdMediaKeysWindow *window,
 }
 
 static void
-curved_rectangle (cairo_t *cr,
-                  double   x0,
-                  double   y0,
-                  double   width,
-                  double   height,
-                  double   radius)
-{
-        double x1;
-        double y1;
-
-        x1 = x0 + width;
-        y1 = y0 + height;
-
-        if (!width || !height) {
-                return;
-        }
-
-        if (width / 2 < radius) {
-                if (height / 2 < radius) {
-                        cairo_move_to  (cr, x0, (y0 + y1) / 2);
-                        cairo_curve_to (cr, x0 ,y0, x0, y0, (x0 + x1) / 2, y0);
-                        cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2);
-                        cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1);
-                        cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2);
-                } else {
-                        cairo_move_to  (cr, x0, y0 + radius);
-                        cairo_curve_to (cr, x0, y0, x0, y0, (x0 + x1) / 2, y0);
-                        cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
-                        cairo_line_to (cr, x1, y1 - radius);
-                        cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1);
-                        cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius);
-                }
-        } else {
-                if (height / 2 < radius) {
-                        cairo_move_to  (cr, x0, (y0 + y1) / 2);
-                        cairo_curve_to (cr, x0, y0, x0 , y0, x0 + radius, y0);
-                        cairo_line_to (cr, x1 - radius, y0);
-                        cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2);
-                        cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
-                        cairo_line_to (cr, x0 + radius, y1);
-                        cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2);
-                } else {
-                        cairo_move_to  (cr, x0, y0 + radius);
-                        cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
-                        cairo_line_to (cr, x1 - radius, y0);
-                        cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
-                        cairo_line_to (cr, x1, y1 - radius);
-                        cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
-                        cairo_line_to (cr, x0 + radius, y1);
-                        cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius);
-                }
-        }
-
+rounded_rectangle (cairo_t* cr,
+                   gdouble  aspect,
+                   gdouble  x,
+                   gdouble  y,
+                   gdouble  corner_radius,
+                   gdouble  width,
+                   gdouble  height)
+{
+        gdouble radius = corner_radius / aspect;
+
+        cairo_move_to (cr, x + radius, y);
+
+        cairo_line_to (cr,
+                       x + width - radius,
+                       y);
+        cairo_arc (cr,
+                   x + width - radius,
+                   y + radius,
+                   radius,
+                   -90.0f * G_PI / 180.0f,
+                   0.0f * G_PI / 180.0f);
+        cairo_line_to (cr,
+                       x + width,
+                       y + height - radius);
+        cairo_arc (cr,
+                   x + width - radius,
+                   y + height - radius,
+                   radius,
+                   0.0f * G_PI / 180.0f,
+                   90.0f * G_PI / 180.0f);
+        cairo_line_to (cr,
+                       x + radius,
+                       y + height);
+        cairo_arc (cr,
+                   x + radius,
+                   y + height - radius,
+                   radius,
+                   90.0f * G_PI / 180.0f,
+                   180.0f * G_PI / 180.0f);
+        cairo_line_to (cr,
+                       x,
+                       y + radius);
+        cairo_arc (cr,
+                   x + radius,
+                   y + radius,
+                   radius,
+                   180.0f * G_PI / 180.0f,
+                   270.0f * G_PI / 180.0f);
         cairo_close_path (cr);
 }
 
@@ -795,7 +790,7 @@ on_expose_event (GtkWidget          *widget,
         cairo_paint (cr);
 
         /* draw a box */
-        curved_rectangle (cr, 0.5, 0.5, width-1, height-1, height / 10);
+        rounded_rectangle (cr, 1.0, 0.5, 0.5, height / 10, width-1, height-1);
         color = GTK_WIDGET (window)->style->bg [GTK_STATE_NORMAL];
         r = (float)color.red / 65535.0;
         g = (float)color.green / 65535.0;
-- 
1.6.4.4


osd-visual-refresh.patch:
 gsd-media-keys-window.c |   70 ++++++++++++++++++++++++++++++++++--------------
 1 file changed, 50 insertions(+), 20 deletions(-)

--- NEW FILE osd-visual-refresh.patch ---
>From cca9a6d853b4c1366cf965750f0a7c6e9c74e3a1 Mon Sep 17 00:00:00 2001
From: William Jon McCann <jmccann at redhat.com>
Date: Wed, 23 Sep 2009 21:15:45 -0400
Subject: [PATCH 2/2] Improve the media keys overlay design

---
 plugins/media-keys/gsd-media-keys-window.c |   69 ++++++++++++++++++++--------
 1 files changed, 50 insertions(+), 19 deletions(-)

diff --git a/plugins/media-keys/gsd-media-keys-window.c b/plugins/media-keys/gsd-media-keys-window.c
index 89071b8..a31edca 100644
--- a/plugins/media-keys/gsd-media-keys-window.c
+++ b/plugins/media-keys/gsd-media-keys-window.c
@@ -33,7 +33,7 @@
 #define DIALOG_FADE_TIMEOUT 1500 /* timeout before fade starts */
 #define FADE_TIMEOUT 10        /* timeout in ms between each frame of the fade */
 
-#define BG_ALPHA 0.50
+#define BG_ALPHA 0.75
 #define FG_ALPHA 1.00
 
 static void     gsd_media_keys_window_class_init (GsdMediaKeysWindowClass *klass);
@@ -593,6 +593,36 @@ render_speaker (GsdMediaKeysWindow *window,
 }
 
 static void
+color_reverse (const GdkColor *a,
+               GdkColor       *b)
+{
+        gdouble red;
+        gdouble green;
+        gdouble blue;
+        gdouble h;
+        gdouble s;
+        gdouble v;
+
+        red = (gdouble) a->red / 65535.0;
+        green = (gdouble) a->green / 65535.0;
+        blue = (gdouble) a->blue / 65535.0;
+
+        gtk_rgb_to_hsv (red, green, blue, &h, &s, &v);
+
+        v = 0.5 + (0.5 - v);
+        if (v > 1.0)
+                v = 1.0;
+        else if (v < 0.0)
+                v = 0.0;
+
+        gtk_hsv_to_rgb (h, s, v, &red, &green, &blue);
+
+        b->red = red * 65535.0;
+        b->green = green * 65535.0;
+        b->blue = blue * 65535.0;
+}
+
+static void
 draw_volume_boxes (GsdMediaKeysWindow *window,
                    cairo_t            *cr,
                    double              percentage,
@@ -605,35 +635,36 @@ draw_volume_boxes (GsdMediaKeysWindow *window,
         GdkColor color;
         double   r, g, b;
 
-        x1 = width * percentage;
+        x1 = (width - 2) * percentage;
 
         /* bar background */
-        color = GTK_WIDGET (window)->style->dark [GTK_STATE_NORMAL];
+        color_reverse (&GTK_WIDGET (window)->style->dark[GTK_STATE_NORMAL], &color);
         r = (float)color.red / 65535.0;
         g = (float)color.green / 65535.0;
         b = (float)color.blue / 65535.0;
-        cairo_rectangle (cr, x0, y0, width, height);
-        cairo_set_source_rgba (cr, r, g, b, FG_ALPHA);
-        cairo_fill (cr);
+        rounded_rectangle (cr, 1.0, x0, y0, height / 6, width, height);
+        cairo_set_source_rgba (cr, r, g, b, FG_ALPHA / 2);
+        cairo_fill_preserve (cr);
 
         /* bar border */
-        color = GTK_WIDGET (window)->style->dark [GTK_STATE_SELECTED];
+        color_reverse (&GTK_WIDGET (window)->style->light[GTK_STATE_NORMAL], &color);
         r = (float)color.red / 65535.0;
         g = (float)color.green / 65535.0;
         b = (float)color.blue / 65535.0;
-        cairo_rectangle (cr, x0, y0, width, height);
-        cairo_set_source_rgba (cr, r, g, b, FG_ALPHA);
+        cairo_set_source_rgba (cr, r, g, b, FG_ALPHA / 2);
         cairo_set_line_width (cr, 1);
         cairo_stroke (cr);
 
         /* bar progress */
-        color = GTK_WIDGET (window)->style->bg [GTK_STATE_SELECTED];
-        r = (float)color.red / 65535.0;
-        g = (float)color.green / 65535.0;
-        b = (float)color.blue / 65535.0;
-        cairo_rectangle (cr, x0, y0, x1, height);
-        cairo_set_source_rgba (cr, r, g, b, FG_ALPHA);
-        cairo_fill (cr);
+        if (percentage > 0.01) {
+                color = GTK_WIDGET (window)->style->bg[GTK_STATE_NORMAL];
+                r = (float)color.red / 65535.0;
+                g = (float)color.green / 65535.0;
+                b = (float)color.blue / 65535.0;
+                rounded_rectangle (cr, 1.0, x0 + 1, y0 + 1, height / 8, x1, height - 2);
+                cairo_set_source_rgba (cr, r, g, b, FG_ALPHA);
+                cairo_fill (cr);
+        }
 }
 
 static void
@@ -791,18 +822,18 @@ on_expose_event (GtkWidget          *widget,
 
         /* draw a box */
         rounded_rectangle (cr, 1.0, 0.5, 0.5, height / 10, width-1, height-1);
-        color = GTK_WIDGET (window)->style->bg [GTK_STATE_NORMAL];
+        color_reverse (&GTK_WIDGET (window)->style->bg[GTK_STATE_NORMAL], &color);
         r = (float)color.red / 65535.0;
         g = (float)color.green / 65535.0;
         b = (float)color.blue / 65535.0;
         cairo_set_source_rgba (cr, r, g, b, BG_ALPHA);
         cairo_fill_preserve (cr);
 
-        color = GTK_WIDGET (window)->style->fg [GTK_STATE_NORMAL];
+        color_reverse (&GTK_WIDGET (window)->style->text_aa[GTK_STATE_NORMAL], &color);
         r = (float)color.red / 65535.0;
         g = (float)color.green / 65535.0;
         b = (float)color.blue / 65535.0;
-        cairo_set_source_rgba (cr, r, g, b, BG_ALPHA);
+        cairo_set_source_rgba (cr, r, g, b, BG_ALPHA / 2);
         cairo_set_line_width (cr, 1);
         cairo_stroke (cr);
 
-- 
1.6.4.4



Index: gnome-settings-daemon.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gnome-settings-daemon/devel/gnome-settings-daemon.spec,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -p -r1.126 -r1.127
--- gnome-settings-daemon.spec	22 Sep 2009 19:35:04 -0000	1.126
+++ gnome-settings-daemon.spec	25 Sep 2009 17:48:56 -0000	1.127
@@ -1,6 +1,6 @@
 Name:		gnome-settings-daemon
 Version:	2.28.0
-Release:	2%{?dist}
+Release:	3%{?dist}
 Summary:	The daemon sharing settings from GNOME to GTK+/KDE applications
 
 Group:		System Environment/Daemons
@@ -32,6 +32,10 @@ BuildRequires:	gettext intltool
 BuildRequires:  fontconfig-devel
 BuildRequires:	libcanberra-devel
 
+# https://bugzilla.gnome.org/show_bug.cgi?id=596136
+Patch0: osd-rounded-rectangle.patch
+Patch1: osd-visual-refresh.patch
+
 %description
 A daemon to share settings from GNOME to other applications. It also
 handles global keybindings, as well as a number of desktop-wide settings.
@@ -49,6 +53,8 @@ developing applications that use %{name}
 
 %prep
 %setup -q
+%patch0 -p1 -b .osd-rounded-rectangle
+%patch1 -p1 -b .osd-visual-refresh
 
 %build
 %configure --enable-static=no --enable-profiling --disable-esd
@@ -160,6 +166,9 @@ fi
 %{_libdir}/pkgconfig/gnome-settings-daemon.pc
 
 %changelog
+* Fri Sep 25 2009 Matthias Clasen <mclasen at redhat.com> - 2.28.0-3
+- Align the OSD visuals with the notification theme
+
 * Tue Sep 22 2009 Adam Jackson <ajax at redhat.com> 2.28.0-2
 - BuildRequires: libcanberra-devel
 




More information about the fedora-extras-commits mailing list