Lines Matching full:env
225 template <typename ENV, typename PARAM>
228 static void rmoveto (ENV &env, PARAM& param) {} in rmoveto()
229 static void hmoveto (ENV &env, PARAM& param) {} in hmoveto()
230 static void vmoveto (ENV &env, PARAM& param) {} in vmoveto()
231 static void rlineto (ENV &env, PARAM& param) {} in rlineto()
232 static void hlineto (ENV &env, PARAM& param) {} in hlineto()
233 static void vlineto (ENV &env, PARAM& param) {} in vlineto()
234 static void rrcurveto (ENV &env, PARAM& param) {} in rrcurveto()
235 static void rcurveline (ENV &env, PARAM& param) {} in rcurveline()
236 static void rlinecurve (ENV &env, PARAM& param) {} in rlinecurve()
237 static void vvcurveto (ENV &env, PARAM& param) {} in vvcurveto()
238 static void hhcurveto (ENV &env, PARAM& param) {} in hhcurveto()
239 static void vhcurveto (ENV &env, PARAM& param) {} in vhcurveto()
240 static void hvcurveto (ENV &env, PARAM& param) {} in hvcurveto()
241 static void moveto (ENV &env, PARAM& param, const point_t &pt) {} in moveto()
242 static void line (ENV &env, PARAM& param, const point_t &pt1) {} in line()
243 …static void curve (ENV &env, PARAM& param, const point_t &pt1, const point_t &pt2, const point_t &… in curve()
244 static void hflex (ENV &env, PARAM& param) {} in hflex()
245 static void flex (ENV &env, PARAM& param) {} in flex()
246 static void hflex1 (ENV &env, PARAM& param) {} in hflex1()
247 static void flex1 (ENV &env, PARAM& param) {} in flex1()
250 …emplate <typename ARG, typename OPSET, typename ENV, typename PARAM, typename PATH=path_procs_null…
253 static void process_op (op_code_t op, ENV &env, PARAM& param) in process_op()
258 env.return_from_subr (); in process_op()
261 OPSET::check_width (op, env, param); in process_op()
262 env.set_endchar (true); in process_op()
263 OPSET::flush_args_and_op (op, env, param); in process_op()
267 env.argStack.push_fixed_from_substr (env.str_ref); in process_op()
271 env.call_subr (env.localSubrs, CSType_LocalSubr); in process_op()
275 env.call_subr (env.globalSubrs, CSType_GlobalSubr); in process_op()
280 OPSET::check_width (op, env, param); in process_op()
281 OPSET::process_hstem (op, env, param); in process_op()
285 OPSET::check_width (op, env, param); in process_op()
286 OPSET::process_vstem (op, env, param); in process_op()
290 OPSET::check_width (op, env, param); in process_op()
291 OPSET::process_hintmask (op, env, param); in process_op()
294 OPSET::check_width (op, env, param); in process_op()
295 PATH::rmoveto (env, param); in process_op()
296 OPSET::process_post_move (op, env, param); in process_op()
299 OPSET::check_width (op, env, param); in process_op()
300 PATH::hmoveto (env, param); in process_op()
301 OPSET::process_post_move (op, env, param); in process_op()
304 OPSET::check_width (op, env, param); in process_op()
305 PATH::vmoveto (env, param); in process_op()
306 OPSET::process_post_move (op, env, param); in process_op()
309 PATH::rlineto (env, param); in process_op()
310 process_post_path (op, env, param); in process_op()
313 PATH::hlineto (env, param); in process_op()
314 process_post_path (op, env, param); in process_op()
317 PATH::vlineto (env, param); in process_op()
318 process_post_path (op, env, param); in process_op()
321 PATH::rrcurveto (env, param); in process_op()
322 process_post_path (op, env, param); in process_op()
325 PATH::rcurveline (env, param); in process_op()
326 process_post_path (op, env, param); in process_op()
329 PATH::rlinecurve (env, param); in process_op()
330 process_post_path (op, env, param); in process_op()
333 PATH::vvcurveto (env, param); in process_op()
334 process_post_path (op, env, param); in process_op()
337 PATH::hhcurveto (env, param); in process_op()
338 process_post_path (op, env, param); in process_op()
341 PATH::vhcurveto (env, param); in process_op()
342 process_post_path (op, env, param); in process_op()
345 PATH::hvcurveto (env, param); in process_op()
346 process_post_path (op, env, param); in process_op()
350 PATH::hflex (env, param); in process_op()
351 OPSET::process_post_flex (op, env, param); in process_op()
355 PATH::flex (env, param); in process_op()
356 OPSET::process_post_flex (op, env, param); in process_op()
360 PATH::hflex1 (env, param); in process_op()
361 OPSET::process_post_flex (op, env, param); in process_op()
365 PATH::flex1 (env, param); in process_op()
366 OPSET::process_post_flex (op, env, param); in process_op()
370 SUPER::process_op (op, env); in process_op()
375 static void process_hstem (op_code_t op, ENV &env, PARAM& param) in process_hstem()
377 env.hstem_count += env.argStack.get_count () / 2; in process_hstem()
378 OPSET::flush_args_and_op (op, env, param); in process_hstem()
381 static void process_vstem (op_code_t op, ENV &env, PARAM& param) in process_vstem()
383 env.vstem_count += env.argStack.get_count () / 2; in process_vstem()
384 OPSET::flush_args_and_op (op, env, param); in process_vstem()
387 static void process_hintmask (op_code_t op, ENV &env, PARAM& param) in process_hintmask()
389 env.determine_hintmask_size (); in process_hintmask()
390 if (likely (env.str_ref.avail (env.hintmask_size))) in process_hintmask()
392 OPSET::flush_hintmask (op, env, param); in process_hintmask()
393 env.str_ref.inc (env.hintmask_size); in process_hintmask()
397 static void process_post_flex (op_code_t op, ENV &env, PARAM& param) in process_post_flex()
399 OPSET::flush_args_and_op (op, env, param); in process_post_flex()
402 static void check_width (op_code_t op, ENV &env, PARAM& param) in check_width()
405 static void process_post_move (op_code_t op, ENV &env, PARAM& param) in process_post_move()
407 if (!env.seen_moveto) in process_post_move()
409 env.determine_hintmask_size (); in process_post_move()
410 env.seen_moveto = true; in process_post_move()
412 OPSET::flush_args_and_op (op, env, param); in process_post_move()
415 static void process_post_path (op_code_t op, ENV &env, PARAM& param) in process_post_path()
417 OPSET::flush_args_and_op (op, env, param); in process_post_path()
420 static void flush_args_and_op (op_code_t op, ENV &env, PARAM& param) in flush_args_and_op()
422 OPSET::flush_args (env, param); in flush_args_and_op()
423 OPSET::flush_op (op, env, param); in flush_args_and_op()
426 static void flush_args (ENV &env, PARAM& param) in flush_args()
428 env.pop_n_args (env.argStack.get_count ()); in flush_args()
431 static void flush_op (op_code_t op, ENV &env, PARAM& param) in flush_op()
435 static void flush_hintmask (op_code_t op, ENV &env, PARAM& param) in flush_hintmask()
437 OPSET::flush_args_and_op (op, env, param); in flush_hintmask()
462 template <typename PATH, typename ENV, typename PARAM>
465 static void rmoveto (ENV &env, PARAM& param) in rmoveto()
467 point_t pt1 = env.get_pt (); in rmoveto()
468 const number_t &dy = env.pop_arg (); in rmoveto()
469 const number_t &dx = env.pop_arg (); in rmoveto()
471 PATH::moveto (env, param, pt1); in rmoveto()
474 static void hmoveto (ENV &env, PARAM& param) in hmoveto()
476 point_t pt1 = env.get_pt (); in hmoveto()
477 pt1.move_x (env.pop_arg ()); in hmoveto()
478 PATH::moveto (env, param, pt1); in hmoveto()
481 static void vmoveto (ENV &env, PARAM& param) in vmoveto()
483 point_t pt1 = env.get_pt (); in vmoveto()
484 pt1.move_y (env.pop_arg ()); in vmoveto()
485 PATH::moveto (env, param, pt1); in vmoveto()
488 static void rlineto (ENV &env, PARAM& param) in rlineto()
490 for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2) in rlineto()
492 point_t pt1 = env.get_pt (); in rlineto()
493 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rlineto()
494 PATH::line (env, param, pt1); in rlineto()
498 static void hlineto (ENV &env, PARAM& param) in hlineto()
502 for (; i + 2 <= env.argStack.get_count (); i += 2) in hlineto()
504 pt1 = env.get_pt (); in hlineto()
505 pt1.move_x (env.eval_arg (i)); in hlineto()
506 PATH::line (env, param, pt1); in hlineto()
507 pt1.move_y (env.eval_arg (i+1)); in hlineto()
508 PATH::line (env, param, pt1); in hlineto()
510 if (i < env.argStack.get_count ()) in hlineto()
512 pt1 = env.get_pt (); in hlineto()
513 pt1.move_x (env.eval_arg (i)); in hlineto()
514 PATH::line (env, param, pt1); in hlineto()
518 static void vlineto (ENV &env, PARAM& param) in vlineto()
522 for (; i + 2 <= env.argStack.get_count (); i += 2) in vlineto()
524 pt1 = env.get_pt (); in vlineto()
525 pt1.move_y (env.eval_arg (i)); in vlineto()
526 PATH::line (env, param, pt1); in vlineto()
527 pt1.move_x (env.eval_arg (i+1)); in vlineto()
528 PATH::line (env, param, pt1); in vlineto()
530 if (i < env.argStack.get_count ()) in vlineto()
532 pt1 = env.get_pt (); in vlineto()
533 pt1.move_y (env.eval_arg (i)); in vlineto()
534 PATH::line (env, param, pt1); in vlineto()
538 static void rrcurveto (ENV &env, PARAM& param) in rrcurveto()
540 for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6) in rrcurveto()
542 point_t pt1 = env.get_pt (); in rrcurveto()
543 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rrcurveto()
545 pt2.move (env.eval_arg (i+2), env.eval_arg (i+3)); in rrcurveto()
547 pt3.move (env.eval_arg (i+4), env.eval_arg (i+5)); in rrcurveto()
548 PATH::curve (env, param, pt1, pt2, pt3); in rrcurveto()
552 static void rcurveline (ENV &env, PARAM& param) in rcurveline()
554 unsigned int arg_count = env.argStack.get_count (); in rcurveline()
562 point_t pt1 = env.get_pt (); in rcurveline()
563 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rcurveline()
565 pt2.move (env.eval_arg (i+2), env.eval_arg (i+3)); in rcurveline()
567 pt3.move (env.eval_arg (i+4), env.eval_arg (i+5)); in rcurveline()
568 PATH::curve (env, param, pt1, pt2, pt3); in rcurveline()
571 point_t pt1 = env.get_pt (); in rcurveline()
572 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rcurveline()
573 PATH::line (env, param, pt1); in rcurveline()
576 static void rlinecurve (ENV &env, PARAM& param) in rlinecurve()
578 unsigned int arg_count = env.argStack.get_count (); in rlinecurve()
586 point_t pt1 = env.get_pt (); in rlinecurve()
587 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rlinecurve()
588 PATH::line (env, param, pt1); in rlinecurve()
591 point_t pt1 = env.get_pt (); in rlinecurve()
592 pt1.move (env.eval_arg (i), env.eval_arg (i+1)); in rlinecurve()
594 pt2.move (env.eval_arg (i+2), env.eval_arg (i+3)); in rlinecurve()
596 pt3.move (env.eval_arg (i+4), env.eval_arg (i+5)); in rlinecurve()
597 PATH::curve (env, param, pt1, pt2, pt3); in rlinecurve()
600 static void vvcurveto (ENV &env, PARAM& param) in vvcurveto()
603 point_t pt1 = env.get_pt (); in vvcurveto()
604 if ((env.argStack.get_count () & 1) != 0) in vvcurveto()
605 pt1.move_x (env.eval_arg (i++)); in vvcurveto()
606 for (; i + 4 <= env.argStack.get_count (); i += 4) in vvcurveto()
608 pt1.move_y (env.eval_arg (i)); in vvcurveto()
610 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in vvcurveto()
612 pt3.move_y (env.eval_arg (i+3)); in vvcurveto()
613 PATH::curve (env, param, pt1, pt2, pt3); in vvcurveto()
614 pt1 = env.get_pt (); in vvcurveto()
618 static void hhcurveto (ENV &env, PARAM& param) in hhcurveto()
621 point_t pt1 = env.get_pt (); in hhcurveto()
622 if ((env.argStack.get_count () & 1) != 0) in hhcurveto()
623 pt1.move_y (env.eval_arg (i++)); in hhcurveto()
624 for (; i + 4 <= env.argStack.get_count (); i += 4) in hhcurveto()
626 pt1.move_x (env.eval_arg (i)); in hhcurveto()
628 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in hhcurveto()
630 pt3.move_x (env.eval_arg (i+3)); in hhcurveto()
631 PATH::curve (env, param, pt1, pt2, pt3); in hhcurveto()
632 pt1 = env.get_pt (); in hhcurveto()
636 static void vhcurveto (ENV &env, PARAM& param) in vhcurveto()
640 if ((env.argStack.get_count () % 8) >= 4) in vhcurveto()
642 point_t pt1 = env.get_pt (); in vhcurveto()
643 pt1.move_y (env.eval_arg (i)); in vhcurveto()
645 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in vhcurveto()
647 pt3.move_x (env.eval_arg (i+3)); in vhcurveto()
650 for (; i + 8 <= env.argStack.get_count (); i += 8) in vhcurveto()
652 PATH::curve (env, param, pt1, pt2, pt3); in vhcurveto()
653 pt1 = env.get_pt (); in vhcurveto()
654 pt1.move_x (env.eval_arg (i)); in vhcurveto()
656 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in vhcurveto()
658 pt3.move_y (env.eval_arg (i+3)); in vhcurveto()
659 PATH::curve (env, param, pt1, pt2, pt3); in vhcurveto()
662 pt1.move_y (env.eval_arg (i+4)); in vhcurveto()
664 pt2.move (env.eval_arg (i+5), env.eval_arg (i+6)); in vhcurveto()
666 pt3.move_x (env.eval_arg (i+7)); in vhcurveto()
668 if (i < env.argStack.get_count ()) in vhcurveto()
669 pt3.move_y (env.eval_arg (i)); in vhcurveto()
670 PATH::curve (env, param, pt1, pt2, pt3); in vhcurveto()
674 for (; i + 8 <= env.argStack.get_count (); i += 8) in vhcurveto()
676 pt1 = env.get_pt (); in vhcurveto()
677 pt1.move_y (env.eval_arg (i)); in vhcurveto()
679 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in vhcurveto()
681 pt3.move_x (env.eval_arg (i+3)); in vhcurveto()
682 PATH::curve (env, param, pt1, pt2, pt3); in vhcurveto()
685 pt1.move_x (env.eval_arg (i+4)); in vhcurveto()
687 pt2.move (env.eval_arg (i+5), env.eval_arg (i+6)); in vhcurveto()
689 pt3.move_y (env.eval_arg (i+7)); in vhcurveto()
690 if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0)) in vhcurveto()
691 pt3.move_x (env.eval_arg (i+8)); in vhcurveto()
692 PATH::curve (env, param, pt1, pt2, pt3); in vhcurveto()
697 static void hvcurveto (ENV &env, PARAM& param) in hvcurveto()
701 if ((env.argStack.get_count () % 8) >= 4) in hvcurveto()
703 point_t pt1 = env.get_pt (); in hvcurveto()
704 pt1.move_x (env.eval_arg (i)); in hvcurveto()
706 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in hvcurveto()
708 pt3.move_y (env.eval_arg (i+3)); in hvcurveto()
711 for (; i + 8 <= env.argStack.get_count (); i += 8) in hvcurveto()
713 PATH::curve (env, param, pt1, pt2, pt3); in hvcurveto()
714 pt1 = env.get_pt (); in hvcurveto()
715 pt1.move_y (env.eval_arg (i)); in hvcurveto()
717 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in hvcurveto()
719 pt3.move_x (env.eval_arg (i+3)); in hvcurveto()
720 PATH::curve (env, param, pt1, pt2, pt3); in hvcurveto()
723 pt1.move_x (env.eval_arg (i+4)); in hvcurveto()
725 pt2.move (env.eval_arg (i+5), env.eval_arg (i+6)); in hvcurveto()
727 pt3.move_y (env.eval_arg (i+7)); in hvcurveto()
729 if (i < env.argStack.get_count ()) in hvcurveto()
730 pt3.move_x (env.eval_arg (i)); in hvcurveto()
731 PATH::curve (env, param, pt1, pt2, pt3); in hvcurveto()
735 for (; i + 8 <= env.argStack.get_count (); i += 8) in hvcurveto()
737 pt1 = env.get_pt (); in hvcurveto()
738 pt1.move_x (env.eval_arg (i)); in hvcurveto()
740 pt2.move (env.eval_arg (i+1), env.eval_arg (i+2)); in hvcurveto()
742 pt3.move_y (env.eval_arg (i+3)); in hvcurveto()
743 PATH::curve (env, param, pt1, pt2, pt3); in hvcurveto()
746 pt1.move_y (env.eval_arg (i+4)); in hvcurveto()
748 pt2.move (env.eval_arg (i+5), env.eval_arg (i+6)); in hvcurveto()
750 pt3.move_x (env.eval_arg (i+7)); in hvcurveto()
751 if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0)) in hvcurveto()
752 pt3.move_y (env.eval_arg (i+8)); in hvcurveto()
753 PATH::curve (env, param, pt1, pt2, pt3); in hvcurveto()
759 static void moveto (ENV &env, PARAM& param, const point_t &pt) in moveto()
760 { env.moveto (pt); } in moveto()
762 static void line (ENV &env, PARAM& param, const point_t &pt1) in line()
763 { PATH::moveto (env, param, pt1); } in line()
765 …static void curve (ENV &env, PARAM& param, const point_t &pt1, const point_t &pt2, const point_t &… in curve()
766 { PATH::moveto (env, param, pt3); } in curve()
768 static void hflex (ENV &env, PARAM& param) in hflex()
770 if (likely (env.argStack.get_count () == 7)) in hflex()
772 point_t pt1 = env.get_pt (); in hflex()
773 pt1.move_x (env.eval_arg (0)); in hflex()
775 pt2.move (env.eval_arg (1), env.eval_arg (2)); in hflex()
777 pt3.move_x (env.eval_arg (3)); in hflex()
779 pt4.move_x (env.eval_arg (4)); in hflex()
781 pt5.move_x (env.eval_arg (5)); in hflex()
784 pt6.move_x (env.eval_arg (6)); in hflex()
786 curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6); in hflex()
789 env.set_error (); in hflex()
792 static void flex (ENV &env, PARAM& param) in flex()
794 if (likely (env.argStack.get_count () == 13)) in flex()
796 point_t pt1 = env.get_pt (); in flex()
797 pt1.move (env.eval_arg (0), env.eval_arg (1)); in flex()
799 pt2.move (env.eval_arg (2), env.eval_arg (3)); in flex()
801 pt3.move (env.eval_arg (4), env.eval_arg (5)); in flex()
803 pt4.move (env.eval_arg (6), env.eval_arg (7)); in flex()
805 pt5.move (env.eval_arg (8), env.eval_arg (9)); in flex()
807 pt6.move (env.eval_arg (10), env.eval_arg (11)); in flex()
809 curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6); in flex()
812 env.set_error (); in flex()
815 static void hflex1 (ENV &env, PARAM& param) in hflex1()
817 if (likely (env.argStack.get_count () == 9)) in hflex1()
819 point_t pt1 = env.get_pt (); in hflex1()
820 pt1.move (env.eval_arg (0), env.eval_arg (1)); in hflex1()
822 pt2.move (env.eval_arg (2), env.eval_arg (3)); in hflex1()
824 pt3.move_x (env.eval_arg (4)); in hflex1()
826 pt4.move_x (env.eval_arg (5)); in hflex1()
828 pt5.move (env.eval_arg (6), env.eval_arg (7)); in hflex1()
830 pt6.move_x (env.eval_arg (8)); in hflex1()
831 pt6.y = env.get_pt ().y; in hflex1()
833 curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6); in hflex1()
836 env.set_error (); in hflex1()
839 static void flex1 (ENV &env, PARAM& param) in flex1()
841 if (likely (env.argStack.get_count () == 11)) in flex1()
846 d.move (env.eval_arg (i), env.eval_arg (i+1)); in flex1()
848 point_t pt1 = env.get_pt (); in flex1()
849 pt1.move (env.eval_arg (0), env.eval_arg (1)); in flex1()
851 pt2.move (env.eval_arg (2), env.eval_arg (3)); in flex1()
853 pt3.move (env.eval_arg (4), env.eval_arg (5)); in flex1()
855 pt4.move (env.eval_arg (6), env.eval_arg (7)); in flex1()
857 pt5.move (env.eval_arg (8), env.eval_arg (9)); in flex1()
862 pt6.move_x (env.eval_arg (10)); in flex1()
863 pt6.y = env.get_pt ().y; in flex1()
867 pt6.x = env.get_pt ().x; in flex1()
868 pt6.move_y (env.eval_arg (10)); in flex1()
871 curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6); in flex1()
874 env.set_error (); in flex1()
878 static void curve2 (ENV &env, PARAM& param, in curve2()
882 PATH::curve (env, param, pt1, pt2, pt3); in curve2()
883 PATH::curve (env, param, pt4, pt5, pt6); in curve2()
887 template <typename ENV, typename OPSET, typename PARAM>
888 struct cs_interpreter_t : interpreter_t<ENV>
892 SUPER::env.set_endchar (false); in interpret()
895 OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param); in interpret()
896 if (unlikely (SUPER::env.in_error ())) in interpret()
898 if (SUPER::env.is_endchar ()) in interpret()
906 typedef interpreter_t<ENV> SUPER;