- if (r > 0.0) {
- double c1 = 0.55228475 * r;
-
- cairo_move_to(c, x+r, y);
- cairo_rel_line_to(c, w-2*r, 0);
- cairo_rel_curve_to(c, c1, 0.0, r, c1, r, r);
- cairo_rel_line_to(c, 0, h-2*r);
- cairo_rel_curve_to(c, 0.0, c1, c1-r, r, -r, r);
- cairo_rel_line_to (c, -w +2*r, 0);
- cairo_rel_curve_to (c, -c1, 0, -r, -c1, -r, -r);
- cairo_rel_line_to (c, 0, -h + 2 * r);
- cairo_rel_curve_to (c, 0, -c1, r - c1, -r, r, -r);
- }
- else
- cairo_rectangle(c, x, y, w, h);
+ PangoRectangle rect_ink, rect;
+
+ Pixmap pmap = XCreatePixmap (server.dsp, server.root_win, panel_height, panel_height, server.depth);
+
+ cairo_surface_t *cs = cairo_xlib_surface_create (server.dsp, pmap, server.visual, panel_height, panel_height);
+ cairo_t *c = cairo_create (cs);
+
+ PangoLayout *layout = pango_cairo_create_layout (c);
+ pango_layout_set_font_description (layout, font);
+ pango_layout_set_text (layout, text, len);
+
+ pango_layout_get_pixel_extents(layout, &rect_ink, &rect);
+ *height_ink = rect_ink.height;
+ *height = rect.height;
+ //printf("dimension : %d - %d\n", rect_ink.height, rect.height);
+
+ g_object_unref (layout);
+ cairo_destroy (c);
+ cairo_surface_destroy (cs);
+ XFreePixmap (server.dsp, pmap);