summaryrefslogtreecommitdiff
path: root/pango/pangowin32-private.h
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2005-02-24 19:52:40 +0000
committerOwen Taylor <otaylor@src.gnome.org>2005-02-24 19:52:40 +0000
commita1d88c49c68f60982dd8301a913d2930728fc77d (patch)
tree601dac7acc0d6131a413c9ad23171515ca50c432 /pango/pangowin32-private.h
parentf0653b4131c0c2d811f662785a7b4d971d370bef (diff)
downloadpango-a1d88c49c68f60982dd8301a913d2930728fc77d.tar.gz
PangoCairoFontMap for win32 fonts.
2005-02-24 Owen Taylor <otaylor@redhat.com> * pango/pangocairo-win32.h pango/pangocairo-win32font.c pango/pangocairo-win32fontmap.c pango/Makefile.am: PangoCairoFontMap for win32 fonts. * pango/pangocairo-fontmap.c: Use PangoCairoWin32FontMap when available. * pango/pangowin32.h pango/pangowin32-fontmap.h pango/pangowin32.c: Add virtual pango_win32_font_select_font() to prepare a DC for use with a PangoWin32Font, and to release, pango_win32_font_scale_font() to get logical unit => Pango units scale, pango_win32_font_done_font() to release resources. * pango/pangowin32-fontmap.[ch]: Add a find_font() virtual method to allow subclasses that change how PangoFont lookup and creation happens. * pango/pangowin32-fontmap.c: Move initialization into pango_win32_font_map_init() to facilitate derivation. * pango/pangowin2.c pango/pangowin32-fontmap.c pango/pangowin32-private.h: Move PangoWin32Font/PangoWin32FontMap definitions into pangowin32-private.h to allow derivation for PangoCairoWin32Font. * modules/basic/basic-win32.c: Use pango_win32_font_select_font() and friends. * modules/basic/basic-win32.c: Use g_utf8_to_utf16 instead of g_convert for simplicity and speed. * pango/fonts.c (pango_font_get_font_map) pango/pango-font.h pango/pangofc-font.c pango/pangowin32.c pango/pango.c pango/pango.def docs/pango-sections.txt: Add a virtual function to get the fontmap for a font. * pango/pangocairo-render.c: Use pango_font_get_font_map() rather than PangoFcFontMap hack. * pango/pango-types.h: Move the declaration of PangoFontMap here to avoid interactions between pango-font.h and pango-fontmap.h. * pango/pangocairo.h: Remove accidental include of pangofc-fontmap.h.
Diffstat (limited to 'pango/pangowin32-private.h')
-rw-r--r--pango/pangowin32-private.h69
1 files changed, 65 insertions, 4 deletions
diff --git a/pango/pangowin32-private.h b/pango/pangowin32-private.h
index e51f2d55..d8449385 100644
--- a/pango/pangowin32-private.h
+++ b/pango/pangowin32-private.h
@@ -64,9 +64,57 @@ typedef enum
PANGO_WIN32_N_COVERAGES
} PangoWin32CoverageLanguageClass;
-typedef struct _PangoWin32Font PangoWin32Font;
-typedef struct _PangoWin32Face PangoWin32Face;
-typedef struct _PangoWin32GlyphInfo PangoWin32GlyphInfo;
+#define PANGO_TYPE_WIN32_FONT_MAP (pango_win32_font_map_get_type ())
+#define PANGO_WIN32_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_WIN32_FONT_MAP, PangoWin32FontMap))
+#define PANGO_WIN32_IS_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_WIN32_FONT_MAP))
+#define PANGO_WIN32_FONT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_WIN32_FONT_MAP, PangoWin32FontMapClass))
+#define PANGO_IS_WIN32_FONT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_WIN32_FONT_MAP))
+#define PANGO_WIN32_FONT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_WIN32_FONT_MAP, PangoWin32FontMapClass))
+
+#define PANGO_TYPE_WIN32_FONT (pango_win32_font_get_type ())
+#define PANGO_WIN32_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_WIN32_FONT, PangoWin32Font))
+#define PANGO_WIN32_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_WIN32_FONT, PangoWin32FontClass))
+#define PANGO_WIN32_IS_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_WIN32_FONT))
+#define PANGO_WIN32_IS_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_WIN32_FONT))
+#define PANGO_WIN32_FONT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_WIN32_FONT, PangoWin32FontClass))
+
+typedef struct _PangoWin32FontMap PangoWin32FontMap;
+typedef struct _PangoWin32FontMapClass PangoWin32FontMapClass;
+typedef struct _PangoWin32Font PangoWin32Font;
+typedef struct _PangoWin32FontClass PangoWin32FontClass;
+typedef struct _PangoWin32Face PangoWin32Face;
+typedef struct _PangoWin32GlyphInfo PangoWin32GlyphInfo;
+
+struct _PangoWin32FontMap
+{
+ PangoFontMap parent_instance;
+
+ PangoWin32FontCache *font_cache;
+ GQueue *freed_fonts;
+
+ /* Map Pango family names to PangoWin32Family structs */
+ GHashTable *families;
+
+ /* Map LOGFONTS (taking into account only the lfFaceName, lfItalic
+ * and lfWeight fields) to PangoWin32SizeInfo structs.
+ */
+ GHashTable *size_infos;
+
+ int n_fonts;
+
+ double resolution; /* (points / pixel) * PANGO_SCALE */
+};
+
+struct _PangoWin32FontMapClass
+{
+ PangoFontMapClass parent_class;
+
+ PangoFont *(*find_font) (PangoWin32FontMap *fontmap,
+ PangoContext *context,
+ PangoWin32Face *face,
+ const PangoFontDescription *desc);
+
+};
struct _PangoWin32Font
{
@@ -94,6 +142,16 @@ struct _PangoWin32Font
GHashTable *glyph_info;
};
+struct _PangoWin32FontClass
+{
+ PangoFontClass parent_class;
+
+ gboolean (*select_font) (PangoFont *font,
+ HDC hdc);
+ void (*done_font) (PangoFont *font);
+ double (*get_scale_factor) (PangoFont *font);
+};
+
struct _PangoWin32Face
{
PangoFontFace parent_instance;
@@ -114,7 +172,6 @@ struct _PangoWin32GlyphInfo
PangoRectangle ink_rect;
};
-
/* TrueType defines: */
#define MAKE_TT_TABLE_NAME(c1, c2, c3, c4) \
@@ -176,6 +233,8 @@ struct name_record
guint16 string_offset;
};
+GType pango_win32_font_get_type (void);
+
PangoWin32Font *pango_win32_font_new (PangoFontMap *fontmap,
const LOGFONT *lfp,
int size);
@@ -192,6 +251,8 @@ void pango_win32_font_entry_set_coverage (PangoWin32Face *face,
void pango_win32_font_entry_remove (PangoWin32Face *face,
PangoFont *font);
+GType pango_win32_font_map_get_type (void);
+
void pango_win32_fontmap_cache_add (PangoFontMap *fontmap,
PangoWin32Font *xfont);
void pango_win32_fontmap_cache_remove (PangoFontMap *fontmap,