#ifndef HB_CFF2_INTERP_CS_HH
#define HB_CFF2_INTERP_CS_HH
#include "hb.hh"
#include "hb-cff-interp-cs-common.hh"
namespace CFF {
usingnamespaceOT;
struct blend_arg_t : number_t
{ … };
cff2_biased_subrs_t;
template <typename ELEM>
struct cff2_cs_interp_env_t : cs_interp_env_t<ELEM, CFF2Subrs>
{ … };
template <typename OPSET, typename PARAM, typename ELEM, typename PATH=path_procs_null_t<cff2_cs_interp_env_t<ELEM>, PARAM>>
struct cff2_cs_opset_t : cs_opset_t<ELEM, OPSET, cff2_cs_interp_env_t<ELEM>, PARAM, PATH>
{
static void process_op (op_code_t op, cff2_cs_interp_env_t<ELEM> &env, PARAM& param)
{ … }
template <typename T = ELEM,
hb_enable_if (hb_is_same (T, blend_arg_t))>
static void process_arg_blend (cff2_cs_interp_env_t<ELEM> &env,
ELEM &arg,
const hb_array_t<const ELEM> blends,
unsigned n, unsigned i)
{ … }
template <typename T = ELEM,
hb_enable_if (!hb_is_same (T, blend_arg_t))>
static void process_arg_blend (cff2_cs_interp_env_t<ELEM> &env,
ELEM &arg,
const hb_array_t<const ELEM> blends,
unsigned n, unsigned i)
{ … }
static void process_blend (cff2_cs_interp_env_t<ELEM> &env, PARAM& param)
{ … }
static void process_vsindex (cff2_cs_interp_env_t<ELEM> &env, PARAM& param)
{ … }
private:
typedef cs_opset_t<ELEM, OPSET, cff2_cs_interp_env_t<ELEM>, PARAM, PATH> SUPER;
};
cff2_cs_interpreter_t;
}
#endif