diff options
author | Owen Taylor <otaylor@redhat.com> | 2005-01-09 00:12:39 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2005-01-09 00:12:39 +0000 |
commit | cc6ac36dd3c7e5ef39b9f21ef77596a159f2100e (patch) | |
tree | e1b8ffc1c14d449a41946d22ea5d1c6ddf9115d8 /pango/pangofc-fontmap.c | |
parent | 75f4ad29adce645ddb837e662c9d71ccfbf60154 (diff) | |
download | pango-cc6ac36dd3c7e5ef39b9f21ef77596a159f2100e.tar.gz |
Add checks for Cairo
Sat Jan 8 16:46:37 2005 Owen Taylor <otaylor@redhat.com>
* configure.in: Add checks for Cairo
* pango/Makefile.am: Add libpangocairo.
* pango/pangocairo-font.c pango/pangocairo-fontmap.c
pango/pangocairo.h pango/pangocairo-private.h
pango/pangocairo-fcfont.c pango/pangocairo-fcfontmap.c
pango/pangocairo-fc.h: Start of a Cairo/FreeType backend.
* pango/pangofc-fontmap.[ch]: Add a "get_render_key"
virtual function to allow subclasses to specialize the
details of how caching works. Add a default implementation
that's a little more sophisticated than what was there
before.
* pango/pangoft2-private.h pangofc-font.c pangoft2.c:
Move default implementations of has_char(), get_glyph()
to the base class.
* pango/pangofc-private.h pango/pangoft2-private.h:
Move PANGO_UNITS_26_6 and friends to pango/pangofc-private.h.
* examples/renderdemo.[ch] examples/pangoft2topgm.c
examples/xftview.c: Allow passing in a custom function
to transform drawing.
* examples/Makefile.am examples/cairoview.c: Add a
Cairo/Xlib example program.
* examples/cairosimple.c: Simple Cairo example with
output to a PNG.
* pango/pango-layout.c (pango_layout_line_get_extents): Fix
bug where line ink rect was always including 0, 0.
Diffstat (limited to 'pango/pangofc-fontmap.c')
-rw-r--r-- | pango/pangofc-fontmap.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c index 5ac4f285..9dad20b9 100644 --- a/pango/pangofc-fontmap.c +++ b/pango/pangofc-fontmap.c @@ -246,6 +246,7 @@ struct _FontsetHashKey { PangoFontDescription *desc; int x_size; int y_size; + guint flags; }; static gboolean @@ -254,6 +255,7 @@ fontset_hash_key_equal (const FontsetHashKey *key_a, { if (key_a->x_size == key_b->x_size && key_a->y_size == key_b->y_size && + key_a->flags == key_b->flags && pango_font_description_equal (key_a->desc, key_b->desc)) return TRUE; else @@ -263,7 +265,7 @@ fontset_hash_key_equal (const FontsetHashKey *key_a, static guint fontset_hash_key_hash (const FontsetHashKey *key) { - return (key->x_size << 16) ^ (key->y_size) ^ pango_font_description_hash (key->desc); + return (key->x_size << 16) ^ (key->y_size) ^ (key->flags) ^ pango_font_description_hash (key->desc); } static void @@ -280,6 +282,7 @@ fontset_hash_key_copy (FontsetHashKey *old) key->x_size = old->x_size; key->y_size = old->y_size; + key->flags = old->flags; key->desc = pango_font_description_copy (old->desc); return key; @@ -803,14 +806,15 @@ transformed_length (const PangoMatrix *matrix, } static gboolean -pango_fc_font_map_get_rendered_size (PangoFcFontMap *fcfontmap, - PangoContext *context, - const PangoFontDescription *desc, - int *x_size, - int *y_size) -{ - if (PANGO_FC_FONT_MAP_GET_CLASS (fcfontmap)->get_rendered_size) - return PANGO_FC_FONT_MAP_GET_CLASS (fcfontmap)->get_rendered_size (fcfontmap, context, desc, x_size, y_size); +pango_fc_font_map_get_render_key (PangoFcFontMap *fcfontmap, + PangoContext *context, + const PangoFontDescription *desc, + int *x_size, + int *y_size, + guint *flags) +{ + if (PANGO_FC_FONT_MAP_GET_CLASS (fcfontmap)->get_render_key) + return PANGO_FC_FONT_MAP_GET_CLASS (fcfontmap)->get_render_key (fcfontmap, context, desc, x_size, y_size, flags); else { int size = pango_font_description_get_size (desc); @@ -841,6 +845,8 @@ pango_fc_font_map_get_rendered_size (PangoFcFontMap *fcfontmap, retval = FALSE; } + *flags = 0; + return retval; } } @@ -865,11 +871,11 @@ pango_fc_font_map_get_patterns (PangoFontMap *fontmap, if (!language && context) language = pango_context_get_language (context); - fontset_hash = pango_fc_get_fontset_hash (fcfontmap, language); + fontset_hash = pango_fc_get_fontset_hash (fcfontmap, language); key.desc = pango_font_description_copy_static (desc); pango_font_description_unset_fields (key.desc, PANGO_FONT_MASK_SIZE); - cache = pango_fc_font_map_get_rendered_size (fcfontmap, context, desc, &key.x_size, &key.y_size); + cache = pango_fc_font_map_get_render_key (fcfontmap, context, desc, &key.x_size, &key.y_size, &key.flags); if (cache_out) *cache_out = cache; |