configure.ac | 6 ++-- src/Makefile.am | 11 +++----- src/hb-blob.h | 6 +++- src/hb-buffer.h | 4 +++ src/hb-common.h | 10 +++++-- src/hb-fallback-shape-private.hh | 9 +++---- src/hb-fallback-shape.cc | 9 +++---- src/hb-font.h | 4 +++ src/hb-ft.cc | 2 + src/hb-ft.h | 2 - src/hb-glib.h | 1 src/hb-gobject.h | 1 src/hb-graphite2-private.hh | 42 +++++++++++++++++++++++++++++++++ src/hb-graphite2.cc | 5 +-- src/hb-graphite2.h | 10 +------ src/hb-icu.h | 1 src/hb-ot-layout-common-private.hh | 2 - src/hb-ot-layout-gdef-table.hh | 2 - src/hb-ot-layout-gpos-table.hh | 5 +-- src/hb-ot-layout-gsub-table.hh | 2 - src/hb-ot-layout-private.hh | 2 - src/hb-ot-layout.h | 8 +++--- src/hb-ot-shape-private.hh | 8 ++++-- src/hb-ot-shape.cc | 11 +++----- src/hb-ot-shape.h | 47 ------------------------------------- src/hb-ot-tag.h | 6 +++- src/hb-ot.h | 3 +- src/hb-private.hh | 5 +++ src/hb-shape.cc | 24 +++++++----------- src/hb-shape.h | 5 +++ src/hb-unicode.h | 4 +++ src/hb-uniscribe-private.hh | 42 +++++++++++++++++++++++++++++++++ src/hb-uniscribe.cc | 9 +++---- src/hb-uniscribe.h | 10 ------- src/hb-version.h.in | 4 +++ src/hb.h | 2 + util/helper-cairo.hh | 5 ++- util/options.hh | 9 ++++++- util/view-cairo.cc | 31 ++++++++++++++++-------- util/view-cairo.hh | 1 40 files changed, 222 insertions(+), 148 deletions(-)
New commits: commit 69b84a8f6c789726815261c2e86692de7a65d6e8 Author: Behdad Esfahbod <[email protected]> Date: Thu Apr 12 15:50:40 2012 -0400 Fix hb-view surface size calc for vertical text For some reason it doesn't quite work with IranianNastaliq, but that looks like a font issue. diff --git a/util/helper-cairo.hh b/util/helper-cairo.hh index 5edfc3a..bc3fe1d 100644 --- a/util/helper-cairo.hh +++ b/util/helper-cairo.hh @@ -64,8 +64,9 @@ struct helper_cairo_line_t { g_free (utf8); } - double get_width (void) { - return glyphs[num_glyphs].x; + void get_advance (double *x_advance, double *y_advance) { + *x_advance = glyphs[num_glyphs].x; + *y_advance = glyphs[num_glyphs].y; } }; diff --git a/util/options.hh b/util/options.hh index 165e7a1..da95017 100644 --- a/util/options.hh +++ b/util/options.hh @@ -48,6 +48,13 @@ #include <glib.h> #include <glib/gprintf.h> +#undef MIN +template <typename Type> static inline Type MIN (const Type &a, const Type &b) { return a < b ? a : b; } + +#undef MAX +template <typename Type> static inline Type MAX (const Type &a, const Type &b) { return a > b ? a : b; } + + void fail (hb_bool_t suggest_help, const char *format, ...) G_GNUC_NORETURN; diff --git a/util/view-cairo.cc b/util/view-cairo.cc index f766a4f..ce578ed 100644 --- a/util/view-cairo.cc +++ b/util/view-cairo.cc @@ -38,6 +38,7 @@ view_cairo_t::consume_line (hb_buffer_t *buffer, const char *text, unsigned int text_len) { + direction = hb_buffer_get_direction (buffer); helper_cairo_line_t l; helper_cairo_line_from_buffer (&l, buffer, text, text_len, scale); g_array_append_val (lines, l); @@ -63,14 +64,17 @@ view_cairo_t::get_surface_size (cairo_scaled_font_t *scaled_font, cairo_scaled_font_extents (scaled_font, &font_extents); - *h = font_extents.ascent - + font_extents.descent - + ((int) lines->len - 1) * (font_extents.height + line_space); - *w = 0; + bool vertical = HB_DIRECTION_IS_VERTICAL (direction); + (vertical ? *w : *h) = (int) lines->len * (font_extents.height + line_space) - line_space; + (vertical ? *h : *w) = 0; for (unsigned int i = 0; i < lines->len; i++) { helper_cairo_line_t &line = g_array_index (lines, helper_cairo_line_t, i); - double line_width = line.get_width (); - *w = MAX (*w, line_width); + double x_advance, y_advance; + line.get_advance (&x_advance, &y_advance); + if (vertical) + *h = MAX (*h, y_advance); + else + *w = MAX (*w, x_advance); } *w += margin.l + margin.r; @@ -97,17 +101,26 @@ view_cairo_t::draw (cairo_t *cr) { cairo_save (cr); + bool vertical = HB_DIRECTION_IS_VERTICAL (direction); + int v = vertical ? 1 : 0; + int h = vertical ? 0 : 1; cairo_font_extents_t font_extents; cairo_font_extents (cr, &font_extents); cairo_translate (cr, margin.l, margin.t); + double descent; + if (vertical) + descent = font_extents.height * .5; + else + descent = font_extents.height - font_extents.ascent; + cairo_translate (cr, v * -descent, h * -descent); for (unsigned int i = 0; i < lines->len; i++) { helper_cairo_line_t &l = g_array_index (lines, helper_cairo_line_t, i); if (i) - cairo_translate (cr, 0, line_space); + cairo_translate (cr, v * line_space, h * line_space); - cairo_translate (cr, 0, font_extents.ascent); + cairo_translate (cr, v * font_extents.height, h * font_extents.height); if (annotate) { cairo_save (cr); @@ -137,8 +150,6 @@ view_cairo_t::draw (cairo_t *cr) l.cluster_flags); else cairo_show_glyphs (cr, l.glyphs, l.num_glyphs); - - cairo_translate (cr, 0, font_extents.height - font_extents.ascent); } cairo_restore (cr); diff --git a/util/view-cairo.hh b/util/view-cairo.hh index 564f5c7..0f4fe94 100644 --- a/util/view-cairo.hh +++ b/util/view-cairo.hh @@ -52,6 +52,7 @@ struct view_cairo_t : output_options_t, view_options_t { void get_surface_size (cairo_scaled_font_t *scaled_font, double *w, double *h); void draw (cairo_t *cr); + hb_direction_t direction; // Remove this, make segment_properties accessible GArray *lines; double scale; }; commit 6bd9b479b8b2befbb0847282e93beade197c8038 Author: Behdad Esfahbod <[email protected]> Date: Thu Apr 12 14:53:53 2012 -0400 Hide backend-specific shape functions Also remove shaper_options argument to hb_shape_full(). That was unused and for "future". Let it go. More shaper API coming in preparation for plan/planned API. diff --git a/configure.ac b/configure.ac index 9c0a22d..319d480 100644 --- a/configure.ac +++ b/configure.ac @@ -136,11 +136,11 @@ AM_CONDITIONAL(HAVE_ICU, $have_icu) dnl ========================================================================== -PKG_CHECK_MODULES(GRAPHITE, graphite2, have_graphite=true, have_graphite=false) +PKG_CHECK_MODULES(GRAPHITE2, graphite2, have_graphite=true, have_graphite=false) if $have_graphite; then - AC_DEFINE(HAVE_GRAPHITE, 1, [Have Graphite library]) + AC_DEFINE(HAVE_GRAPHITE2, 1, [Have Graphite library]) fi -AM_CONDITIONAL(HAVE_GRAPHITE, $have_graphite) +AM_CONDITIONAL(HAVE_GRAPHITE2, $have_graphite) dnl ========================================================================== diff --git a/src/Makefile.am b/src/Makefile.am index 27c69a7..9311ab7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -77,7 +77,6 @@ HBSOURCES += \ HBHEADERS += \ hb-ot.h \ hb-ot-layout.h \ - hb-ot-shape.h \ hb-ot-tag.h \ $(NULL) endif @@ -118,17 +117,17 @@ HBSOURCES += hb-ft.cc HBHEADERS += hb-ft.h endif -if HAVE_GRAPHITE -HBCFLAGS += $(GRAPHITE_CFLAGS) -HBLIBS += $(GRAPHITE_LIBS) -HBSOURCES += hb-graphite2.cc +if HAVE_GRAPHITE2 +HBCFLAGS += $(GRAPHITE2_CFLAGS) +HBLIBS += $(GRAPHITE2_LIBS) +HBSOURCES += hb-graphite2.cc hb-graphite2-private.hh HBHEADERS += hb-graphite2.h endif if HAVE_UNISCRIBE HBCFLAGS += $(UNISCRIBE_CFLAGS) HBLIBS += $(UNISCRIBE_LIBS) -HBSOURCES += hb-uniscribe.cc +HBSOURCES += hb-uniscribe.cc hb-uniscribe-private.hh HBHEADERS += hb-uniscribe.h endif diff --git a/src/hb-fallback-shape-private.hh b/src/hb-fallback-shape-private.hh index d0beb16..159456d 100644 --- a/src/hb-fallback-shape-private.hh +++ b/src/hb-fallback-shape-private.hh @@ -36,11 +36,10 @@ HB_BEGIN_DECLS HB_INTERNAL hb_bool_t -hb_fallback_shape (hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, - unsigned int num_features, - const char * const *shaper_options); +_hb_fallback_shape (hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features); HB_END_DECLS diff --git a/src/hb-fallback-shape.cc b/src/hb-fallback-shape.cc index 2fd527f..6822d2e 100644 --- a/src/hb-fallback-shape.cc +++ b/src/hb-fallback-shape.cc @@ -29,11 +29,10 @@ #include "hb-buffer-private.hh" hb_bool_t -hb_fallback_shape (hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, - unsigned int num_features, - const char * const *shaper_options) +_hb_fallback_shape (hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features) { buffer->guess_properties (); diff --git a/src/hb-graphite2-private.hh b/src/hb-graphite2-private.hh new file mode 100644 index 0000000..644ea75 --- /dev/null +++ b/src/hb-graphite2-private.hh @@ -0,0 +1,42 @@ +/* + * Copyright © 2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_GRAPHITE2_PRIVATE_HH +#define HB_GRAPHITE2_PRIVATE_HH + +#include "hb-private.hh" + +#include "hb-graphite2.h" + + +HB_INTERNAL hb_bool_t +_hb_graphite2_shape (hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features); + + +#endif /* HB_GRAPHITE2_PRIVATE_HH */ diff --git a/src/hb-graphite2.cc b/src/hb-graphite2.cc index 0675759..64f22f7 100644 --- a/src/hb-graphite2.cc +++ b/src/hb-graphite2.cc @@ -212,11 +212,10 @@ _hb_gr_font_get_data (hb_font_t *font) hb_bool_t -hb_graphite_shape (hb_font_t *font, +_hb_graphite_shape (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, - unsigned int num_features, - const char * const *shaper_options) + unsigned int num_features) { buffer->guess_properties (); diff --git a/src/hb-graphite2.h b/src/hb-graphite2.h index 3eba9e0..2d16cc8 100644 --- a/src/hb-graphite2.h +++ b/src/hb-graphite2.h @@ -33,13 +33,6 @@ HB_BEGIN_DECLS #define HB_GRAPHITE_TAG_Silf HB_TAG('S','i','l','f') -hb_bool_t -hb_graphite_shape (hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, - unsigned int num_features, - const char * const *shaper_options); - /* TODO add gr_font/face etc getters and other glue API */ HB_END_DECLS diff --git a/src/hb-ot-shape-private.hh b/src/hb-ot-shape-private.hh index 41afd68..2ceb6f2 100644 --- a/src/hb-ot-shape-private.hh +++ b/src/hb-ot-shape-private.hh @@ -29,8 +29,6 @@ #include "hb-private.hh" -#include "hb-ot-shape.h" - #include "hb-ot-map-private.hh" #include "hb-ot-shape-complex-private.hh" #include "hb-ot-shape-normalize-private.hh" @@ -96,6 +94,12 @@ hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unic HB_INTERNAL void _hb_set_unicode_props (hb_buffer_t *buffer); +HB_INTERNAL hb_bool_t +_hb_ot_shape (hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features); + #include "hb-ot-shape-complex-private.hh" #endif /* HB_OT_SHAPE_PRIVATE_HH */ diff --git a/src/hb-ot-shape.cc b/src/hb-ot-shape.cc index 92481ed..4b20cb3 100644 --- a/src/hb-ot-shape.cc +++ b/src/hb-ot-shape.cc @@ -419,11 +419,10 @@ hb_ot_shape_execute (hb_ot_shape_plan_t *plan, } hb_bool_t -hb_ot_shape (hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, - unsigned int num_features, - const char * const *shaper_options) +_hb_ot_shape (hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features) { hb_ot_shape_plan_t plan; @@ -434,5 +433,3 @@ hb_ot_shape (hb_font_t *font, return TRUE; } - - diff --git a/src/hb-ot-shape.h b/src/hb-ot-shape.h deleted file mode 100644 index cc18be6..0000000 --- a/src/hb-ot-shape.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright © 2010 Red Hat, Inc. - * - * This is part of HarfBuzz, a text shaping library. - * - * Permission is hereby granted, without written agreement and without - * license or royalty fees, to use, copy, modify, and distribute this - * software and its documentation for any purpose, provided that the - * above copyright notice and the following two paragraphs appear in - * all copies of this software. - * - * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN - * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - * - * Red Hat Author(s): Behdad Esfahbod - */ - -#ifndef HB_OT_H_IN -#error "Include <hb-ot.h> instead." -#endif - -#ifndef HB_OT_SHAPE_H -#define HB_OT_SHAPE_H - -HB_BEGIN_DECLS - -#include "hb.h" - -hb_bool_t -hb_ot_shape (hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, - unsigned int num_features, - const char * const *shaper_options); - - -HB_END_DECLS - -#endif /* HB_OT_SHAPE_H */ diff --git a/src/hb-ot.h b/src/hb-ot.h index a825a86..a4cb371 100644 --- a/src/hb-ot.h +++ b/src/hb-ot.h @@ -31,7 +31,6 @@ #include "hb.h" #include "hb-ot-layout.h" -#include "hb-ot-shape.h" #include "hb-ot-tag.h" HB_BEGIN_DECLS diff --git a/src/hb-shape.cc b/src/hb-shape.cc index 9357f81..3d5f56c 100644 --- a/src/hb-shape.cc +++ b/src/hb-shape.cc @@ -31,30 +31,29 @@ #include "hb-buffer-private.hh" #ifdef HAVE_GRAPHITE -#include "hb-graphite2.h" +#include "hb-graphite2-private.hh" #endif #ifdef HAVE_UNISCRIBE -# include "hb-uniscribe.h" +# include "hb-uniscribe-private.hh" #endif #ifdef HAVE_OT -# include "hb-ot-shape.h" +# include "hb-ot-shape-private.hh" #endif #include "hb-fallback-shape-private.hh" typedef hb_bool_t (*hb_shape_func_t) (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, - unsigned int num_features, - const char * const *shaper_options); + unsigned int num_features); -#define HB_SHAPER_IMPLEMENT(name) {#name, hb_##name##_shape} +#define HB_SHAPER_IMPLEMENT(name) {#name, _hb_##name##_shape} static struct hb_shaper_pair_t { char name[16]; hb_shape_func_t func; } shapers[] = { /* v--- Add new shapers in the right place here */ #ifdef HAVE_GRAPHITE - HB_SHAPER_IMPLEMENT (graphite), + HB_SHAPER_IMPLEMENT (graphite2), #endif #ifdef HAVE_UNISCRIBE HB_SHAPER_IMPLEMENT (uniscribe), @@ -120,22 +119,17 @@ hb_shape_full (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features, - const char * const *shaper_options, const char * const *shaper_list) { if (likely (!shaper_list)) { for (unsigned int i = 0; i < ARRAY_LENGTH (shapers); i++) - if (likely (shapers[i].func (font, buffer, - features, num_features, - shaper_options))) + if (likely (shapers[i].func (font, buffer, features, num_features))) return TRUE; } else { while (*shaper_list) { for (unsigned int i = 0; i < ARRAY_LENGTH (shapers); i++) if (0 == strcmp (*shaper_list, shapers[i].name)) { - if (likely (shapers[i].func (font, buffer, - features, num_features, - shaper_options))) + if (likely (shapers[i].func (font, buffer, features, num_features))) return TRUE; break; } @@ -151,5 +145,5 @@ hb_shape (hb_font_t *font, const hb_feature_t *features, unsigned int num_features) { - hb_shape_full (font, buffer, features, num_features, NULL, NULL); + hb_shape_full (font, buffer, features, num_features, NULL); } diff --git a/src/hb-shape.h b/src/hb-shape.h index 99c24ab..1a0d6cf 100644 --- a/src/hb-shape.h +++ b/src/hb-shape.h @@ -57,7 +57,6 @@ hb_shape_full (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features, - const char * const *shaper_options, const char * const *shaper_list); const char ** diff --git a/src/hb-uniscribe-private.hh b/src/hb-uniscribe-private.hh new file mode 100644 index 0000000..239ab0c --- /dev/null +++ b/src/hb-uniscribe-private.hh @@ -0,0 +1,42 @@ +/* + * Copyright © 2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_UNISCRIBE_PRIVATE_HH +#define HB_UNISCRIBE_PRIVATE_HH + +#include "hb-private.hh" + +#include "hb-uniscribe.h" + + +HB_INTERNAL hb_bool_t +_hb_uniscribe_shape (hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features); + + +#endif /* HB_UNISCRIBE_PRIVATE_HH */ diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc index ce86074..41ce5e6 100644 --- a/src/hb-uniscribe.cc +++ b/src/hb-uniscribe.cc @@ -223,11 +223,10 @@ hb_uniscribe_font_get_hfont (hb_font_t *font) hb_bool_t -hb_uniscribe_shape (hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, - unsigned int num_features, - const char * const *shaper_options) +_hb_uniscribe_shape (hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features) { buffer->guess_properties (); diff --git a/src/hb-uniscribe.h b/src/hb-uniscribe.h index 7bf8090..216610e 100644 --- a/src/hb-uniscribe.h +++ b/src/hb-uniscribe.h @@ -35,13 +35,6 @@ HB_BEGIN_DECLS -hb_bool_t -hb_uniscribe_shape (hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, - unsigned int num_features, - const char * const *shaper_options); - LOGFONTW * hb_uniscribe_font_get_logfontw (hb_font_t *font); diff --git a/util/options.hh b/util/options.hh index d6322cd..165e7a1 100644 --- a/util/options.hh +++ b/util/options.hh @@ -166,7 +166,7 @@ struct shape_options_t : option_group_t } setup_buffer (buffer); - return hb_shape_full (font, buffer, features, num_features, NULL, shapers); + return hb_shape_full (font, buffer, features, num_features, shapers); } const char *direction; commit c6035cf802c60f0526f421f39a55886061df94ee Author: Behdad Esfahbod <[email protected]> Date: Thu Apr 12 13:23:59 2012 -0400 Add names to enums gdb was showing <anonymous enum> instead of useful stuff, so name all our enums. diff --git a/src/hb-blob.h b/src/hb-blob.h index 360310b..d47cc90 100644 --- a/src/hb-blob.h +++ b/src/hb-blob.h @@ -36,7 +36,7 @@ HB_BEGIN_DECLS -typedef enum { +typedef enum _hb_memory_mode_t { HB_MEMORY_MODE_DUPLICATE, HB_MEMORY_MODE_READONLY, HB_MEMORY_MODE_WRITABLE, diff --git a/src/hb-common.h b/src/hb-common.h index df929ea..dd86334 100644 --- a/src/hb-common.h +++ b/src/hb-common.h @@ -99,7 +99,7 @@ hb_tag_t hb_tag_from_string (const char *s, int len); /* hb_direction_t */ -typedef enum { +typedef enum _hb_direction_t { HB_DIRECTION_INVALID = -1, HB_DIRECTION_LTR = 0, HB_DIRECTION_RTL, @@ -140,7 +140,7 @@ hb_language_get_default (void); /* hb_unicode_general_category_t */ -typedef enum +typedef enum _hb_unicode_general_category_t { HB_UNICODE_GENERAL_CATEGORY_CONTROL, /* Cc */ HB_UNICODE_GENERAL_CATEGORY_FORMAT, /* Cf */ @@ -179,7 +179,7 @@ typedef enum /* http://unicode.org/iso15924/ */ /* http://goo.gl/x9ilM */ -typedef enum +typedef enum _hb_script_t { /* Unicode-1.1 additions */ HB_SCRIPT_COMMON = HB_TAG ('Z','y','y','y'), diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh index d478e29..ff967ea 100644 --- a/src/hb-ot-layout-common-private.hh +++ b/src/hb-ot-layout-common-private.hh @@ -271,7 +271,7 @@ typedef RecordListOf<Feature> FeatureList; struct LookupFlag : USHORT { - enum { + enum Flags { RightToLeft = 0x0001u, IgnoreBaseGlyphs = 0x0002u, IgnoreLigatures = 0x0004u, diff --git a/src/hb-ot-layout-gdef-table.hh b/src/hb-ot-layout-gdef-table.hh index ee9c508..f3f76fa 100644 --- a/src/hb-ot-layout-gdef-table.hh +++ b/src/hb-ot-layout-gdef-table.hh @@ -327,7 +327,7 @@ struct GDEF { static const hb_tag_t Tag = HB_OT_TAG_GDEF; - enum { + enum GlyphClasses { UnclassifiedGlyph = 0, BaseGlyph = 1, LigatureGlyph = 2, diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh index f843fa3..7a3c117 100644 --- a/src/hb-ot-layout-gpos-table.hh +++ b/src/hb-ot-layout-gpos-table.hh @@ -46,8 +46,7 @@ typedef Value ValueRecord[VAR]; struct ValueFormat : USHORT { - enum - { + enum Flags { xPlacement = 0x0001, /* Includes horizontal adjustment for placement */ yPlacement = 0x0002, /* Includes vertical adjustment for placement */ xAdvance = 0x0004, /* Includes horizontal adjustment for advance */ @@ -1336,7 +1335,7 @@ struct PosLookupSubTable { friend struct PosLookup; - enum { + enum Type { Single = 1, Pair = 2, Cursive = 3, diff --git a/src/hb-ot-layout-gsub-table.hh b/src/hb-ot-layout-gsub-table.hh index 941c669..8f01e13 100644 --- a/src/hb-ot-layout-gsub-table.hh +++ b/src/hb-ot-layout-gsub-table.hh @@ -678,7 +678,7 @@ struct SubstLookupSubTable { friend struct SubstLookup; - enum { + enum Type { Single = 1, Multiple = 2, Alternate = 3, diff --git a/src/hb-ot-layout-private.hh b/src/hb-ot-layout-private.hh index bf7e43b..943fba1 100644 --- a/src/hb-ot-layout-private.hh +++ b/src/hb-ot-layout-private.hh @@ -44,7 +44,7 @@ #define props_cache() var1.u16[1] /* glyph_props cache */ /* XXX cleanup */ -typedef enum { +typedef enum _hb_ot_layout_glyph_class_t { HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED = 0x0001, HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH = 0x0002, HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE = 0x0004, commit d1c9eb458c843215da8df84b596bfae51fee135b Author: Behdad Esfahbod <[email protected]> Date: Thu Apr 12 13:17:44 2012 -0400 Make it an error to include non-top-level headers Users should #include <hb.h> (or hb-ft.h, hb-glib.h, etc), but never things like hb-shape.h directly. This makes it easier to refactor headers later on without breaking compatibility. diff --git a/src/hb-blob.h b/src/hb-blob.h index 50c9ae3..360310b 100644 --- a/src/hb-blob.h +++ b/src/hb-blob.h @@ -24,6 +24,10 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_BLOB_H #define HB_BLOB_H diff --git a/src/hb-buffer.h b/src/hb-buffer.h index 9582ebe..ca1bbf4 100644 --- a/src/hb-buffer.h +++ b/src/hb-buffer.h @@ -27,6 +27,10 @@ * Google Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_BUFFER_H #define HB_BUFFER_H diff --git a/src/hb-common.h b/src/hb-common.h index 4265bb3..df929ea 100644 --- a/src/hb-common.h +++ b/src/hb-common.h @@ -26,6 +26,10 @@ * Google Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_COMMON_H #define HB_COMMON_H diff --git a/src/hb-font.h b/src/hb-font.h index 8a9dda5..7e64515 100644 --- a/src/hb-font.h +++ b/src/hb-font.h @@ -24,6 +24,10 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_FONT_H #define HB_FONT_H diff --git a/src/hb-ft.h b/src/hb-ft.h index c1772ac..696251e 100644 --- a/src/hb-ft.h +++ b/src/hb-ft.h @@ -29,8 +29,6 @@ #include "hb.h" -#include "hb-font.h" - #include <ft2build.h> #include FT_FREETYPE_H diff --git a/src/hb-glib.h b/src/hb-glib.h index 3bc3ebf..63a9d33 100644 --- a/src/hb-glib.h +++ b/src/hb-glib.h @@ -30,6 +30,7 @@ #define HB_GLIB_H #include "hb.h" + #include <glib.h> HB_BEGIN_DECLS diff --git a/src/hb-gobject.h b/src/hb-gobject.h index 25fc941..4f23fdd 100644 --- a/src/hb-gobject.h +++ b/src/hb-gobject.h @@ -28,6 +28,7 @@ #define HB_GOBJECT_H #include "hb.h" + #include <glib-object.h> HB_BEGIN_DECLS diff --git a/src/hb-graphite2.h b/src/hb-graphite2.h index 68bd019..3eba9e0 100644 --- a/src/hb-graphite2.h +++ b/src/hb-graphite2.h @@ -26,8 +26,7 @@ #ifndef HB_GRAPHITE2_H #define HB_GRAPHITE2_H -#include "hb-common.h" -#include "hb-shape.h" +#include "hb.h" HB_BEGIN_DECLS @@ -41,6 +40,8 @@ hb_graphite_shape (hb_font_t *font, unsigned int num_features, const char * const *shaper_options); +/* TODO add gr_font/face etc getters and other glue API */ + HB_END_DECLS #endif /* HB_GRAPHITE2_H */ diff --git a/src/hb-icu.h b/src/hb-icu.h index ecabec2..d22a8e1 100644 --- a/src/hb-icu.h +++ b/src/hb-icu.h @@ -30,6 +30,7 @@ #define HB_ICU_H #include "hb.h" + #include <unicode/uscript.h> diff --git a/src/hb-ot-layout.h b/src/hb-ot-layout.h index 447e35d..430e54c 100644 --- a/src/hb-ot-layout.h +++ b/src/hb-ot-layout.h @@ -24,12 +24,14 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_OT_H_IN +#error "Include <hb-ot.h> instead." +#endif + #ifndef HB_OT_LAYOUT_H #define HB_OT_LAYOUT_H -#include "hb-common.h" -#include "hb-buffer.h" -#include "hb-font.h" +#include "hb.h" #include "hb-ot-tag.h" diff --git a/src/hb-ot-shape.h b/src/hb-ot-shape.h index 1897e84..cc18be6 100644 --- a/src/hb-ot-shape.h +++ b/src/hb-ot-shape.h @@ -24,15 +24,16 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_OT_H_IN +#error "Include <hb-ot.h> instead." +#endif + #ifndef HB_OT_SHAPE_H #define HB_OT_SHAPE_H -#include "hb-common.h" -#include "hb-shape.h" - - HB_BEGIN_DECLS +#include "hb.h" hb_bool_t hb_ot_shape (hb_font_t *font, diff --git a/src/hb-ot-tag.h b/src/hb-ot-tag.h index 427a069..1bf12ab 100644 --- a/src/hb-ot-tag.h +++ b/src/hb-ot-tag.h @@ -24,10 +24,14 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_OT_H_IN +#error "Include <hb-ot.h> instead." +#endif + #ifndef HB_OT_TAG_H #define HB_OT_TAG_H -#include "hb-common.h" +#include "hb.h" HB_BEGIN_DECLS diff --git a/src/hb-ot.h b/src/hb-ot.h index fd6dd58..a825a86 100644 --- a/src/hb-ot.h +++ b/src/hb-ot.h @@ -26,6 +26,7 @@ #ifndef HB_OT_H #define HB_OT_H +#define HB_OT_H_IN #include "hb.h" @@ -36,4 +37,5 @@ HB_BEGIN_DECLS HB_END_DECLS +#undef HB_OT_H_IN #endif /* HB_OT_H */ diff --git a/src/hb-private.hh b/src/hb-private.hh index c757e2d..f561260 100644 --- a/src/hb-private.hh +++ b/src/hb-private.hh @@ -33,7 +33,10 @@ #include "config.h" #endif -#include "hb-common.h" +#include "hb.h" +#include "hb-ot.h" +#define HB_H_IN +#define HB_OT_H_IN #include <stdlib.h> #include <stddef.h> diff --git a/src/hb-shape.h b/src/hb-shape.h index 685b11d..99c24ab 100644 --- a/src/hb-shape.h +++ b/src/hb-shape.h @@ -24,6 +24,10 @@ * Red Hat Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_SHAPE_H #define HB_SHAPE_H diff --git a/src/hb-unicode.h b/src/hb-unicode.h index 13886df..205e4c7 100644 --- a/src/hb-unicode.h +++ b/src/hb-unicode.h @@ -28,6 +28,10 @@ * Google Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_UNICODE_H #define HB_UNICODE_H diff --git a/src/hb-uniscribe.h b/src/hb-uniscribe.h index dbcacd7..7bf8090 100644 --- a/src/hb-uniscribe.h +++ b/src/hb-uniscribe.h @@ -27,8 +27,7 @@ #ifndef HB_UNISCRIBE_H #define HB_UNISCRIBE_H -#include "hb-common.h" -#include "hb-shape.h" +#include "hb.h" #define _WIN32_WINNT 0x0500 #include <windows.h> diff --git a/src/hb-version.h.in b/src/hb-version.h.in index 47a9b30..43634f9 100644 --- a/src/hb-version.h.in +++ b/src/hb-version.h.in @@ -24,6 +24,10 @@ * Google Author(s): Behdad Esfahbod */ +#ifndef HB_H_IN +#error "Include <hb.h> instead." +#endif + #ifndef HB_VERSION_H #define HB_VERSION_H diff --git a/src/hb.h b/src/hb.h index 0a2ebd9..996dc91 100644 --- a/src/hb.h +++ b/src/hb.h @@ -26,6 +26,7 @@ #ifndef HB_H #define HB_H +#define HB_H_IN #include "hb-blob.h" #include "hb-buffer.h" @@ -38,4 +39,5 @@ HB_BEGIN_DECLS HB_END_DECLS +#undef HB_H_IN #endif /* HB_H */ commit 323190c27b80cddc9b3c42d19f1f243e2acb2411 Author: Behdad Esfahbod <[email protected]> Date: Thu Apr 12 12:29:10 2012 -0400 Minor diff --git a/src/hb-ft.cc b/src/hb-ft.cc index 23c2cc0..da5a4b4 100644 --- a/src/hb-ft.cc +++ b/src/hb-ft.cc @@ -61,6 +61,8 @@ * provide any API to get to the transform/delta set on the face. :( * * - Always use FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH? + * + * - FT_Load_Glyph() is exteremely costly. Do something about it? */
_______________________________________________ HarfBuzz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/harfbuzz
