]> granicus.if.org Git - graphviz/commitdiff
Modified to permit retrieval of an array of avialable fonts.
authordperry <devnull@localhost>
Tue, 8 Mar 2011 15:31:57 +0000 (15:31 +0000)
committerdperry <devnull@localhost>
Tue, 8 Mar 2011 15:31:57 +0000 (15:31 +0000)
plugin/pango/gvgetfontlist_pango.c

index 395a70af6a0a6b26564e51132a1249bc6690f146..16470077ebb1bcec41c4a1e6afb8375ff61c5c71 100644 (file)
@@ -535,3 +535,38 @@ gv_font_map* get_font_mapping(PangoFontMap * fontmap)
        printFontMap (gv_fmap, ps_fontnames_sz);
     return gv_fmap;
 }
+
+/* Returns a list of the fonts that are available for use
+
+*/
+
+void get_font_list(char **fonts[], int *cnt){
+
+PangoFontMap *fontmap;
+availfont_t *gv_af_p;
+int j, i;
+char **fontlist;
+fontlist = N_NEW(GV_FONT_LIST_SIZE,char *);
+fontmap = pango_cairo_font_map_new();
+gv_af_p = gv_get_ps_fontlist(fontmap); // get the available installed fonts
+g_object_unref(fontmap);
+/* load array with available font names */
+i=0;
+for (j = 0; j < GV_FONT_LIST_SIZE; j++) {
+       *(fontlist + j) = 0;
+       if ((gv_af_p[j].faces == 0) || (gv_af_p[j].fontname == NULL)) {
+           continue;
+       }
+       *(fontlist + i++) = strdup(gv_af_p[j].fontname);
+}
+/* Free unused array elements */
+for(j=i;j<GV_FONT_LIST_SIZE;j++){
+    free(*(fontlist + j));
+}
+/* Free available fonts structure */
+gv_flist_free_af(gv_af_p);
+
+*cnt = i;
+*fonts = fontlist;
+return;
+}