summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2005-01-06 19:17:38 +0000
committerOwen Taylor <otaylor@src.gnome.org>2005-01-06 19:17:38 +0000
commitce2346e8de385011e5bb2405fbe83c10675111d0 (patch)
tree6d0416852127c4c2f91bc457fee615dc47cb5833
parent33cc7d97cc98e653f7fe129c1b2c3787bb5bcc9e (diff)
downloadpango-ce2346e8de385011e5bb2405fbe83c10675111d0.tar.gz
Revert some accidentally committed changes.
Thu Jan 6 14:12:35 2005 Owen Taylor <otaylor@redhat.com> * pango/pangofc-fontmap.[ch]: Revert some accidentally committed changes.
-rw-r--r--ChangeLog5
-rw-r--r--ChangeLog.pre-1-105
-rw-r--r--pango/pangofc-fontmap.c153
-rw-r--r--pango/pangofc-fontmap.h6
4 files changed, 32 insertions, 137 deletions
diff --git a/ChangeLog b/ChangeLog
index a50e23a2..9af3a5b6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Jan 6 14:12:35 2005 Owen Taylor <otaylor@redhat.com>
+
+ * pango/pangofc-fontmap.[ch]: Revert some accidentally
+ committed changes.
+
Thu Jan 6 12:29:31 2005 Owen Taylor <otaylor@redhat.com>
* pango/pango-attributes.c (pango_attr_iterator_get_font):
diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10
index a50e23a2..9af3a5b6 100644
--- a/ChangeLog.pre-1-10
+++ b/ChangeLog.pre-1-10
@@ -1,3 +1,8 @@
+Thu Jan 6 14:12:35 2005 Owen Taylor <otaylor@redhat.com>
+
+ * pango/pangofc-fontmap.[ch]: Revert some accidentally
+ committed changes.
+
Thu Jan 6 12:29:31 2005 Owen Taylor <otaylor@redhat.com>
* pango/pango-attributes.c (pango_attr_iterator_get_font):
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c
index 5ac4f285..67008471 100644
--- a/pango/pangofc-fontmap.c
+++ b/pango/pangofc-fontmap.c
@@ -22,8 +22,6 @@
/* Size of fontset cache */
#define FONTSET_CACHE_SIZE 16
-#include <math.h>
-
#include "pango-context.h"
#include "pangofc-fontmap.h"
#include "pangofc-private.h"
@@ -235,56 +233,12 @@ pango_fc_coverage_key_equal (PangoFcCoverageKey *key1,
}
typedef struct _FontsetHashListNode FontsetHashListNode;
-typedef struct _FontsetHashKey FontsetHashKey;
struct _FontsetHashListNode {
GHashTable *fontset_hash;
PangoLanguage *language;
};
-struct _FontsetHashKey {
- PangoFontDescription *desc;
- int x_size;
- int y_size;
-};
-
-static gboolean
-fontset_hash_key_equal (const FontsetHashKey *key_a,
- const FontsetHashKey *key_b)
-{
- if (key_a->x_size == key_b->x_size &&
- key_a->y_size == key_b->y_size &&
- pango_font_description_equal (key_a->desc, key_b->desc))
- return TRUE;
- else
- return FALSE;
-}
-
-static guint
-fontset_hash_key_hash (const FontsetHashKey *key)
-{
- return (key->x_size << 16) ^ (key->y_size) ^ pango_font_description_hash (key->desc);
-}
-
-static void
-fontset_hash_key_free (FontsetHashKey *key)
-{
- pango_font_description_free (key->desc);
- g_free (key);
-}
-
-static FontsetHashKey *
-fontset_hash_key_copy (FontsetHashKey *old)
-{
- FontsetHashKey *key = g_new (FontsetHashKey, 1);
-
- key->x_size = old->x_size;
- key->y_size = old->y_size;
- key->desc = pango_font_description_copy (old->desc);
-
- return key;
-}
-
/* Get the description => fontset map for a particular
* language tag.
*/
@@ -326,9 +280,9 @@ pango_fc_get_fontset_hash (PangoFcFontMap *fcfontmap,
priv->fontset_hash_list = g_list_prepend (priv->fontset_hash_list, node);
node->fontset_hash =
- g_hash_table_new_full ((GHashFunc)fontset_hash_key_hash,
- (GEqualFunc)fontset_hash_key_equal,
- (GDestroyNotify)fontset_hash_key_free,
+ g_hash_table_new_full ((GHashFunc)pango_font_description_hash,
+ (GEqualFunc)pango_font_description_equal,
+ (GDestroyNotify)pango_font_description_free,
(GDestroyNotify)pango_fc_pattern_set_free);
node->language = language;
@@ -791,66 +745,11 @@ pango_fc_default_substitute (PangoFcFontMap *fontmap,
PANGO_FC_FONT_MAP_GET_CLASS (fontmap)->default_substitute (fontmap, pattern);
}
-static double
-transformed_length (const PangoMatrix *matrix,
- double dx,
- double dy)
-{
- double tx = (dx * matrix->xx + dy * matrix->xy);
- double ty = (dx * matrix->yx + dy * matrix->yy);
-
- return sqrt (tx * tx + ty * ty);
-}
-
-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);
- else
- {
- int size = pango_font_description_get_size (desc);
- const PangoMatrix *matrix;
- gboolean retval = TRUE;
-
- if (context)
- matrix = pango_context_get_matrix (context);
- else
- matrix = NULL;
-
- *x_size = size;
- *y_size = size;
-
- if (matrix)
- {
- double xl = transformed_length (matrix, 1., 0.);
- double yl = transformed_length (matrix, 0., 1.);
-
- if (xl != 0. && yl != 0.)
- {
- *x_size = (int)(xl * *x_size + 0.5);
- *y_size = (int)(yl * *y_size + 0.5);
-
- retval = (matrix->yx / xl < 1 / 65536. && matrix->xy / yl < 1 / 65536.);
- }
- else
- retval = FALSE;
- }
-
- return retval;
- }
-}
-
static PangoFcPatternSet *
pango_fc_font_map_get_patterns (PangoFontMap *fontmap,
- PangoContext *context,
- const PangoFontDescription *desc,
- PangoLanguage *language,
- gboolean *cache_out)
+ PangoContext *context,
+ const PangoFontDescription *desc,
+ PangoLanguage *language)
{
PangoFcFontMap *fcfontmap = (PangoFcFontMap *)fontmap;
FcPattern *pattern, *font_pattern;
@@ -859,21 +758,12 @@ pango_fc_font_map_get_patterns (PangoFontMap *fontmap,
PangoFcPatternSet *patterns;
FcFontSet *font_patterns;
GHashTable *fontset_hash;
- FontsetHashKey key;
- gboolean cache;
if (!language && context)
language = pango_context_get_language (context);
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);
- if (cache_out)
- *cache_out = cache;
-
- patterns = g_hash_table_lookup (fontset_hash, &key);
+ patterns = g_hash_table_lookup (fontset_hash, desc);
if (patterns == NULL)
{
@@ -930,12 +820,10 @@ pango_fc_font_map_get_patterns (PangoFontMap *fontmap,
FcFontSetSortDestroy (font_patterns);
g_hash_table_insert (fontset_hash,
- fontset_hash_key_copy (&key),
+ pango_font_description_copy (desc),
patterns);
}
- pango_font_description_free (key.desc);
-
return patterns;
}
@@ -944,7 +832,7 @@ pango_fc_font_map_load_font (PangoFontMap *fontmap,
PangoContext *context,
const PangoFontDescription *description)
{
- PangoFcPatternSet *patterns = pango_fc_font_map_get_patterns (fontmap, context, description, NULL, NULL);
+ PangoFcPatternSet *patterns = pango_fc_font_map_get_patterns (fontmap, context, description, NULL);
if (!patterns)
return NULL;
@@ -1015,27 +903,28 @@ pango_fc_font_map_load_fontset (PangoFontMap *fontmap,
const PangoFontDescription *desc,
PangoLanguage *language)
{
- gboolean cache;
- PangoFcPatternSet *patterns = pango_fc_font_map_get_patterns (fontmap, context, desc, language, &cache);
+ PangoFcPatternSet *patterns = pango_fc_font_map_get_patterns (fontmap, context, desc, language);
PangoFcFontMap *fcfontmap = PANGO_FC_FONT_MAP (fontmap);
PangoFcFontMapPrivate *priv = fcfontmap->priv;
PangoFontset *result;
+ const PangoMatrix *matrix;
int i;
if (!patterns)
return NULL;
- if (!patterns->fontset || !cache)
+ if (context)
+ matrix = pango_context_get_matrix (context);
+ else
+ matrix = NULL;
+
+ /* We never cache fontsets when a transformation is in place
+ */
+ if (!patterns->fontset || matrix)
{
PangoFontsetSimple *simple;
- const PangoMatrix *matrix;
simple = pango_fontset_simple_new (language);
result = PANGO_FONTSET (simple);
-
- if (context)
- matrix = pango_context_get_matrix (context);
- else
- matrix = NULL;
for (i = 0; i < patterns->n_patterns; i++)
{
@@ -1046,7 +935,7 @@ pango_fc_font_map_load_fontset (PangoFontMap *fontmap,
pango_fontset_simple_append (simple, font);
}
- if (cache)
+ if (!matrix)
{
patterns->fontset = PANGO_FONTSET (simple);
g_object_add_weak_pointer (G_OBJECT (patterns->fontset),
@@ -1056,7 +945,7 @@ pango_fc_font_map_load_fontset (PangoFontMap *fontmap,
else
result = g_object_ref (patterns->fontset);
- if (cache &&
+ if (!matrix &&
(!patterns->cache_link ||
patterns->cache_link != priv->fontset_cache->head))
pango_fc_font_map_cache_fontset (fcfontmap, patterns);
diff --git a/pango/pangofc-fontmap.h b/pango/pangofc-fontmap.h
index 318ad03c..f5d193be 100644
--- a/pango/pangofc-fontmap.h
+++ b/pango/pangofc-fontmap.h
@@ -82,17 +82,13 @@ struct _PangoFcFontMapClass
PangoFcFont *(*new_font) (PangoFcFontMap *fontmap,
FcPattern *pattern);
- gboolean (*get_rendered_size) (PangoFcFontMap *fcfontmap,
- PangoContext *context,
- const PangoFontDescription *desc,
- int *xsize,
- int *ysize);
/*< private >*/
/* Padding for future expansion */
void (*_pango_reserved1) (void);
void (*_pango_reserved2) (void);
void (*_pango_reserved3) (void);
+ void (*_pango_reserved4) (void);
};
PangoContext * pango_fc_font_map_create_context (PangoFcFontMap *fcfontmap);