layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n...
authorLaurent Monin <geeqie@norz.org>
Wed, 4 Mar 2009 21:33:19 +0000 (21:33 +0000)
committerLaurent Monin <geeqie@norz.org>
Wed, 4 Mar 2009 21:33:19 +0000 (21:33 +0000)
src/layout_image.c

index bc190f8..e27fad7 100644 (file)
@@ -1482,43 +1482,59 @@ static void layout_image_set_buttons_inactive(LayoutWindow *lw, gint i)
        image_set_scroll_func(lw->split_images[i], layout_image_scroll_cb, lw);
 }
 
+/* Returns the length of an integer */
+static gint num_length(gint num)
+{
+    gint len = 0;
+    if (num < 0) num = -num;
+    while (num)
+       {
+        num /= 10;
+        len++;
+       }
+    return len;
+}
 
 void layout_status_update_pixel_cb(PixbufRenderer *pr, gpointer data)
 {
        LayoutWindow *lw = data;
-       gchar *text;
-       
-       if (!data || !layout_valid(&lw) || !lw->image || lw->options.info_pixel_hidden) return;
+       gint x_pixel, y_pixel;
 
-       if (!lw->image->unknown)
+       if (!data || !layout_valid(&lw) || !lw->image
+           || lw->options.info_pixel_hidden || lw->image->unknown) return;
+       
+       pixbuf_renderer_get_mouse_position(pr, &x_pixel, &y_pixel);
+       
+       if(x_pixel > 0 && y_pixel > 0)
                {
-               gint x_pixel, y_pixel;
+               gint r_mouse, g_mouse, b_mouse;
+               gint width, height;
+               gchar *text;
+               PangoAttrList *attrs;
+                       
+               pixbuf_renderer_get_image_size(pr, &width, &height);
+               if (width < 1 || height < 1) return;
                
-               pixbuf_renderer_get_mouse_position(pr, &x_pixel, &y_pixel);
+               pixbuf_renderer_get_pixel_colors(pr, x_pixel, y_pixel,
+                                                &r_mouse, &g_mouse, &b_mouse);                 
                
-               if(x_pixel > 0 && y_pixel > 0)
-                       {
-                       gint r_mouse, g_mouse, b_mouse;
-                       gint width, height, slen_width, slen_height;
-                       gchar str_temp[10];
-
-                       pixbuf_renderer_get_pixel_colors(pr, x_pixel, y_pixel,
-                                                        &r_mouse, &g_mouse, &b_mouse);                 
-                       pixbuf_renderer_get_image_size(pr, &width, &height);
-                       slen_width = sprintf(str_temp, "%d", width - 1);
-                       slen_height = sprintf(str_temp, "%d", height - 1);
-                       
-                       text = g_strdup_printf(_("<tt>pos(%*d,%*d) rgb(%3d,%3d,%3d)</tt>"), 
-                                                slen_width, x_pixel, slen_height, y_pixel,
-                                                r_mouse, g_mouse, b_mouse);
-                       }
-               else
-                       {
-                       text = g_strdup("");
-                       }
-               gtk_label_set_markup(GTK_LABEL(lw->info_pixel), text);
+               attrs = pango_attr_list_new();
+               pango_attr_list_insert(attrs, pango_attr_family_new("Monospace"));
+               
+               text = g_strdup_printf(_("pos(%*d,%*d) rgb(%3d,%3d,%3d)"),
+                                        num_length(width - 1), x_pixel,
+                                        num_length(height - 1), y_pixel,
+                                        r_mouse, g_mouse, b_mouse);
+               
+               gtk_label_set_text(GTK_LABEL(lw->info_pixel), text);
+               gtk_label_set_attributes(GTK_LABEL(lw->info_pixel), attrs);
+               pango_attr_list_unref(attrs);
                g_free(text);
                }
+       else
+               {
+               gtk_label_set_text(GTK_LABEL(lw->info_pixel), "");
+               }
 }