Implemented the font family enumerator on GTK+.

This commit is contained in:
Pietro Gagliardi 2015-12-22 19:17:27 -05:00
parent 9987c98dcd
commit 5d47fcab5a
2 changed files with 37 additions and 1 deletions

2
ui.h
View File

@ -458,7 +458,7 @@ typedef struct uiDrawFontFamilies uiDrawFontFamilies;
_UI_EXTERN uiDrawFontFamilies *uiDrawListFontFamilies(void);
_UI_EXTERN uintmax_t uiDrawFontFamiliesNumFamilies(uiDrawFontFamilies *ff);
_UI_EXTERN char *uiDrawFontFamiliesFamily(uiDrawFontFamilies *ff, uintmax_t n);
_UI_EXTERN void uiDrawFreeFontFamilies(uiDrawFontFamilies *);
_UI_EXTERN void uiDrawFreeFontFamilies(uiDrawFontFamilies *ff);
typedef enum uiModifiers {
uiModifierCtrl = 1 << 0,

View File

@ -446,3 +446,39 @@ void uiDrawRestore(uiDrawContext *c)
{
cairo_restore(c->cr);
}
struct uiDrawFontFamilies {
PangoFontFamily **f;
int n;
};
uiDrawFontFamilies *uiDrawListFontFamilies(void)
{
uiDrawFontFamilies *ff;
PangoFontMap *map;
ff = uiNew(uiDrawFontFamilies);
map = pango_cairo_font_map_get_default();
pango_font_map_list_families(map, &(ff->f), &(ff->n));
// do not free map; it's a shared resource
return ff;
}
uintmax_t uiDrawFontFamiliesNumFamilies(uiDrawFontFamilies *ff)
{
return ff->n;
}
char *uiDrawFontFamiliesFamily(uiDrawFontFamilies *ff, uintmax_t n)
{
PangoFontFamily *f;
f = ff->f[n];
return uiUnixStrdupText(pango_font_family_get_name(f));
}
void uiDrawFreeFontFamilies(uiDrawFontFamilies *ff)
{
g_free(ff->f);
uiFree(ff);
}