value caml_gr_text_size(value str) { int width; value res; caml_gr_check_open(); if (caml_gr_font == NULL) caml_gr_get_font(DEFAULT_FONT); width = XTextWidth(caml_gr_font, String_val(str), string_length(str)); res = alloc_small(2, 0); Field(res, 0) = Val_int(width); Field(res, 1) = Val_int(caml_gr_font->ascent + caml_gr_font->descent); return res; }
value caml_gr_text_size(value str) { CAMLparam1(str); CAMLlocal1(res); int width; caml_gr_check_open(); if (caml_gr_font == NULL) caml_gr_get_font(DEFAULT_FONT); width = XTextWidth(caml_gr_font, String_val(str), caml_string_length(str)); res = caml_alloc_2(0, Val_int(width), Val_int(caml_gr_font->ascent + caml_gr_font->descent)); CAMLreturn(res); }
static void caml_gr_draw_text(char *txt, int len) { if (caml_gr_font == NULL) caml_gr_get_font(DEFAULT_FONT); if (caml_gr_remember_modeflag) XDrawString(caml_gr_display, caml_gr_bstore.win, caml_gr_bstore.gc, caml_gr_x, Bcvt(caml_gr_y) - caml_gr_font->descent + 1, txt, len); if (caml_gr_display_modeflag) { XDrawString(caml_gr_display, caml_gr_window.win, caml_gr_window.gc, caml_gr_x, Wcvt(caml_gr_y) - caml_gr_font->descent + 1, txt, len); XFlush(caml_gr_display); } caml_gr_x += XTextWidth(caml_gr_font, txt, len); }
value caml_gr_set_font(value fontname) { caml_gr_check_open(); caml_gr_get_font(String_val(fontname)); return Val_unit; }