From 9f96e87af64452c67466dc48636d7df77cdd5cd4 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 15 Aug 2006 18:57:25 +0000 Subject: Move font_matrix rotation into font_new as we use only rotation and no 2006-08-15 Behdad Esfahbod * 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. --- pango/pangocairo-fcfont.c | 56 ++++++++++------------------------------------- 1 file changed, 12 insertions(+), 44 deletions(-) (limited to 'pango') 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, -- cgit v1.2.1