26 #ifndef HB_CFF1_INTERP_CS_HH
27 #define HB_CFF1_INTERP_CS_HH
40 template <
typename ACC>
50 void fini () { SUPER::fini (); }
58 width = SUPER::argStack[0];
84 template <
typename OPSET,
typename PARAM,
typename PATH=path_procs_null_t<cff1_cs_
interp_env_t, PARAM>>
94 SUPER::flush_args_and_op (
op, env,
param);
98 OPSET::check_width (
op, env,
param);
101 OPSET::process_seac (env,
param);
103 OPSET::flush_args_and_op (
op, env,
param);
108 SUPER::process_op (
op, env,
param);
116 bool has_width =
false;
126 has_width = ((env.
argStack.get_count () & 1) != 0);
130 has_width = (env.
argStack.get_count () > 1);
133 has_width = (env.
argStack.get_count () > 2);
148 SUPER::flush_args (env,
param);
156 template <
typename OPSET,
typename PARAM>
#define OpCode_dotsection
biased_subrs_t< CFF1Subrs > cff1_biased_subrs_t
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro vuzp8 reg2 vuzp d d ®2 endm macro vzip8 reg2 vzip d d ®2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld[DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld init[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp skip1 beq endif SRC MASK if dst_r_bpp DST_R else add endif PF add sub src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head pixblock_size cache_preload_simple process_pixblock_tail pixinterleave dst_w_basereg irp beq endif process_pixblock_tail_head tst beq irp if pixblock_size chunk_size tst beq pixld SRC pixld MASK if DST_R else pixld DST_R endif if src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head if pixblock_size cache_preload_simple endif process_pixblock_tail pixinterleave dst_w_basereg irp if pixblock_size chunk_size tst beq if DST_W else pixst DST_W else mov ORIG_W endif add lsl if lsl endif if lsl endif lsl endif lsl endif lsl endif subs mov DST_W if regs_shortage str endif bge start_of_loop_label endm macro generate_composite_function
set set set set set set set macro pixldst1 op
GLenum const GLint * param
void set_in_seac(bool _in_seac)
void set_width(bool has_width_)
void init(const byte_str_t &str, ACC &acc, unsigned int fd)
static void flush_args(cff1_cs_interp_env_t &env, PARAM ¶m)
static void process_op(op_code_t op, cff1_cs_interp_env_t &env, PARAM ¶m)
static void check_width(op_code_t op, cff1_cs_interp_env_t &env, PARAM ¶m)
static void process_seac(cff1_cs_interp_env_t &env, PARAM ¶m)
void set_endchar(bool endchar_flag_)
arg_stack_t< ARG > argStack