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;
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)
* 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.
+ *
+ * FIXME: To be fixed.
+ *
+ */
EAPI int
evas_string_char_next_get(const char *str, int pos, int *decoded)
{
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); */
};
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);