aboutsummaryrefslogtreecommitdiff
path: root/src/hb-cff2-interp-cs.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/hb-cff2-interp-cs.hh')
-rw-r--r--src/hb-cff2-interp-cs.hh16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/hb-cff2-interp-cs.hh b/src/hb-cff2-interp-cs.hh
index 00c25800e..d0b9e7b08 100644
--- a/src/hb-cff2-interp-cs.hh
+++ b/src/hb-cff2-interp-cs.hh
@@ -40,15 +40,13 @@ struct blend_arg_t : number_t
void set_real (double v) { reset_blends (); number_t::set_real (v); }
void set_blends (unsigned int numValues_, unsigned int valueIndex_,
- hb_array_t<const blend_arg_t> blends_)
+ unsigned int numBlends, hb_array_t<const blend_arg_t> blends_)
{
numValues = numValues_;
valueIndex = valueIndex_;
- unsigned numBlends = blends_.length;
- if (unlikely (!deltas.resize (numBlends)))
- return;
+ deltas.resize (numBlends);
for (unsigned int i = 0; i < numBlends; i++)
- deltas.arrayZ[i] = blends_.arrayZ[i];
+ deltas[i] = blends_[i];
}
bool blending () const { return deltas.length > 0; }
@@ -63,6 +61,7 @@ struct blend_arg_t : number_t
hb_vector_t<number_t> deltas;
};
+typedef interp_env_t<blend_arg_t> BlendInterpEnv;
typedef biased_subrs_t<CFF2Subrs> cff2_biased_subrs_t;
template <typename ELEM>
@@ -155,9 +154,8 @@ struct cff2_cs_interp_env_t : cs_interp_env_t<ELEM, CFF2Subrs>
{
if (likely (scalars.length == deltas.length))
{
- unsigned count = scalars.length;
- for (unsigned i = 0; i < count; i++)
- v += (double) scalars.arrayZ[i] * deltas.arrayZ[i].to_real ();
+ for (unsigned int i = 0; i < scalars.length; i++)
+ v += (double) scalars[i] * deltas[i].to_real ();
}
}
return v;
@@ -222,7 +220,7 @@ struct cff2_cs_opset_t : cs_opset_t<ELEM, OPSET, cff2_cs_interp_env_t<ELEM>, PAR
const hb_array_t<const ELEM> blends,
unsigned n, unsigned i)
{
- arg.set_blends (n, i, blends);
+ arg.set_blends (n, i, blends.length, blends);
}
template <typename T = ELEM,
hb_enable_if (!hb_is_same (T, blend_arg_t))>