summaryrefslogtreecommitdiff
path: root/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh
diff options
context:
space:
mode:
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.hh103
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;