diff options
author | Owen Taylor <otaylor@redhat.com> | 2005-02-24 19:52:40 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2005-02-24 19:52:40 +0000 |
commit | a1d88c49c68f60982dd8301a913d2930728fc77d (patch) | |
tree | 601dac7acc0d6131a413c9ad23171515ca50c432 /pango/pangowin32-private.h | |
parent | f0653b4131c0c2d811f662785a7b4d971d370bef (diff) | |
download | pango-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.h | 69 |
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, |