Lines Matching full:env

214 template <typename ENV, typename PARAM>
217 static void rmoveto (ENV &env, PARAM& param) {} in rmoveto()
218 static void hmoveto (ENV &env, PARAM& param) {} in hmoveto()
219 static void vmoveto (ENV &env, PARAM& param) {} in vmoveto()
220 static void rlineto (ENV &env, PARAM& param) {} in rlineto()
221 static void hlineto (ENV &env, PARAM& param) {} in hlineto()
222 static void vlineto (ENV &env, PARAM& param) {} in vlineto()
223 static void rrcurveto (ENV &env, PARAM& param) {} in rrcurveto()
224 static void rcurveline (ENV &env, PARAM& param) {} in rcurveline()
225 static void rlinecurve (ENV &env, PARAM& param) {} in rlinecurve()
226 static void vvcurveto (ENV &env, PARAM& param) {} in vvcurveto()
227 static void hhcurveto (ENV &env, PARAM& param) {} in hhcurveto()
228 static void vhcurveto (ENV &env, PARAM& param) {} in vhcurveto()
229 static void hvcurveto (ENV &env, PARAM& param) {} in hvcurveto()
230 static void moveto (ENV &env, PARAM& param, const point_t &pt) {} in moveto()
231 static void line (ENV &env, PARAM& param, const point_t &pt1) {} in line()
232 …static void curve (ENV &env, PARAM& param, const point_t &pt1, const point_t &pt2, const point_t &… in curve()
233 static void hflex (ENV &env, PARAM& param) {} in hflex()
234 static void flex (ENV &env, PARAM& param) {} in flex()
235 static void hflex1 (ENV &env, PARAM& param) {} in hflex1()
236 static void flex1 (ENV &env, PARAM& param) {} in flex1()
239 …emplate <typename ARG, typename OPSET, typename ENV, typename PARAM, typename PATH=path_procs_null…
242 static void process_op (op_code_t op, ENV &env, PARAM& param) in process_op()
247 env.return_from_subr (); in process_op()
250 OPSET::check_width (op, env, param); in process_op()
251 env.set_endchar (true); in process_op()
252 OPSET::flush_args_and_op (op, env, param); in process_op()
256 env.argStack.push_fixed_from_substr (env.str_ref); in process_op()
260 env.call_subr (env.localSubrs, CSType_LocalSubr); in process_op()
264 env.call_subr (env.globalSubrs, CSType_GlobalSubr); in process_op()
269 OPSET::check_width (op, env, param); in process_op()
270 OPSET::process_hstem (op, env, param); in process_op()
274 OPSET::check_width (op, env, param); in process_op()
275 OPSET::process_vstem (op, env, param); in process_op()
279 OPSET::check_width (op, env, param); in process_op()
280 OPSET::process_hintmask (op, env, param); in process_op()
283 OPSET::check_width (op, env, param); in process_op()
284 PATH::rmoveto (env, param); in process_op()
285 OPSET::process_post_move (op, env, param); in process_op()
288 OPSET::check_width (op, env, param); in process_op()
289 PATH::hmoveto (env, param); in process_op()
290 OPSET::process_post_move (op, env, param); in process_op()
293 OPSET::check_width (op, env, param); in process_op()
294 PATH::vmoveto (env, param); in process_op()
295 OPSET::process_post_move (op, env, param); in process_op()
298 PATH::rlineto (env, param); in process_op()
299 process_post_path (op, env, param); in process_op()
302 PATH::hlineto (env, param); in process_op()
303 process_post_path (op, env, param); in process_op()
306 PATH::vlineto (env, param); in process_op()
307 process_post_path (op, env, param); in process_op()
310 PATH::rrcurveto (env, param); in process_op()
311 process_post_path (op, env, param); in process_op()
314 PATH::rcurveline (env, param); in process_op()
315 process_post_path (op, env, param); in process_op()
318 PATH::rlinecurve (env, param); in process_op()
319 process_post_path (op, env, param); in process_op()
322 PATH::vvcurveto (env, param); in process_op()
323 process_post_path (op, env, param); in process_op()
326 PATH::hhcurveto (env, param); in process_op()
327 process_post_path (op, env, param); in process_op()
330 PATH::vhcurveto (env, param); in process_op()
331 process_post_path (op, env, param); in process_op()
334 PATH::hvcurveto (env, param); in process_op()
335 process_post_path (op, env, param); in process_op()
339 PATH::hflex (env, param); in process_op()
340 OPSET::process_post_flex (op, env, param); in process_op()
344 PATH::flex (env, param); in process_op()
345 OPSET::process_post_flex (op, env, param); in process_op()
349 PATH::hflex1 (env, param); in process_op()
350 OPSET::process_post_flex (op, env, param); in process_op()
354 PATH::flex1 (env, param); in process_op()
355 OPSET::process_post_flex (op, env, param); in process_op()
359 SUPER::process_op (op, env); in process_op()
364 static void process_hstem (op_code_t op, ENV &env, PARAM& param) in process_hstem()
366 env.hstem_count += env.argStack.get_count () / 2; in process_hstem()
367 OPSET::flush_args_and_op (op, env, param); in process_hstem()
370 static void process_vstem (op_code_t op, ENV &env, PARAM& param) in process_vstem()
372 env.vstem_count += env.argStack.get_count () / 2; in process_vstem()
373 OPSET::flush_args_and_op (op, env, param); in process_vstem()
376 static void process_hintmask (op_code_t op, ENV &env, PARAM& param) in process_hintmask()
378 env.determine_hintmask_size (); in process_hintmask()
379 if (likely (env.str_ref.avail (env.hintmask_size))) in process_hintmask()
381 OPSET::flush_hintmask (op, env, param); in process_hintmask()
382 env.str_ref.inc (env.hintmask_size); in process_hintmask()
386 static void process_post_flex (op_code_t op, ENV &env, PARAM& param) in process_post_flex()
388 OPSET::flush_args_and_op (op, env, param); in process_post_flex()
391 static void check_width (op_code_t op, ENV &env, PARAM& param) in check_width()
394 static void process_post_move (op_code_t op, ENV &env, PARAM& param) in process_post_move()
396 if (!env.seen_moveto) in process_post_move()
398 env.determine_hintmask_size (); in process_post_move()
399 env.seen_moveto = true; in process_post_move()
401 OPSET::flush_args_and_op (op, env, param); in process_post_move()
404 static void process_post_path (op_code_t op, ENV &env, PARAM& param) in process_post_path()
406 OPSET::flush_args_and_op (op, env, param); in process_post_path()
409 static void flush_args_and_op (op_code_t op, ENV &env, PARAM& param) in flush_args_and_op()
411 OPSET::flush_args (env, param); in flush_args_and_op()
412 OPSET::flush_op (op, env, param); in flush_args_and_op()
415 static void flush_args (ENV &env, PARAM& param) in flush_args()
417 env.pop_n_args (env.argStack.get_count ()); in flush_args()
420 static void flush_op (op_code_t op, ENV &env, PARAM& param) in flush_op()
424 static void flush_hintmask (op_code_t op, ENV &env, PARAM& param) in flush_hintmask()
426 OPSET::flush_args_and_op (op, env, param); in flush_hintmask()
451 template <typename PATH, typename ENV, typename PARAM>
454 static void rmoveto (ENV &env, PARAM& param) in rmoveto()
456 point_t pt1 = env.get_pt (); in rmoveto()
457 const number_t &dy = env.pop_arg (); in rmoveto()
458 const number_t &dx = env.pop_arg (); in rmoveto()
460 PATH::moveto (env, param, pt1); in rmoveto()
463 static void hmoveto (ENV &env, PARAM& param) in hmoveto()
465 point_t pt1 = env.get_pt (); in hmoveto()
466 pt1.move_x (env.pop_arg ()); in hmoveto()
467 PATH::moveto (env, param, pt1); in hmoveto()
470 static void vmoveto (ENV &env, PARAM& param) in vmoveto()
472 point_t pt1 = env.get_pt (); in vmoveto()
473 pt1.move_y (env.pop_arg ()); in vmoveto()
474 PATH::moveto (env, param, pt1); in vmoveto()
477 static void rlineto (ENV &env, PARAM& param) in rlineto()
479 for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2) in rlineto()
481 point_t pt1 = env.get_pt (); in rlineto()
482 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rlineto()
483 PATH::line (env, param, pt1); in rlineto()
487 static void hlineto (ENV &env, PARAM& param) in hlineto()
491 for (; i + 2 <= env.argStack.get_count (); i += 2) in hlineto()
493 pt1 = env.get_pt (); in hlineto()
494 pt1.move_x (env.eval_arg (i)); in hlineto()
495 PATH::line (env, param, pt1); in hlineto()
496 pt1.move_y (env.eval_arg (i+1)); in hlineto()
497 PATH::line (env, param, pt1); in hlineto()
499 if (i < env.argStack.get_count ()) in hlineto()
501 pt1 = env.get_pt (); in hlineto()
502 pt1.move_x (env.eval_arg (i)); in hlineto()
503 PATH::line (env, param, pt1); in hlineto()
507 static void vlineto (ENV &env, PARAM& param) in vlineto()
511 for (; i + 2 <= env.argStack.get_count (); i += 2) in vlineto()
513 pt1 = env.get_pt (); in vlineto()
514 pt1.move_y (env.eval_arg (i)); in vlineto()
515 PATH::line (env, param, pt1); in vlineto()
516 pt1.move_x (env.eval_arg (i+1)); in vlineto()
517 PATH::line (env, param, pt1); in vlineto()
519 if (i < env.argStack.get_count ()) in vlineto()
521 pt1 = env.get_pt (); in vlineto()
522 pt1.move_y (env.eval_arg (i)); in vlineto()
523 PATH::line (env, param, pt1); in vlineto()
527 static void rrcurveto (ENV &env, PARAM& param) in rrcurveto()
529 for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6) in rrcurveto()
531 point_t pt1 = env.get_pt (); in rrcurveto()
532 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rrcurveto()
534 pt2.move (env.eval_arg (i+2), env.eval_arg (i+3)); in rrcurveto()
536 pt3.move (env.eval_arg (i+4), env.eval_arg (i+5)); in rrcurveto()
537 PATH::curve (env, param, pt1, pt2, pt3); in rrcurveto()
541 static void rcurveline (ENV &env, PARAM& param) in rcurveline()
543 unsigned int arg_count = env.argStack.get_count (); in rcurveline()
551 point_t pt1 = env.get_pt (); in rcurveline()
552 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rcurveline()
554 pt2.move (env.eval_arg (i+2), env.eval_arg (i+3)); in rcurveline()
556 pt3.move (env.eval_arg (i+4), env.eval_arg (i+5)); in rcurveline()
557 PATH::curve (env, param, pt1, pt2, pt3); in rcurveline()
560 point_t pt1 = env.get_pt (); in rcurveline()
561 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rcurveline()
562 PATH::line (env, param, pt1); in rcurveline()
565 static void rlinecurve (ENV &env, PARAM& param) in rlinecurve()
567 unsigned int arg_count = env.argStack.get_count (); in rlinecurve()
575 point_t pt1 = env.get_pt (); in rlinecurve()
576 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rlinecurve()
577 PATH::line (env, param, pt1); in rlinecurve()
580 point_t pt1 = env.get_pt (); in rlinecurve()
581 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rlinecurve()
583 pt2.move (env.eval_arg (i+2), env.eval_arg (i+3)); in rlinecurve()
585 pt3.move (env.eval_arg (i+4), env.eval_arg (i+5)); in rlinecurve()
586 PATH::curve (env, param, pt1, pt2, pt3); in rlinecurve()
589 static void vvcurveto (ENV &env, PARAM& param) in vvcurveto()
592 point_t pt1 = env.get_pt (); in vvcurveto()
593 if ((env.argStack.get_count () & 1) != 0) in vvcurveto()
594 pt1.move_x (env.eval_arg (i++)); in vvcurveto()
595 for (; i + 4 <= env.argStack.get_count (); i += 4) in vvcurveto()
597 pt1.move_y (env.eval_arg (i)); in vvcurveto()
599 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in vvcurveto()
601 pt3.move_y (env.eval_arg (i+3)); in vvcurveto()
602 PATH::curve (env, param, pt1, pt2, pt3); in vvcurveto()
603 pt1 = env.get_pt (); in vvcurveto()
607 static void hhcurveto (ENV &env, PARAM& param) in hhcurveto()
610 point_t pt1 = env.get_pt (); in hhcurveto()
611 if ((env.argStack.get_count () & 1) != 0) in hhcurveto()
612 pt1.move_y (env.eval_arg (i++)); in hhcurveto()
613 for (; i + 4 <= env.argStack.get_count (); i += 4) in hhcurveto()
615 pt1.move_x (env.eval_arg (i)); in hhcurveto()
617 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in hhcurveto()
619 pt3.move_x (env.eval_arg (i+3)); in hhcurveto()
620 PATH::curve (env, param, pt1, pt2, pt3); in hhcurveto()
621 pt1 = env.get_pt (); in hhcurveto()
625 static void vhcurveto (ENV &env, PARAM& param) in vhcurveto()
629 if ((env.argStack.get_count () % 8) >= 4) in vhcurveto()
631 point_t pt1 = env.get_pt (); in vhcurveto()
632 pt1.move_y (env.eval_arg (i)); in vhcurveto()
634 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in vhcurveto()
636 pt3.move_x (env.eval_arg (i+3)); in vhcurveto()
639 for (; i + 8 <= env.argStack.get_count (); i += 8) in vhcurveto()
641 PATH::curve (env, param, pt1, pt2, pt3); in vhcurveto()
642 pt1 = env.get_pt (); in vhcurveto()
643 pt1.move_x (env.eval_arg (i)); in vhcurveto()
645 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in vhcurveto()
647 pt3.move_y (env.eval_arg (i+3)); in vhcurveto()
648 PATH::curve (env, param, pt1, pt2, pt3); in vhcurveto()
651 pt1.move_y (env.eval_arg (i+4)); in vhcurveto()
653 pt2.move (env.eval_arg (i+5), env.eval_arg (i+6)); in vhcurveto()
655 pt3.move_x (env.eval_arg (i+7)); in vhcurveto()
657 if (i < env.argStack.get_count ()) in vhcurveto()
658 pt3.move_y (env.eval_arg (i)); in vhcurveto()
659 PATH::curve (env, param, pt1, pt2, pt3); in vhcurveto()
663 for (; i + 8 <= env.argStack.get_count (); i += 8) in vhcurveto()
665 pt1 = env.get_pt (); in vhcurveto()
666 pt1.move_y (env.eval_arg (i)); in vhcurveto()
668 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in vhcurveto()
670 pt3.move_x (env.eval_arg (i+3)); in vhcurveto()
671 PATH::curve (env, param, pt1, pt2, pt3); in vhcurveto()
674 pt1.move_x (env.eval_arg (i+4)); in vhcurveto()
676 pt2.move (env.eval_arg (i+5), env.eval_arg (i+6)); in vhcurveto()
678 pt3.move_y (env.eval_arg (i+7)); in vhcurveto()
679 if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0)) in vhcurveto()
680 pt3.move_x (env.eval_arg (i+8)); in vhcurveto()
681 PATH::curve (env, param, pt1, pt2, pt3); in vhcurveto()
686 static void hvcurveto (ENV &env, PARAM& param) in hvcurveto()
690 if ((env.argStack.get_count () % 8) >= 4) in hvcurveto()
692 point_t pt1 = env.get_pt (); in hvcurveto()
693 pt1.move_x (env.eval_arg (i)); in hvcurveto()
695 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in hvcurveto()
697 pt3.move_y (env.eval_arg (i+3)); in hvcurveto()
700 for (; i + 8 <= env.argStack.get_count (); i += 8) in hvcurveto()
702 PATH::curve (env, param, pt1, pt2, pt3); in hvcurveto()
703 pt1 = env.get_pt (); in hvcurveto()
704 pt1.move_y (env.eval_arg (i)); in hvcurveto()
706 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in hvcurveto()
708 pt3.move_x (env.eval_arg (i+3)); in hvcurveto()
709 PATH::curve (env, param, pt1, pt2, pt3); in hvcurveto()
712 pt1.move_x (env.eval_arg (i+4)); in hvcurveto()
714 pt2.move (env.eval_arg (i+5), env.eval_arg (i+6)); in hvcurveto()
716 pt3.move_y (env.eval_arg (i+7)); in hvcurveto()
718 if (i < env.argStack.get_count ()) in hvcurveto()
719 pt3.move_x (env.eval_arg (i)); in hvcurveto()
720 PATH::curve (env, param, pt1, pt2, pt3); in hvcurveto()
724 for (; i + 8 <= env.argStack.get_count (); i += 8) in hvcurveto()
726 pt1 = env.get_pt (); in hvcurveto()
727 pt1.move_x (env.eval_arg (i)); in hvcurveto()
729 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in hvcurveto()
731 pt3.move_y (env.eval_arg (i+3)); in hvcurveto()
732 PATH::curve (env, param, pt1, pt2, pt3); in hvcurveto()
735 pt1.move_y (env.eval_arg (i+4)); in hvcurveto()
737 pt2.move (env.eval_arg (i+5), env.eval_arg (i+6)); in hvcurveto()
739 pt3.move_x (env.eval_arg (i+7)); in hvcurveto()
740 if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0)) in hvcurveto()
741 pt3.move_y (env.eval_arg (i+8)); in hvcurveto()
742 PATH::curve (env, param, pt1, pt2, pt3); in hvcurveto()
748 static void moveto (ENV &env, PARAM& param, const point_t &pt) in moveto()
749 { env.moveto (pt); } in moveto()
751 static void line (ENV &env, PARAM& param, const point_t &pt1) in line()
752 { PATH::moveto (env, param, pt1); } in line()
754 …static void curve (ENV &env, PARAM& param, const point_t &pt1, const point_t &pt2, const point_t &… in curve()
755 { PATH::moveto (env, param, pt3); } in curve()
757 static void hflex (ENV &env, PARAM& param) in hflex()
759 if (likely (env.argStack.get_count () == 7)) in hflex()
761 point_t pt1 = env.get_pt (); in hflex()
762 pt1.move_x (env.eval_arg (0)); in hflex()
764 pt2.move (env.eval_arg (1), env.eval_arg (2)); in hflex()
766 pt3.move_x (env.eval_arg (3)); in hflex()
768 pt4.move_x (env.eval_arg (4)); in hflex()
770 pt5.move_x (env.eval_arg (5)); in hflex()
773 pt6.move_x (env.eval_arg (6)); in hflex()
775 curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6); in hflex()
778 env.set_error (); in hflex()
781 static void flex (ENV &env, PARAM& param) in flex()
783 if (likely (env.argStack.get_count () == 13)) in flex()
785 point_t pt1 = env.get_pt (); in flex()
786 pt1.move (env.eval_arg (0), env.eval_arg (1)); in flex()
788 pt2.move (env.eval_arg (2), env.eval_arg (3)); in flex()
790 pt3.move (env.eval_arg (4), env.eval_arg (5)); in flex()
792 pt4.move (env.eval_arg (6), env.eval_arg (7)); in flex()
794 pt5.move (env.eval_arg (8), env.eval_arg (9)); in flex()
796 pt6.move (env.eval_arg (10), env.eval_arg (11)); in flex()
798 curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6); in flex()
801 env.set_error (); in flex()
804 static void hflex1 (ENV &env, PARAM& param) in hflex1()
806 if (likely (env.argStack.get_count () == 9)) in hflex1()
808 point_t pt1 = env.get_pt (); in hflex1()
809 pt1.move (env.eval_arg (0), env.eval_arg (1)); in hflex1()
811 pt2.move (env.eval_arg (2), env.eval_arg (3)); in hflex1()
813 pt3.move_x (env.eval_arg (4)); in hflex1()
815 pt4.move_x (env.eval_arg (5)); in hflex1()
817 pt5.move (env.eval_arg (6), env.eval_arg (7)); in hflex1()
819 pt6.move_x (env.eval_arg (8)); in hflex1()
820 pt6.y = env.get_pt ().y; in hflex1()
822 curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6); in hflex1()
825 env.set_error (); in hflex1()
828 static void flex1 (ENV &env, PARAM& param) in flex1()
830 if (likely (env.argStack.get_count () == 11)) in flex1()
834 d.move (env.eval_arg (i), env.eval_arg (i+1)); in flex1()
836 point_t pt1 = env.get_pt (); in flex1()
837 pt1.move (env.eval_arg (0), env.eval_arg (1)); in flex1()
839 pt2.move (env.eval_arg (2), env.eval_arg (3)); in flex1()
841 pt3.move (env.eval_arg (4), env.eval_arg (5)); in flex1()
843 pt4.move (env.eval_arg (6), env.eval_arg (7)); in flex1()
845 pt5.move (env.eval_arg (8), env.eval_arg (9)); in flex1()
850 pt6.move_x (env.eval_arg (10)); in flex1()
851 pt6.y = env.get_pt ().y; in flex1()
855 pt6.x = env.get_pt ().x; in flex1()
856 pt6.move_y (env.eval_arg (10)); in flex1()
859 curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6); in flex1()
862 env.set_error (); in flex1()
866 static void curve2 (ENV &env, PARAM& param, in curve2()
870 PATH::curve (env, param, pt1, pt2, pt3); in curve2()
871 PATH::curve (env, param, pt4, pt5, pt6); in curve2()
875 template <typename ENV, typename OPSET, typename PARAM>
876 struct cs_interpreter_t : interpreter_t<ENV>
878 cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {} in cs_interpreter_t()
882 SUPER::env.set_endchar (false); in interpret()
886 OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param); in interpret()
887 if (unlikely (SUPER::env.in_error () || !--max_ops)) in interpret()
889 SUPER::env.set_error (); in interpret()
892 if (SUPER::env.is_endchar ()) in interpret()
900 typedef interpreter_t<ENV> SUPER;