diff options
Diffstat (limited to 'Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh')
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh | 103 |
1 files changed, 47 insertions, 56 deletions
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh index 291f3e35b40..a64c8073819 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh @@ -170,11 +170,11 @@ struct Format1Entry<true> DEFINE_SIZE_STATIC (2); }; - static bool performAction (const Entry<EntryData> *entry) - { return entry->data.kernActionIndex != 0xFFFF; } + static bool performAction (const Entry<EntryData> &entry) + { return entry.data.kernActionIndex != 0xFFFF; } - static unsigned int kernActionIndex (const Entry<EntryData> *entry) - { return entry->data.kernActionIndex; } + static unsigned int kernActionIndex (const Entry<EntryData> &entry) + { return entry.data.kernActionIndex; } }; template <> struct Format1Entry<false> @@ -192,11 +192,11 @@ struct Format1Entry<false> typedef void EntryData; - static bool performAction (const Entry<EntryData> *entry) - { return entry->flags & Offset; } + static bool performAction (const Entry<EntryData> &entry) + { return entry.flags & Offset; } - static unsigned int kernActionIndex (const Entry<EntryData> *entry) - { return entry->flags & Offset; } + static unsigned int kernActionIndex (const Entry<EntryData> &entry) + { return entry.flags & Offset; } }; template <typename KernSubTableHeader> @@ -210,7 +210,7 @@ struct KerxSubTableFormat1 struct driver_context_t { - enum { in_place = true }; + static constexpr bool in_place = true; enum { DontAdvance = Format1EntryT::DontAdvance, @@ -228,15 +228,15 @@ struct KerxSubTableFormat1 crossStream (table->header.coverage & table->header.CrossStream) {} bool is_actionable (StateTableDriver<Types, EntryData> *driver HB_UNUSED, - const Entry<EntryData> *entry) + const Entry<EntryData> &entry) { return Format1EntryT::performAction (entry); } - bool transition (StateTableDriver<Types, EntryData> *driver, - const Entry<EntryData> *entry) + void transition (StateTableDriver<Types, EntryData> *driver, + const Entry<EntryData> &entry) { hb_buffer_t *buffer = driver->buffer; - unsigned int flags = entry->flags; + unsigned int flags = entry.flags; if (flags & Format1EntryT::Reset) depth = 0; @@ -259,7 +259,7 @@ struct KerxSubTableFormat1 if (!c->sanitizer.check_array (actions, depth, tuple_count)) { depth = 0; - return false; + return; } hb_mask_t kern_mask = c->plan->kern_mask; @@ -334,8 +334,6 @@ struct KerxSubTableFormat1 } } } - - return true; } private: @@ -374,7 +372,7 @@ struct KerxSubTableFormat1 protected: KernSubTableHeader header; StateTable<Types, EntryData> machine; - OffsetTo<UnsizedArrayOf<FWORD>, HBUINT, false>kernAction; + NNOffsetTo<UnsizedArrayOf<FWORD>, HBUINT> kernAction; public: DEFINE_SIZE_STATIC (KernSubTableHeader::static_size + 5 * sizeof (HBUINT)); }; @@ -443,13 +441,13 @@ struct KerxSubTableFormat2 protected: KernSubTableHeader header; HBUINT rowWidth; /* The width, in bytes, of a row in the table. */ - OffsetTo<typename Types::ClassTypeWide, HBUINT, false> + NNOffsetTo<typename Types::ClassTypeWide, HBUINT> leftClassTable; /* Offset from beginning of this subtable to * left-hand class table. */ - OffsetTo<typename Types::ClassTypeWide, HBUINT, false> + NNOffsetTo<typename Types::ClassTypeWide, HBUINT> rightClassTable;/* Offset from beginning of this subtable to * right-hand class table. */ - OffsetTo<UnsizedArrayOf<FWORD>, HBUINT, false> + NNOffsetTo<UnsizedArrayOf<FWORD>, HBUINT> array; /* Offset from beginning of this subtable to * the start of the kerning array. */ public: @@ -471,7 +469,7 @@ struct KerxSubTableFormat4 struct driver_context_t { - enum { in_place = true }; + static constexpr bool in_place = true; enum Flags { Mark = 0x8000, /* If set, remember this glyph as the marked glyph. */ @@ -498,16 +496,16 @@ struct KerxSubTableFormat4 mark (0) {} bool is_actionable (StateTableDriver<Types, EntryData> *driver HB_UNUSED, - const Entry<EntryData> *entry) + const Entry<EntryData> &entry) { - return entry->data.ankrActionIndex != 0xFFFF; + return entry.data.ankrActionIndex != 0xFFFF; } - bool transition (StateTableDriver<Types, EntryData> *driver, - const Entry<EntryData> *entry) + void transition (StateTableDriver<Types, EntryData> *driver, + const Entry<EntryData> &entry) { hb_buffer_t *buffer = driver->buffer; - if (mark_set && entry->data.ankrActionIndex != 0xFFFF && buffer->idx < buffer->len) + if (mark_set && entry.data.ankrActionIndex != 0xFFFF && buffer->idx < buffer->len) { hb_glyph_position_t &o = buffer->cur_pos(); switch (action_type) @@ -515,9 +513,8 @@ struct KerxSubTableFormat4 case 0: /* Control Point Actions.*/ { /* indexed into glyph outline. */ - const HBUINT16 *data = &ankrData[entry->data.ankrActionIndex]; - if (!c->sanitizer.check_array (data, 2)) - return false; + const HBUINT16 *data = &ankrData[entry.data.ankrActionIndex]; + if (!c->sanitizer.check_array (data, 2)) return; HB_UNUSED unsigned int markControlPoint = *data++; HB_UNUSED unsigned int currControlPoint = *data++; hb_position_t markX = 0; @@ -532,7 +529,7 @@ struct KerxSubTableFormat4 currControlPoint, HB_DIRECTION_LTR /*XXX*/, &currX, &currY)) - return true; /* True, such that the machine continues. */ + return; o.x_offset = markX - currX; o.y_offset = markY - currY; @@ -542,19 +539,16 @@ struct KerxSubTableFormat4 case 1: /* Anchor Point Actions. */ { /* Indexed into 'ankr' table. */ - const HBUINT16 *data = &ankrData[entry->data.ankrActionIndex]; - if (!c->sanitizer.check_array (data, 2)) - return false; + const HBUINT16 *data = &ankrData[entry.data.ankrActionIndex]; + if (!c->sanitizer.check_array (data, 2)) return; unsigned int markAnchorPoint = *data++; unsigned int currAnchorPoint = *data++; - const Anchor markAnchor = c->ankr_table->get_anchor (c->buffer->info[mark].codepoint, - markAnchorPoint, - c->sanitizer.get_num_glyphs (), - c->ankr_end); - const Anchor currAnchor = c->ankr_table->get_anchor (c->buffer->cur ().codepoint, - currAnchorPoint, - c->sanitizer.get_num_glyphs (), - c->ankr_end); + const Anchor &markAnchor = c->ankr_table->get_anchor (c->buffer->info[mark].codepoint, + markAnchorPoint, + c->sanitizer.get_num_glyphs ()); + const Anchor &currAnchor = c->ankr_table->get_anchor (c->buffer->cur ().codepoint, + currAnchorPoint, + c->sanitizer.get_num_glyphs ()); o.x_offset = c->font->em_scale_x (markAnchor.xCoordinate) - c->font->em_scale_x (currAnchor.xCoordinate); o.y_offset = c->font->em_scale_y (markAnchor.yCoordinate) - c->font->em_scale_y (currAnchor.yCoordinate); @@ -563,9 +557,8 @@ struct KerxSubTableFormat4 case 2: /* Control Point Coordinate Actions. */ { - const FWORD *data = (const FWORD *) &ankrData[entry->data.ankrActionIndex]; - if (!c->sanitizer.check_array (data, 4)) - return false; + const FWORD *data = (const FWORD *) &ankrData[entry.data.ankrActionIndex]; + if (!c->sanitizer.check_array (data, 4)) return; int markX = *data++; int markY = *data++; int currX = *data++; @@ -581,13 +574,11 @@ struct KerxSubTableFormat4 buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT; } - if (entry->flags & Mark) + if (entry.flags & Mark) { mark_set = true; mark = buffer->idx; } - - return true; } private: @@ -721,18 +712,18 @@ struct KerxSubTableFormat6 { struct Long { - LOffsetTo<Lookup<HBUINT32>, false> rowIndexTable; - LOffsetTo<Lookup<HBUINT32>, false> columnIndexTable; - LOffsetTo<UnsizedArrayOf<FWORD32>, false> array; + LNNOffsetTo<Lookup<HBUINT32> > rowIndexTable; + LNNOffsetTo<Lookup<HBUINT32> > columnIndexTable; + LNNOffsetTo<UnsizedArrayOf<FWORD32> > array; } l; struct Short { - LOffsetTo<Lookup<HBUINT16>, false> rowIndexTable; - LOffsetTo<Lookup<HBUINT16>, false> columnIndexTable; - LOffsetTo<UnsizedArrayOf<FWORD>, false> array; + LNNOffsetTo<Lookup<HBUINT16> > rowIndexTable; + LNNOffsetTo<Lookup<HBUINT16> > columnIndexTable; + LNNOffsetTo<UnsizedArrayOf<FWORD> > array; } s; } u; - LOffsetTo<UnsizedArrayOf<FWORD>, false> vector; + LNNOffsetTo<UnsizedArrayOf<FWORD> > vector; public: DEFINE_SIZE_STATIC (KernSubTableHeader::static_size + 24); }; @@ -981,8 +972,8 @@ struct kerx : KerxTable<kerx> { friend struct KerxTable<kerx>; - enum { tableTag = HB_AAT_TAG_kerx }; - enum { minVersion = 2u }; + static constexpr hb_tag_t tableTag = HB_AAT_TAG_kerx; + static constexpr unsigned minVersion = 2u; typedef KerxSubTableHeader SubTableHeader; typedef SubTableHeader::Types Types; |