diff options
author | Michal Ratajsky <[email protected]> | 2014-11-10 00:37:46 +0100 |
---|---|---|
committer | Michal Ratajsky <[email protected]> | 2014-11-10 00:37:46 +0100 |
commit | c74020f5ef7d269fbff76bc09cdaa633389459fc (patch) | |
tree | 5cf0c1d33ef47040b7f4146b1ec015ef14d4c792 | |
parent | 83839973d9a463296b8b19a310912ef40c1ac7d8 (diff) | |
download | mate-media-c74020f5ef7d269fbff76bc09cdaa633389459fc.tar.bz2 mate-media-c74020f5ef7d269fbff76bc09cdaa633389459fc.tar.xz |
Fix look of the peak meter on GTK3 and use a support function from libmate-desktop instead of custom copy&paste
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | mate-volume-control/gvc-level-bar.c | 18 | ||||
-rw-r--r-- | mate-volume-control/gvc-utils.c | 177 | ||||
-rw-r--r-- | mate-volume-control/gvc-utils.h | 6 |
4 files changed, 11 insertions, 192 deletions
diff --git a/configure.ac b/configure.ac index bc68823..0a0873a 100644 --- a/configure.ac +++ b/configure.ac @@ -36,7 +36,7 @@ GLIB_REQUIRED_VERSION=2.36.0 GIO_REQUIRED_VERSION=2.36.0 CANBERRA_REQUIRED_VERSION=0.13 MATE_MIXER_REQUIRED_VERSION=1.9.1 -MATE_DESKTOP_REQUIRED_VERSION=1.9.1 +MATE_DESKTOP_REQUIRED_VERSION=1.9.3 MATE_PANEL_REQUIRED_VERSION=1.7.0 dnl======================================================================= diff --git a/mate-volume-control/gvc-level-bar.c b/mate-volume-control/gvc-level-bar.c index 029b346..289c47e 100644 --- a/mate-volume-control/gvc-level-bar.c +++ b/mate-volume-control/gvc-level-bar.c @@ -19,14 +19,15 @@ * */ -// XXX on gtk3 the last two squares don't get filled - #include <math.h> #include <glib.h> #include <glib/gi18n.h> #include <glib-object.h> #include <gtk/gtk.h> +#define MATE_DESKTOP_USE_UNSTABLE_API +#include <libmate-desktop/mate-desktop-utils.h> + #include "gvc-level-bar.h" #include "gvc-utils.h" @@ -181,13 +182,10 @@ bar_calc_layout (GvcLevelBar *bar) gtk_style_context_get_background_color (context, GTK_STATE_FLAG_SELECTED, &bar->priv->layout.color_fg); - gtk_style_context_get_color (context, - GTK_STATE_FLAG_NORMAL, - &bar->priv->layout.color_dark); - gvc_color_shade (&bar->priv->layout.color_dark, - &bar->priv->layout.color_dark, - 0.7); + mate_desktop_gtk_style_get_dark_color (context, + GTK_STATE_FLAG_NORMAL, + &bar->priv->layout.color_dark); #else GtkStyle *style; @@ -825,6 +823,10 @@ gvc_level_bar_class_init (GvcLevelBarClass *klass) static void gvc_level_bar_init (GvcLevelBar *bar) { + GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (bar)); + + gtk_style_context_add_class (context, GTK_STYLE_CLASS_LIST_ROW); + bar->priv = GVC_LEVEL_BAR_GET_PRIVATE (bar); bar->priv->peak_adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, diff --git a/mate-volume-control/gvc-utils.c b/mate-volume-control/gvc-utils.c index d45a217..21a583f 100644 --- a/mate-volume-control/gvc-utils.c +++ b/mate-volume-control/gvc-utils.c @@ -156,180 +156,3 @@ gvc_channel_map_to_pretty_string (MateMixerStreamControl *control) return NULL; } - -#if GTK_CHECK_VERSION (3, 0, 0) -/* Taken from gtkstyle.c */ -static void rgb_to_hls (gdouble *r, gdouble *g, gdouble *b); -static void hls_to_rgb (gdouble *h, gdouble *l, gdouble *s); - -void -gvc_color_shade (GdkRGBA *a, GdkRGBA *b, gdouble k) -{ - gdouble red; - gdouble green; - gdouble blue; - - red = (gdouble) a->red / 65535.0; - green = (gdouble) a->green / 65535.0; - blue = (gdouble) a->blue / 65535.0; - - rgb_to_hls (&red, &green, &blue); - - green *= k; - if (green > 1.0) - green = 1.0; - else if (green < 0.0) - green = 0.0; - - blue *= k; - if (blue > 1.0) - blue = 1.0; - else if (blue < 0.0) - blue = 0.0; - - hls_to_rgb (&red, &green, &blue); - - b->red = red * 65535.0; - b->green = green * 65535.0; - b->blue = blue * 65535.0; -} - -static void -rgb_to_hls (gdouble *r, gdouble *g, gdouble *b) -{ - gdouble min; - gdouble max; - gdouble red; - gdouble green; - gdouble blue; - gdouble h, l, s; - gdouble delta; - - red = *r; - green = *g; - blue = *b; - - if (red > green) { - if (red > blue) - max = red; - else - max = blue; - - if (green < blue) - min = green; - else - min = blue; - } else { - if (green > blue) - max = green; - else - max = blue; - - if (red < blue) - min = red; - else - min = blue; - } - - l = (max + min) / 2; - s = 0; - h = 0; - - if (max != min) { - if (l <= 0.5) - s = (max - min) / (max + min); - else - s = (max - min) / (2 - max - min); - - delta = max - min; - if (red == max) - h = (green - blue) / delta; - else if (green == max) - h = 2 + (blue - red) / delta; - else if (blue == max) - h = 4 + (red - green) / delta; - - h *= 60; - if (h < 0.0) - h += 360; - } - - *r = h; - *g = l; - *b = s; -} - -static void -hls_to_rgb (gdouble *h, gdouble *l, gdouble *s) -{ - gdouble hue; - gdouble lightness; - gdouble saturation; - gdouble m1, m2; - gdouble r, g, b; - - lightness = *l; - saturation = *s; - - if (lightness <= 0.5) - m2 = lightness * (1 + saturation); - else - m2 = lightness + saturation - lightness * saturation; - m1 = 2 * lightness - m2; - - if (saturation == 0) { - *h = lightness; - *l = lightness; - *s = lightness; - } else { - hue = *h + 120; - while (hue > 360) - hue -= 360; - while (hue < 0) - hue += 360; - - if (hue < 60) - r = m1 + (m2 - m1) * hue / 60; - else if (hue < 180) - r = m2; - else if (hue < 240) - r = m1 + (m2 - m1) * (240 - hue) / 60; - else - r = m1; - - hue = *h; - while (hue > 360) - hue -= 360; - while (hue < 0) - hue += 360; - - if (hue < 60) - g = m1 + (m2 - m1) * hue / 60; - else if (hue < 180) - g = m2; - else if (hue < 240) - g = m1 + (m2 - m1) * (240 - hue) / 60; - else - g = m1; - - hue = *h - 120; - while (hue > 360) - hue -= 360; - while (hue < 0) - hue += 360; - - if (hue < 60) - b = m1 + (m2 - m1) * hue / 60; - else if (hue < 180) - b = m2; - else if (hue < 240) - b = m1 + (m2 - m1) * (240 - hue) / 60; - else - b = m1; - - *h = r; - *l = g; - *s = b; - } -} -#endif diff --git a/mate-volume-control/gvc-utils.h b/mate-volume-control/gvc-utils.h index 4eca7a7..b39abb0 100644 --- a/mate-volume-control/gvc-utils.h +++ b/mate-volume-control/gvc-utils.h @@ -31,12 +31,6 @@ const gchar *gvc_channel_position_to_pulse_string (MateMixerChannelPosition pos const gchar *gvc_channel_position_to_pretty_string (MateMixerChannelPosition position); const gchar *gvc_channel_map_to_pretty_string (MateMixerStreamControl *control); -#if GTK_CHECK_VERSION (3, 0, 0) -void gvc_color_shade (GdkRGBA *a, - GdkRGBA *b, - gdouble k); -#endif - G_END_DECLS #endif /* __GVC_HELPERS_H */ |