< prev index next >

src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.hh

Print this page

        

*** 24,74 **** * * Red Hat Author(s): Behdad Esfahbod * Google Author(s): Behdad Esfahbod */ ! #ifndef HB_FACE_PRIVATE_HH ! #define HB_FACE_PRIVATE_HH ! #include "hb-private.hh" ! #include "hb-object-private.hh" ! #include "hb-shaper-private.hh" ! #include "hb-shape-plan-private.hh" /* * hb_face_t */ ! struct hb_face_t { ! hb_object_header_t header; ! ASSERT_POD (); ! hb_bool_t immutable; hb_reference_table_func_t reference_table_func; void *user_data; hb_destroy_func_t destroy; unsigned int index; /* Face index in a collection, zero-based. */ ! mutable unsigned int upem; /* Units-per-EM. */ ! mutable unsigned int num_glyphs; /* Number of glyphs. */ ! struct hb_shaper_data_t shaper_data; /* Various shaper data. */ ! ! /* Various non-shaping data. */ ! /* ... */ /* Cache */ ! struct plan_node_t { hb_shape_plan_t *shape_plan; plan_node_t *next; ! } *shape_plans; ! ! inline hb_blob_t *reference_table (hb_tag_t tag) const { hb_blob_t *blob; if (unlikely (!reference_table_func)) return hb_blob_get_empty (); --- 24,75 ---- * * Red Hat Author(s): Behdad Esfahbod * Google Author(s): Behdad Esfahbod */ ! #ifndef HB_FACE_HH ! #define HB_FACE_HH ! #include "hb.hh" ! #include "hb-shaper.hh" ! #include "hb-shape-plan.hh" ! #include "hb-ot-face.hh" /* * hb_face_t */ ! #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_INSTANTIATE_SHAPERS(shaper, face); ! #include "hb-shaper-list.hh" ! #undef HB_SHAPER_IMPLEMENT ! struct hb_face_t ! { ! hb_object_header_t header; hb_reference_table_func_t reference_table_func; void *user_data; hb_destroy_func_t destroy; unsigned int index; /* Face index in a collection, zero-based. */ ! mutable hb_atomic_int_t upem; /* Units-per-EM. */ ! mutable hb_atomic_int_t num_glyphs; /* Number of glyphs. */ ! hb_shaper_object_dataset_t<hb_face_t> data;/* Various shaper data. */ ! hb_ot_face_t table; /* All the face's tables. */ /* Cache */ ! struct plan_node_t ! { hb_shape_plan_t *shape_plan; plan_node_t *next; ! }; ! hb_atomic_ptr_t<plan_node_t> shape_plans; ! hb_blob_t *reference_table (hb_tag_t tag) const { hb_blob_t *blob; if (unlikely (!reference_table_func)) return hb_blob_get_empty ();
*** 78,111 **** return hb_blob_get_empty (); return blob; } ! inline HB_PURE_FUNC unsigned int get_upem (void) const { ! if (unlikely (!upem)) ! load_upem (); ! return upem; } ! inline unsigned int get_num_glyphs (void) const { ! if (unlikely (num_glyphs == (unsigned int) -1)) ! load_num_glyphs (); ! return num_glyphs; } private: ! HB_INTERNAL void load_upem (void) const; ! HB_INTERNAL void load_num_glyphs (void) const; }; ! ! extern HB_INTERNAL const hb_face_t _hb_face_nil; ! ! #define HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS ! #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_PROTOTYPE(shaper, face); ! #include "hb-shaper-list.hh" ! #undef HB_SHAPER_IMPLEMENT ! #undef HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS ! #endif /* HB_FACE_PRIVATE_HH */ --- 79,109 ---- return hb_blob_get_empty (); return blob; } ! HB_PURE_FUNC unsigned int get_upem () const { ! unsigned int ret = upem.get_relaxed (); ! if (unlikely (!ret)) ! { ! return load_upem (); ! } ! return ret; } ! unsigned int get_num_glyphs () const { ! unsigned int ret = num_glyphs.get_relaxed (); ! if (unlikely (ret == (unsigned int) -1)) ! return load_num_glyphs (); ! return ret; } private: ! HB_INTERNAL unsigned int load_upem () const; ! HB_INTERNAL unsigned int load_num_glyphs () const; }; ! DECLARE_NULL_INSTANCE (hb_face_t); ! #endif /* HB_FACE_HH */
< prev index next >