Remove APPLY_ARG_DEF and APPLY_ARG
This commit is contained in:
parent
6c42cddfe5
commit
1911b9d21b
|
@ -379,7 +379,7 @@ ASSERT_SIZE (MarkRecord, 4);
|
||||||
|
|
||||||
struct MarkArray
|
struct MarkArray
|
||||||
{
|
{
|
||||||
inline bool apply (APPLY_ARG_DEF,
|
inline bool apply (hb_apply_context_t *context,
|
||||||
unsigned int mark_index, unsigned int glyph_index,
|
unsigned int mark_index, unsigned int glyph_index,
|
||||||
const AnchorMatrix &anchors, unsigned int class_count,
|
const AnchorMatrix &anchors, unsigned int class_count,
|
||||||
unsigned int glyph_pos) const
|
unsigned int glyph_pos) const
|
||||||
|
@ -426,7 +426,7 @@ struct SinglePosFormat1
|
||||||
friend struct SinglePos;
|
friend struct SinglePos;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
||||||
|
@ -464,7 +464,7 @@ struct SinglePosFormat2
|
||||||
friend struct SinglePos;
|
friend struct SinglePos;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
||||||
|
@ -507,12 +507,12 @@ struct SinglePos
|
||||||
friend struct PosLookupSubTable;
|
friend struct PosLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
case 2: return u.format2->apply (APPLY_ARG);
|
case 2: return u.format2->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -574,7 +574,7 @@ struct PairPosFormat1
|
||||||
friend struct PairPos;
|
friend struct PairPos;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int end = MIN (context->buffer->in_length, context->buffer->in_pos + context->context_length);
|
unsigned int end = MIN (context->buffer->in_length, context->buffer->in_pos + context->context_length);
|
||||||
|
@ -667,7 +667,7 @@ struct PairPosFormat2
|
||||||
friend struct PairPos;
|
friend struct PairPos;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int end = MIN (context->buffer->in_length, context->buffer->in_pos + context->context_length);
|
unsigned int end = MIN (context->buffer->in_length, context->buffer->in_pos + context->context_length);
|
||||||
|
@ -757,12 +757,12 @@ struct PairPos
|
||||||
friend struct PosLookupSubTable;
|
friend struct PosLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
case 2: return u.format2->apply (APPLY_ARG);
|
case 2: return u.format2->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -812,7 +812,7 @@ struct CursivePosFormat1
|
||||||
friend struct CursivePos;
|
friend struct CursivePos;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
/* Now comes the messiest part of the whole OpenType
|
/* Now comes the messiest part of the whole OpenType
|
||||||
|
@ -1009,11 +1009,11 @@ struct CursivePos
|
||||||
friend struct PosLookupSubTable;
|
friend struct PosLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1045,7 +1045,7 @@ struct MarkBasePosFormat1
|
||||||
friend struct MarkBasePos;
|
friend struct MarkBasePos;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int mark_index = (this+markCoverage) (IN_CURGLYPH ());
|
unsigned int mark_index = (this+markCoverage) (IN_CURGLYPH ());
|
||||||
|
@ -1072,7 +1072,7 @@ struct MarkBasePosFormat1
|
||||||
if (base_index == NOT_COVERED)
|
if (base_index == NOT_COVERED)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return (this+markArray).apply (APPLY_ARG, mark_index, base_index, this+baseArray, classCount, j);
|
return (this+markArray).apply (context, mark_index, base_index, this+baseArray, classCount, j);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context) {
|
inline bool sanitize (hb_sanitize_context_t *context) {
|
||||||
|
@ -1107,11 +1107,11 @@ struct MarkBasePos
|
||||||
friend struct PosLookupSubTable;
|
friend struct PosLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1148,7 +1148,7 @@ struct MarkLigPosFormat1
|
||||||
friend struct MarkLigPos;
|
friend struct MarkLigPos;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int mark_index = (this+markCoverage) (IN_CURGLYPH ());
|
unsigned int mark_index = (this+markCoverage) (IN_CURGLYPH ());
|
||||||
|
@ -1196,7 +1196,7 @@ struct MarkLigPosFormat1
|
||||||
else
|
else
|
||||||
comp_index = comp_count - 1;
|
comp_index = comp_count - 1;
|
||||||
|
|
||||||
return (this+markArray).apply (APPLY_ARG, mark_index, comp_index, lig_attach, classCount, j);
|
return (this+markArray).apply (context, mark_index, comp_index, lig_attach, classCount, j);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context) {
|
inline bool sanitize (hb_sanitize_context_t *context) {
|
||||||
|
@ -1232,11 +1232,11 @@ struct MarkLigPos
|
||||||
friend struct PosLookupSubTable;
|
friend struct PosLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1268,7 +1268,7 @@ struct MarkMarkPosFormat1
|
||||||
friend struct MarkMarkPos;
|
friend struct MarkMarkPos;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int mark1_index = (this+mark1Coverage) (IN_CURGLYPH ());
|
unsigned int mark1_index = (this+mark1Coverage) (IN_CURGLYPH ());
|
||||||
|
@ -1299,7 +1299,7 @@ struct MarkMarkPosFormat1
|
||||||
if (mark2_index == NOT_COVERED)
|
if (mark2_index == NOT_COVERED)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return (this+mark1Array).apply (APPLY_ARG, mark1_index, mark2_index, this+mark2Array, classCount, j);
|
return (this+mark1Array).apply (context, mark1_index, mark2_index, this+mark2Array, classCount, j);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context) {
|
inline bool sanitize (hb_sanitize_context_t *context) {
|
||||||
|
@ -1336,11 +1336,11 @@ struct MarkMarkPos
|
||||||
friend struct PosLookupSubTable;
|
friend struct PosLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1362,17 +1362,17 @@ struct MarkMarkPos
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static inline bool position_lookup (APPLY_ARG_DEF, unsigned int lookup_index);
|
static inline bool position_lookup (hb_apply_context_t *context, unsigned int lookup_index);
|
||||||
|
|
||||||
struct ContextPos : Context
|
struct ContextPos : Context
|
||||||
{
|
{
|
||||||
friend struct PosLookupSubTable;
|
friend struct PosLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
return Context::apply (APPLY_ARG, position_lookup);
|
return Context::apply (context, position_lookup);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1381,10 +1381,10 @@ struct ChainContextPos : ChainContext
|
||||||
friend struct PosLookupSubTable;
|
friend struct PosLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
return ChainContext::apply (APPLY_ARG, position_lookup);
|
return ChainContext::apply (context, position_lookup);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1401,7 +1401,7 @@ struct ExtensionPos : Extension
|
||||||
return StructAtOffset<PosLookupSubTable> (*this, offset);
|
return StructAtOffset<PosLookupSubTable> (*this, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF) const;
|
inline bool apply (hb_apply_context_t *context) const;
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context);
|
inline bool sanitize (hb_sanitize_context_t *context);
|
||||||
};
|
};
|
||||||
|
@ -1429,19 +1429,19 @@ struct PosLookupSubTable
|
||||||
Extension = 9
|
Extension = 9
|
||||||
};
|
};
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF, unsigned int lookup_type) const
|
inline bool apply (hb_apply_context_t *context, unsigned int lookup_type) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (lookup_type) {
|
switch (lookup_type) {
|
||||||
case Single: return u.single->apply (APPLY_ARG);
|
case Single: return u.single->apply (context);
|
||||||
case Pair: return u.pair->apply (APPLY_ARG);
|
case Pair: return u.pair->apply (context);
|
||||||
case Cursive: return u.cursive->apply (APPLY_ARG);
|
case Cursive: return u.cursive->apply (context);
|
||||||
case MarkBase: return u.markBase->apply (APPLY_ARG);
|
case MarkBase: return u.markBase->apply (context);
|
||||||
case MarkLig: return u.markLig->apply (APPLY_ARG);
|
case MarkLig: return u.markLig->apply (context);
|
||||||
case MarkMark: return u.markMark->apply (APPLY_ARG);
|
case MarkMark: return u.markMark->apply (context);
|
||||||
case Context: return u.context->apply (APPLY_ARG);
|
case Context: return u.context->apply (context);
|
||||||
case ChainContext: return u.chainContext->apply (APPLY_ARG);
|
case ChainContext: return u.chainContext->apply (context);
|
||||||
case Extension: return u.extension->apply (APPLY_ARG);
|
case Extension: return u.extension->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1502,7 +1502,7 @@ struct PosLookup : Lookup
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < get_subtable_count (); i++)
|
for (unsigned int i = 0; i < get_subtable_count (); i++)
|
||||||
if (get_subtable (i).apply (APPLY_ARG, lookup_type))
|
if (get_subtable (i).apply (context, lookup_type))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -1585,10 +1585,10 @@ ASSERT_SIZE (GPOS, 10);
|
||||||
|
|
||||||
/* Out-of-class implementation for methods recursing */
|
/* Out-of-class implementation for methods recursing */
|
||||||
|
|
||||||
inline bool ExtensionPos::apply (APPLY_ARG_DEF) const
|
inline bool ExtensionPos::apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
return get_subtable ().apply (APPLY_ARG, get_type ());
|
return get_subtable ().apply (context, get_type ());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool ExtensionPos::sanitize (hb_sanitize_context_t *context)
|
inline bool ExtensionPos::sanitize (hb_sanitize_context_t *context)
|
||||||
|
@ -1600,7 +1600,7 @@ inline bool ExtensionPos::sanitize (hb_sanitize_context_t *context)
|
||||||
return SANITIZE (StructAtOffset<PosLookupSubTable> (*this, offset));
|
return SANITIZE (StructAtOffset<PosLookupSubTable> (*this, offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool position_lookup (APPLY_ARG_DEF, unsigned int lookup_index)
|
static inline bool position_lookup (hb_apply_context_t *context, unsigned int lookup_index)
|
||||||
{
|
{
|
||||||
const GPOS &gpos = *(context->layout->face->ot_layout.gpos);
|
const GPOS &gpos = *(context->layout->face->ot_layout.gpos);
|
||||||
const PosLookup &l = gpos.get_lookup (lookup_index);
|
const PosLookup &l = gpos.get_lookup (lookup_index);
|
||||||
|
|
|
@ -40,7 +40,7 @@ struct SingleSubstFormat1
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
hb_codepoint_t glyph_id = IN_CURGLYPH ();
|
hb_codepoint_t glyph_id = IN_CURGLYPH ();
|
||||||
|
@ -80,7 +80,7 @@ struct SingleSubstFormat2
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
hb_codepoint_t glyph_id = IN_CURGLYPH ();
|
hb_codepoint_t glyph_id = IN_CURGLYPH ();
|
||||||
|
@ -124,12 +124,12 @@ struct SingleSubst
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
case 2: return u.format2->apply (APPLY_ARG);
|
case 2: return u.format2->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -158,7 +158,7 @@ struct Sequence
|
||||||
friend struct MultipleSubstFormat1;
|
friend struct MultipleSubstFormat1;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
if (unlikely (!substitute.len))
|
if (unlikely (!substitute.len))
|
||||||
|
@ -201,7 +201,7 @@ struct MultipleSubstFormat1
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
|
|
||||||
|
@ -209,7 +209,7 @@ struct MultipleSubstFormat1
|
||||||
if (likely (index == NOT_COVERED))
|
if (likely (index == NOT_COVERED))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return (this+sequence[index]).apply (APPLY_ARG);
|
return (this+sequence[index]).apply (context);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context) {
|
inline bool sanitize (hb_sanitize_context_t *context) {
|
||||||
|
@ -235,11 +235,11 @@ struct MultipleSubst
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -271,7 +271,7 @@ struct AlternateSubstFormat1
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
hb_codepoint_t glyph_id = IN_CURGLYPH ();
|
hb_codepoint_t glyph_id = IN_CURGLYPH ();
|
||||||
|
@ -331,11 +331,11 @@ struct AlternateSubst
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -362,7 +362,7 @@ struct Ligature
|
||||||
friend struct LigatureSet;
|
friend struct LigatureSet;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF, bool is_mark) const
|
inline bool apply (hb_apply_context_t *context, bool is_mark) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
|
@ -445,14 +445,14 @@ struct LigatureSet
|
||||||
friend struct LigatureSubstFormat1;
|
friend struct LigatureSubstFormat1;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF, bool is_mark) const
|
inline bool apply (hb_apply_context_t *context, bool is_mark) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int num_ligs = ligature.len;
|
unsigned int num_ligs = ligature.len;
|
||||||
for (unsigned int i = 0; i < num_ligs; i++)
|
for (unsigned int i = 0; i < num_ligs; i++)
|
||||||
{
|
{
|
||||||
const Ligature &lig = this+ligature[i];
|
const Ligature &lig = this+ligature[i];
|
||||||
if (lig.apply (APPLY_ARG, is_mark))
|
if (lig.apply (context, is_mark))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,7 +477,7 @@ struct LigatureSubstFormat1
|
||||||
friend struct LigatureSubst;
|
friend struct LigatureSubst;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
hb_codepoint_t glyph_id = IN_CURGLYPH ();
|
hb_codepoint_t glyph_id = IN_CURGLYPH ();
|
||||||
|
@ -489,7 +489,7 @@ struct LigatureSubstFormat1
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const LigatureSet &lig_set = this+ligatureSet[index];
|
const LigatureSet &lig_set = this+ligatureSet[index];
|
||||||
return lig_set.apply (APPLY_ARG, first_is_mark);
|
return lig_set.apply (context, first_is_mark);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context) {
|
inline bool sanitize (hb_sanitize_context_t *context) {
|
||||||
|
@ -514,11 +514,11 @@ struct LigatureSubst
|
||||||
friend struct SubstLookupSubTable;
|
friend struct SubstLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -541,17 +541,17 @@ struct LigatureSubst
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static inline bool substitute_lookup (APPLY_ARG_DEF, unsigned int lookup_index);
|
static inline bool substitute_lookup (hb_apply_context_t *context, unsigned int lookup_index);
|
||||||
|
|
||||||
struct ContextSubst : Context
|
struct ContextSubst : Context
|
||||||
{
|
{
|
||||||
friend struct SubstLookupSubTable;
|
friend struct SubstLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
return Context::apply (APPLY_ARG, substitute_lookup);
|
return Context::apply (context, substitute_lookup);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -560,10 +560,10 @@ struct ChainContextSubst : ChainContext
|
||||||
friend struct SubstLookupSubTable;
|
friend struct SubstLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
return ChainContext::apply (APPLY_ARG, substitute_lookup);
|
return ChainContext::apply (context, substitute_lookup);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -581,7 +581,7 @@ struct ExtensionSubst : Extension
|
||||||
return StructAtOffset<SubstLookupSubTable> (*this, offset);
|
return StructAtOffset<SubstLookupSubTable> (*this, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF) const;
|
inline bool apply (hb_apply_context_t *context) const;
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context);
|
inline bool sanitize (hb_sanitize_context_t *context);
|
||||||
|
|
||||||
|
@ -594,7 +594,7 @@ struct ReverseChainSingleSubstFormat1
|
||||||
friend struct ReverseChainSingleSubst;
|
friend struct ReverseChainSingleSubst;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
if (unlikely (context->context_length != NO_CONTEXT))
|
if (unlikely (context->context_length != NO_CONTEXT))
|
||||||
|
@ -607,10 +607,10 @@ struct ReverseChainSingleSubstFormat1
|
||||||
const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (backtrack);
|
const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (backtrack);
|
||||||
const ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead);
|
const ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead);
|
||||||
|
|
||||||
if (match_backtrack (APPLY_ARG,
|
if (match_backtrack (context,
|
||||||
backtrack.len, (USHORT *) backtrack.array(),
|
backtrack.len, (USHORT *) backtrack.array(),
|
||||||
match_coverage, CharP(this)) &&
|
match_coverage, CharP(this)) &&
|
||||||
match_lookahead (APPLY_ARG,
|
match_lookahead (context,
|
||||||
lookahead.len, (USHORT *) lookahead.array(),
|
lookahead.len, (USHORT *) lookahead.array(),
|
||||||
match_coverage, CharP(this),
|
match_coverage, CharP(this),
|
||||||
1))
|
1))
|
||||||
|
@ -659,11 +659,11 @@ struct ReverseChainSingleSubst
|
||||||
friend struct SubstLookupSubTable;
|
friend struct SubstLookupSubTable;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF) const
|
inline bool apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG);
|
case 1: return u.format1->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -705,18 +705,18 @@ struct SubstLookupSubTable
|
||||||
ReverseChainSingle = 8
|
ReverseChainSingle = 8
|
||||||
};
|
};
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF, unsigned int lookup_type) const
|
inline bool apply (hb_apply_context_t *context, unsigned int lookup_type) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (lookup_type) {
|
switch (lookup_type) {
|
||||||
case Single: return u.single->apply (APPLY_ARG);
|
case Single: return u.single->apply (context);
|
||||||
case Multiple: return u.multiple->apply (APPLY_ARG);
|
case Multiple: return u.multiple->apply (context);
|
||||||
case Alternate: return u.alternate->apply (APPLY_ARG);
|
case Alternate: return u.alternate->apply (context);
|
||||||
case Ligature: return u.ligature->apply (APPLY_ARG);
|
case Ligature: return u.ligature->apply (context);
|
||||||
case Context: return u.context->apply (APPLY_ARG);
|
case Context: return u.context->apply (context);
|
||||||
case ChainContext: return u.chainContext->apply (APPLY_ARG);
|
case ChainContext: return u.chainContext->apply (context);
|
||||||
case Extension: return u.extension->apply (APPLY_ARG);
|
case Extension: return u.extension->apply (context);
|
||||||
case ReverseChainSingle: return u.reverseChainContextSingle->apply (APPLY_ARG);
|
case ReverseChainSingle: return u.reverseChainContextSingle->apply (context);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -802,7 +802,7 @@ struct SubstLookup : Lookup
|
||||||
|
|
||||||
unsigned int count = get_subtable_count ();
|
unsigned int count = get_subtable_count ();
|
||||||
for (unsigned int i = 0; i < count; i++)
|
for (unsigned int i = 0; i < count; i++)
|
||||||
if (get_subtable (i).apply (APPLY_ARG, lookup_type))
|
if (get_subtable (i).apply (context, lookup_type))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -896,10 +896,10 @@ ASSERT_SIZE (GSUB, 10);
|
||||||
|
|
||||||
/* Out-of-class implementation for methods recursing */
|
/* Out-of-class implementation for methods recursing */
|
||||||
|
|
||||||
inline bool ExtensionSubst::apply (APPLY_ARG_DEF) const
|
inline bool ExtensionSubst::apply (hb_apply_context_t *context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
return get_subtable ().apply (APPLY_ARG, get_type ());
|
return get_subtable ().apply (context, get_type ());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool ExtensionSubst::sanitize (hb_sanitize_context_t *context)
|
inline bool ExtensionSubst::sanitize (hb_sanitize_context_t *context)
|
||||||
|
@ -919,7 +919,7 @@ inline bool ExtensionSubst::is_reverse (void) const
|
||||||
return SubstLookup::lookup_type_is_reverse (type);
|
return SubstLookup::lookup_type_is_reverse (type);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool substitute_lookup (APPLY_ARG_DEF, unsigned int lookup_index)
|
static inline bool substitute_lookup (hb_apply_context_t *context, unsigned int lookup_index)
|
||||||
{
|
{
|
||||||
const GSUB &gsub = *(context->layout->face->ot_layout.gsub);
|
const GSUB &gsub = *(context->layout->face->ot_layout.gsub);
|
||||||
const SubstLookup &l = gsub.get_lookup (lookup_index);
|
const SubstLookup &l = gsub.get_lookup (lookup_index);
|
||||||
|
|
|
@ -40,11 +40,6 @@
|
||||||
trace.log ("APPLY", HB_FUNC, this);
|
trace.log ("APPLY", HB_FUNC, this);
|
||||||
|
|
||||||
|
|
||||||
#define APPLY_ARG_DEF \
|
|
||||||
hb_apply_context_t *context
|
|
||||||
#define APPLY_ARG \
|
|
||||||
context
|
|
||||||
|
|
||||||
struct hb_apply_context_t
|
struct hb_apply_context_t
|
||||||
{
|
{
|
||||||
hb_ot_layout_context_t *layout;
|
hb_ot_layout_context_t *layout;
|
||||||
|
@ -64,7 +59,7 @@ struct hb_apply_context_t
|
||||||
|
|
||||||
|
|
||||||
typedef bool (*match_func_t) (hb_codepoint_t glyph_id, const USHORT &value, const char *data);
|
typedef bool (*match_func_t) (hb_codepoint_t glyph_id, const USHORT &value, const char *data);
|
||||||
typedef bool (*apply_lookup_func_t) (APPLY_ARG_DEF, unsigned int lookup_index);
|
typedef bool (*apply_lookup_func_t) (hb_apply_context_t *context, unsigned int lookup_index);
|
||||||
|
|
||||||
struct ContextFuncs
|
struct ContextFuncs
|
||||||
{
|
{
|
||||||
|
@ -91,7 +86,7 @@ static inline bool match_coverage (hb_codepoint_t glyph_id, const USHORT &value,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static inline bool match_input (APPLY_ARG_DEF,
|
static inline bool match_input (hb_apply_context_t *context,
|
||||||
unsigned int count, /* Including the first glyph (not matched) */
|
unsigned int count, /* Including the first glyph (not matched) */
|
||||||
const USHORT input[], /* Array of input values--start with second glyph */
|
const USHORT input[], /* Array of input values--start with second glyph */
|
||||||
match_func_t match_func,
|
match_func_t match_func,
|
||||||
|
@ -121,7 +116,7 @@ static inline bool match_input (APPLY_ARG_DEF,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool match_backtrack (APPLY_ARG_DEF,
|
static inline bool match_backtrack (hb_apply_context_t *context,
|
||||||
unsigned int count,
|
unsigned int count,
|
||||||
const USHORT backtrack[],
|
const USHORT backtrack[],
|
||||||
match_func_t match_func,
|
match_func_t match_func,
|
||||||
|
@ -146,7 +141,7 @@ static inline bool match_backtrack (APPLY_ARG_DEF,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool match_lookahead (APPLY_ARG_DEF,
|
static inline bool match_lookahead (hb_apply_context_t *context,
|
||||||
unsigned int count,
|
unsigned int count,
|
||||||
const USHORT lookahead[],
|
const USHORT lookahead[],
|
||||||
match_func_t match_func,
|
match_func_t match_func,
|
||||||
|
@ -191,7 +186,7 @@ struct LookupRecord
|
||||||
};
|
};
|
||||||
ASSERT_SIZE (LookupRecord, 4);
|
ASSERT_SIZE (LookupRecord, 4);
|
||||||
|
|
||||||
static inline bool apply_lookup (APPLY_ARG_DEF,
|
static inline bool apply_lookup (hb_apply_context_t *context,
|
||||||
unsigned int count, /* Including the first glyph */
|
unsigned int count, /* Including the first glyph */
|
||||||
unsigned int lookupCount,
|
unsigned int lookupCount,
|
||||||
const LookupRecord lookupRecord[], /* Array of LookupRecords--in design order */
|
const LookupRecord lookupRecord[], /* Array of LookupRecords--in design order */
|
||||||
|
@ -223,7 +218,7 @@ static inline bool apply_lookup (APPLY_ARG_DEF,
|
||||||
unsigned int old_pos = context->buffer->in_pos;
|
unsigned int old_pos = context->buffer->in_pos;
|
||||||
|
|
||||||
/* Apply a lookup */
|
/* Apply a lookup */
|
||||||
bool done = apply_func (APPLY_ARG, lookupRecord->lookupListIndex);
|
bool done = apply_func (context, lookupRecord->lookupListIndex);
|
||||||
|
|
||||||
lookupRecord++;
|
lookupRecord++;
|
||||||
lookupCount--;
|
lookupCount--;
|
||||||
|
@ -256,7 +251,7 @@ struct ContextLookupContext
|
||||||
const char *match_data;
|
const char *match_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline bool context_lookup (APPLY_ARG_DEF,
|
static inline bool context_lookup (hb_apply_context_t *context,
|
||||||
unsigned int inputCount, /* Including the first glyph (not matched) */
|
unsigned int inputCount, /* Including the first glyph (not matched) */
|
||||||
const USHORT input[], /* Array of input values--start with second glyph */
|
const USHORT input[], /* Array of input values--start with second glyph */
|
||||||
unsigned int lookupCount,
|
unsigned int lookupCount,
|
||||||
|
@ -264,14 +259,14 @@ static inline bool context_lookup (APPLY_ARG_DEF,
|
||||||
ContextLookupContext &lookup_context)
|
ContextLookupContext &lookup_context)
|
||||||
{
|
{
|
||||||
unsigned int new_context_length;
|
unsigned int new_context_length;
|
||||||
if (!match_input (APPLY_ARG,
|
if (!match_input (context,
|
||||||
inputCount, input,
|
inputCount, input,
|
||||||
lookup_context.funcs.match, lookup_context.match_data,
|
lookup_context.funcs.match, lookup_context.match_data,
|
||||||
&new_context_length)) return false;
|
&new_context_length)) return false;
|
||||||
unsigned int old_context_length;
|
unsigned int old_context_length;
|
||||||
old_context_length = context->context_length;
|
old_context_length = context->context_length;
|
||||||
context->context_length = new_context_length;
|
context->context_length = new_context_length;
|
||||||
bool ret = apply_lookup (APPLY_ARG,
|
bool ret = apply_lookup (context,
|
||||||
inputCount,
|
inputCount,
|
||||||
lookupCount, lookupRecord,
|
lookupCount, lookupRecord,
|
||||||
lookup_context.funcs.apply);
|
lookup_context.funcs.apply);
|
||||||
|
@ -284,11 +279,11 @@ struct Rule
|
||||||
friend struct RuleSet;
|
friend struct RuleSet;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF, ContextLookupContext &lookup_context) const
|
inline bool apply (hb_apply_context_t *context, ContextLookupContext &lookup_context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (input, input[0].get_size () * (inputCount ? inputCount - 1 : 0));
|
const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (input, input[0].get_size () * (inputCount ? inputCount - 1 : 0));
|
||||||
return context_lookup (APPLY_ARG,
|
return context_lookup (context,
|
||||||
inputCount, input,
|
inputCount, input,
|
||||||
lookupCount, lookupRecord,
|
lookupCount, lookupRecord,
|
||||||
lookup_context);
|
lookup_context);
|
||||||
|
@ -317,13 +312,13 @@ ASSERT_SIZE_VAR2 (Rule, 4, USHORT, LookupRecord);
|
||||||
|
|
||||||
struct RuleSet
|
struct RuleSet
|
||||||
{
|
{
|
||||||
inline bool apply (APPLY_ARG_DEF, ContextLookupContext &lookup_context) const
|
inline bool apply (hb_apply_context_t *context, ContextLookupContext &lookup_context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int num_rules = rule.len;
|
unsigned int num_rules = rule.len;
|
||||||
for (unsigned int i = 0; i < num_rules; i++)
|
for (unsigned int i = 0; i < num_rules; i++)
|
||||||
{
|
{
|
||||||
if ((this+rule[i]).apply (APPLY_ARG, lookup_context))
|
if ((this+rule[i]).apply (context, lookup_context))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,7 +342,7 @@ struct ContextFormat1
|
||||||
friend struct Context;
|
friend struct Context;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF, apply_lookup_func_t apply_func) const
|
inline bool apply (hb_apply_context_t *context, apply_lookup_func_t apply_func) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
||||||
|
@ -359,7 +354,7 @@ struct ContextFormat1
|
||||||
{match_glyph, apply_func},
|
{match_glyph, apply_func},
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
return rule_set.apply (APPLY_ARG, lookup_context);
|
return rule_set.apply (context, lookup_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context) {
|
inline bool sanitize (hb_sanitize_context_t *context) {
|
||||||
|
@ -385,7 +380,7 @@ struct ContextFormat2
|
||||||
friend struct Context;
|
friend struct Context;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF, apply_lookup_func_t apply_func) const
|
inline bool apply (hb_apply_context_t *context, apply_lookup_func_t apply_func) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
||||||
|
@ -402,7 +397,7 @@ struct ContextFormat2
|
||||||
{match_class, apply_func},
|
{match_class, apply_func},
|
||||||
CharP(&class_def)
|
CharP(&class_def)
|
||||||
};
|
};
|
||||||
return rule_set.apply (APPLY_ARG, lookup_context);
|
return rule_set.apply (context, lookup_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context) {
|
inline bool sanitize (hb_sanitize_context_t *context) {
|
||||||
|
@ -432,7 +427,7 @@ struct ContextFormat3
|
||||||
friend struct Context;
|
friend struct Context;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF, apply_lookup_func_t apply_func) const
|
inline bool apply (hb_apply_context_t *context, apply_lookup_func_t apply_func) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int index = (this+coverage[0]) (IN_CURGLYPH ());
|
unsigned int index = (this+coverage[0]) (IN_CURGLYPH ());
|
||||||
|
@ -444,7 +439,7 @@ struct ContextFormat3
|
||||||
{match_coverage, apply_func},
|
{match_coverage, apply_func},
|
||||||
CharP(this)
|
CharP(this)
|
||||||
};
|
};
|
||||||
return context_lookup (APPLY_ARG,
|
return context_lookup (context,
|
||||||
glyphCount, (const USHORT *) (coverage + 1),
|
glyphCount, (const USHORT *) (coverage + 1),
|
||||||
lookupCount, lookupRecord,
|
lookupCount, lookupRecord,
|
||||||
lookup_context);
|
lookup_context);
|
||||||
|
@ -477,13 +472,13 @@ ASSERT_SIZE_VAR2 (ContextFormat3, 6, OffsetTo<Coverage>, LookupRecord);
|
||||||
struct Context
|
struct Context
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
inline bool apply (APPLY_ARG_DEF, apply_lookup_func_t apply_func) const
|
inline bool apply (hb_apply_context_t *context, apply_lookup_func_t apply_func) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG, apply_func);
|
case 1: return u.format1->apply (context, apply_func);
|
||||||
case 2: return u.format2->apply (APPLY_ARG, apply_func);
|
case 2: return u.format2->apply (context, apply_func);
|
||||||
case 3: return u.format3->apply (APPLY_ARG, apply_func);
|
case 3: return u.format3->apply (context, apply_func);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -517,7 +512,7 @@ struct ChainContextLookupContext
|
||||||
const char *match_data[3];
|
const char *match_data[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline bool chain_context_lookup (APPLY_ARG_DEF,
|
static inline bool chain_context_lookup (hb_apply_context_t *context,
|
||||||
unsigned int backtrackCount,
|
unsigned int backtrackCount,
|
||||||
const USHORT backtrack[],
|
const USHORT backtrack[],
|
||||||
unsigned int inputCount, /* Including the first glyph (not matched) */
|
unsigned int inputCount, /* Including the first glyph (not matched) */
|
||||||
|
@ -535,14 +530,14 @@ static inline bool chain_context_lookup (APPLY_ARG_DEF,
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned int offset;
|
unsigned int offset;
|
||||||
if (!(match_backtrack (APPLY_ARG,
|
if (!(match_backtrack (context,
|
||||||
backtrackCount, backtrack,
|
backtrackCount, backtrack,
|
||||||
lookup_context.funcs.match, lookup_context.match_data[0]) &&
|
lookup_context.funcs.match, lookup_context.match_data[0]) &&
|
||||||
match_input (APPLY_ARG,
|
match_input (context,
|
||||||
inputCount, input,
|
inputCount, input,
|
||||||
lookup_context.funcs.match, lookup_context.match_data[1],
|
lookup_context.funcs.match, lookup_context.match_data[1],
|
||||||
&offset) &&
|
&offset) &&
|
||||||
match_lookahead (APPLY_ARG,
|
match_lookahead (context,
|
||||||
lookaheadCount, lookahead,
|
lookaheadCount, lookahead,
|
||||||
lookup_context.funcs.match, lookup_context.match_data[2],
|
lookup_context.funcs.match, lookup_context.match_data[2],
|
||||||
offset))) return false;
|
offset))) return false;
|
||||||
|
@ -550,7 +545,7 @@ static inline bool chain_context_lookup (APPLY_ARG_DEF,
|
||||||
unsigned int old_context_length;
|
unsigned int old_context_length;
|
||||||
old_context_length = context->context_length;
|
old_context_length = context->context_length;
|
||||||
context->context_length = offset;
|
context->context_length = offset;
|
||||||
bool ret = apply_lookup (APPLY_ARG,
|
bool ret = apply_lookup (context,
|
||||||
inputCount,
|
inputCount,
|
||||||
lookupCount, lookupRecord,
|
lookupCount, lookupRecord,
|
||||||
lookup_context.funcs.apply);
|
lookup_context.funcs.apply);
|
||||||
|
@ -563,13 +558,13 @@ struct ChainRule
|
||||||
friend struct ChainRuleSet;
|
friend struct ChainRuleSet;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF, ChainContextLookupContext &lookup_context) const
|
inline bool apply (hb_apply_context_t *context, ChainContextLookupContext &lookup_context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> > (backtrack);
|
const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> > (backtrack);
|
||||||
const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input);
|
const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input);
|
||||||
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead);
|
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead);
|
||||||
return chain_context_lookup (APPLY_ARG,
|
return chain_context_lookup (context,
|
||||||
backtrack.len, backtrack.array(),
|
backtrack.len, backtrack.array(),
|
||||||
input.len, input.array(),
|
input.len, input.array(),
|
||||||
lookahead.len, lookahead.array(),
|
lookahead.len, lookahead.array(),
|
||||||
|
@ -609,13 +604,13 @@ ASSERT_SIZE (ChainRule, 8);
|
||||||
|
|
||||||
struct ChainRuleSet
|
struct ChainRuleSet
|
||||||
{
|
{
|
||||||
inline bool apply (APPLY_ARG_DEF, ChainContextLookupContext &lookup_context) const
|
inline bool apply (hb_apply_context_t *context, ChainContextLookupContext &lookup_context) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int num_rules = rule.len;
|
unsigned int num_rules = rule.len;
|
||||||
for (unsigned int i = 0; i < num_rules; i++)
|
for (unsigned int i = 0; i < num_rules; i++)
|
||||||
{
|
{
|
||||||
if ((this+rule[i]).apply (APPLY_ARG, lookup_context))
|
if ((this+rule[i]).apply (context, lookup_context))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -639,7 +634,7 @@ struct ChainContextFormat1
|
||||||
friend struct ChainContext;
|
friend struct ChainContext;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF, apply_lookup_func_t apply_func) const
|
inline bool apply (hb_apply_context_t *context, apply_lookup_func_t apply_func) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
||||||
|
@ -651,7 +646,7 @@ struct ChainContextFormat1
|
||||||
{match_glyph, apply_func},
|
{match_glyph, apply_func},
|
||||||
{NULL, NULL, NULL}
|
{NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
return rule_set.apply (APPLY_ARG, lookup_context);
|
return rule_set.apply (context, lookup_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context) {
|
inline bool sanitize (hb_sanitize_context_t *context) {
|
||||||
|
@ -676,7 +671,7 @@ struct ChainContextFormat2
|
||||||
friend struct ChainContext;
|
friend struct ChainContext;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline bool apply (APPLY_ARG_DEF, apply_lookup_func_t apply_func) const
|
inline bool apply (hb_apply_context_t *context, apply_lookup_func_t apply_func) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
unsigned int index = (this+coverage) (IN_CURGLYPH ());
|
||||||
|
@ -698,7 +693,7 @@ struct ChainContextFormat2
|
||||||
CharP(&input_class_def),
|
CharP(&input_class_def),
|
||||||
CharP(&lookahead_class_def)}
|
CharP(&lookahead_class_def)}
|
||||||
};
|
};
|
||||||
return rule_set.apply (APPLY_ARG, lookup_context);
|
return rule_set.apply (context, lookup_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool sanitize (hb_sanitize_context_t *context) {
|
inline bool sanitize (hb_sanitize_context_t *context) {
|
||||||
|
@ -739,7 +734,7 @@ struct ChainContextFormat3
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
inline bool apply (APPLY_ARG_DEF, apply_lookup_func_t apply_func) const
|
inline bool apply (hb_apply_context_t *context, apply_lookup_func_t apply_func) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
const OffsetArrayOf<Coverage> &input = StructAfter<OffsetArrayOf<Coverage> > (backtrack);
|
const OffsetArrayOf<Coverage> &input = StructAfter<OffsetArrayOf<Coverage> > (backtrack);
|
||||||
|
@ -754,7 +749,7 @@ struct ChainContextFormat3
|
||||||
{match_coverage, apply_func},
|
{match_coverage, apply_func},
|
||||||
{CharP(this), CharP(this), CharP(this)}
|
{CharP(this), CharP(this), CharP(this)}
|
||||||
};
|
};
|
||||||
return chain_context_lookup (APPLY_ARG,
|
return chain_context_lookup (context,
|
||||||
backtrack.len, (const USHORT *) backtrack.array(),
|
backtrack.len, (const USHORT *) backtrack.array(),
|
||||||
input.len, (const USHORT *) input.array() + 1,
|
input.len, (const USHORT *) input.array() + 1,
|
||||||
lookahead.len, (const USHORT *) lookahead.array(),
|
lookahead.len, (const USHORT *) lookahead.array(),
|
||||||
|
@ -797,13 +792,13 @@ ASSERT_SIZE (ChainContextFormat3, 10);
|
||||||
struct ChainContext
|
struct ChainContext
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
inline bool apply (APPLY_ARG_DEF, apply_lookup_func_t apply_func) const
|
inline bool apply (hb_apply_context_t *context, apply_lookup_func_t apply_func) const
|
||||||
{
|
{
|
||||||
TRACE_APPLY ();
|
TRACE_APPLY ();
|
||||||
switch (u.format) {
|
switch (u.format) {
|
||||||
case 1: return u.format1->apply (APPLY_ARG, apply_func);
|
case 1: return u.format1->apply (context, apply_func);
|
||||||
case 2: return u.format2->apply (APPLY_ARG, apply_func);
|
case 2: return u.format2->apply (context, apply_func);
|
||||||
case 3: return u.format3->apply (APPLY_ARG, apply_func);
|
case 3: return u.format3->apply (context, apply_func);
|
||||||
default:return false;
|
default:return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue