From 62126825e06aae43ebd94d48fccf7807d668dce6 Mon Sep 17 00:00:00 2001 From: Søren Sandmann Date: Tue, 10 Jun 2008 04:15:12 -0400 Subject: Draw letters on the tools --- toolbar.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) 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); } } -- cgit v1.2.3