summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2008-06-10 04:15:12 -0400
committerSøren Sandmann <sandmann@redhat.com>2008-06-10 04:15:12 -0400
commit62126825e06aae43ebd94d48fccf7807d668dce6 (patch)
tree7fedc65bb3157058969de7bbe0e84577ad8c4d26
parentb8d937f6877a64726d2147478c7409ea0b593582 (diff)
Draw letters on the tools
-rw-r--r--toolbar.c67
1 files changed, 66 insertions, 1 deletions
diff --git a/toolbar.c b/toolbar.c
index 74b7709..e4055bd 100644
--- a/toolbar.c
+++ b/toolbar.c
@@ -1,12 +1,31 @@
#include "toolbar.h"
-#define N_TOOLS 9
#define TOOL_SIZE 72
#define CORNER_SIZE 12
#define BORDER_WIDTH 2
#define MARGIN 6
#define COLOR 1.4 * (0x58 / 255.0), 1.4 * (0x75 / 255.0), 1.4 * (0xA7 / 255.0)
#define STROKE_COLOR (0x58 / 255.0), (0x75 / 255.0), (0xA7 / 255.0)
+#define N_TOOLS (sizeof (tools) / sizeof (tools[0]))
+
+typedef struct
+{
+ const char* name;
+ FooScrollAreaEventFunc event;
+} ToolInfo;
+
+static const ToolInfo tools[] =
+{
+ { "T", NULL },
+ { "R", NULL },
+ { "E", NULL },
+ { "P", NULL },
+ { "L", NULL },
+ { "I", NULL },
+ { "H", NULL },
+ { "V", NULL },
+ { "N", NULL },
+};
struct Toolbar
{
@@ -26,6 +45,50 @@ toolbar_get_width (Toolbar *bar)
return BORDER_WIDTH + TOOL_SIZE;
}
+static void
+layout_set_font (PangoLayout *layout, const char *font)
+{
+ PangoFontDescription *desc = pango_font_description_from_string (font);
+
+ pango_layout_set_font_description (layout, desc);
+
+ pango_font_description_free (desc);
+}
+
+static void
+draw_number (FooScrollArea *area,
+ cairo_t *cr,
+ int number,
+ int x,
+ int y)
+{
+ PangoLayout *layout;
+ char *string = g_strdup_printf (tools[number].name);
+ PangoRectangle logical, ink;
+
+ cairo_save (cr);
+
+ layout = gtk_widget_create_pango_layout (GTK_WIDGET (area), string);
+
+ layout_set_font (layout, "Sans Bold 24");
+
+ pango_layout_get_pixel_extents (layout, &ink, &logical);
+
+ x += (TOOL_SIZE - logical.width) / 2 - logical.x - BORDER_WIDTH / 2;
+ y += (TOOL_SIZE - logical.height) / 2 - logical.y - BORDER_WIDTH / 2;
+
+ cairo_move_to (cr, x, y);
+
+ cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 1.0);
+
+ pango_cairo_show_layout (cr, layout);
+
+ cairo_restore (cr);
+
+ g_object_unref (layout);
+ g_free (string);
+}
+
void
toolbar_paint (Toolbar *bar,
FooScrollArea *scroll_area,
@@ -79,6 +142,8 @@ toolbar_paint (Toolbar *bar,
cairo_stroke (cr);
+ draw_number (scroll_area, cr, i, x, y);
+
cairo_move_to (cr, x, y + TOOL_SIZE + MARGIN);
}
}