1 /* Pango 2 * pangox-private.h: 3 * 4 * Copyright (C) 1999 Red Hat Software 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Library General Public 8 * License as published by the Free Software Foundation; either 9 * version 2 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Library General Public License for more details. 15 * 16 * You should have received a copy of the GNU Library General Public 17 * License along with this library; if not, write to the 18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 * Boston, MA 02111-1307, USA. 20 */ 21 22 #ifndef __PANGOX_PRIVATE_H__ 23 #define __PANGOX_PRIVATE_H__ 24 25 #include "pangox.h" 26 #include <pango/pango-modules.h> 27 28 typedef struct _PangoXFace PangoXFace; 29 typedef struct _PangoXFont PangoXFont; 30 typedef struct _PangoXSubfontInfo PangoXSubfontInfo; 31 32 struct _PangoXFont 33 { 34 PangoFont font; 35 Display *display; 36 37 char **fonts; 38 int n_fonts; 39 int size; 40 41 /* hash table mapping from charset-name to array of PangoXSubfont ids, 42 * of length n_fonts 43 */ 44 GHashTable *subfonts_by_charset; 45 46 PangoXSubfontInfo **subfonts; 47 48 int n_subfonts; 49 int max_subfonts; 50 51 GSList *metrics_by_lang; 52 53 PangoFontMap *fontmap; 54 /* If TRUE, font is in cache of recently unused fonts and not otherwise 55 * in use. 56 */ 57 gboolean in_cache; 58 59 PangoXFace *xface; /* Used to remove cached fonts */ 60 }; 61 62 63 #define PANGO_TYPE_X_FONT_MAP (pango_x_font_map_get_type ()) 64 #define PANGO_X_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_X_FONT_MAP, PangoXFontMap)) 65 #define PANGO_X_FONT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_X_FONT_MAP, PangoXFontMapClass)) 66 #define PANGO_X_IS_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_X_FONT_MAP)) 67 #define PANGO_X_IS_FONT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_X_FONT_MAP)) 68 #define PANGO_X_FONT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_X_FONT_MAP, PangoXFontMapClass)) 69 70 typedef struct _PangoXFontMap PangoXFontMap; 71 typedef struct _PangoXFontMapClass PangoXFontMapClass; 72 73 struct _PangoXFontMap 74 { 75 PangoFontMap parent_instance; 76 77 Display *display; 78 79 PangoXFontCache *font_cache; 80 GQueue *freed_fonts; 81 82 GHashTable *families; 83 GHashTable *size_infos; 84 85 GHashTable *to_atom_cache; 86 GHashTable *from_atom_cache; 87 88 int n_fonts; 89 90 double resolution; /* (points / pixel) * PANGO_SCALE */ 91 92 Window coverage_win; 93 }; 94 95 GType pango_x_font_map_get_type (void) G_GNUC_CONST; 96 97 PangoXFont * pango_x_font_new (PangoFontMap *fontmap, 98 const char *spec, 99 int size); 100 PangoMap * pango_x_get_shaper_map (PangoLanguage *language); 101 char * pango_x_make_matching_xlfd (PangoFontMap *fontmap, 102 char *xlfd, 103 const char *charset, 104 int size); 105 PangoCoverage *pango_x_face_get_coverage (PangoXFace *xface, 106 PangoFont *font, 107 PangoLanguage *language); 108 void pango_x_face_remove (PangoXFace *xface, 109 PangoFont *font); 110 111 Display * pango_x_fontmap_get_display (PangoFontMap *fontmap); 112 void pango_x_fontmap_cache_add (PangoFontMap *fontmap, 113 PangoXFont *xfont); 114 void pango_x_fontmap_cache_remove (PangoFontMap *fontmap, 115 PangoXFont *xfont); 116 117 Atom pango_x_fontmap_atom_from_name (PangoFontMap *fontmap, 118 const char *atomname); 119 const char *pango_x_fontmap_name_from_atom (PangoFontMap *fontmap, 120 Atom atom); 121 122 void _pango_basic_x_script_engine_list (PangoEngineInfo **engines, 123 int *n_engines); 124 void _pango_basic_x_script_engine_init (GTypeModule *module); 125 void _pango_basic_x_script_engine_exit (void); 126 PangoEngine *_pango_basic_x_script_engine_create (const char *id); 127 128 #endif /* __PANGOX_PRIVATE_H__ */ 129