[gnome-system-monitor/wip/newdesign: 7/7] Added outlined text rendering to the CPU color picker
- From: Robert Roth <robertroth src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-system-monitor/wip/newdesign: 7/7] Added outlined text rendering to the CPU color picker
- Date: Mon, 12 Aug 2013 05:28:55 +0000 (UTC)
commit e3737d89c999438bbbe15c998a745463b3ee6ffe
Author: Robert Roth <robert roth off gmail com>
Date: Mon Aug 12 08:28:30 2013 +0300
Added outlined text rendering to the CPU color picker
src/gsm_color_button.c | 36 ++++++++++++++++++++++++++++++++++--
src/interface.cpp | 2 +-
2 files changed, 35 insertions(+), 3 deletions(-)
---
diff --git a/src/gsm_color_button.c b/src/gsm_color_button.c
index b3e49f7..21e0481 100644
--- a/src/gsm_color_button.c
+++ b/src/gsm_color_button.c
@@ -223,7 +223,11 @@ gsm_color_button_draw (GtkWidget *widget, cairo_t * cr)
gdouble radius, arc_start, arc_end;
gdouble highlight_factor;
gboolean sensitive = gtk_widget_get_sensitive (widget);
-
+ PangoLayout* layout;
+ PangoFontDescription* font_desc;
+ PangoRectangle extents;
+ gchar * caption;
+
if (sensitive && priv->highlight > 0) {
highlight_factor = 0.125 * priv->highlight;
@@ -240,11 +244,13 @@ gsm_color_button_draw (GtkWidget *widget, cairo_t * cr)
gdk_cairo_set_source_rgba (cr, color);
width = gdk_window_get_width (gtk_widget_get_window (widget));
height = gdk_window_get_height(gtk_widget_get_window (widget));
-
+ GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (widget));
+
switch (priv->type)
{
case GSMCP_TYPE_CPU:
//gtk_widget_set_size_request (widget, GSMCP_MIN_WIDTH, GSMCP_MIN_HEIGHT);
+
cairo_paint (cr);
cairo_set_line_width (cr, 1);
cairo_set_source_rgba (cr, 0, 0, 0, 0.5);
@@ -254,6 +260,32 @@ gsm_color_button_draw (GtkWidget *widget, cairo_t * cr)
cairo_set_source_rgba (cr, 1, 1, 1, 0.4);
cairo_rectangle (cr, 1.5, 1.5, width - 3, height - 3);
cairo_stroke (cr);
+ layout = pango_cairo_create_layout (cr);
+ gtk_style_context_get (context, GTK_STATE_FLAG_NORMAL, GTK_STYLE_PROPERTY_FONT, &font_desc, NULL);
+ pango_font_description_set_size (font_desc, 10 * PANGO_SCALE );
+ pango_layout_set_font_description (layout, font_desc);
+ pango_font_description_free (font_desc);
+ pango_layout_set_alignment (layout, PANGO_ALIGN_LEFT);
+ caption = g_strdup_printf ("%.1f%%", priv->fraction * 100);
+ pango_layout_set_text (layout, caption, -1);
+ g_free (caption);
+ pango_layout_get_extents (layout, NULL, &extents);
+ //printf ("%f from %d\n", 1.0 * extents.height / PANGO_SCALE, width);
+
+ cairo_move_to (cr, (width - 1.0 * extents.width / PANGO_SCALE)/2 +0.5 ,
+ 0);
+
+ cairo_set_line_width (cr, 2.5);
+ cairo_set_source_rgba (cr, 0.3, 0.3, 0.3, 1.0);
+ pango_cairo_layout_path (cr, layout);
+ cairo_stroke (cr);
+
+ cairo_move_to (cr, (width - 1.0 * extents.width / PANGO_SCALE)/2,
+ 0);
+ cairo_set_line_width (cr, 1);
+ cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 1.0);
+
+ pango_cairo_show_layout (cr, layout);
break;
case GSMCP_TYPE_PIE:
if (width < 32) // 32px minimum size
diff --git a/src/interface.cpp b/src/interface.cpp
index 3edb9bc..67eb03e 100644
--- a/src/interface.cpp
+++ b/src/interface.cpp
@@ -222,7 +222,7 @@ create_sys_view (GsmApplication *app, GtkBuilder * builder)
g_signal_connect (G_OBJECT (color_picker), "color-set",
G_CALLBACK (cb_cpu_color_changed), GINT_TO_POINTER (i));
gtk_box_pack_start (GTK_BOX (temp_hbox), color_picker, FALSE, TRUE, 0);
- gtk_widget_set_size_request(GTK_WIDGET(color_picker), 24, -1);
+ gtk_widget_set_size_request(GTK_WIDGET(color_picker), 60, -1);
if(app->config.num_cpus == 1) {
label_text = g_strdup (_("CPU"));
} else {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]