summaryrefslogtreecommitdiff
path: root/pango/pangocairo-fcfont.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2006-08-15 18:57:25 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2006-08-15 18:57:25 +0000
commit9f96e87af64452c67466dc48636d7df77cdd5cd4 (patch)
treeda1cfa6ed7d1780a272f0d3870cfe4a3ec574414 /pango/pangocairo-fcfont.c
parent7101c5c12a1c0d1b3e28a5cdf0849a6d16d1f9c6 (diff)
downloadpango-9f96e87af64452c67466dc48636d7df77cdd5cd4.tar.gz
Move font_matrix rotation into font_new as we use only rotation and no
2006-08-15 Behdad Esfahbod <behdad@gnome.org> * pango/pangocairo-fcfont.c (pango_cairo_fc_font_get_scaled_font), (_pango_cairo_fc_font_new): Move font_matrix rotation into font_new as we use only rotation and no translation anymore.
Diffstat (limited to 'pango/pangocairo-fcfont.c')
-rw-r--r--pango/pangocairo-fcfont.c56
1 files changed, 12 insertions, 44 deletions
diff --git a/pango/pangocairo-fcfont.c b/pango/pangocairo-fcfont.c
index 488dca0d..1b5a56fe 100644
--- a/pango/pangocairo-fcfont.c
+++ b/pango/pangocairo-fcfont.c
@@ -133,45 +133,8 @@ pango_cairo_fc_font_get_scaled_font (PangoCairoFont *font)
*/
if (!cffont->scaled_font)
return NULL;
-
- if (cffont->gravity != PANGO_GRAVITY_SOUTH)
- {
- cairo_font_extents_t metrics;
- cairo_matrix_t matrix;
-
- cairo_scaled_font_extents (cffont->scaled_font, &metrics);
- cairo_scaled_font_destroy (cffont->scaled_font);
- cffont->scaled_font = NULL;
-
- cairo_matrix_init_identity (&matrix);
-
- switch (cffont->gravity)
- {
- case PANGO_GRAVITY_SOUTH:
- default:
- break;
- case PANGO_GRAVITY_NORTH:
- cairo_matrix_rotate(&matrix, M_PI);
- break;
- case PANGO_GRAVITY_EAST:
- cairo_matrix_rotate(&matrix, -M_PI_2);
- break;
- case PANGO_GRAVITY_WEST:
- cairo_matrix_rotate(&matrix, +M_PI_2);
- break;
- }
- cairo_matrix_multiply(&cffont->font_matrix, &cffont->font_matrix, &matrix);
-
- cffont->scaled_font = cairo_scaled_font_create (font_face,
- &cffont->font_matrix,
- &cffont->ctm,
- cffont->options);
-
- if (!cffont->scaled_font)
- return NULL;
- }
}
-
+
return cffont->scaled_font;
}
@@ -497,7 +460,7 @@ _pango_cairo_fc_font_new (PangoCairoFcFontMap *cffontmap,
PangoCairoFcFont *cffont;
const PangoMatrix *pango_ctm;
FcMatrix *fc_matrix;
- double size;
+ double size, rotation;
g_return_val_if_fail (PANGO_IS_CAIRO_FC_FONT_MAP (cffontmap), NULL);
g_return_val_if_fail (pattern != NULL, NULL);
@@ -522,6 +485,16 @@ _pango_cairo_fc_font_new (PangoCairoFcFontMap *cffontmap,
else
cairo_matrix_init_identity (&cffont->font_matrix);
+ switch (cffont->gravity)
+ {
+ default:
+ case PANGO_GRAVITY_SOUTH: rotation = 0; break;
+ case PANGO_GRAVITY_NORTH: rotation = M_PI; break;
+ case PANGO_GRAVITY_EAST: rotation = -M_PI_2; break;
+ case PANGO_GRAVITY_WEST: rotation = +M_PI_2; break;
+ }
+ cairo_matrix_rotate(&cffont->font_matrix, rotation);
+
pango_ctm = pango_context_get_matrix (context);
size = get_font_size (cffontmap, context, desc, pattern, pango_ctm);
@@ -529,11 +502,6 @@ _pango_cairo_fc_font_new (PangoCairoFcFontMap *cffontmap,
cairo_matrix_scale (&cffont->font_matrix,
size / PANGO_SCALE, size / PANGO_SCALE);
- /* Note: the ->font_matrix at this point is not final yet. We
- * will adjust it to the gravity later as it needs the scaled_font
- * to be loaded first.
- */
-
if (pango_ctm)
cairo_matrix_init (&cffont->ctm,
pango_ctm->xx,