forked from enlightenment/efl
Add API for getting the available fonts
SVN revision: 22416
This commit is contained in:
parent
155dbbbae8
commit
3a6d184758
|
@ -487,6 +487,9 @@ tile_mode);
|
|||
EAPI void evas_font_cache_set (Evas *e, int size);
|
||||
EAPI int evas_font_cache_get (Evas *e);
|
||||
|
||||
EAPI Evas_List *evas_font_available_list (Evas *e);
|
||||
EAPI void evas_font_available_list_free (Evas *e, Evas_List *available);
|
||||
|
||||
typedef struct _Evas_Textblock_Style Evas_Textblock_Style;
|
||||
typedef struct _Evas_Textblock_Cursor Evas_Textblock_Cursor;
|
||||
typedef struct _Evas_Textblock_Rectangle Evas_Textblock_Rectangle;
|
||||
|
|
|
@ -364,6 +364,78 @@ evas_font_load_hinting_set(Evas *evas, void *font, int hinting)
|
|||
hinting);
|
||||
}
|
||||
|
||||
Evas_List *
|
||||
evas_font_dir_available_list(Evas *evas)
|
||||
{
|
||||
Evas_List *l;
|
||||
Evas_List *ll;
|
||||
Evas_List *available = NULL;
|
||||
|
||||
#ifdef HAVE_FONTCONFIG
|
||||
/* Add font config fonts */
|
||||
FcPattern *p;
|
||||
FcFontSet *set;
|
||||
FcObjectSet *os;
|
||||
int i;
|
||||
|
||||
p = FcPatternCreate();
|
||||
os = FcObjectSetBuild(FC_FAMILY, FC_STYLE, NULL);
|
||||
|
||||
if (p && os) set = FcFontList(NULL, p, os);
|
||||
|
||||
if (p) FcPatternDestroy(p);
|
||||
if (os) FcObjectSetDestroy(os);
|
||||
|
||||
if (set)
|
||||
{
|
||||
for (i = 0; i < set->nfont; i++)
|
||||
{
|
||||
char * font;
|
||||
|
||||
font = FcNameUnparse(set->fonts[i]);
|
||||
available = evas_list_append(available, evas_stringshare_add(font));
|
||||
free(font);
|
||||
}
|
||||
|
||||
FcFontSetDestroy(set);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Add fonts in evas font_path*/
|
||||
if (!evas->font_path)
|
||||
return available;
|
||||
|
||||
for (l = evas->font_path; l; l = l->next)
|
||||
{
|
||||
Evas_Font_Dir *fd;
|
||||
|
||||
fd = evas_hash_find(font_dirs, (char *)l->data);
|
||||
fd = object_text_font_cache_dir_update((char *)l->data, fd);
|
||||
if (fd && fd->aliases)
|
||||
{
|
||||
for (ll = fd->aliases; ll; ll = ll->next)
|
||||
{
|
||||
Evas_Font_Alias *fa;
|
||||
|
||||
fa = ll->data;
|
||||
available = evas_list_append(available, evas_stringshare_add((char *)fa->alias));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return available;
|
||||
}
|
||||
|
||||
void
|
||||
evas_font_dir_available_list_free(Evas_List *available)
|
||||
{
|
||||
while (available)
|
||||
{
|
||||
evas_stringshare_del(available->data);
|
||||
available = evas_list_remove(available, available->data);
|
||||
}
|
||||
}
|
||||
|
||||
/* private stuff */
|
||||
static Evas_Bool
|
||||
font_cache_dir_free(Evas_Hash *hash, const char *key, void *data, void *fdata)
|
||||
|
|
|
@ -1095,6 +1095,38 @@ evas_font_cache_get(Evas *e)
|
|||
return e->engine.func->font_cache_get(e->engine.data.output);
|
||||
}
|
||||
|
||||
/**
|
||||
* To be documented.
|
||||
*
|
||||
* FIXME: To be fixed.
|
||||
*
|
||||
*/
|
||||
EAPI Evas_List *
|
||||
evas_font_available_list(Evas *e)
|
||||
{
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return NULL;
|
||||
MAGIC_CHECK_END();
|
||||
|
||||
return evas_font_dir_available_list(e);
|
||||
}
|
||||
|
||||
/**
|
||||
* To be documented.
|
||||
*
|
||||
* FIXME: To be fixed.
|
||||
*
|
||||
*/
|
||||
EAPI void
|
||||
evas_font_available_list_free(Evas *e, Evas_List *available)
|
||||
{
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
|
||||
return evas_font_dir_available_list_free(available);
|
||||
}
|
||||
|
||||
/**
|
||||
* To be documented.
|
||||
*
|
||||
|
|
|
@ -597,6 +597,7 @@ struct _Evas_Func
|
|||
|
||||
void (*font_hinting_set) (void *data, void *font, int hinting);
|
||||
int (*font_hinting_can_hint) (void *data, int hinting);
|
||||
|
||||
/* void (*image_rotation_set) (void *data, void *image); */
|
||||
|
||||
};
|
||||
|
@ -690,6 +691,8 @@ void evas_object_grabs_cleanup(Evas_Object *obj);
|
|||
void evas_key_grab_free(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers);
|
||||
void evas_font_dir_cache_free(void);
|
||||
char *evas_font_dir_cache_find(char *dir, char *font);
|
||||
Evas_List *evas_font_dir_available_list(Evas* evas);
|
||||
void evas_font_dir_available_list_free(Evas_List *available);
|
||||
void evas_font_free(Evas *evas, void *font);
|
||||
void *evas_font_load(Evas *evas, const char *name, const char *source, int size);
|
||||
void evas_font_load_hinting_set(Evas *evas, void *font, int hinting);
|
||||
|
|
Loading…
Reference in New Issue