void vrule(ucg_t *ucg, ucg_int_t x, ucg_int_t y, ucg_int_t len, int is_right) { char s[10]; ucg_int_t o = rule_offset; ucg_int_t w; prepare_measure(ucg); sprintf(s, "%d", len); ucg_SetFontPosBaseline(ucg); w = ucg_GetStrWidth(ucg, s); if ( is_right ) { ucg_DrawVLine(ucg, x+o, y, len); ucg_DrawHLine(ucg, x-1+o, y, 3); ucg_DrawHLine(ucg, x-1+o, y+len-1, 3); ucg_SetFontPosBottom(ucg); ucg_DrawString(ucg, x+o-1, y + len/2 - w/2 + 1, 1, s); } else { ucg_DrawVLine(ucg, x-o, y, len); ucg_DrawHLine(ucg, x-1-o, y, 3); ucg_DrawHLine(ucg, x-1-o, y+len-1, 3); ucg_SetFontPosBottom(ucg); ucg_DrawString(ucg, x-o+1, y + len - ( len/2 - w/2 + 1), 3, s); } }
void draw_text_ascent_descent(ucg_t *ucg) { prepare_picture(ucg); ucg_SetFont(ucg, ucg_font_ncenB24_tf); ucg_SetFontPosBaseline(ucg); ucg_SetColor(ucg, 0, 0, 0, 255); /* draw blue "baseline" */ ucg_DrawHLine(ucg, 42+ox, 30, ucg_GetStrWidth(ucg, "Ucg")); ucg_SetColor(ucg, 0, 255, 255, 255); /* draw white "Ucg" */ ucg_DrawString(ucg, 42+ox, 30, 0, "Ucg"); pos(ucg, 42+ox, 30, 0); ucg_SetFont(ucg, ucg_font_ncenB24_tf); vrule(ucg, 42+ox+ucg_GetStrWidth(ucg, "Ucg"), 30-ucg_GetFontAscent(ucg), ucg_GetFontAscent(ucg), 1); ucg_SetFont(ucg, ucg_font_ncenB24_tf); vrule(ucg, 42+ox+ucg_GetStrWidth(ucg, "Ucg"), 30, -ucg_GetFontDescent(ucg), 1); save_picture(ucg, "draw_text_ascent_descent"); }
void draw_text_center(ucg_t *ucg) { prepare_picture(ucg); ucg_SetFont(ucg, ucg_font_ncenB18_tf); ucg_SetFontPosCenter(ucg); ucg_SetColor(ucg, 0, 0, 0, 255); /* draw blue "baseline" */ ucg_DrawHLine(ucg, 45+ox, 30, ucg_GetStrWidth(ucg, "Ucg")); ucg_SetColor(ucg, 0, 255, 255, 255); /* draw white "Ucg" */ ucg_DrawString(ucg, 45+ox, 30, 0, "Ucg"); pos(ucg, 45+ox, 30, 0); save_picture(ucg, "draw_text_center"); }
// Lua: width = ucg.getStrWidth( self, string ) static int lucg_getStrWidth( lua_State *L ) { lucg_userdata_t *lud; if ((lud = get_lud( L )) == NULL) return 0; const char *s = luaL_checkstring( L, 2 ); if (s == NULL) return 0; lua_pushinteger( L, ucg_GetStrWidth( LUCG, s ) ); return 1; }
void pos(ucg_t *ucg, ucg_int_t x, ucg_int_t y, int is_right) { char s[20]; ucg_int_t w; prepare_measure(ucg); sprintf(s, "(%d,%d)", x-ox, y); w = ucg_GetStrWidth(ucg, s); ucg_DrawPixel(ucg, x, y); ucg_SetFontPosCenter(ucg); if ( is_right ) { ucg_DrawString(ucg, x+1, y, 0, s); //ucg_DrawHLine(ucg, x+1, y, w); } else { ucg_DrawString(ucg, x+1-w, y, 0, s); //ucg_DrawHLine(ucg, x+1-w, y, w); } }
/* pos = 1 above pos = 0 pos = -1 below */ void hrule(ucg_t *ucg, ucg_int_t x, ucg_int_t y, ucg_int_t len, int is_below) { char s[10]; ucg_int_t o = rule_offset; ucg_int_t w; if ( is_below ) { ucg_SetFontPosTop(ucg); o = -o; } else { ucg_SetFontPosBottom(ucg); } prepare_measure(ucg); ucg_DrawHLine(ucg, x, y-o, len); ucg_DrawVLine(ucg, x, y-1-o, 3); ucg_DrawVLine(ucg, x+len-1, y-1-o, 3); sprintf(s, "%d", len); w = ucg_GetStrWidth(ucg, s); ucg_DrawString(ucg, x + len/2 - w/2, y-o+1, 0, s); }