< 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 >