[gnome-system-monitor/wip/newdesign: 7/7] Added outlined text rendering to the CPU color picker



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]