From bd18b6adf8697c1ce3f4e3831b9f2a99d930e97d Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 21 Feb 2018 17:42:58 -0800 Subject: [PATCH] [subset] Move DeviceRecord inside of hdmx. --- src/hb-ot-hdmx-table.hh | 98 +++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 48 deletions(-) diff --git a/src/hb-ot-hdmx-table.hh b/src/hb-ot-hdmx-table.hh index d2557058..6bf492cb 100644 --- a/src/hb-ot-hdmx-table.hh +++ b/src/hb-ot-hdmx-table.hh @@ -34,67 +34,69 @@ namespace OT { #define HB_OT_TAG_hdmx HB_TAG('h','d','m','x') -struct DeviceRecord + +struct hdmx { - struct SubsetView - { - const DeviceRecord *source_device_record; - hb_subset_plan_t *subset_plan; + static const hb_tag_t tableTag = HB_OT_TAG_glyf; - inline void init(const DeviceRecord *source_device_record, - hb_subset_plan_t *subset_plan) + struct DeviceRecord + { + struct SubsetView { - this->source_device_record = source_device_record; - this->subset_plan = subset_plan; - } - - inline unsigned int len () const + const DeviceRecord *source_device_record; + hb_subset_plan_t *subset_plan; + + inline void init(const DeviceRecord *source_device_record, + hb_subset_plan_t *subset_plan) + { + this->source_device_record = source_device_record; + this->subset_plan = subset_plan; + } + + inline unsigned int len () const + { + return this->subset_plan->gids_to_retain_sorted.len; + } + + inline const HBUINT8& operator [] (unsigned int i) const + { + if (unlikely (i >= len())) return Null(HBUINT8); + hb_codepoint_t gid = this->subset_plan->gids_to_retain_sorted [i]; + return this->source_device_record->widths[gid]; + } + }; + + static inline unsigned int get_size (unsigned int count) { - return this->subset_plan->gids_to_retain_sorted.len; + unsigned int raw_size = min_size + count * HBUINT8::static_size; + if (raw_size % 4) + /* Align to 32 bits */ + return raw_size + (4 - (raw_size % 4)); + return raw_size; } - inline const HBUINT8& operator [] (unsigned int i) const + inline bool serialize (hb_serialize_context_t *c, const SubsetView &subset_view) { - if (unlikely (i >= len())) return Null(HBUINT8); - hb_codepoint_t gid = this->subset_plan->gids_to_retain_sorted [i]; - return this->source_device_record->widths[gid]; - } - }; - - static inline unsigned int get_size (unsigned int count) - { - unsigned int raw_size = min_size + count * HBUINT8::static_size; - if (raw_size % 4) - /* Align to 32 bits */ - return raw_size + (4 - (raw_size % 4)); - return raw_size; - } + TRACE_SERIALIZE (this); - inline bool serialize (hb_serialize_context_t *c, const SubsetView &subset_view) - { - TRACE_SERIALIZE (this); - - if (unlikely (!c->allocate_size (get_size (subset_view.len())))) - return_trace (false); + if (unlikely (!c->allocate_size (get_size (subset_view.len())))) + return_trace (false); - this->pixel_size.set (subset_view.source_device_record->pixel_size); - this->max_width.set (subset_view.source_device_record->max_width); + this->pixel_size.set (subset_view.source_device_record->pixel_size); + this->max_width.set (subset_view.source_device_record->max_width); - for (unsigned int i = 0; i < subset_view.len(); i++) - widths[i].set (subset_view[i]); - - return_trace (true); - } + for (unsigned int i = 0; i < subset_view.len(); i++) + widths[i].set (subset_view[i]); - HBUINT8 pixel_size; - HBUINT8 max_width; - HBUINT8 widths[VAR]; + return_trace (true); + } - DEFINE_SIZE_MIN (2); -}; + HBUINT8 pixel_size; + HBUINT8 max_width; + HBUINT8 widths[VAR]; -struct hdmx -{ + DEFINE_SIZE_MIN (2); + }; inline unsigned int get_size (void) const { -- GitLab