diff options
author | Alexander Larsson <alexl@redhat.com> | 2000-12-04 17:59:43 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2000-12-04 17:59:43 +0000 |
commit | d77144614bb39e62dc40cd9b8c510b4cfee04c62 (patch) | |
tree | 8eceb80df2056fba60eec9817dd1dbecb301b56e /gdk/linux-fb/gdkpango-fb.c | |
parent | 9cca191b6adda9c3e7a509769cb0442a84ac2794 (diff) | |
download | gdk-pixbuf-d77144614bb39e62dc40cd9b8c510b4cfee04c62.tar.gz |
Divide size by 2, not multiply.
2000-12-04 Alexander Larsson <alexl@redhat.com>
* gdk/linux-fb/gdkfont-fb.c (gdk_text_width): Divide size by 2, not
multiply.
* gdk/linux-fb/gdkpango-fb.c:
Copied some 26.6 scaling macros from pango to clean up the rounding.
(pango_fb_font_get_glyph_info): Correct sign on x value.
* gdk/linux-fb/gdkprivate-fb.h:
Removed unreferenced external functions.
* modules/linux-fb/Makefile.am: Use ` instead of '.
* modules/linux-fb/basic.c:
Remove dead code. In particular the dummy lang engine which broke all
pango layouts in GtkFB. Don't include tables-big.i anymore.
* modules/linux-fb/tables-big.i:
Upgrade to latest version from pango. Left for reference, basic_ranges
moved to basic.c.
Diffstat (limited to 'gdk/linux-fb/gdkpango-fb.c')
-rw-r--r-- | gdk/linux-fb/gdkpango-fb.c | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/gdk/linux-fb/gdkpango-fb.c b/gdk/linux-fb/gdkpango-fb.c index 75b28f6a7..1d8689d18 100644 --- a/gdk/linux-fb/gdkpango-fb.c +++ b/gdk/linux-fb/gdkpango-fb.c @@ -17,6 +17,13 @@ #define PANGO_RENDER_TYPE_FB "PangoRenderTypeFB" +#define PANGO_SCALE_26_6 (PANGO_SCALE / (1<<6)) +#define PANGO_PIXELS_26_6(d) \ + (((d) >= 0) ? \ + ((d) + PANGO_SCALE_26_6 / 2) / PANGO_SCALE_26_6 : \ + ((d) - PANGO_SCALE_26_6 / 2) / PANGO_SCALE_26_6) +#define PANGO_UNITS_26_6(d) (PANGO_SCALE_26_6 * (d)) + typedef struct { PangoFontMap parent_instance; @@ -668,20 +675,16 @@ pango_fb_font_get_glyph_info (PangoFont *font, PangoGlyph glyph) my_ink_rect = &pgi->extents[0]; my_logical_rect = &pgi->extents[1]; - { - my_ink_rect->width = (PANGO_SCALE * g->metrics.width + 32) >> 6; - my_ink_rect->height = (PANGO_SCALE * g->metrics.height + 32) >> 6; - my_ink_rect->x = - ((PANGO_SCALE * g->metrics.horiBearingX + 32) >> 6); - my_ink_rect->y = - ((PANGO_SCALE * g->metrics.horiBearingY + 32) >> 6); - } - - { - my_logical_rect->width = (PANGO_SCALE * g->metrics.horiAdvance + 32) >> 6; - my_logical_rect->height = (PANGO_SCALE * ftf->size->metrics.height + 32) >> 6; - my_logical_rect->x = - ((PANGO_SCALE * g->metrics.horiBearingX + 32) >> 6); - my_logical_rect->y = - ((PANGO_SCALE * ftf->size->metrics.ascender + 32) >> 6); - } - + my_ink_rect->x = PANGO_UNITS_26_6 (g->metrics.horiBearingX); + my_ink_rect->width = PANGO_UNITS_26_6 (g->metrics.width); + my_ink_rect->y = -PANGO_UNITS_26_6 (g->metrics.horiBearingY); + my_ink_rect->height = PANGO_UNITS_26_6 (g->metrics.height); + + my_logical_rect->x = 0; + my_logical_rect->width = PANGO_UNITS_26_6 (g->metrics.horiAdvance); + my_logical_rect->y = -PANGO_UNITS_26_6 (ftf->size->metrics.ascender + 64); + my_logical_rect->height = PANGO_UNITS_26_6 (ftf->size->metrics.height + 128); + g_hash_table_insert (fbf->glyph_info, GUINT_TO_POINTER(glyph), pgi); return pgi; @@ -795,11 +798,13 @@ void pango_fb_font_set_size (PangoFont *font) { PangoFBFont *fbf = (PangoFBFont *)font; + gint height; if (PANGO_FB_FONT (font)->desc.size != GPOINTER_TO_UINT (fbf->ftf->generic.data)) { - fbf->ftf->generic.data = GUINT_TO_POINTER (PANGO_FB_FONT (font)->desc.size); - FT_Set_Char_Size (fbf->ftf, 0, PANGO_PIXELS (PANGO_FB_FONT (font)->desc.size << 6), 72, 72); + height = PANGO_FB_FONT (font)->desc.size; + fbf->ftf->generic.data = GUINT_TO_POINTER (height); + FT_Set_Char_Size (fbf->ftf, 0, PANGO_PIXELS_26_6 (height), 72, 72); } } @@ -815,8 +820,6 @@ pango_fb_font_get_glyph_extents (PangoFont *font, fbf = PANGO_FB_FONT (font); - pango_fb_font_set_size (font); - gi = pango_fb_font_get_glyph_info (font, glyph); my_extents = gi->extents; @@ -840,8 +843,8 @@ pango_fb_font_get_metrics (PangoFont *font, if (metrics) { - metrics->ascent = (ftf->size->metrics.ascender * PANGO_SCALE + 32) >> 6; - metrics->descent = ((-ftf->size->metrics.descender) * PANGO_SCALE + 32) >> 6; + metrics->ascent = PANGO_UNITS_26_6 (ftf->size->metrics.ascender); + metrics->descent = PANGO_UNITS_26_6 (-ftf->size->metrics.descender); } } |