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); } }
// Lua: ucg.setFontPosBottom( self ) static int lucg_setFontPosBottom( lua_State *L ) { lucg_userdata_t *lud; if ((lud = get_lud( L )) == NULL) return 0; ucg_SetFontPosBottom( LUCG ); return 0; }
void draw_text_bottom(ucg_t *ucg) { prepare_picture(ucg); ucg_SetFont(ucg, ucg_font_ncenB18_tf); ucg_SetFontPosBottom(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_bottom"); }
/* 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); }