void eol_font_draw_text_justify_custom( char * text, eolInt x, eolInt y, eolVec3D color, eolFloat alpha, eolFont * font, eolUint justify ) { eolRect r; eolInt dx; if (!eol_font_initialized())return; switch (justify) { case eolJustifyLeft: dx = x; break; case eolJustifyCenter: dx = (x - (r.w/2)); break; case eolJustifyRight: dx = (x - r.w); break; } r = eol_font_get_bounds_custom(text,font); eol_font_draw_text_custom( text, dx, y, color, alpha, font ); }
eolUint eol_font_get_text_height_average_custom(eolFont *font) { eolRect r; r = eol_font_get_bounds_custom( "gL", font ); return r.h; }
void eol_component_make_label( eolComponent * component, char * text, eolUint justify, eolInt fontSize, eolBool wordWrap, char * fontName, eolVec3D color, eolFloat alpha ) { eolRect r; eolComponentLabel * label = NULL; if (!component)return; eol_component_label_new(component); label = eol_component_get_label_data(component); if (label == NULL) { return; } label->buffer = g_string_new(text); if (label->buffer == NULL) { eol_logger_message( EOL_LOG_ERROR, "eol_component:Failed to duplicate string for new label\n"); eol_component_label_free(component); return; } if ((fontName != NULL)&&(strlen(fontName) > 0)) { label->font = eol_font_load(fontName,fontSize); r = eol_font_get_bounds_custom(text,label->font); } else { r = eol_font_get_bounds(text,fontSize); } component->bounds.w = r.w; component->bounds.h = r.h; label->justify = justify; label->fontSize = fontSize; label->alpha = alpha; label->wordWrap = wordWrap; eol_vec3d_copy(label->color,color); component->data_free = eol_component_label_free; component->data_draw = eol_component_label_draw; }
eolRect eol_font_get_bounds( char * text, eolInt size ) { eolRect r = {0,0,0,0}; if (!eol_font_initialized())return r; if (size >= eolFontSizeMax) { eol_logger_message( EOL_LOG_WARN, "eol_font: passed a font size outside of available range"); return r; } return eol_font_get_bounds_custom( text, _eol_font_size[size] ); }