void GUIFontPrint(const struct GUIFont* font, int x, int y, enum GUIAlignment align, uint32_t color, const char* text) { switch (align & GUI_ALIGN_HCENTER) { case GUI_ALIGN_HCENTER: x -= GUIFontSpanWidth(font, text) / 2; break; case GUI_ALIGN_RIGHT: x -= GUIFontSpanWidth(font, text); break; default: break; } size_t len = strlen(text); while (len) { uint32_t c = utf8Char(&text, &len); if (c == '\1') { c = utf8Char(&text, &len); if (c < GUI_ICON_MAX) { GUIFontDrawIcon(font, x, y, GUI_ALIGN_BOTTOM, GUI_ORIENT_0, color, c); unsigned w; GUIFontIconMetrics(font, c, &w, 0); x += w; } } else { GUIFontDrawGlyph(font, x, y, color, c); x += GUIFontGlyphWidth(font, c); } } }
void GUIFontPrint(const struct GUIFont* font, int x, int y, enum GUITextAlignment align, uint32_t color, const char* text) { switch (align) { case GUI_TEXT_CENTER: x -= GUIFontSpanWidth(font, text) / 2; break; case GUI_TEXT_RIGHT: x -= GUIFontSpanWidth(font, text); break; default: break; } size_t i; for (i = 0; text[i]; ++i) { char c = text[i]; GUIFontDrawGlyph(font, x, y, color, c); x += GUIFontGlyphWidth(font, c); } }