efl/src/lib/elementary/elm_font.h

100 lines
2.6 KiB
C

/**
* @defgroup Elm_Fonts Elementary Fonts
* @ingroup Elementary
*
* These are functions dealing with font rendering, selection and the
* like for Elementary applications. One might fetch which system
* fonts are there to use and set custom fonts for individual classes
* of UI items containing text (text classes).
*
* @{
*/
typedef struct _Elm_Font_Properties
{
const char *name;
Eina_List *styles;
} Elm_Font_Properties;
/**
* Translate a font (family) name string in fontconfig's font names
* syntax into an @c Elm_Font_Properties struct.
*
* @param font The font name and styles string
* @return the font properties struct
*
* @ingroup Elm_Fonts
*
* @note The reverse translation can be achieved with
* elm_font_fontconfig_name_get(), for one style only (single font
* instance, not family).
*/
EAPI Elm_Font_Properties *elm_font_properties_get(const char *font);
/**
* Free font properties return by elm_font_properties_get().
*
* @param efp the font properties struct
*
* @ingroup Elm_Fonts
*/
EAPI void elm_font_properties_free(Elm_Font_Properties *efp);
/**
* Translate a font name, bound to a style, into fontconfig's font names
* syntax.
*
* @param name The font (family) name
* @param style The given style (may be @c NULL)
*
* @return the font name and style string
*
* @ingroup Elm_Fonts
*
* @note The reverse translation can be achieved with
* elm_font_properties_get(), for one style only (single font
* instance, not family).
*/
EAPI char *elm_font_fontconfig_name_get(const char *name, const char *style);
/**
* Free the font string return by elm_font_fontconfig_name_get().
*
* @param name the font properties struct
*
* @ingroup Elm_Fonts
*/
EAPI void elm_font_fontconfig_name_free(char *name);
/**
* Create a font hash table of available system fonts.
*
* One must call it with @p list being the return value of
* evas_font_available_list(). The hash will be indexed by font
* (family) names, being its values @c Elm_Font_Properties blobs.
*
* @param list The list of available system fonts, as returned by
* evas_font_available_list().
* @return the font hash.
*
* @ingroup Elm_Fonts
*
* @note The user is supposed to get it populated at least with 3
* default font families (Sans, Serif, Monospace), which should be
* present on most systems.
*/
EAPI Eina_Hash *elm_font_available_hash_add(Eina_List *list);
/**
* Free the hash returned by elm_font_available_hash_add().
*
* @param hash the hash to be freed.
*
* @ingroup Elm_Fonts
*/
EAPI void elm_font_available_hash_del(Eina_Hash *hash);
/**
* @}
*/