Coverage Report

Created: 2026-10-16 07:07

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/harfbuzz/src/hb-cff-interp-cs-common.hh
Line
Count
Source
1
/*
2
 * Copyright © 2018 Adobe Inc.
3
 *
4
 *  This is part of HarfBuzz, a text shaping library.
5
 *
6
 * Permission is hereby granted, without written agreement and without
7
 * license or royalty fees, to use, copy, modify, and distribute this
8
 * software and its documentation for any purpose, provided that the
9
 * above copyright notice and the following two paragraphs appear in
10
 * all copies of this software.
11
 *
12
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16
 * DAMAGE.
17
 *
18
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23
 *
24
 * Adobe Author(s): Michiharu Ariza
25
 */
26
#ifndef HB_CFF_INTERP_CS_COMMON_HH
27
#define HB_CFF_INTERP_CS_COMMON_HH
28
29
#include "hb.hh"
30
#include "hb-cff-interp-common.hh"
31
32
namespace CFF {
33
34
using namespace OT;
35
36
enum cs_type_t {
37
  CSType_CharString,
38
  CSType_GlobalSubr,
39
  CSType_LocalSubr
40
};
41
42
struct call_context_t
43
{
44
  void init (const byte_str_ref_t substr_=byte_str_ref_t (), cs_type_t type_=CSType_CharString, unsigned int subr_num_=0)
45
200k
  {
46
200k
    str_ref = substr_;
47
200k
    type = type_;
48
200k
    subr_num = subr_num_;
49
200k
  }
50
51
0
  void fini () {}
52
53
  byte_str_ref_t  str_ref;
54
  cs_type_t   type;
55
  unsigned int    subr_num;
56
};
57
58
/* call stack */
59
const unsigned int kMaxCallLimit = 10;
60
struct call_stack_t : cff_stack_t<call_context_t, kMaxCallLimit> {};
61
62
template <typename SUBRS>
63
struct biased_subrs_t
64
{
65
  void init (const SUBRS *subrs_)
66
146k
  {
67
146k
    subrs = subrs_;
68
146k
    unsigned int  nSubrs = get_count ();
69
146k
    if (nSubrs < 1240)
70
146k
      bias = 107;
71
312
    else if (nSubrs < 33900)
72
197
      bias = 1131;
73
115
    else
74
115
      bias = 32768;
75
146k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::init(CFF::Subrs<OT::NumType<true, unsigned short, 2u> > const*)
Line
Count
Source
66
31.7k
  {
67
31.7k
    subrs = subrs_;
68
31.7k
    unsigned int  nSubrs = get_count ();
69
31.7k
    if (nSubrs < 1240)
70
31.5k
      bias = 107;
71
218
    else if (nSubrs < 33900)
72
123
      bias = 1131;
73
95
    else
74
95
      bias = 32768;
75
31.7k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::init(CFF::Subrs<OT::NumType<true, unsigned int, 4u> > const*)
Line
Count
Source
66
115k
  {
67
115k
    subrs = subrs_;
68
115k
    unsigned int  nSubrs = get_count ();
69
115k
    if (nSubrs < 1240)
70
115k
      bias = 107;
71
94
    else if (nSubrs < 33900)
72
74
      bias = 1131;
73
20
    else
74
20
      bias = 32768;
75
115k
  }
76
77
146k
  void fini () {}
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::fini()
Line
Count
Source
77
31.7k
  void fini () {}
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::fini()
Line
Count
Source
77
115k
  void fini () {}
78
79
283k
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::get_count() const
Line
Count
Source
79
61.2k
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::get_count() const
Line
Count
Source
79
222k
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
80
137k
  unsigned int get_bias () const  { return bias; }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::get_bias() const
Line
Count
Source
80
29.5k
  unsigned int get_bias () const  { return bias; }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::get_bias() const
Line
Count
Source
80
107k
  unsigned int get_bias () const  { return bias; }
81
82
  hb_ubytes_t operator [] (unsigned int index) const
83
126k
  {
84
126k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
126k
    else
87
126k
      return (*subrs)[index];
88
126k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::operator[](unsigned int) const
Line
Count
Source
83
26.5k
  {
84
26.5k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
26.5k
    else
87
26.5k
      return (*subrs)[index];
88
26.5k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::operator[](unsigned int) const
Line
Count
Source
83
100k
  {
84
100k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
100k
    else
87
100k
      return (*subrs)[index];
88
100k
  }
89
90
  protected:
91
  unsigned int  bias;
92
  const SUBRS   *subrs;
93
};
94
95
struct point_t
96
{
97
  void set_int (int _x, int _y)
98
34.1M
  {
99
34.1M
    x.set_int (_x);
100
34.1M
    y.set_int (_y);
101
34.1M
  }
102
103
1.51M
  void move_x (const number_t &dx) { x += dx; }
104
1.47M
  void move_y (const number_t &dy) { y += dy; }
105
965k
  void move (const number_t &dx, const number_t &dy) { move_x (dx); move_y (dy); }
106
4.20k
  void move (const point_t &d) { move_x (d.x); move_y (d.y); }
107
108
  number_t  x;
109
  number_t  y;
110
};
111
112
template <typename ARG, typename SUBRS>
113
struct cs_interp_env_t : interp_env_t<ARG>
114
{
115
  cs_interp_env_t (const hb_ubytes_t &str, const SUBRS *globalSubrs_, const SUBRS *localSubrs_) :
116
73.4k
    interp_env_t<ARG> (str)
117
73.4k
  {
118
73.4k
    context.init (str, CSType_CharString);
119
73.4k
    seen_moveto = true;
120
73.4k
    seen_hintmask = false;
121
73.4k
    hstem_count = 0;
122
73.4k
    vstem_count = 0;
123
73.4k
    hintmask_size = 0;
124
73.4k
    budget = nullptr;
125
73.4k
    pt.set_int (0, 0);
126
73.4k
    globalSubrs.init (globalSubrs_);
127
73.4k
    localSubrs.init (localSubrs_);
128
73.4k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::cs_interp_env_t(hb_array_t<unsigned char const> const&, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > const*, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > const*)
Line
Count
Source
116
15.8k
    interp_env_t<ARG> (str)
117
15.8k
  {
118
15.8k
    context.init (str, CSType_CharString);
119
15.8k
    seen_moveto = true;
120
15.8k
    seen_hintmask = false;
121
15.8k
    hstem_count = 0;
122
15.8k
    vstem_count = 0;
123
15.8k
    hintmask_size = 0;
124
15.8k
    budget = nullptr;
125
15.8k
    pt.set_int (0, 0);
126
15.8k
    globalSubrs.init (globalSubrs_);
127
15.8k
    localSubrs.init (localSubrs_);
128
15.8k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::cs_interp_env_t(hb_array_t<unsigned char const> const&, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > const*, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > const*)
Line
Count
Source
116
57.5k
    interp_env_t<ARG> (str)
117
57.5k
  {
118
57.5k
    context.init (str, CSType_CharString);
119
57.5k
    seen_moveto = true;
120
57.5k
    seen_hintmask = false;
121
57.5k
    hstem_count = 0;
122
57.5k
    vstem_count = 0;
123
57.5k
    hintmask_size = 0;
124
57.5k
    budget = nullptr;
125
57.5k
    pt.set_int (0, 0);
126
57.5k
    globalSubrs.init (globalSubrs_);
127
57.5k
    localSubrs.init (localSubrs_);
128
57.5k
  }
129
  ~cs_interp_env_t ()
130
73.4k
  {
131
73.4k
    globalSubrs.fini ();
132
73.4k
    localSubrs.fini ();
133
73.4k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::~cs_interp_env_t()
Line
Count
Source
130
15.8k
  {
131
15.8k
    globalSubrs.fini ();
132
15.8k
    localSubrs.fini ();
133
15.8k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::~cs_interp_env_t()
Line
Count
Source
130
57.5k
  {
131
57.5k
    globalSubrs.fini ();
132
57.5k
    localSubrs.fini ();
133
57.5k
  }
134
135
  bool in_error () const
136
825M
  {
137
825M
    return callStack.in_error () || SUPER::in_error ();
138
825M
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::in_error() const
Line
Count
Source
136
819M
  {
137
819M
    return callStack.in_error () || SUPER::in_error ();
138
819M
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::in_error() const
Line
Count
Source
136
6.51M
  {
137
6.51M
    return callStack.in_error () || SUPER::in_error ();
138
6.51M
  }
139
140
  bool pop_subr_num (const biased_subrs_t<SUBRS>& biasedSubrs, unsigned int &subr_num)
141
137k
  {
142
137k
    subr_num = 0;
143
137k
    int n = SUPER::argStack.pop_int ();
144
137k
    n += biasedSubrs.get_bias ();
145
137k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
146
6.36k
      return false;
147
148
130k
    subr_num = (unsigned int)n;
149
130k
    return true;
150
137k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::pop_subr_num(CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > > const&, unsigned int&)
Line
Count
Source
141
29.5k
  {
142
29.5k
    subr_num = 0;
143
29.5k
    int n = SUPER::argStack.pop_int ();
144
29.5k
    n += biasedSubrs.get_bias ();
145
29.5k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
146
560
      return false;
147
148
29.0k
    subr_num = (unsigned int)n;
149
29.0k
    return true;
150
29.5k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::pop_subr_num(CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > > const&, unsigned int&)
Line
Count
Source
141
107k
  {
142
107k
    subr_num = 0;
143
107k
    int n = SUPER::argStack.pop_int ();
144
107k
    n += biasedSubrs.get_bias ();
145
107k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
146
5.80k
      return false;
147
148
101k
    subr_num = (unsigned int)n;
149
101k
    return true;
150
107k
  }
151
152
  void call_subr (const biased_subrs_t<SUBRS>& biasedSubrs, cs_type_t type)
153
137k
  {
154
137k
    unsigned int subr_num = 0;
155
156
137k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
157
137k
     || callStack.get_count () >= kMaxCallLimit))
158
10.4k
    {
159
10.4k
      SUPER::set_error ();
160
10.4k
      return;
161
10.4k
    }
162
126k
    context.str_ref = SUPER::str_ref;
163
126k
    callStack.push (context);
164
165
126k
    context.init ( biasedSubrs[subr_num], type, subr_num);
166
126k
    SUPER::str_ref = context.str_ref;
167
126k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::call_subr(CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > > const&, CFF::cs_type_t)
Line
Count
Source
153
29.5k
  {
154
29.5k
    unsigned int subr_num = 0;
155
156
29.5k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
157
29.5k
     || callStack.get_count () >= kMaxCallLimit))
158
2.99k
    {
159
2.99k
      SUPER::set_error ();
160
2.99k
      return;
161
2.99k
    }
162
26.5k
    context.str_ref = SUPER::str_ref;
163
26.5k
    callStack.push (context);
164
165
26.5k
    context.init ( biasedSubrs[subr_num], type, subr_num);
166
26.5k
    SUPER::str_ref = context.str_ref;
167
26.5k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::call_subr(CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > > const&, CFF::cs_type_t)
Line
Count
Source
153
107k
  {
154
107k
    unsigned int subr_num = 0;
155
156
107k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
157
107k
     || callStack.get_count () >= kMaxCallLimit))
158
7.48k
    {
159
7.48k
      SUPER::set_error ();
160
7.48k
      return;
161
7.48k
    }
162
100k
    context.str_ref = SUPER::str_ref;
163
100k
    callStack.push (context);
164
165
100k
    context.init ( biasedSubrs[subr_num], type, subr_num);
166
100k
    SUPER::str_ref = context.str_ref;
167
100k
  }
168
169
  void return_from_subr ()
170
71.8k
  {
171
71.8k
    if (unlikely (SUPER::str_ref.in_error ()))
172
0
      SUPER::set_error ();
173
71.8k
    context = callStack.pop ();
174
71.8k
    SUPER::str_ref = context.str_ref;
175
71.8k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::return_from_subr()
Line
Count
Source
170
1.35k
  {
171
1.35k
    if (unlikely (SUPER::str_ref.in_error ()))
172
0
      SUPER::set_error ();
173
1.35k
    context = callStack.pop ();
174
1.35k
    SUPER::str_ref = context.str_ref;
175
1.35k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::return_from_subr()
Line
Count
Source
170
70.4k
  {
171
70.4k
    if (unlikely (SUPER::str_ref.in_error ()))
172
0
      SUPER::set_error ();
173
70.4k
    context = callStack.pop ();
174
70.4k
    SUPER::str_ref = context.str_ref;
175
70.4k
  }
176
177
  void determine_hintmask_size ()
178
115k
  {
179
115k
    if (!seen_hintmask)
180
6.10k
    {
181
6.10k
      vstem_count += SUPER::argStack.get_count() / 2;
182
6.10k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
183
6.10k
      seen_hintmask = true;
184
6.10k
    }
185
115k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::determine_hintmask_size()
Line
Count
Source
178
12.7k
  {
179
12.7k
    if (!seen_hintmask)
180
2.59k
    {
181
2.59k
      vstem_count += SUPER::argStack.get_count() / 2;
182
2.59k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
183
2.59k
      seen_hintmask = true;
184
2.59k
    }
185
12.7k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::determine_hintmask_size()
Line
Count
Source
178
102k
  {
179
102k
    if (!seen_hintmask)
180
3.50k
    {
181
3.50k
      vstem_count += SUPER::argStack.get_count() / 2;
182
3.50k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
183
3.50k
      seen_hintmask = true;
184
3.50k
    }
185
102k
  }
186
187
94.7k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::set_endchar(bool)
Line
Count
Source
187
22.6k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::set_endchar(bool)
Line
Count
Source
187
72.0k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
188
825M
  bool is_endchar () const { return endchar_flag; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::is_endchar() const
Line
Count
Source
188
819M
  bool is_endchar () const { return endchar_flag; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::is_endchar() const
Line
Count
Source
188
6.46M
  bool is_endchar () const { return endchar_flag; }
189
190
73.4k
  void set_budget (int64_t *budget_) { budget = budget_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::set_budget(long*)
Line
Count
Source
190
15.8k
  void set_budget (int64_t *budget_) { budget = budget_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::set_budget(long*)
Line
Count
Source
190
57.5k
  void set_budget (int64_t *budget_) { budget = budget_; }
191
3.04k
  int64_t *get_budget () const { return budget; }
192
  bool spend_budget (unsigned int cost, unsigned int mult = 1)
193
10.2k
  { return !budget || hb_budget_spend (*budget, cost, mult); }
194
195
  const number_t &get_x () const { return pt.x; }
196
  const number_t &get_y () const { return pt.y; }
197
1.44M
  const point_t &get_pt () const { return pt; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::get_pt() const
Line
Count
Source
197
305k
  const point_t &get_pt () const { return pt; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::get_pt() const
Line
Count
Source
197
1.13M
  const point_t &get_pt () const { return pt; }
198
199
1.08M
  void moveto (const point_t &pt_ ) { pt = pt_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::moveto(CFF::point_t const&)
Line
Count
Source
199
205k
  void moveto (const point_t &pt_ ) { pt = pt_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::moveto(CFF::point_t const&)
Line
Count
Source
199
874k
  void moveto (const point_t &pt_ ) { pt = pt_; }
200
201
  public:
202
  call_context_t   context;
203
  bool    endchar_flag;
204
  bool    seen_moveto;
205
  bool    seen_hintmask;
206
207
  unsigned int  hstem_count;
208
  unsigned int  vstem_count;
209
  unsigned int  hintmask_size;
210
  int64_t *budget;
211
  call_stack_t  callStack;
212
  biased_subrs_t<SUBRS>   globalSubrs;
213
  biased_subrs_t<SUBRS>   localSubrs;
214
215
  private:
216
  point_t  pt;
217
218
  typedef interp_env_t<ARG> SUPER;
219
};
220
221
template <typename ENV, typename PARAM>
222
struct path_procs_null_t
223
{
224
0
  static void rmoveto (ENV &env, PARAM& param) {}
225
0
  static void hmoveto (ENV &env, PARAM& param) {}
226
0
  static void vmoveto (ENV &env, PARAM& param) {}
227
0
  static void rlineto (ENV &env, PARAM& param) {}
228
0
  static void hlineto (ENV &env, PARAM& param) {}
229
0
  static void vlineto (ENV &env, PARAM& param) {}
230
0
  static void rrcurveto (ENV &env, PARAM& param) {}
231
0
  static void rcurveline (ENV &env, PARAM& param) {}
232
0
  static void rlinecurve (ENV &env, PARAM& param) {}
233
0
  static void vvcurveto (ENV &env, PARAM& param) {}
234
0
  static void hhcurveto (ENV &env, PARAM& param) {}
235
0
  static void vhcurveto (ENV &env, PARAM& param) {}
236
0
  static void hvcurveto (ENV &env, PARAM& param) {}
237
  static void moveto (ENV &env, PARAM& param, const point_t &pt) {}
238
  static void line (ENV &env, PARAM& param, const point_t &pt1) {}
239
  static void curve (ENV &env, PARAM& param, const point_t &pt1, const point_t &pt2, const point_t &pt3) {}
240
0
  static void hflex (ENV &env, PARAM& param) {}
241
0
  static void flex (ENV &env, PARAM& param) {}
242
0
  static void hflex1 (ENV &env, PARAM& param) {}
243
0
  static void flex1 (ENV &env, PARAM& param) {}
244
};
245
246
template <typename ARG, typename OPSET, typename ENV, typename PARAM, typename PATH=path_procs_null_t<ENV, PARAM>>
247
struct cs_opset_t : opset_t<ARG>
248
{
249
  static void process_op (op_code_t op, ENV &env, PARAM& param)
250
825M
  {
251
825M
    switch (op) {
252
253
71.8k
      case OpCode_return:
254
71.8k
  env.return_from_subr ();
255
71.8k
  break;
256
14.4k
      case OpCode_endchar:
257
14.4k
  OPSET::check_width (op, env, param);
258
14.4k
  env.set_endchar (true);
259
14.4k
  OPSET::flush_args_and_op (op, env, param);
260
14.4k
  break;
261
262
241k
      case OpCode_fixedcs:
263
241k
  env.argStack.push_fixed_from_substr (env.str_ref);
264
241k
  break;
265
266
36.3k
      case OpCode_callsubr:
267
36.3k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
268
36.3k
  break;
269
270
100k
      case OpCode_callgsubr:
271
100k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
272
100k
  break;
273
274
140k
      case OpCode_hstem:
275
152k
      case OpCode_hstemhm:
276
152k
  OPSET::check_width (op, env, param);
277
152k
  OPSET::process_hstem (op, env, param);
278
152k
  break;
279
48.2k
      case OpCode_vstem:
280
54.3k
      case OpCode_vstemhm:
281
54.3k
  OPSET::check_width (op, env, param);
282
54.3k
  OPSET::process_vstem (op, env, param);
283
54.3k
  break;
284
70.3k
      case OpCode_hintmask:
285
115k
      case OpCode_cntrmask:
286
115k
  OPSET::check_width (op, env, param);
287
115k
  OPSET::process_hintmask (op, env, param);
288
115k
  break;
289
61.3k
      case OpCode_rmoveto:
290
61.3k
  OPSET::check_width (op, env, param);
291
61.3k
  PATH::rmoveto (env, param);
292
61.3k
  OPSET::process_post_move (op, env, param);
293
61.3k
  break;
294
29.4k
      case OpCode_hmoveto:
295
29.4k
  OPSET::check_width (op, env, param);
296
29.4k
  PATH::hmoveto (env, param);
297
29.4k
  OPSET::process_post_move (op, env, param);
298
29.4k
  break;
299
65.1k
      case OpCode_vmoveto:
300
65.1k
  OPSET::check_width (op, env, param);
301
65.1k
  PATH::vmoveto (env, param);
302
65.1k
  OPSET::process_post_move (op, env, param);
303
65.1k
  break;
304
80.5k
      case OpCode_rlineto:
305
80.5k
  PATH::rlineto (env, param);
306
80.5k
  process_post_path (op, env, param);
307
80.5k
  break;
308
50.3k
      case OpCode_hlineto:
309
50.3k
  PATH::hlineto (env, param);
310
50.3k
  process_post_path (op, env, param);
311
50.3k
  break;
312
78.9k
      case OpCode_vlineto:
313
78.9k
  PATH::vlineto (env, param);
314
78.9k
  process_post_path (op, env, param);
315
78.9k
  break;
316
102k
      case OpCode_rrcurveto:
317
102k
  PATH::rrcurveto (env, param);
318
102k
  process_post_path (op, env, param);
319
102k
  break;
320
38.6k
      case OpCode_rcurveline:
321
38.6k
  PATH::rcurveline (env, param);
322
38.6k
  process_post_path (op, env, param);
323
38.6k
  break;
324
50.4k
      case OpCode_rlinecurve:
325
50.4k
  PATH::rlinecurve (env, param);
326
50.4k
  process_post_path (op, env, param);
327
50.4k
  break;
328
27.1k
      case OpCode_vvcurveto:
329
27.1k
  PATH::vvcurveto (env, param);
330
27.1k
  process_post_path (op, env, param);
331
27.1k
  break;
332
109k
      case OpCode_hhcurveto:
333
109k
  PATH::hhcurveto (env, param);
334
109k
  process_post_path (op, env, param);
335
109k
  break;
336
47.4k
      case OpCode_vhcurveto:
337
47.4k
  PATH::vhcurveto (env, param);
338
47.4k
  process_post_path (op, env, param);
339
47.4k
  break;
340
66.4k
      case OpCode_hvcurveto:
341
66.4k
  PATH::hvcurveto (env, param);
342
66.4k
  process_post_path (op, env, param);
343
66.4k
  break;
344
345
1.20k
      case OpCode_hflex:
346
1.20k
  PATH::hflex (env, param);
347
1.20k
  OPSET::process_post_flex (op, env, param);
348
1.20k
  break;
349
350
1.47k
      case OpCode_flex:
351
1.47k
  PATH::flex (env, param);
352
1.47k
  OPSET::process_post_flex (op, env, param);
353
1.47k
  break;
354
355
1.81k
      case OpCode_hflex1:
356
1.81k
  PATH::hflex1 (env, param);
357
1.81k
  OPSET::process_post_flex (op, env, param);
358
1.81k
  break;
359
360
3.48k
      case OpCode_flex1:
361
3.48k
  PATH::flex1 (env, param);
362
3.48k
  OPSET::process_post_flex (op, env, param);
363
3.48k
  break;
364
365
824M
      default:
366
824M
  SUPER::process_op (op, env);
367
824M
  break;
368
825M
    }
369
825M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
250
487M
  {
251
487M
    switch (op) {
252
253
871
      case OpCode_return:
254
871
  env.return_from_subr ();
255
871
  break;
256
0
      case OpCode_endchar:
257
0
  OPSET::check_width (op, env, param);
258
0
  env.set_endchar (true);
259
0
  OPSET::flush_args_and_op (op, env, param);
260
0
  break;
261
262
34.2k
      case OpCode_fixedcs:
263
34.2k
  env.argStack.push_fixed_from_substr (env.str_ref);
264
34.2k
  break;
265
266
1.47k
      case OpCode_callsubr:
267
1.47k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
268
1.47k
  break;
269
270
17.0k
      case OpCode_callgsubr:
271
17.0k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
272
17.0k
  break;
273
274
21.3k
      case OpCode_hstem:
275
24.3k
      case OpCode_hstemhm:
276
24.3k
  OPSET::check_width (op, env, param);
277
24.3k
  OPSET::process_hstem (op, env, param);
278
24.3k
  break;
279
9.14k
      case OpCode_vstem:
280
12.2k
      case OpCode_vstemhm:
281
12.2k
  OPSET::check_width (op, env, param);
282
12.2k
  OPSET::process_vstem (op, env, param);
283
12.2k
  break;
284
4.12k
      case OpCode_hintmask:
285
7.93k
      case OpCode_cntrmask:
286
7.93k
  OPSET::check_width (op, env, param);
287
7.93k
  OPSET::process_hintmask (op, env, param);
288
7.93k
  break;
289
11.1k
      case OpCode_rmoveto:
290
11.1k
  OPSET::check_width (op, env, param);
291
11.1k
  PATH::rmoveto (env, param);
292
11.1k
  OPSET::process_post_move (op, env, param);
293
11.1k
  break;
294
4.42k
      case OpCode_hmoveto:
295
4.42k
  OPSET::check_width (op, env, param);
296
4.42k
  PATH::hmoveto (env, param);
297
4.42k
  OPSET::process_post_move (op, env, param);
298
4.42k
  break;
299
6.03k
      case OpCode_vmoveto:
300
6.03k
  OPSET::check_width (op, env, param);
301
6.03k
  PATH::vmoveto (env, param);
302
6.03k
  OPSET::process_post_move (op, env, param);
303
6.03k
  break;
304
7.23k
      case OpCode_rlineto:
305
7.23k
  PATH::rlineto (env, param);
306
7.23k
  process_post_path (op, env, param);
307
7.23k
  break;
308
11.4k
      case OpCode_hlineto:
309
11.4k
  PATH::hlineto (env, param);
310
11.4k
  process_post_path (op, env, param);
311
11.4k
  break;
312
18.8k
      case OpCode_vlineto:
313
18.8k
  PATH::vlineto (env, param);
314
18.8k
  process_post_path (op, env, param);
315
18.8k
  break;
316
15.0k
      case OpCode_rrcurveto:
317
15.0k
  PATH::rrcurveto (env, param);
318
15.0k
  process_post_path (op, env, param);
319
15.0k
  break;
320
5.43k
      case OpCode_rcurveline:
321
5.43k
  PATH::rcurveline (env, param);
322
5.43k
  process_post_path (op, env, param);
323
5.43k
  break;
324
5.57k
      case OpCode_rlinecurve:
325
5.57k
  PATH::rlinecurve (env, param);
326
5.57k
  process_post_path (op, env, param);
327
5.57k
  break;
328
4.42k
      case OpCode_vvcurveto:
329
4.42k
  PATH::vvcurveto (env, param);
330
4.42k
  process_post_path (op, env, param);
331
4.42k
  break;
332
5.43k
      case OpCode_hhcurveto:
333
5.43k
  PATH::hhcurveto (env, param);
334
5.43k
  process_post_path (op, env, param);
335
5.43k
  break;
336
7.01k
      case OpCode_vhcurveto:
337
7.01k
  PATH::vhcurveto (env, param);
338
7.01k
  process_post_path (op, env, param);
339
7.01k
  break;
340
7.45k
      case OpCode_hvcurveto:
341
7.45k
  PATH::hvcurveto (env, param);
342
7.45k
  process_post_path (op, env, param);
343
7.45k
  break;
344
345
393
      case OpCode_hflex:
346
393
  PATH::hflex (env, param);
347
393
  OPSET::process_post_flex (op, env, param);
348
393
  break;
349
350
507
      case OpCode_flex:
351
507
  PATH::flex (env, param);
352
507
  OPSET::process_post_flex (op, env, param);
353
507
  break;
354
355
671
      case OpCode_hflex1:
356
671
  PATH::hflex1 (env, param);
357
671
  OPSET::process_post_flex (op, env, param);
358
671
  break;
359
360
1.26k
      case OpCode_flex1:
361
1.26k
  PATH::flex1 (env, param);
362
1.26k
  OPSET::process_post_flex (op, env, param);
363
1.26k
  break;
364
365
487M
      default:
366
487M
  SUPER::process_op (op, env);
367
487M
  break;
368
487M
    }
369
487M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
250
332M
  {
251
332M
    switch (op) {
252
253
480
      case OpCode_return:
254
480
  env.return_from_subr ();
255
480
  break;
256
0
      case OpCode_endchar:
257
0
  OPSET::check_width (op, env, param);
258
0
  env.set_endchar (true);
259
0
  OPSET::flush_args_and_op (op, env, param);
260
0
  break;
261
262
19.8k
      case OpCode_fixedcs:
263
19.8k
  env.argStack.push_fixed_from_substr (env.str_ref);
264
19.8k
  break;
265
266
643
      case OpCode_callsubr:
267
643
  env.call_subr (env.localSubrs, CSType_LocalSubr);
268
643
  break;
269
270
10.4k
      case OpCode_callgsubr:
271
10.4k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
272
10.4k
  break;
273
274
12.9k
      case OpCode_hstem:
275
14.7k
      case OpCode_hstemhm:
276
14.7k
  OPSET::check_width (op, env, param);
277
14.7k
  OPSET::process_hstem (op, env, param);
278
14.7k
  break;
279
5.23k
      case OpCode_vstem:
280
7.03k
      case OpCode_vstemhm:
281
7.03k
  OPSET::check_width (op, env, param);
282
7.03k
  OPSET::process_vstem (op, env, param);
283
7.03k
  break;
284
2.59k
      case OpCode_hintmask:
285
4.86k
      case OpCode_cntrmask:
286
4.86k
  OPSET::check_width (op, env, param);
287
4.86k
  OPSET::process_hintmask (op, env, param);
288
4.86k
  break;
289
6.68k
      case OpCode_rmoveto:
290
6.68k
  OPSET::check_width (op, env, param);
291
6.68k
  PATH::rmoveto (env, param);
292
6.68k
  OPSET::process_post_move (op, env, param);
293
6.68k
  break;
294
2.69k
      case OpCode_hmoveto:
295
2.69k
  OPSET::check_width (op, env, param);
296
2.69k
  PATH::hmoveto (env, param);
297
2.69k
  OPSET::process_post_move (op, env, param);
298
2.69k
  break;
299
3.60k
      case OpCode_vmoveto:
300
3.60k
  OPSET::check_width (op, env, param);
301
3.60k
  PATH::vmoveto (env, param);
302
3.60k
  OPSET::process_post_move (op, env, param);
303
3.60k
  break;
304
4.39k
      case OpCode_rlineto:
305
4.39k
  PATH::rlineto (env, param);
306
4.39k
  process_post_path (op, env, param);
307
4.39k
  break;
308
6.24k
      case OpCode_hlineto:
309
6.24k
  PATH::hlineto (env, param);
310
6.24k
  process_post_path (op, env, param);
311
6.24k
  break;
312
11.2k
      case OpCode_vlineto:
313
11.2k
  PATH::vlineto (env, param);
314
11.2k
  process_post_path (op, env, param);
315
11.2k
  break;
316
8.99k
      case OpCode_rrcurveto:
317
8.99k
  PATH::rrcurveto (env, param);
318
8.99k
  process_post_path (op, env, param);
319
8.99k
  break;
320
3.41k
      case OpCode_rcurveline:
321
3.41k
  PATH::rcurveline (env, param);
322
3.41k
  process_post_path (op, env, param);
323
3.41k
  break;
324
3.63k
      case OpCode_rlinecurve:
325
3.63k
  PATH::rlinecurve (env, param);
326
3.63k
  process_post_path (op, env, param);
327
3.63k
  break;
328
2.69k
      case OpCode_vvcurveto:
329
2.69k
  PATH::vvcurveto (env, param);
330
2.69k
  process_post_path (op, env, param);
331
2.69k
  break;
332
3.67k
      case OpCode_hhcurveto:
333
3.67k
  PATH::hhcurveto (env, param);
334
3.67k
  process_post_path (op, env, param);
335
3.67k
  break;
336
4.09k
      case OpCode_vhcurveto:
337
4.09k
  PATH::vhcurveto (env, param);
338
4.09k
  process_post_path (op, env, param);
339
4.09k
  break;
340
4.49k
      case OpCode_hvcurveto:
341
4.49k
  PATH::hvcurveto (env, param);
342
4.49k
  process_post_path (op, env, param);
343
4.49k
  break;
344
345
237
      case OpCode_hflex:
346
237
  PATH::hflex (env, param);
347
237
  OPSET::process_post_flex (op, env, param);
348
237
  break;
349
350
302
      case OpCode_flex:
351
302
  PATH::flex (env, param);
352
302
  OPSET::process_post_flex (op, env, param);
353
302
  break;
354
355
351
      case OpCode_hflex1:
356
351
  PATH::hflex1 (env, param);
357
351
  OPSET::process_post_flex (op, env, param);
358
351
  break;
359
360
732
      case OpCode_flex1:
361
732
  PATH::flex1 (env, param);
362
732
  OPSET::process_post_flex (op, env, param);
363
732
  break;
364
365
331M
      default:
366
331M
  SUPER::process_op (op, env);
367
331M
  break;
368
332M
    }
369
332M
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_op(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
250
1.82M
  {
251
1.82M
    switch (op) {
252
253
33.8k
      case OpCode_return:
254
33.8k
  env.return_from_subr ();
255
33.8k
  break;
256
1.01k
      case OpCode_endchar:
257
1.01k
  OPSET::check_width (op, env, param);
258
1.01k
  env.set_endchar (true);
259
1.01k
  OPSET::flush_args_and_op (op, env, param);
260
1.01k
  break;
261
262
99.1k
      case OpCode_fixedcs:
263
99.1k
  env.argStack.push_fixed_from_substr (env.str_ref);
264
99.1k
  break;
265
266
931
      case OpCode_callsubr:
267
931
  env.call_subr (env.localSubrs, CSType_LocalSubr);
268
931
  break;
269
270
42.4k
      case OpCode_callgsubr:
271
42.4k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
272
42.4k
  break;
273
274
25.8k
      case OpCode_hstem:
275
28.7k
      case OpCode_hstemhm:
276
28.7k
  OPSET::check_width (op, env, param);
277
28.7k
  OPSET::process_hstem (op, env, param);
278
28.7k
  break;
279
14.3k
      case OpCode_vstem:
280
15.0k
      case OpCode_vstemhm:
281
15.0k
  OPSET::check_width (op, env, param);
282
15.0k
  OPSET::process_vstem (op, env, param);
283
15.0k
  break;
284
36.0k
      case OpCode_hintmask:
285
49.8k
      case OpCode_cntrmask:
286
49.8k
  OPSET::check_width (op, env, param);
287
49.8k
  OPSET::process_hintmask (op, env, param);
288
49.8k
  break;
289
6.47k
      case OpCode_rmoveto:
290
6.47k
  OPSET::check_width (op, env, param);
291
6.47k
  PATH::rmoveto (env, param);
292
6.47k
  OPSET::process_post_move (op, env, param);
293
6.47k
  break;
294
12.5k
      case OpCode_hmoveto:
295
12.5k
  OPSET::check_width (op, env, param);
296
12.5k
  PATH::hmoveto (env, param);
297
12.5k
  OPSET::process_post_move (op, env, param);
298
12.5k
  break;
299
20.6k
      case OpCode_vmoveto:
300
20.6k
  OPSET::check_width (op, env, param);
301
20.6k
  PATH::vmoveto (env, param);
302
20.6k
  OPSET::process_post_move (op, env, param);
303
20.6k
  break;
304
14.4k
      case OpCode_rlineto:
305
14.4k
  PATH::rlineto (env, param);
306
14.4k
  process_post_path (op, env, param);
307
14.4k
  break;
308
12.1k
      case OpCode_hlineto:
309
12.1k
  PATH::hlineto (env, param);
310
12.1k
  process_post_path (op, env, param);
311
12.1k
  break;
312
25.2k
      case OpCode_vlineto:
313
25.2k
  PATH::vlineto (env, param);
314
25.2k
  process_post_path (op, env, param);
315
25.2k
  break;
316
19.8k
      case OpCode_rrcurveto:
317
19.8k
  PATH::rrcurveto (env, param);
318
19.8k
  process_post_path (op, env, param);
319
19.8k
  break;
320
3.09k
      case OpCode_rcurveline:
321
3.09k
  PATH::rcurveline (env, param);
322
3.09k
  process_post_path (op, env, param);
323
3.09k
  break;
324
8.66k
      case OpCode_rlinecurve:
325
8.66k
  PATH::rlinecurve (env, param);
326
8.66k
  process_post_path (op, env, param);
327
8.66k
  break;
328
3.77k
      case OpCode_vvcurveto:
329
3.77k
  PATH::vvcurveto (env, param);
330
3.77k
  process_post_path (op, env, param);
331
3.77k
  break;
332
25.7k
      case OpCode_hhcurveto:
333
25.7k
  PATH::hhcurveto (env, param);
334
25.7k
  process_post_path (op, env, param);
335
25.7k
  break;
336
6.25k
      case OpCode_vhcurveto:
337
6.25k
  PATH::vhcurveto (env, param);
338
6.25k
  process_post_path (op, env, param);
339
6.25k
  break;
340
6.66k
      case OpCode_hvcurveto:
341
6.66k
  PATH::hvcurveto (env, param);
342
6.66k
  process_post_path (op, env, param);
343
6.66k
  break;
344
345
166
      case OpCode_hflex:
346
166
  PATH::hflex (env, param);
347
166
  OPSET::process_post_flex (op, env, param);
348
166
  break;
349
350
114
      case OpCode_flex:
351
114
  PATH::flex (env, param);
352
114
  OPSET::process_post_flex (op, env, param);
353
114
  break;
354
355
126
      case OpCode_hflex1:
356
126
  PATH::hflex1 (env, param);
357
126
  OPSET::process_post_flex (op, env, param);
358
126
  break;
359
360
800
      case OpCode_flex1:
361
800
  PATH::flex1 (env, param);
362
800
  OPSET::process_post_flex (op, env, param);
363
800
  break;
364
365
1.38M
      default:
366
1.38M
  SUPER::process_op (op, env);
367
1.38M
  break;
368
1.82M
    }
369
1.82M
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
250
4.67M
  {
251
4.67M
    switch (op) {
252
253
36.6k
      case OpCode_return:
254
36.6k
  env.return_from_subr ();
255
36.6k
  break;
256
13.4k
      case OpCode_endchar:
257
13.4k
  OPSET::check_width (op, env, param);
258
13.4k
  env.set_endchar (true);
259
13.4k
  OPSET::flush_args_and_op (op, env, param);
260
13.4k
  break;
261
262
87.9k
      case OpCode_fixedcs:
263
87.9k
  env.argStack.push_fixed_from_substr (env.str_ref);
264
87.9k
  break;
265
266
33.2k
      case OpCode_callsubr:
267
33.2k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
268
33.2k
  break;
269
270
31.0k
      case OpCode_callgsubr:
271
31.0k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
272
31.0k
  break;
273
274
80.6k
      case OpCode_hstem:
275
84.1k
      case OpCode_hstemhm:
276
84.1k
  OPSET::check_width (op, env, param);
277
84.1k
  OPSET::process_hstem (op, env, param);
278
84.1k
  break;
279
19.5k
      case OpCode_vstem:
280
19.9k
      case OpCode_vstemhm:
281
19.9k
  OPSET::check_width (op, env, param);
282
19.9k
  OPSET::process_vstem (op, env, param);
283
19.9k
  break;
284
27.5k
      case OpCode_hintmask:
285
52.4k
      case OpCode_cntrmask:
286
52.4k
  OPSET::check_width (op, env, param);
287
52.4k
  OPSET::process_hintmask (op, env, param);
288
52.4k
  break;
289
37.0k
      case OpCode_rmoveto:
290
37.0k
  OPSET::check_width (op, env, param);
291
37.0k
  PATH::rmoveto (env, param);
292
37.0k
  OPSET::process_post_move (op, env, param);
293
37.0k
  break;
294
9.77k
      case OpCode_hmoveto:
295
9.77k
  OPSET::check_width (op, env, param);
296
9.77k
  PATH::hmoveto (env, param);
297
9.77k
  OPSET::process_post_move (op, env, param);
298
9.77k
  break;
299
34.8k
      case OpCode_vmoveto:
300
34.8k
  OPSET::check_width (op, env, param);
301
34.8k
  PATH::vmoveto (env, param);
302
34.8k
  OPSET::process_post_move (op, env, param);
303
34.8k
  break;
304
54.4k
      case OpCode_rlineto:
305
54.4k
  PATH::rlineto (env, param);
306
54.4k
  process_post_path (op, env, param);
307
54.4k
  break;
308
20.5k
      case OpCode_hlineto:
309
20.5k
  PATH::hlineto (env, param);
310
20.5k
  process_post_path (op, env, param);
311
20.5k
  break;
312
23.6k
      case OpCode_vlineto:
313
23.6k
  PATH::vlineto (env, param);
314
23.6k
  process_post_path (op, env, param);
315
23.6k
  break;
316
58.6k
      case OpCode_rrcurveto:
317
58.6k
  PATH::rrcurveto (env, param);
318
58.6k
  process_post_path (op, env, param);
319
58.6k
  break;
320
26.7k
      case OpCode_rcurveline:
321
26.7k
  PATH::rcurveline (env, param);
322
26.7k
  process_post_path (op, env, param);
323
26.7k
  break;
324
32.5k
      case OpCode_rlinecurve:
325
32.5k
  PATH::rlinecurve (env, param);
326
32.5k
  process_post_path (op, env, param);
327
32.5k
  break;
328
16.2k
      case OpCode_vvcurveto:
329
16.2k
  PATH::vvcurveto (env, param);
330
16.2k
  process_post_path (op, env, param);
331
16.2k
  break;
332
74.2k
      case OpCode_hhcurveto:
333
74.2k
  PATH::hhcurveto (env, param);
334
74.2k
  process_post_path (op, env, param);
335
74.2k
  break;
336
30.0k
      case OpCode_vhcurveto:
337
30.0k
  PATH::vhcurveto (env, param);
338
30.0k
  process_post_path (op, env, param);
339
30.0k
  break;
340
47.8k
      case OpCode_hvcurveto:
341
47.8k
  PATH::hvcurveto (env, param);
342
47.8k
  process_post_path (op, env, param);
343
47.8k
  break;
344
345
405
      case OpCode_hflex:
346
405
  PATH::hflex (env, param);
347
405
  OPSET::process_post_flex (op, env, param);
348
405
  break;
349
350
547
      case OpCode_flex:
351
547
  PATH::flex (env, param);
352
547
  OPSET::process_post_flex (op, env, param);
353
547
  break;
354
355
671
      case OpCode_hflex1:
356
671
  PATH::hflex1 (env, param);
357
671
  OPSET::process_post_flex (op, env, param);
358
671
  break;
359
360
689
      case OpCode_flex1:
361
689
  PATH::flex1 (env, param);
362
689
  OPSET::process_post_flex (op, env, param);
363
689
  break;
364
365
3.84M
      default:
366
3.84M
  SUPER::process_op (op, env);
367
3.84M
  break;
368
4.67M
    }
369
4.67M
  }
370
371
  static void process_hstem (op_code_t op, ENV &env, PARAM& param)
372
152k
  {
373
152k
    env.hstem_count += env.argStack.get_count () / 2;
374
152k
    OPSET::flush_args_and_op (op, env, param);
375
152k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_hstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
372
24.3k
  {
373
24.3k
    env.hstem_count += env.argStack.get_count () / 2;
374
24.3k
    OPSET::flush_args_and_op (op, env, param);
375
24.3k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_hstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
372
14.7k
  {
373
14.7k
    env.hstem_count += env.argStack.get_count () / 2;
374
14.7k
    OPSET::flush_args_and_op (op, env, param);
375
14.7k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_hstem(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_hstem(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
372
28.7k
  {
373
28.7k
    env.hstem_count += env.argStack.get_count () / 2;
374
28.7k
    OPSET::flush_args_and_op (op, env, param);
375
28.7k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_hstem(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
372
84.1k
  {
373
84.1k
    env.hstem_count += env.argStack.get_count () / 2;
374
84.1k
    OPSET::flush_args_and_op (op, env, param);
375
84.1k
  }
376
377
  static void process_vstem (op_code_t op, ENV &env, PARAM& param)
378
54.3k
  {
379
54.3k
    env.vstem_count += env.argStack.get_count () / 2;
380
54.3k
    OPSET::flush_args_and_op (op, env, param);
381
54.3k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_vstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
378
12.2k
  {
379
12.2k
    env.vstem_count += env.argStack.get_count () / 2;
380
12.2k
    OPSET::flush_args_and_op (op, env, param);
381
12.2k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_vstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
378
7.03k
  {
379
7.03k
    env.vstem_count += env.argStack.get_count () / 2;
380
7.03k
    OPSET::flush_args_and_op (op, env, param);
381
7.03k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_vstem(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_vstem(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
378
15.0k
  {
379
15.0k
    env.vstem_count += env.argStack.get_count () / 2;
380
15.0k
    OPSET::flush_args_and_op (op, env, param);
381
15.0k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_vstem(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
378
19.9k
  {
379
19.9k
    env.vstem_count += env.argStack.get_count () / 2;
380
19.9k
    OPSET::flush_args_and_op (op, env, param);
381
19.9k
  }
382
383
  static void process_hintmask (op_code_t op, ENV &env, PARAM& param)
384
115k
  {
385
115k
    env.determine_hintmask_size ();
386
115k
    if (likely (env.str_ref.avail (env.hintmask_size)))
387
114k
    {
388
114k
      OPSET::flush_hintmask (op, env, param);
389
114k
      env.str_ref.inc (env.hintmask_size);
390
114k
    }
391
115k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
384
7.93k
  {
385
7.93k
    env.determine_hintmask_size ();
386
7.93k
    if (likely (env.str_ref.avail (env.hintmask_size)))
387
7.80k
    {
388
7.80k
      OPSET::flush_hintmask (op, env, param);
389
7.80k
      env.str_ref.inc (env.hintmask_size);
390
7.80k
    }
391
7.93k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
384
4.86k
  {
385
4.86k
    env.determine_hintmask_size ();
386
4.86k
    if (likely (env.str_ref.avail (env.hintmask_size)))
387
4.78k
    {
388
4.78k
      OPSET::flush_hintmask (op, env, param);
389
4.78k
      env.str_ref.inc (env.hintmask_size);
390
4.78k
    }
391
4.86k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_hintmask(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
384
49.8k
  {
385
49.8k
    env.determine_hintmask_size ();
386
49.8k
    if (likely (env.str_ref.avail (env.hintmask_size)))
387
49.4k
    {
388
49.4k
      OPSET::flush_hintmask (op, env, param);
389
49.4k
      env.str_ref.inc (env.hintmask_size);
390
49.4k
    }
391
49.8k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_hintmask(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
384
52.4k
  {
385
52.4k
    env.determine_hintmask_size ();
386
52.4k
    if (likely (env.str_ref.avail (env.hintmask_size)))
387
52.1k
    {
388
52.1k
      OPSET::flush_hintmask (op, env, param);
389
52.1k
      env.str_ref.inc (env.hintmask_size);
390
52.1k
    }
391
52.4k
  }
392
393
  static void process_post_flex (op_code_t op, ENV &env, PARAM& param)
394
7.97k
  {
395
7.97k
    OPSET::flush_args_and_op (op, env, param);
396
7.97k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_post_flex(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
394
2.83k
  {
395
2.83k
    OPSET::flush_args_and_op (op, env, param);
396
2.83k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_post_flex(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
394
1.62k
  {
395
1.62k
    OPSET::flush_args_and_op (op, env, param);
396
1.62k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_post_flex(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_post_flex(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
394
1.20k
  {
395
1.20k
    OPSET::flush_args_and_op (op, env, param);
396
1.20k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_post_flex(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
394
2.31k
  {
395
2.31k
    OPSET::flush_args_and_op (op, env, param);
396
2.31k
  }
397
398
  static void check_width (op_code_t op, ENV &env, PARAM& param)
399
386k
  {}
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::check_width(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
399
134k
  {}
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::check_width(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
399
251k
  {}
400
401
  static void process_post_move (op_code_t op, ENV &env, PARAM& param)
402
155k
  {
403
155k
    if (!env.seen_moveto)
404
0
    {
405
0
      env.determine_hintmask_size ();
406
0
      env.seen_moveto = true;
407
0
    }
408
155k
    OPSET::flush_args_and_op (op, env, param);
409
155k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_post_move(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
402
21.5k
  {
403
21.5k
    if (!env.seen_moveto)
404
0
    {
405
0
      env.determine_hintmask_size ();
406
0
      env.seen_moveto = true;
407
0
    }
408
21.5k
    OPSET::flush_args_and_op (op, env, param);
409
21.5k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_post_move(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
402
12.9k
  {
403
12.9k
    if (!env.seen_moveto)
404
0
    {
405
0
      env.determine_hintmask_size ();
406
0
      env.seen_moveto = true;
407
0
    }
408
12.9k
    OPSET::flush_args_and_op (op, env, param);
409
12.9k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_post_move(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_post_move(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
402
39.6k
  {
403
39.6k
    if (!env.seen_moveto)
404
0
    {
405
0
      env.determine_hintmask_size ();
406
0
      env.seen_moveto = true;
407
0
    }
408
39.6k
    OPSET::flush_args_and_op (op, env, param);
409
39.6k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_post_move(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
402
81.6k
  {
403
81.6k
    if (!env.seen_moveto)
404
0
    {
405
0
      env.determine_hintmask_size ();
406
0
      env.seen_moveto = true;
407
0
    }
408
81.6k
    OPSET::flush_args_and_op (op, env, param);
409
81.6k
  }
410
411
  static void process_post_path (op_code_t op, ENV &env, PARAM& param)
412
651k
  {
413
651k
    OPSET::flush_args_and_op (op, env, param);
414
651k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_post_path(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
412
87.9k
  {
413
87.9k
    OPSET::flush_args_and_op (op, env, param);
414
87.9k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_post_path(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
412
52.8k
  {
413
52.8k
    OPSET::flush_args_and_op (op, env, param);
414
52.8k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_post_path(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_post_path(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
412
125k
  {
413
125k
    OPSET::flush_args_and_op (op, env, param);
414
125k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_post_path(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
412
384k
  {
413
384k
    OPSET::flush_args_and_op (op, env, param);
414
384k
  }
415
416
  static void flush_args_and_op (op_code_t op, ENV &env, PARAM& param)
417
1.15M
  {
418
1.15M
    OPSET::flush_args (env, param);
419
1.15M
    OPSET::flush_op (op, env, param);
420
1.15M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::flush_args_and_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
417
162k
  {
418
162k
    OPSET::flush_args (env, param);
419
162k
    OPSET::flush_op (op, env, param);
420
162k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::flush_args_and_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
417
97.0k
  {
418
97.0k
    OPSET::flush_args (env, param);
419
97.0k
    OPSET::flush_op (op, env, param);
420
97.0k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::flush_args_and_op(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::flush_args_and_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
417
261k
  {
418
261k
    OPSET::flush_args (env, param);
419
261k
    OPSET::flush_op (op, env, param);
420
261k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::flush_args_and_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
417
638k
  {
418
638k
    OPSET::flush_args (env, param);
419
638k
    OPSET::flush_op (op, env, param);
420
638k
  }
421
422
  static void flush_args (ENV &env, PARAM& param)
423
1.15M
  {
424
1.15M
    env.pop_n_args (env.argStack.get_count ());
425
1.15M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::flush_args(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
423
162k
  {
424
162k
    env.pop_n_args (env.argStack.get_count ());
425
162k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::flush_args(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
423
97.0k
  {
424
97.0k
    env.pop_n_args (env.argStack.get_count ());
425
97.0k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::flush_args(CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::flush_args(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
423
261k
  {
424
261k
    env.pop_n_args (env.argStack.get_count ());
425
261k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::flush_args(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
423
638k
  {
424
638k
    env.pop_n_args (env.argStack.get_count ());
425
638k
  }
426
427
  static void flush_op (op_code_t op, ENV &env, PARAM& param)
428
1.15M
  {
429
1.15M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::flush_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
428
162k
  {
429
162k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::flush_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
428
97.0k
  {
429
97.0k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::flush_op(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::flush_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
428
261k
  {
429
261k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::flush_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
428
638k
  {
429
638k
  }
430
431
  static void flush_hintmask (op_code_t op, ENV &env, PARAM& param)
432
114k
  {
433
114k
    OPSET::flush_args_and_op (op, env, param);
434
114k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::flush_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
432
7.80k
  {
433
7.80k
    OPSET::flush_args_and_op (op, env, param);
434
7.80k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::flush_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
432
4.78k
  {
433
4.78k
    OPSET::flush_args_and_op (op, env, param);
434
4.78k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::flush_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::flush_hintmask(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
432
49.4k
  {
433
49.4k
    OPSET::flush_args_and_op (op, env, param);
434
49.4k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::flush_hintmask(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
432
52.1k
  {
433
52.1k
    OPSET::flush_args_and_op (op, env, param);
434
52.1k
  }
435
436
  static bool is_number_op (op_code_t op)
437
  {
438
    switch (op)
439
    {
440
      case OpCode_shortint:
441
      case OpCode_fixedcs:
442
      case OpCode_TwoBytePosInt0: case OpCode_TwoBytePosInt1:
443
      case OpCode_TwoBytePosInt2: case OpCode_TwoBytePosInt3:
444
      case OpCode_TwoByteNegInt0: case OpCode_TwoByteNegInt1:
445
      case OpCode_TwoByteNegInt2: case OpCode_TwoByteNegInt3:
446
  return true;
447
448
      default:
449
  /* 1-byte integer */
450
  return (OpCode_OneByteIntFirst <= op) && (op <= OpCode_OneByteIntLast);
451
    }
452
  }
453
454
  protected:
455
  typedef opset_t<ARG>  SUPER;
456
};
457
458
template <typename PATH, typename ENV, typename PARAM>
459
struct path_procs_t
460
{
461
  static void rmoveto (ENV &env, PARAM& param)
462
61.3k
  {
463
61.3k
    point_t pt1 = env.get_pt ();
464
61.3k
    const number_t &dy = env.pop_arg ();
465
61.3k
    const number_t &dx = env.pop_arg ();
466
61.3k
    pt1.move (dx, dy);
467
61.3k
    PATH::moveto (env, param, pt1);
468
61.3k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::rmoveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
462
11.1k
  {
463
11.1k
    point_t pt1 = env.get_pt ();
464
11.1k
    const number_t &dy = env.pop_arg ();
465
11.1k
    const number_t &dx = env.pop_arg ();
466
11.1k
    pt1.move (dx, dy);
467
11.1k
    PATH::moveto (env, param, pt1);
468
11.1k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::rmoveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
462
6.68k
  {
463
6.68k
    point_t pt1 = env.get_pt ();
464
6.68k
    const number_t &dy = env.pop_arg ();
465
6.68k
    const number_t &dx = env.pop_arg ();
466
6.68k
    pt1.move (dx, dy);
467
6.68k
    PATH::moveto (env, param, pt1);
468
6.68k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::rmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
462
6.47k
  {
463
6.47k
    point_t pt1 = env.get_pt ();
464
6.47k
    const number_t &dy = env.pop_arg ();
465
6.47k
    const number_t &dx = env.pop_arg ();
466
6.47k
    pt1.move (dx, dy);
467
6.47k
    PATH::moveto (env, param, pt1);
468
6.47k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::rmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
462
37.0k
  {
463
37.0k
    point_t pt1 = env.get_pt ();
464
37.0k
    const number_t &dy = env.pop_arg ();
465
37.0k
    const number_t &dx = env.pop_arg ();
466
37.0k
    pt1.move (dx, dy);
467
37.0k
    PATH::moveto (env, param, pt1);
468
37.0k
  }
469
470
  static void hmoveto (ENV &env, PARAM& param)
471
29.4k
  {
472
29.4k
    point_t pt1 = env.get_pt ();
473
29.4k
    pt1.move_x (env.pop_arg ());
474
29.4k
    PATH::moveto (env, param, pt1);
475
29.4k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hmoveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
471
4.42k
  {
472
4.42k
    point_t pt1 = env.get_pt ();
473
4.42k
    pt1.move_x (env.pop_arg ());
474
4.42k
    PATH::moveto (env, param, pt1);
475
4.42k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hmoveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
471
2.69k
  {
472
2.69k
    point_t pt1 = env.get_pt ();
473
2.69k
    pt1.move_x (env.pop_arg ());
474
2.69k
    PATH::moveto (env, param, pt1);
475
2.69k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
471
12.5k
  {
472
12.5k
    point_t pt1 = env.get_pt ();
473
12.5k
    pt1.move_x (env.pop_arg ());
474
12.5k
    PATH::moveto (env, param, pt1);
475
12.5k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
471
9.77k
  {
472
9.77k
    point_t pt1 = env.get_pt ();
473
9.77k
    pt1.move_x (env.pop_arg ());
474
9.77k
    PATH::moveto (env, param, pt1);
475
9.77k
  }
476
477
  static void vmoveto (ENV &env, PARAM& param)
478
65.1k
  {
479
65.1k
    point_t pt1 = env.get_pt ();
480
65.1k
    pt1.move_y (env.pop_arg ());
481
65.1k
    PATH::moveto (env, param, pt1);
482
65.1k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::vmoveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
478
6.03k
  {
479
6.03k
    point_t pt1 = env.get_pt ();
480
6.03k
    pt1.move_y (env.pop_arg ());
481
6.03k
    PATH::moveto (env, param, pt1);
482
6.03k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::vmoveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
478
3.60k
  {
479
3.60k
    point_t pt1 = env.get_pt ();
480
3.60k
    pt1.move_y (env.pop_arg ());
481
3.60k
    PATH::moveto (env, param, pt1);
482
3.60k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::vmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
478
20.6k
  {
479
20.6k
    point_t pt1 = env.get_pt ();
480
20.6k
    pt1.move_y (env.pop_arg ());
481
20.6k
    PATH::moveto (env, param, pt1);
482
20.6k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::vmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
478
34.8k
  {
479
34.8k
    point_t pt1 = env.get_pt ();
480
34.8k
    pt1.move_y (env.pop_arg ());
481
34.8k
    PATH::moveto (env, param, pt1);
482
34.8k
  }
483
484
  static void rlineto (ENV &env, PARAM& param)
485
80.5k
  {
486
217k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
487
136k
    {
488
136k
      point_t pt1 = env.get_pt ();
489
136k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
490
136k
      PATH::line (env, param, pt1);
491
136k
    }
492
80.5k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::rlineto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
485
7.23k
  {
486
15.6k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
487
8.39k
    {
488
8.39k
      point_t pt1 = env.get_pt ();
489
8.39k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
490
8.39k
      PATH::line (env, param, pt1);
491
8.39k
    }
492
7.23k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::rlineto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
485
4.39k
  {
486
9.49k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
487
5.09k
    {
488
5.09k
      point_t pt1 = env.get_pt ();
489
5.09k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
490
5.09k
      PATH::line (env, param, pt1);
491
5.09k
    }
492
4.39k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::rlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
485
14.4k
  {
486
57.2k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
487
42.7k
    {
488
42.7k
      point_t pt1 = env.get_pt ();
489
42.7k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
490
42.7k
      PATH::line (env, param, pt1);
491
42.7k
    }
492
14.4k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::rlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
485
54.4k
  {
486
134k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
487
80.4k
    {
488
80.4k
      point_t pt1 = env.get_pt ();
489
80.4k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
490
80.4k
      PATH::line (env, param, pt1);
491
80.4k
    }
492
54.4k
  }
493
494
  static void hlineto (ENV &env, PARAM& param)
495
50.3k
  {
496
50.3k
    point_t pt1;
497
50.3k
    unsigned int i = 0;
498
103k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
499
53.3k
    {
500
53.3k
      pt1 = env.get_pt ();
501
53.3k
      pt1.move_x (env.eval_arg (i));
502
53.3k
      PATH::line (env, param, pt1);
503
53.3k
      pt1.move_y (env.eval_arg (i+1));
504
53.3k
      PATH::line (env, param, pt1);
505
53.3k
    }
506
50.3k
    if (i < env.argStack.get_count ())
507
28.1k
    {
508
28.1k
      pt1 = env.get_pt ();
509
28.1k
      pt1.move_x (env.eval_arg (i));
510
28.1k
      PATH::line (env, param, pt1);
511
28.1k
    }
512
50.3k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hlineto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
495
11.4k
  {
496
11.4k
    point_t pt1;
497
11.4k
    unsigned int i = 0;
498
20.8k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
499
9.37k
    {
500
9.37k
      pt1 = env.get_pt ();
501
9.37k
      pt1.move_x (env.eval_arg (i));
502
9.37k
      PATH::line (env, param, pt1);
503
9.37k
      pt1.move_y (env.eval_arg (i+1));
504
9.37k
      PATH::line (env, param, pt1);
505
9.37k
    }
506
11.4k
    if (i < env.argStack.get_count ())
507
6.62k
    {
508
6.62k
      pt1 = env.get_pt ();
509
6.62k
      pt1.move_x (env.eval_arg (i));
510
6.62k
      PATH::line (env, param, pt1);
511
6.62k
    }
512
11.4k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hlineto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
495
6.24k
  {
496
6.24k
    point_t pt1;
497
6.24k
    unsigned int i = 0;
498
11.4k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
499
5.20k
    {
500
5.20k
      pt1 = env.get_pt ();
501
5.20k
      pt1.move_x (env.eval_arg (i));
502
5.20k
      PATH::line (env, param, pt1);
503
5.20k
      pt1.move_y (env.eval_arg (i+1));
504
5.20k
      PATH::line (env, param, pt1);
505
5.20k
    }
506
6.24k
    if (i < env.argStack.get_count ())
507
3.65k
    {
508
3.65k
      pt1 = env.get_pt ();
509
3.65k
      pt1.move_x (env.eval_arg (i));
510
3.65k
      PATH::line (env, param, pt1);
511
3.65k
    }
512
6.24k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
495
12.1k
  {
496
12.1k
    point_t pt1;
497
12.1k
    unsigned int i = 0;
498
30.4k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
499
18.3k
    {
500
18.3k
      pt1 = env.get_pt ();
501
18.3k
      pt1.move_x (env.eval_arg (i));
502
18.3k
      PATH::line (env, param, pt1);
503
18.3k
      pt1.move_y (env.eval_arg (i+1));
504
18.3k
      PATH::line (env, param, pt1);
505
18.3k
    }
506
12.1k
    if (i < env.argStack.get_count ())
507
5.10k
    {
508
5.10k
      pt1 = env.get_pt ();
509
5.10k
      pt1.move_x (env.eval_arg (i));
510
5.10k
      PATH::line (env, param, pt1);
511
5.10k
    }
512
12.1k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
495
20.5k
  {
496
20.5k
    point_t pt1;
497
20.5k
    unsigned int i = 0;
498
40.9k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
499
20.4k
    {
500
20.4k
      pt1 = env.get_pt ();
501
20.4k
      pt1.move_x (env.eval_arg (i));
502
20.4k
      PATH::line (env, param, pt1);
503
20.4k
      pt1.move_y (env.eval_arg (i+1));
504
20.4k
      PATH::line (env, param, pt1);
505
20.4k
    }
506
20.5k
    if (i < env.argStack.get_count ())
507
12.7k
    {
508
12.7k
      pt1 = env.get_pt ();
509
12.7k
      pt1.move_x (env.eval_arg (i));
510
12.7k
      PATH::line (env, param, pt1);
511
12.7k
    }
512
20.5k
  }
513
514
  static void vlineto (ENV &env, PARAM& param)
515
78.9k
  {
516
78.9k
    point_t pt1;
517
78.9k
    unsigned int i = 0;
518
146k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
519
67.2k
    {
520
67.2k
      pt1 = env.get_pt ();
521
67.2k
      pt1.move_y (env.eval_arg (i));
522
67.2k
      PATH::line (env, param, pt1);
523
67.2k
      pt1.move_x (env.eval_arg (i+1));
524
67.2k
      PATH::line (env, param, pt1);
525
67.2k
    }
526
78.9k
    if (i < env.argStack.get_count ())
527
46.7k
    {
528
46.7k
      pt1 = env.get_pt ();
529
46.7k
      pt1.move_y (env.eval_arg (i));
530
46.7k
      PATH::line (env, param, pt1);
531
46.7k
    }
532
78.9k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::vlineto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
515
18.8k
  {
516
18.8k
    point_t pt1;
517
18.8k
    unsigned int i = 0;
518
26.5k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
519
7.74k
    {
520
7.74k
      pt1 = env.get_pt ();
521
7.74k
      pt1.move_y (env.eval_arg (i));
522
7.74k
      PATH::line (env, param, pt1);
523
7.74k
      pt1.move_x (env.eval_arg (i+1));
524
7.74k
      PATH::line (env, param, pt1);
525
7.74k
    }
526
18.8k
    if (i < env.argStack.get_count ())
527
6.98k
    {
528
6.98k
      pt1 = env.get_pt ();
529
6.98k
      pt1.move_y (env.eval_arg (i));
530
6.98k
      PATH::line (env, param, pt1);
531
6.98k
    }
532
18.8k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::vlineto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
515
11.2k
  {
516
11.2k
    point_t pt1;
517
11.2k
    unsigned int i = 0;
518
15.8k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
519
4.65k
    {
520
4.65k
      pt1 = env.get_pt ();
521
4.65k
      pt1.move_y (env.eval_arg (i));
522
4.65k
      PATH::line (env, param, pt1);
523
4.65k
      pt1.move_x (env.eval_arg (i+1));
524
4.65k
      PATH::line (env, param, pt1);
525
4.65k
    }
526
11.2k
    if (i < env.argStack.get_count ())
527
4.20k
    {
528
4.20k
      pt1 = env.get_pt ();
529
4.20k
      pt1.move_y (env.eval_arg (i));
530
4.20k
      PATH::line (env, param, pt1);
531
4.20k
    }
532
11.2k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::vlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
515
25.2k
  {
516
25.2k
    point_t pt1;
517
25.2k
    unsigned int i = 0;
518
55.4k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
519
30.1k
    {
520
30.1k
      pt1 = env.get_pt ();
521
30.1k
      pt1.move_y (env.eval_arg (i));
522
30.1k
      PATH::line (env, param, pt1);
523
30.1k
      pt1.move_x (env.eval_arg (i+1));
524
30.1k
      PATH::line (env, param, pt1);
525
30.1k
    }
526
25.2k
    if (i < env.argStack.get_count ())
527
17.7k
    {
528
17.7k
      pt1 = env.get_pt ();
529
17.7k
      pt1.move_y (env.eval_arg (i));
530
17.7k
      PATH::line (env, param, pt1);
531
17.7k
    }
532
25.2k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::vlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
515
23.6k
  {
516
23.6k
    point_t pt1;
517
23.6k
    unsigned int i = 0;
518
48.3k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
519
24.7k
    {
520
24.7k
      pt1 = env.get_pt ();
521
24.7k
      pt1.move_y (env.eval_arg (i));
522
24.7k
      PATH::line (env, param, pt1);
523
24.7k
      pt1.move_x (env.eval_arg (i+1));
524
24.7k
      PATH::line (env, param, pt1);
525
24.7k
    }
526
23.6k
    if (i < env.argStack.get_count ())
527
17.8k
    {
528
17.8k
      pt1 = env.get_pt ();
529
17.8k
      pt1.move_y (env.eval_arg (i));
530
17.8k
      PATH::line (env, param, pt1);
531
17.8k
    }
532
23.6k
  }
533
534
  static void rrcurveto (ENV &env, PARAM& param)
535
102k
  {
536
166k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
537
63.3k
    {
538
63.3k
      point_t pt1 = env.get_pt ();
539
63.3k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
540
63.3k
      point_t pt2 = pt1;
541
63.3k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
542
63.3k
      point_t pt3 = pt2;
543
63.3k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
544
63.3k
      PATH::curve (env, param, pt1, pt2, pt3);
545
63.3k
    }
546
102k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::rrcurveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
535
15.0k
  {
536
18.7k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
537
3.69k
    {
538
3.69k
      point_t pt1 = env.get_pt ();
539
3.69k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
540
3.69k
      point_t pt2 = pt1;
541
3.69k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
542
3.69k
      point_t pt3 = pt2;
543
3.69k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
544
3.69k
      PATH::curve (env, param, pt1, pt2, pt3);
545
3.69k
    }
546
15.0k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::rrcurveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
535
8.99k
  {
536
11.1k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
537
2.16k
    {
538
2.16k
      point_t pt1 = env.get_pt ();
539
2.16k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
540
2.16k
      point_t pt2 = pt1;
541
2.16k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
542
2.16k
      point_t pt3 = pt2;
543
2.16k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
544
2.16k
      PATH::curve (env, param, pt1, pt2, pt3);
545
2.16k
    }
546
8.99k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::rrcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
535
19.8k
  {
536
21.5k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
537
1.69k
    {
538
1.69k
      point_t pt1 = env.get_pt ();
539
1.69k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
540
1.69k
      point_t pt2 = pt1;
541
1.69k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
542
1.69k
      point_t pt3 = pt2;
543
1.69k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
544
1.69k
      PATH::curve (env, param, pt1, pt2, pt3);
545
1.69k
    }
546
19.8k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::rrcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
535
58.6k
  {
536
114k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
537
55.8k
    {
538
55.8k
      point_t pt1 = env.get_pt ();
539
55.8k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
540
55.8k
      point_t pt2 = pt1;
541
55.8k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
542
55.8k
      point_t pt3 = pt2;
543
55.8k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
544
55.8k
      PATH::curve (env, param, pt1, pt2, pt3);
545
55.8k
    }
546
58.6k
  }
547
548
  static void rcurveline (ENV &env, PARAM& param)
549
38.6k
  {
550
38.6k
    unsigned int arg_count = env.argStack.get_count ();
551
38.6k
    if (unlikely (arg_count < 8))
552
14.3k
      return;
553
554
24.3k
    unsigned int i = 0;
555
24.3k
    unsigned int curve_limit = arg_count - 2;
556
59.5k
    for (; i + 6 <= curve_limit; i += 6)
557
35.1k
    {
558
35.1k
      point_t pt1 = env.get_pt ();
559
35.1k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
560
35.1k
      point_t pt2 = pt1;
561
35.1k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
562
35.1k
      point_t pt3 = pt2;
563
35.1k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
564
35.1k
      PATH::curve (env, param, pt1, pt2, pt3);
565
35.1k
    }
566
567
24.3k
    point_t pt1 = env.get_pt ();
568
24.3k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
569
24.3k
    PATH::line (env, param, pt1);
570
24.3k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::rcurveline(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
549
5.43k
  {
550
5.43k
    unsigned int arg_count = env.argStack.get_count ();
551
5.43k
    if (unlikely (arg_count < 8))
552
3.44k
      return;
553
554
1.98k
    unsigned int i = 0;
555
1.98k
    unsigned int curve_limit = arg_count - 2;
556
4.79k
    for (; i + 6 <= curve_limit; i += 6)
557
2.81k
    {
558
2.81k
      point_t pt1 = env.get_pt ();
559
2.81k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
560
2.81k
      point_t pt2 = pt1;
561
2.81k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
562
2.81k
      point_t pt3 = pt2;
563
2.81k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
564
2.81k
      PATH::curve (env, param, pt1, pt2, pt3);
565
2.81k
    }
566
567
1.98k
    point_t pt1 = env.get_pt ();
568
1.98k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
569
1.98k
    PATH::line (env, param, pt1);
570
1.98k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::rcurveline(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
549
3.41k
  {
550
3.41k
    unsigned int arg_count = env.argStack.get_count ();
551
3.41k
    if (unlikely (arg_count < 8))
552
2.23k
      return;
553
554
1.17k
    unsigned int i = 0;
555
1.17k
    unsigned int curve_limit = arg_count - 2;
556
2.86k
    for (; i + 6 <= curve_limit; i += 6)
557
1.69k
    {
558
1.69k
      point_t pt1 = env.get_pt ();
559
1.69k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
560
1.69k
      point_t pt2 = pt1;
561
1.69k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
562
1.69k
      point_t pt3 = pt2;
563
1.69k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
564
1.69k
      PATH::curve (env, param, pt1, pt2, pt3);
565
1.69k
    }
566
567
1.17k
    point_t pt1 = env.get_pt ();
568
1.17k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
569
1.17k
    PATH::line (env, param, pt1);
570
1.17k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::rcurveline(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
549
3.09k
  {
550
3.09k
    unsigned int arg_count = env.argStack.get_count ();
551
3.09k
    if (unlikely (arg_count < 8))
552
1.52k
      return;
553
554
1.56k
    unsigned int i = 0;
555
1.56k
    unsigned int curve_limit = arg_count - 2;
556
6.77k
    for (; i + 6 <= curve_limit; i += 6)
557
5.20k
    {
558
5.20k
      point_t pt1 = env.get_pt ();
559
5.20k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
560
5.20k
      point_t pt2 = pt1;
561
5.20k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
562
5.20k
      point_t pt3 = pt2;
563
5.20k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
564
5.20k
      PATH::curve (env, param, pt1, pt2, pt3);
565
5.20k
    }
566
567
1.56k
    point_t pt1 = env.get_pt ();
568
1.56k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
569
1.56k
    PATH::line (env, param, pt1);
570
1.56k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::rcurveline(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
549
26.7k
  {
550
26.7k
    unsigned int arg_count = env.argStack.get_count ();
551
26.7k
    if (unlikely (arg_count < 8))
552
7.14k
      return;
553
554
19.6k
    unsigned int i = 0;
555
19.6k
    unsigned int curve_limit = arg_count - 2;
556
45.0k
    for (; i + 6 <= curve_limit; i += 6)
557
25.4k
    {
558
25.4k
      point_t pt1 = env.get_pt ();
559
25.4k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
560
25.4k
      point_t pt2 = pt1;
561
25.4k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
562
25.4k
      point_t pt3 = pt2;
563
25.4k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
564
25.4k
      PATH::curve (env, param, pt1, pt2, pt3);
565
25.4k
    }
566
567
19.6k
    point_t pt1 = env.get_pt ();
568
19.6k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
569
19.6k
    PATH::line (env, param, pt1);
570
19.6k
  }
571
572
  static void rlinecurve (ENV &env, PARAM& param)
573
50.4k
  {
574
50.4k
    unsigned int arg_count = env.argStack.get_count ();
575
50.4k
    if (unlikely (arg_count < 8))
576
14.5k
      return;
577
578
35.8k
    unsigned int i = 0;
579
35.8k
    unsigned int line_limit = arg_count - 6;
580
91.2k
    for (; i + 2 <= line_limit; i += 2)
581
55.4k
    {
582
55.4k
      point_t pt1 = env.get_pt ();
583
55.4k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
584
55.4k
      PATH::line (env, param, pt1);
585
55.4k
    }
586
587
35.8k
    point_t pt1 = env.get_pt ();
588
35.8k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
589
35.8k
    point_t pt2 = pt1;
590
35.8k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
591
35.8k
    point_t pt3 = pt2;
592
35.8k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
593
35.8k
    PATH::curve (env, param, pt1, pt2, pt3);
594
35.8k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::rlinecurve(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
573
5.57k
  {
574
5.57k
    unsigned int arg_count = env.argStack.get_count ();
575
5.57k
    if (unlikely (arg_count < 8))
576
3.78k
      return;
577
578
1.78k
    unsigned int i = 0;
579
1.78k
    unsigned int line_limit = arg_count - 6;
580
6.92k
    for (; i + 2 <= line_limit; i += 2)
581
5.14k
    {
582
5.14k
      point_t pt1 = env.get_pt ();
583
5.14k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
584
5.14k
      PATH::line (env, param, pt1);
585
5.14k
    }
586
587
1.78k
    point_t pt1 = env.get_pt ();
588
1.78k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
589
1.78k
    point_t pt2 = pt1;
590
1.78k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
591
1.78k
    point_t pt3 = pt2;
592
1.78k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
593
1.78k
    PATH::curve (env, param, pt1, pt2, pt3);
594
1.78k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::rlinecurve(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
573
3.63k
  {
574
3.63k
    unsigned int arg_count = env.argStack.get_count ();
575
3.63k
    if (unlikely (arg_count < 8))
576
2.52k
      return;
577
578
1.10k
    unsigned int i = 0;
579
1.10k
    unsigned int line_limit = arg_count - 6;
580
4.46k
    for (; i + 2 <= line_limit; i += 2)
581
3.35k
    {
582
3.35k
      point_t pt1 = env.get_pt ();
583
3.35k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
584
3.35k
      PATH::line (env, param, pt1);
585
3.35k
    }
586
587
1.10k
    point_t pt1 = env.get_pt ();
588
1.10k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
589
1.10k
    point_t pt2 = pt1;
590
1.10k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
591
1.10k
    point_t pt3 = pt2;
592
1.10k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
593
1.10k
    PATH::curve (env, param, pt1, pt2, pt3);
594
1.10k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::rlinecurve(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
573
8.66k
  {
574
8.66k
    unsigned int arg_count = env.argStack.get_count ();
575
8.66k
    if (unlikely (arg_count < 8))
576
3.46k
      return;
577
578
5.19k
    unsigned int i = 0;
579
5.19k
    unsigned int line_limit = arg_count - 6;
580
18.5k
    for (; i + 2 <= line_limit; i += 2)
581
13.3k
    {
582
13.3k
      point_t pt1 = env.get_pt ();
583
13.3k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
584
13.3k
      PATH::line (env, param, pt1);
585
13.3k
    }
586
587
5.19k
    point_t pt1 = env.get_pt ();
588
5.19k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
589
5.19k
    point_t pt2 = pt1;
590
5.19k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
591
5.19k
    point_t pt3 = pt2;
592
5.19k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
593
5.19k
    PATH::curve (env, param, pt1, pt2, pt3);
594
5.19k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::rlinecurve(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
573
32.5k
  {
574
32.5k
    unsigned int arg_count = env.argStack.get_count ();
575
32.5k
    if (unlikely (arg_count < 8))
576
4.74k
      return;
577
578
27.7k
    unsigned int i = 0;
579
27.7k
    unsigned int line_limit = arg_count - 6;
580
61.3k
    for (; i + 2 <= line_limit; i += 2)
581
33.5k
    {
582
33.5k
      point_t pt1 = env.get_pt ();
583
33.5k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
584
33.5k
      PATH::line (env, param, pt1);
585
33.5k
    }
586
587
27.7k
    point_t pt1 = env.get_pt ();
588
27.7k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
589
27.7k
    point_t pt2 = pt1;
590
27.7k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
591
27.7k
    point_t pt3 = pt2;
592
27.7k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
593
27.7k
    PATH::curve (env, param, pt1, pt2, pt3);
594
27.7k
  }
595
596
  static void vvcurveto (ENV &env, PARAM& param)
597
27.1k
  {
598
27.1k
    unsigned int i = 0;
599
27.1k
    point_t pt1 = env.get_pt ();
600
27.1k
    if ((env.argStack.get_count () & 1) != 0)
601
11.0k
      pt1.move_x (env.eval_arg (i++));
602
46.3k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
603
19.2k
    {
604
19.2k
      pt1.move_y (env.eval_arg (i));
605
19.2k
      point_t pt2 = pt1;
606
19.2k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
607
19.2k
      point_t pt3 = pt2;
608
19.2k
      pt3.move_y (env.eval_arg (i+3));
609
19.2k
      PATH::curve (env, param, pt1, pt2, pt3);
610
19.2k
      pt1 = env.get_pt ();
611
19.2k
    }
612
27.1k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::vvcurveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
597
4.42k
  {
598
4.42k
    unsigned int i = 0;
599
4.42k
    point_t pt1 = env.get_pt ();
600
4.42k
    if ((env.argStack.get_count () & 1) != 0)
601
1.99k
      pt1.move_x (env.eval_arg (i++));
602
7.66k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
603
3.23k
    {
604
3.23k
      pt1.move_y (env.eval_arg (i));
605
3.23k
      point_t pt2 = pt1;
606
3.23k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
607
3.23k
      point_t pt3 = pt2;
608
3.23k
      pt3.move_y (env.eval_arg (i+3));
609
3.23k
      PATH::curve (env, param, pt1, pt2, pt3);
610
3.23k
      pt1 = env.get_pt ();
611
3.23k
    }
612
4.42k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::vvcurveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
597
2.69k
  {
598
2.69k
    unsigned int i = 0;
599
2.69k
    point_t pt1 = env.get_pt ();
600
2.69k
    if ((env.argStack.get_count () & 1) != 0)
601
1.25k
      pt1.move_x (env.eval_arg (i++));
602
4.74k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
603
2.04k
    {
604
2.04k
      pt1.move_y (env.eval_arg (i));
605
2.04k
      point_t pt2 = pt1;
606
2.04k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
607
2.04k
      point_t pt3 = pt2;
608
2.04k
      pt3.move_y (env.eval_arg (i+3));
609
2.04k
      PATH::curve (env, param, pt1, pt2, pt3);
610
2.04k
      pt1 = env.get_pt ();
611
2.04k
    }
612
2.69k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::vvcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
597
3.77k
  {
598
3.77k
    unsigned int i = 0;
599
3.77k
    point_t pt1 = env.get_pt ();
600
3.77k
    if ((env.argStack.get_count () & 1) != 0)
601
861
      pt1.move_x (env.eval_arg (i++));
602
6.04k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
603
2.26k
    {
604
2.26k
      pt1.move_y (env.eval_arg (i));
605
2.26k
      point_t pt2 = pt1;
606
2.26k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
607
2.26k
      point_t pt3 = pt2;
608
2.26k
      pt3.move_y (env.eval_arg (i+3));
609
2.26k
      PATH::curve (env, param, pt1, pt2, pt3);
610
2.26k
      pt1 = env.get_pt ();
611
2.26k
    }
612
3.77k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::vvcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
597
16.2k
  {
598
16.2k
    unsigned int i = 0;
599
16.2k
    point_t pt1 = env.get_pt ();
600
16.2k
    if ((env.argStack.get_count () & 1) != 0)
601
6.96k
      pt1.move_x (env.eval_arg (i++));
602
27.8k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
603
11.6k
    {
604
11.6k
      pt1.move_y (env.eval_arg (i));
605
11.6k
      point_t pt2 = pt1;
606
11.6k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
607
11.6k
      point_t pt3 = pt2;
608
11.6k
      pt3.move_y (env.eval_arg (i+3));
609
11.6k
      PATH::curve (env, param, pt1, pt2, pt3);
610
11.6k
      pt1 = env.get_pt ();
611
11.6k
    }
612
16.2k
  }
613
614
  static void hhcurveto (ENV &env, PARAM& param)
615
109k
  {
616
109k
    unsigned int i = 0;
617
109k
    point_t pt1 = env.get_pt ();
618
109k
    if ((env.argStack.get_count () & 1) != 0)
619
62.9k
      pt1.move_y (env.eval_arg (i++));
620
184k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
621
75.7k
    {
622
75.7k
      pt1.move_x (env.eval_arg (i));
623
75.7k
      point_t pt2 = pt1;
624
75.7k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
625
75.7k
      point_t pt3 = pt2;
626
75.7k
      pt3.move_x (env.eval_arg (i+3));
627
75.7k
      PATH::curve (env, param, pt1, pt2, pt3);
628
75.7k
      pt1 = env.get_pt ();
629
75.7k
    }
630
109k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hhcurveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
615
5.43k
  {
616
5.43k
    unsigned int i = 0;
617
5.43k
    point_t pt1 = env.get_pt ();
618
5.43k
    if ((env.argStack.get_count () & 1) != 0)
619
2.66k
      pt1.move_y (env.eval_arg (i++));
620
10.7k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
621
5.36k
    {
622
5.36k
      pt1.move_x (env.eval_arg (i));
623
5.36k
      point_t pt2 = pt1;
624
5.36k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
625
5.36k
      point_t pt3 = pt2;
626
5.36k
      pt3.move_x (env.eval_arg (i+3));
627
5.36k
      PATH::curve (env, param, pt1, pt2, pt3);
628
5.36k
      pt1 = env.get_pt ();
629
5.36k
    }
630
5.43k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hhcurveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
615
3.67k
  {
616
3.67k
    unsigned int i = 0;
617
3.67k
    point_t pt1 = env.get_pt ();
618
3.67k
    if ((env.argStack.get_count () & 1) != 0)
619
1.78k
      pt1.move_y (env.eval_arg (i++));
620
7.35k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
621
3.68k
    {
622
3.68k
      pt1.move_x (env.eval_arg (i));
623
3.68k
      point_t pt2 = pt1;
624
3.68k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
625
3.68k
      point_t pt3 = pt2;
626
3.68k
      pt3.move_x (env.eval_arg (i+3));
627
3.68k
      PATH::curve (env, param, pt1, pt2, pt3);
628
3.68k
      pt1 = env.get_pt ();
629
3.68k
    }
630
3.67k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hhcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
615
25.7k
  {
616
25.7k
    unsigned int i = 0;
617
25.7k
    point_t pt1 = env.get_pt ();
618
25.7k
    if ((env.argStack.get_count () & 1) != 0)
619
13.8k
      pt1.move_y (env.eval_arg (i++));
620
28.9k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
621
3.25k
    {
622
3.25k
      pt1.move_x (env.eval_arg (i));
623
3.25k
      point_t pt2 = pt1;
624
3.25k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
625
3.25k
      point_t pt3 = pt2;
626
3.25k
      pt3.move_x (env.eval_arg (i+3));
627
3.25k
      PATH::curve (env, param, pt1, pt2, pt3);
628
3.25k
      pt1 = env.get_pt ();
629
3.25k
    }
630
25.7k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hhcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
615
74.2k
  {
616
74.2k
    unsigned int i = 0;
617
74.2k
    point_t pt1 = env.get_pt ();
618
74.2k
    if ((env.argStack.get_count () & 1) != 0)
619
44.6k
      pt1.move_y (env.eval_arg (i++));
620
137k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
621
63.4k
    {
622
63.4k
      pt1.move_x (env.eval_arg (i));
623
63.4k
      point_t pt2 = pt1;
624
63.4k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
625
63.4k
      point_t pt3 = pt2;
626
63.4k
      pt3.move_x (env.eval_arg (i+3));
627
63.4k
      PATH::curve (env, param, pt1, pt2, pt3);
628
63.4k
      pt1 = env.get_pt ();
629
63.4k
    }
630
74.2k
  }
631
632
  static void vhcurveto (ENV &env, PARAM& param)
633
47.4k
  {
634
47.4k
    point_t pt1, pt2, pt3;
635
47.4k
    unsigned int i = 0;
636
47.4k
    if ((env.argStack.get_count () % 8) >= 4)
637
26.6k
    {
638
26.6k
      point_t pt1 = env.get_pt ();
639
26.6k
      pt1.move_y (env.eval_arg (i));
640
26.6k
      point_t pt2 = pt1;
641
26.6k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
642
26.6k
      point_t pt3 = pt2;
643
26.6k
      pt3.move_x (env.eval_arg (i+3));
644
26.6k
      i += 4;
645
646
31.5k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
647
4.85k
      {
648
4.85k
  PATH::curve (env, param, pt1, pt2, pt3);
649
4.85k
  pt1 = env.get_pt ();
650
4.85k
  pt1.move_x (env.eval_arg (i));
651
4.85k
  pt2 = pt1;
652
4.85k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
653
4.85k
  pt3 = pt2;
654
4.85k
  pt3.move_y (env.eval_arg (i+3));
655
4.85k
  PATH::curve (env, param, pt1, pt2, pt3);
656
657
4.85k
  pt1 = pt3;
658
4.85k
  pt1.move_y (env.eval_arg (i+4));
659
4.85k
  pt2 = pt1;
660
4.85k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
661
4.85k
  pt3 = pt2;
662
4.85k
  pt3.move_x (env.eval_arg (i+7));
663
4.85k
      }
664
26.6k
      if (i < env.argStack.get_count ())
665
16.4k
  pt3.move_y (env.eval_arg (i));
666
26.6k
      PATH::curve (env, param, pt1, pt2, pt3);
667
26.6k
    }
668
20.7k
    else
669
20.7k
    {
670
36.4k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
671
15.6k
      {
672
15.6k
  pt1 = env.get_pt ();
673
15.6k
  pt1.move_y (env.eval_arg (i));
674
15.6k
  pt2 = pt1;
675
15.6k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
676
15.6k
  pt3 = pt2;
677
15.6k
  pt3.move_x (env.eval_arg (i+3));
678
15.6k
  PATH::curve (env, param, pt1, pt2, pt3);
679
680
15.6k
  pt1 = pt3;
681
15.6k
  pt1.move_x (env.eval_arg (i+4));
682
15.6k
  pt2 = pt1;
683
15.6k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
684
15.6k
  pt3 = pt2;
685
15.6k
  pt3.move_y (env.eval_arg (i+7));
686
15.6k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
687
2.33k
    pt3.move_x (env.eval_arg (i+8));
688
15.6k
  PATH::curve (env, param, pt1, pt2, pt3);
689
15.6k
      }
690
20.7k
    }
691
47.4k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::vhcurveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
633
7.01k
  {
634
7.01k
    point_t pt1, pt2, pt3;
635
7.01k
    unsigned int i = 0;
636
7.01k
    if ((env.argStack.get_count () % 8) >= 4)
637
2.22k
    {
638
2.22k
      point_t pt1 = env.get_pt ();
639
2.22k
      pt1.move_y (env.eval_arg (i));
640
2.22k
      point_t pt2 = pt1;
641
2.22k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
642
2.22k
      point_t pt3 = pt2;
643
2.22k
      pt3.move_x (env.eval_arg (i+3));
644
2.22k
      i += 4;
645
646
3.45k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
647
1.22k
      {
648
1.22k
  PATH::curve (env, param, pt1, pt2, pt3);
649
1.22k
  pt1 = env.get_pt ();
650
1.22k
  pt1.move_x (env.eval_arg (i));
651
1.22k
  pt2 = pt1;
652
1.22k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
653
1.22k
  pt3 = pt2;
654
1.22k
  pt3.move_y (env.eval_arg (i+3));
655
1.22k
  PATH::curve (env, param, pt1, pt2, pt3);
656
657
1.22k
  pt1 = pt3;
658
1.22k
  pt1.move_y (env.eval_arg (i+4));
659
1.22k
  pt2 = pt1;
660
1.22k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
661
1.22k
  pt3 = pt2;
662
1.22k
  pt3.move_x (env.eval_arg (i+7));
663
1.22k
      }
664
2.22k
      if (i < env.argStack.get_count ())
665
1.29k
  pt3.move_y (env.eval_arg (i));
666
2.22k
      PATH::curve (env, param, pt1, pt2, pt3);
667
2.22k
    }
668
4.78k
    else
669
4.78k
    {
670
8.08k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
671
3.29k
      {
672
3.29k
  pt1 = env.get_pt ();
673
3.29k
  pt1.move_y (env.eval_arg (i));
674
3.29k
  pt2 = pt1;
675
3.29k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
676
3.29k
  pt3 = pt2;
677
3.29k
  pt3.move_x (env.eval_arg (i+3));
678
3.29k
  PATH::curve (env, param, pt1, pt2, pt3);
679
680
3.29k
  pt1 = pt3;
681
3.29k
  pt1.move_x (env.eval_arg (i+4));
682
3.29k
  pt2 = pt1;
683
3.29k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
684
3.29k
  pt3 = pt2;
685
3.29k
  pt3.move_y (env.eval_arg (i+7));
686
3.29k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
687
839
    pt3.move_x (env.eval_arg (i+8));
688
3.29k
  PATH::curve (env, param, pt1, pt2, pt3);
689
3.29k
      }
690
4.78k
    }
691
7.01k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::vhcurveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
633
4.09k
  {
634
4.09k
    point_t pt1, pt2, pt3;
635
4.09k
    unsigned int i = 0;
636
4.09k
    if ((env.argStack.get_count () % 8) >= 4)
637
1.30k
    {
638
1.30k
      point_t pt1 = env.get_pt ();
639
1.30k
      pt1.move_y (env.eval_arg (i));
640
1.30k
      point_t pt2 = pt1;
641
1.30k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
642
1.30k
      point_t pt3 = pt2;
643
1.30k
      pt3.move_x (env.eval_arg (i+3));
644
1.30k
      i += 4;
645
646
2.09k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
647
789
      {
648
789
  PATH::curve (env, param, pt1, pt2, pt3);
649
789
  pt1 = env.get_pt ();
650
789
  pt1.move_x (env.eval_arg (i));
651
789
  pt2 = pt1;
652
789
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
653
789
  pt3 = pt2;
654
789
  pt3.move_y (env.eval_arg (i+3));
655
789
  PATH::curve (env, param, pt1, pt2, pt3);
656
657
789
  pt1 = pt3;
658
789
  pt1.move_y (env.eval_arg (i+4));
659
789
  pt2 = pt1;
660
789
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
661
789
  pt3 = pt2;
662
789
  pt3.move_x (env.eval_arg (i+7));
663
789
      }
664
1.30k
      if (i < env.argStack.get_count ())
665
744
  pt3.move_y (env.eval_arg (i));
666
1.30k
      PATH::curve (env, param, pt1, pt2, pt3);
667
1.30k
    }
668
2.78k
    else
669
2.78k
    {
670
4.80k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
671
2.02k
      {
672
2.02k
  pt1 = env.get_pt ();
673
2.02k
  pt1.move_y (env.eval_arg (i));
674
2.02k
  pt2 = pt1;
675
2.02k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
676
2.02k
  pt3 = pt2;
677
2.02k
  pt3.move_x (env.eval_arg (i+3));
678
2.02k
  PATH::curve (env, param, pt1, pt2, pt3);
679
680
2.02k
  pt1 = pt3;
681
2.02k
  pt1.move_x (env.eval_arg (i+4));
682
2.02k
  pt2 = pt1;
683
2.02k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
684
2.02k
  pt3 = pt2;
685
2.02k
  pt3.move_y (env.eval_arg (i+7));
686
2.02k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
687
511
    pt3.move_x (env.eval_arg (i+8));
688
2.02k
  PATH::curve (env, param, pt1, pt2, pt3);
689
2.02k
      }
690
2.78k
    }
691
4.09k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::vhcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
633
6.25k
  {
634
6.25k
    point_t pt1, pt2, pt3;
635
6.25k
    unsigned int i = 0;
636
6.25k
    if ((env.argStack.get_count () % 8) >= 4)
637
2.40k
    {
638
2.40k
      point_t pt1 = env.get_pt ();
639
2.40k
      pt1.move_y (env.eval_arg (i));
640
2.40k
      point_t pt2 = pt1;
641
2.40k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
642
2.40k
      point_t pt3 = pt2;
643
2.40k
      pt3.move_x (env.eval_arg (i+3));
644
2.40k
      i += 4;
645
646
4.06k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
647
1.65k
      {
648
1.65k
  PATH::curve (env, param, pt1, pt2, pt3);
649
1.65k
  pt1 = env.get_pt ();
650
1.65k
  pt1.move_x (env.eval_arg (i));
651
1.65k
  pt2 = pt1;
652
1.65k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
653
1.65k
  pt3 = pt2;
654
1.65k
  pt3.move_y (env.eval_arg (i+3));
655
1.65k
  PATH::curve (env, param, pt1, pt2, pt3);
656
657
1.65k
  pt1 = pt3;
658
1.65k
  pt1.move_y (env.eval_arg (i+4));
659
1.65k
  pt2 = pt1;
660
1.65k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
661
1.65k
  pt3 = pt2;
662
1.65k
  pt3.move_x (env.eval_arg (i+7));
663
1.65k
      }
664
2.40k
      if (i < env.argStack.get_count ())
665
1.27k
  pt3.move_y (env.eval_arg (i));
666
2.40k
      PATH::curve (env, param, pt1, pt2, pt3);
667
2.40k
    }
668
3.84k
    else
669
3.84k
    {
670
9.70k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
671
5.86k
      {
672
5.86k
  pt1 = env.get_pt ();
673
5.86k
  pt1.move_y (env.eval_arg (i));
674
5.86k
  pt2 = pt1;
675
5.86k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
676
5.86k
  pt3 = pt2;
677
5.86k
  pt3.move_x (env.eval_arg (i+3));
678
5.86k
  PATH::curve (env, param, pt1, pt2, pt3);
679
680
5.86k
  pt1 = pt3;
681
5.86k
  pt1.move_x (env.eval_arg (i+4));
682
5.86k
  pt2 = pt1;
683
5.86k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
684
5.86k
  pt3 = pt2;
685
5.86k
  pt3.move_y (env.eval_arg (i+7));
686
5.86k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
687
445
    pt3.move_x (env.eval_arg (i+8));
688
5.86k
  PATH::curve (env, param, pt1, pt2, pt3);
689
5.86k
      }
690
3.84k
    }
691
6.25k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::vhcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
633
30.0k
  {
634
30.0k
    point_t pt1, pt2, pt3;
635
30.0k
    unsigned int i = 0;
636
30.0k
    if ((env.argStack.get_count () % 8) >= 4)
637
20.7k
    {
638
20.7k
      point_t pt1 = env.get_pt ();
639
20.7k
      pt1.move_y (env.eval_arg (i));
640
20.7k
      point_t pt2 = pt1;
641
20.7k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
642
20.7k
      point_t pt3 = pt2;
643
20.7k
      pt3.move_x (env.eval_arg (i+3));
644
20.7k
      i += 4;
645
646
21.9k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
647
1.18k
      {
648
1.18k
  PATH::curve (env, param, pt1, pt2, pt3);
649
1.18k
  pt1 = env.get_pt ();
650
1.18k
  pt1.move_x (env.eval_arg (i));
651
1.18k
  pt2 = pt1;
652
1.18k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
653
1.18k
  pt3 = pt2;
654
1.18k
  pt3.move_y (env.eval_arg (i+3));
655
1.18k
  PATH::curve (env, param, pt1, pt2, pt3);
656
657
1.18k
  pt1 = pt3;
658
1.18k
  pt1.move_y (env.eval_arg (i+4));
659
1.18k
  pt2 = pt1;
660
1.18k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
661
1.18k
  pt3 = pt2;
662
1.18k
  pt3.move_x (env.eval_arg (i+7));
663
1.18k
      }
664
20.7k
      if (i < env.argStack.get_count ())
665
13.1k
  pt3.move_y (env.eval_arg (i));
666
20.7k
      PATH::curve (env, param, pt1, pt2, pt3);
667
20.7k
    }
668
9.37k
    else
669
9.37k
    {
670
13.8k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
671
4.49k
      {
672
4.49k
  pt1 = env.get_pt ();
673
4.49k
  pt1.move_y (env.eval_arg (i));
674
4.49k
  pt2 = pt1;
675
4.49k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
676
4.49k
  pt3 = pt2;
677
4.49k
  pt3.move_x (env.eval_arg (i+3));
678
4.49k
  PATH::curve (env, param, pt1, pt2, pt3);
679
680
4.49k
  pt1 = pt3;
681
4.49k
  pt1.move_x (env.eval_arg (i+4));
682
4.49k
  pt2 = pt1;
683
4.49k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
684
4.49k
  pt3 = pt2;
685
4.49k
  pt3.move_y (env.eval_arg (i+7));
686
4.49k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
687
537
    pt3.move_x (env.eval_arg (i+8));
688
4.49k
  PATH::curve (env, param, pt1, pt2, pt3);
689
4.49k
      }
690
9.37k
    }
691
30.0k
  }
692
693
  static void hvcurveto (ENV &env, PARAM& param)
694
66.4k
  {
695
66.4k
    point_t pt1, pt2, pt3;
696
66.4k
    unsigned int i = 0;
697
66.4k
    if ((env.argStack.get_count () % 8) >= 4)
698
46.0k
    {
699
46.0k
      point_t pt1 = env.get_pt ();
700
46.0k
      pt1.move_x (env.eval_arg (i));
701
46.0k
      point_t pt2 = pt1;
702
46.0k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
703
46.0k
      point_t pt3 = pt2;
704
46.0k
      pt3.move_y (env.eval_arg (i+3));
705
46.0k
      i += 4;
706
707
54.3k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
708
8.34k
      {
709
8.34k
  PATH::curve (env, param, pt1, pt2, pt3);
710
8.34k
  pt1 = env.get_pt ();
711
8.34k
  pt1.move_y (env.eval_arg (i));
712
8.34k
  pt2 = pt1;
713
8.34k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
714
8.34k
  pt3 = pt2;
715
8.34k
  pt3.move_x (env.eval_arg (i+3));
716
8.34k
  PATH::curve (env, param, pt1, pt2, pt3);
717
718
8.34k
  pt1 = pt3;
719
8.34k
  pt1.move_x (env.eval_arg (i+4));
720
8.34k
  pt2 = pt1;
721
8.34k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
722
8.34k
  pt3 = pt2;
723
8.34k
  pt3.move_y (env.eval_arg (i+7));
724
8.34k
      }
725
46.0k
      if (i < env.argStack.get_count ())
726
39.9k
  pt3.move_x (env.eval_arg (i));
727
46.0k
      PATH::curve (env, param, pt1, pt2, pt3);
728
46.0k
    }
729
20.4k
    else
730
20.4k
    {
731
30.9k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
732
10.4k
      {
733
10.4k
  pt1 = env.get_pt ();
734
10.4k
  pt1.move_x (env.eval_arg (i));
735
10.4k
  pt2 = pt1;
736
10.4k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
737
10.4k
  pt3 = pt2;
738
10.4k
  pt3.move_y (env.eval_arg (i+3));
739
10.4k
  PATH::curve (env, param, pt1, pt2, pt3);
740
741
10.4k
  pt1 = pt3;
742
10.4k
  pt1.move_y (env.eval_arg (i+4));
743
10.4k
  pt2 = pt1;
744
10.4k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
745
10.4k
  pt3 = pt2;
746
10.4k
  pt3.move_x (env.eval_arg (i+7));
747
10.4k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
748
3.73k
    pt3.move_y (env.eval_arg (i+8));
749
10.4k
  PATH::curve (env, param, pt1, pt2, pt3);
750
10.4k
      }
751
20.4k
    }
752
66.4k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hvcurveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
694
7.45k
  {
695
7.45k
    point_t pt1, pt2, pt3;
696
7.45k
    unsigned int i = 0;
697
7.45k
    if ((env.argStack.get_count () % 8) >= 4)
698
2.32k
    {
699
2.32k
      point_t pt1 = env.get_pt ();
700
2.32k
      pt1.move_x (env.eval_arg (i));
701
2.32k
      point_t pt2 = pt1;
702
2.32k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
703
2.32k
      point_t pt3 = pt2;
704
2.32k
      pt3.move_y (env.eval_arg (i+3));
705
2.32k
      i += 4;
706
707
3.96k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
708
1.64k
      {
709
1.64k
  PATH::curve (env, param, pt1, pt2, pt3);
710
1.64k
  pt1 = env.get_pt ();
711
1.64k
  pt1.move_y (env.eval_arg (i));
712
1.64k
  pt2 = pt1;
713
1.64k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
714
1.64k
  pt3 = pt2;
715
1.64k
  pt3.move_x (env.eval_arg (i+3));
716
1.64k
  PATH::curve (env, param, pt1, pt2, pt3);
717
718
1.64k
  pt1 = pt3;
719
1.64k
  pt1.move_x (env.eval_arg (i+4));
720
1.64k
  pt2 = pt1;
721
1.64k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
722
1.64k
  pt3 = pt2;
723
1.64k
  pt3.move_y (env.eval_arg (i+7));
724
1.64k
      }
725
2.32k
      if (i < env.argStack.get_count ())
726
1.10k
  pt3.move_x (env.eval_arg (i));
727
2.32k
      PATH::curve (env, param, pt1, pt2, pt3);
728
2.32k
    }
729
5.13k
    else
730
5.13k
    {
731
7.53k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
732
2.40k
      {
733
2.40k
  pt1 = env.get_pt ();
734
2.40k
  pt1.move_x (env.eval_arg (i));
735
2.40k
  pt2 = pt1;
736
2.40k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
737
2.40k
  pt3 = pt2;
738
2.40k
  pt3.move_y (env.eval_arg (i+3));
739
2.40k
  PATH::curve (env, param, pt1, pt2, pt3);
740
741
2.40k
  pt1 = pt3;
742
2.40k
  pt1.move_y (env.eval_arg (i+4));
743
2.40k
  pt2 = pt1;
744
2.40k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
745
2.40k
  pt3 = pt2;
746
2.40k
  pt3.move_x (env.eval_arg (i+7));
747
2.40k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
748
718
    pt3.move_y (env.eval_arg (i+8));
749
2.40k
  PATH::curve (env, param, pt1, pt2, pt3);
750
2.40k
      }
751
5.13k
    }
752
7.45k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hvcurveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
694
4.49k
  {
695
4.49k
    point_t pt1, pt2, pt3;
696
4.49k
    unsigned int i = 0;
697
4.49k
    if ((env.argStack.get_count () % 8) >= 4)
698
1.38k
    {
699
1.38k
      point_t pt1 = env.get_pt ();
700
1.38k
      pt1.move_x (env.eval_arg (i));
701
1.38k
      point_t pt2 = pt1;
702
1.38k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
703
1.38k
      point_t pt3 = pt2;
704
1.38k
      pt3.move_y (env.eval_arg (i+3));
705
1.38k
      i += 4;
706
707
2.46k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
708
1.07k
      {
709
1.07k
  PATH::curve (env, param, pt1, pt2, pt3);
710
1.07k
  pt1 = env.get_pt ();
711
1.07k
  pt1.move_y (env.eval_arg (i));
712
1.07k
  pt2 = pt1;
713
1.07k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
714
1.07k
  pt3 = pt2;
715
1.07k
  pt3.move_x (env.eval_arg (i+3));
716
1.07k
  PATH::curve (env, param, pt1, pt2, pt3);
717
718
1.07k
  pt1 = pt3;
719
1.07k
  pt1.move_x (env.eval_arg (i+4));
720
1.07k
  pt2 = pt1;
721
1.07k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
722
1.07k
  pt3 = pt2;
723
1.07k
  pt3.move_y (env.eval_arg (i+7));
724
1.07k
      }
725
1.38k
      if (i < env.argStack.get_count ())
726
645
  pt3.move_x (env.eval_arg (i));
727
1.38k
      PATH::curve (env, param, pt1, pt2, pt3);
728
1.38k
    }
729
3.10k
    else
730
3.10k
    {
731
4.64k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
732
1.54k
      {
733
1.54k
  pt1 = env.get_pt ();
734
1.54k
  pt1.move_x (env.eval_arg (i));
735
1.54k
  pt2 = pt1;
736
1.54k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
737
1.54k
  pt3 = pt2;
738
1.54k
  pt3.move_y (env.eval_arg (i+3));
739
1.54k
  PATH::curve (env, param, pt1, pt2, pt3);
740
741
1.54k
  pt1 = pt3;
742
1.54k
  pt1.move_y (env.eval_arg (i+4));
743
1.54k
  pt2 = pt1;
744
1.54k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
745
1.54k
  pt3 = pt2;
746
1.54k
  pt3.move_x (env.eval_arg (i+7));
747
1.54k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
748
451
    pt3.move_y (env.eval_arg (i+8));
749
1.54k
  PATH::curve (env, param, pt1, pt2, pt3);
750
1.54k
      }
751
3.10k
    }
752
4.49k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hvcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
694
6.66k
  {
695
6.66k
    point_t pt1, pt2, pt3;
696
6.66k
    unsigned int i = 0;
697
6.66k
    if ((env.argStack.get_count () % 8) >= 4)
698
1.74k
    {
699
1.74k
      point_t pt1 = env.get_pt ();
700
1.74k
      pt1.move_x (env.eval_arg (i));
701
1.74k
      point_t pt2 = pt1;
702
1.74k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
703
1.74k
      point_t pt3 = pt2;
704
1.74k
      pt3.move_y (env.eval_arg (i+3));
705
1.74k
      i += 4;
706
707
3.44k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
708
1.70k
      {
709
1.70k
  PATH::curve (env, param, pt1, pt2, pt3);
710
1.70k
  pt1 = env.get_pt ();
711
1.70k
  pt1.move_y (env.eval_arg (i));
712
1.70k
  pt2 = pt1;
713
1.70k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
714
1.70k
  pt3 = pt2;
715
1.70k
  pt3.move_x (env.eval_arg (i+3));
716
1.70k
  PATH::curve (env, param, pt1, pt2, pt3);
717
718
1.70k
  pt1 = pt3;
719
1.70k
  pt1.move_x (env.eval_arg (i+4));
720
1.70k
  pt2 = pt1;
721
1.70k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
722
1.70k
  pt3 = pt2;
723
1.70k
  pt3.move_y (env.eval_arg (i+7));
724
1.70k
      }
725
1.74k
      if (i < env.argStack.get_count ())
726
991
  pt3.move_x (env.eval_arg (i));
727
1.74k
      PATH::curve (env, param, pt1, pt2, pt3);
728
1.74k
    }
729
4.92k
    else
730
4.92k
    {
731
8.55k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
732
3.62k
      {
733
3.62k
  pt1 = env.get_pt ();
734
3.62k
  pt1.move_x (env.eval_arg (i));
735
3.62k
  pt2 = pt1;
736
3.62k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
737
3.62k
  pt3 = pt2;
738
3.62k
  pt3.move_y (env.eval_arg (i+3));
739
3.62k
  PATH::curve (env, param, pt1, pt2, pt3);
740
741
3.62k
  pt1 = pt3;
742
3.62k
  pt1.move_y (env.eval_arg (i+4));
743
3.62k
  pt2 = pt1;
744
3.62k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
745
3.62k
  pt3 = pt2;
746
3.62k
  pt3.move_x (env.eval_arg (i+7));
747
3.62k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
748
1.46k
    pt3.move_y (env.eval_arg (i+8));
749
3.62k
  PATH::curve (env, param, pt1, pt2, pt3);
750
3.62k
      }
751
4.92k
    }
752
6.66k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hvcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
694
47.8k
  {
695
47.8k
    point_t pt1, pt2, pt3;
696
47.8k
    unsigned int i = 0;
697
47.8k
    if ((env.argStack.get_count () % 8) >= 4)
698
40.5k
    {
699
40.5k
      point_t pt1 = env.get_pt ();
700
40.5k
      pt1.move_x (env.eval_arg (i));
701
40.5k
      point_t pt2 = pt1;
702
40.5k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
703
40.5k
      point_t pt3 = pt2;
704
40.5k
      pt3.move_y (env.eval_arg (i+3));
705
40.5k
      i += 4;
706
707
44.4k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
708
3.92k
      {
709
3.92k
  PATH::curve (env, param, pt1, pt2, pt3);
710
3.92k
  pt1 = env.get_pt ();
711
3.92k
  pt1.move_y (env.eval_arg (i));
712
3.92k
  pt2 = pt1;
713
3.92k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
714
3.92k
  pt3 = pt2;
715
3.92k
  pt3.move_x (env.eval_arg (i+3));
716
3.92k
  PATH::curve (env, param, pt1, pt2, pt3);
717
718
3.92k
  pt1 = pt3;
719
3.92k
  pt1.move_x (env.eval_arg (i+4));
720
3.92k
  pt2 = pt1;
721
3.92k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
722
3.92k
  pt3 = pt2;
723
3.92k
  pt3.move_y (env.eval_arg (i+7));
724
3.92k
      }
725
40.5k
      if (i < env.argStack.get_count ())
726
37.1k
  pt3.move_x (env.eval_arg (i));
727
40.5k
      PATH::curve (env, param, pt1, pt2, pt3);
728
40.5k
    }
729
7.27k
    else
730
7.27k
    {
731
10.1k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
732
2.91k
      {
733
2.91k
  pt1 = env.get_pt ();
734
2.91k
  pt1.move_x (env.eval_arg (i));
735
2.91k
  pt2 = pt1;
736
2.91k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
737
2.91k
  pt3 = pt2;
738
2.91k
  pt3.move_y (env.eval_arg (i+3));
739
2.91k
  PATH::curve (env, param, pt1, pt2, pt3);
740
741
2.91k
  pt1 = pt3;
742
2.91k
  pt1.move_y (env.eval_arg (i+4));
743
2.91k
  pt2 = pt1;
744
2.91k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
745
2.91k
  pt3 = pt2;
746
2.91k
  pt3.move_x (env.eval_arg (i+7));
747
2.91k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
748
1.09k
    pt3.move_y (env.eval_arg (i+8));
749
2.91k
  PATH::curve (env, param, pt1, pt2, pt3);
750
2.91k
      }
751
7.27k
    }
752
47.8k
  }
753
754
  /* default actions to be overridden */
755
  static void moveto (ENV &env, PARAM& param, const point_t &pt)
756
  { env.moveto (pt); }
757
758
  static void line (ENV &env, PARAM& param, const point_t &pt1)
759
  { PATH::moveto (env, param, pt1); }
760
761
  static void curve (ENV &env, PARAM& param, const point_t &pt1, const point_t &pt2, const point_t &pt3)
762
  { PATH::moveto (env, param, pt3); }
763
764
  static void hflex (ENV &env, PARAM& param)
765
1.20k
  {
766
1.20k
    if (likely (env.argStack.get_count () == 7))
767
789
    {
768
789
      point_t pt1 = env.get_pt ();
769
789
      pt1.move_x (env.eval_arg (0));
770
789
      point_t pt2 = pt1;
771
789
      pt2.move (env.eval_arg (1), env.eval_arg (2));
772
789
      point_t pt3 = pt2;
773
789
      pt3.move_x (env.eval_arg (3));
774
789
      point_t pt4 = pt3;
775
789
      pt4.move_x (env.eval_arg (4));
776
789
      point_t pt5 = pt4;
777
789
      pt5.move_x (env.eval_arg (5));
778
789
      pt5.y = pt1.y;
779
789
      point_t pt6 = pt5;
780
789
      pt6.move_x (env.eval_arg (6));
781
782
789
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
783
789
    }
784
412
    else
785
412
      env.set_error ();
786
1.20k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hflex(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
765
393
  {
766
393
    if (likely (env.argStack.get_count () == 7))
767
346
    {
768
346
      point_t pt1 = env.get_pt ();
769
346
      pt1.move_x (env.eval_arg (0));
770
346
      point_t pt2 = pt1;
771
346
      pt2.move (env.eval_arg (1), env.eval_arg (2));
772
346
      point_t pt3 = pt2;
773
346
      pt3.move_x (env.eval_arg (3));
774
346
      point_t pt4 = pt3;
775
346
      pt4.move_x (env.eval_arg (4));
776
346
      point_t pt5 = pt4;
777
346
      pt5.move_x (env.eval_arg (5));
778
346
      pt5.y = pt1.y;
779
346
      point_t pt6 = pt5;
780
346
      pt6.move_x (env.eval_arg (6));
781
782
346
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
783
346
    }
784
47
    else
785
47
      env.set_error ();
786
393
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hflex(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
765
237
  {
766
237
    if (likely (env.argStack.get_count () == 7))
767
209
    {
768
209
      point_t pt1 = env.get_pt ();
769
209
      pt1.move_x (env.eval_arg (0));
770
209
      point_t pt2 = pt1;
771
209
      pt2.move (env.eval_arg (1), env.eval_arg (2));
772
209
      point_t pt3 = pt2;
773
209
      pt3.move_x (env.eval_arg (3));
774
209
      point_t pt4 = pt3;
775
209
      pt4.move_x (env.eval_arg (4));
776
209
      point_t pt5 = pt4;
777
209
      pt5.move_x (env.eval_arg (5));
778
209
      pt5.y = pt1.y;
779
209
      point_t pt6 = pt5;
780
209
      pt6.move_x (env.eval_arg (6));
781
782
209
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
783
209
    }
784
28
    else
785
28
      env.set_error ();
786
237
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hflex(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
765
166
  {
766
166
    if (likely (env.argStack.get_count () == 7))
767
142
    {
768
142
      point_t pt1 = env.get_pt ();
769
142
      pt1.move_x (env.eval_arg (0));
770
142
      point_t pt2 = pt1;
771
142
      pt2.move (env.eval_arg (1), env.eval_arg (2));
772
142
      point_t pt3 = pt2;
773
142
      pt3.move_x (env.eval_arg (3));
774
142
      point_t pt4 = pt3;
775
142
      pt4.move_x (env.eval_arg (4));
776
142
      point_t pt5 = pt4;
777
142
      pt5.move_x (env.eval_arg (5));
778
142
      pt5.y = pt1.y;
779
142
      point_t pt6 = pt5;
780
142
      pt6.move_x (env.eval_arg (6));
781
782
142
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
783
142
    }
784
24
    else
785
24
      env.set_error ();
786
166
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hflex(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
765
405
  {
766
405
    if (likely (env.argStack.get_count () == 7))
767
92
    {
768
92
      point_t pt1 = env.get_pt ();
769
92
      pt1.move_x (env.eval_arg (0));
770
92
      point_t pt2 = pt1;
771
92
      pt2.move (env.eval_arg (1), env.eval_arg (2));
772
92
      point_t pt3 = pt2;
773
92
      pt3.move_x (env.eval_arg (3));
774
92
      point_t pt4 = pt3;
775
92
      pt4.move_x (env.eval_arg (4));
776
92
      point_t pt5 = pt4;
777
92
      pt5.move_x (env.eval_arg (5));
778
92
      pt5.y = pt1.y;
779
92
      point_t pt6 = pt5;
780
92
      pt6.move_x (env.eval_arg (6));
781
782
92
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
783
92
    }
784
313
    else
785
313
      env.set_error ();
786
405
  }
787
788
  static void flex (ENV &env, PARAM& param)
789
1.47k
  {
790
1.47k
    if (likely (env.argStack.get_count () == 13))
791
970
    {
792
970
      point_t pt1 = env.get_pt ();
793
970
      pt1.move (env.eval_arg (0), env.eval_arg (1));
794
970
      point_t pt2 = pt1;
795
970
      pt2.move (env.eval_arg (2), env.eval_arg (3));
796
970
      point_t pt3 = pt2;
797
970
      pt3.move (env.eval_arg (4), env.eval_arg (5));
798
970
      point_t pt4 = pt3;
799
970
      pt4.move (env.eval_arg (6), env.eval_arg (7));
800
970
      point_t pt5 = pt4;
801
970
      pt5.move (env.eval_arg (8), env.eval_arg (9));
802
970
      point_t pt6 = pt5;
803
970
      pt6.move (env.eval_arg (10), env.eval_arg (11));
804
805
970
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
806
970
    }
807
500
    else
808
500
      env.set_error ();
809
1.47k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::flex(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
789
507
  {
790
507
    if (likely (env.argStack.get_count () == 13))
791
426
    {
792
426
      point_t pt1 = env.get_pt ();
793
426
      pt1.move (env.eval_arg (0), env.eval_arg (1));
794
426
      point_t pt2 = pt1;
795
426
      pt2.move (env.eval_arg (2), env.eval_arg (3));
796
426
      point_t pt3 = pt2;
797
426
      pt3.move (env.eval_arg (4), env.eval_arg (5));
798
426
      point_t pt4 = pt3;
799
426
      pt4.move (env.eval_arg (6), env.eval_arg (7));
800
426
      point_t pt5 = pt4;
801
426
      pt5.move (env.eval_arg (8), env.eval_arg (9));
802
426
      point_t pt6 = pt5;
803
426
      pt6.move (env.eval_arg (10), env.eval_arg (11));
804
805
426
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
806
426
    }
807
81
    else
808
81
      env.set_error ();
809
507
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::flex(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
789
302
  {
790
302
    if (likely (env.argStack.get_count () == 13))
791
253
    {
792
253
      point_t pt1 = env.get_pt ();
793
253
      pt1.move (env.eval_arg (0), env.eval_arg (1));
794
253
      point_t pt2 = pt1;
795
253
      pt2.move (env.eval_arg (2), env.eval_arg (3));
796
253
      point_t pt3 = pt2;
797
253
      pt3.move (env.eval_arg (4), env.eval_arg (5));
798
253
      point_t pt4 = pt3;
799
253
      pt4.move (env.eval_arg (6), env.eval_arg (7));
800
253
      point_t pt5 = pt4;
801
253
      pt5.move (env.eval_arg (8), env.eval_arg (9));
802
253
      point_t pt6 = pt5;
803
253
      pt6.move (env.eval_arg (10), env.eval_arg (11));
804
805
253
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
806
253
    }
807
49
    else
808
49
      env.set_error ();
809
302
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::flex(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
789
114
  {
790
114
    if (likely (env.argStack.get_count () == 13))
791
30
    {
792
30
      point_t pt1 = env.get_pt ();
793
30
      pt1.move (env.eval_arg (0), env.eval_arg (1));
794
30
      point_t pt2 = pt1;
795
30
      pt2.move (env.eval_arg (2), env.eval_arg (3));
796
30
      point_t pt3 = pt2;
797
30
      pt3.move (env.eval_arg (4), env.eval_arg (5));
798
30
      point_t pt4 = pt3;
799
30
      pt4.move (env.eval_arg (6), env.eval_arg (7));
800
30
      point_t pt5 = pt4;
801
30
      pt5.move (env.eval_arg (8), env.eval_arg (9));
802
30
      point_t pt6 = pt5;
803
30
      pt6.move (env.eval_arg (10), env.eval_arg (11));
804
805
30
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
806
30
    }
807
84
    else
808
84
      env.set_error ();
809
114
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::flex(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
789
547
  {
790
547
    if (likely (env.argStack.get_count () == 13))
791
261
    {
792
261
      point_t pt1 = env.get_pt ();
793
261
      pt1.move (env.eval_arg (0), env.eval_arg (1));
794
261
      point_t pt2 = pt1;
795
261
      pt2.move (env.eval_arg (2), env.eval_arg (3));
796
261
      point_t pt3 = pt2;
797
261
      pt3.move (env.eval_arg (4), env.eval_arg (5));
798
261
      point_t pt4 = pt3;
799
261
      pt4.move (env.eval_arg (6), env.eval_arg (7));
800
261
      point_t pt5 = pt4;
801
261
      pt5.move (env.eval_arg (8), env.eval_arg (9));
802
261
      point_t pt6 = pt5;
803
261
      pt6.move (env.eval_arg (10), env.eval_arg (11));
804
805
261
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
806
261
    }
807
286
    else
808
286
      env.set_error ();
809
547
  }
810
811
  static void hflex1 (ENV &env, PARAM& param)
812
1.81k
  {
813
1.81k
    if (likely (env.argStack.get_count () == 9))
814
844
    {
815
844
      point_t pt1 = env.get_pt ();
816
844
      pt1.move (env.eval_arg (0), env.eval_arg (1));
817
844
      point_t pt2 = pt1;
818
844
      pt2.move (env.eval_arg (2), env.eval_arg (3));
819
844
      point_t pt3 = pt2;
820
844
      pt3.move_x (env.eval_arg (4));
821
844
      point_t pt4 = pt3;
822
844
      pt4.move_x (env.eval_arg (5));
823
844
      point_t pt5 = pt4;
824
844
      pt5.move (env.eval_arg (6), env.eval_arg (7));
825
844
      point_t pt6 = pt5;
826
844
      pt6.move_x (env.eval_arg (8));
827
844
      pt6.y = env.get_pt ().y;
828
829
844
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
830
844
    }
831
975
    else
832
975
      env.set_error ();
833
1.81k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hflex1(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
812
671
  {
813
671
    if (likely (env.argStack.get_count () == 9))
814
516
    {
815
516
      point_t pt1 = env.get_pt ();
816
516
      pt1.move (env.eval_arg (0), env.eval_arg (1));
817
516
      point_t pt2 = pt1;
818
516
      pt2.move (env.eval_arg (2), env.eval_arg (3));
819
516
      point_t pt3 = pt2;
820
516
      pt3.move_x (env.eval_arg (4));
821
516
      point_t pt4 = pt3;
822
516
      pt4.move_x (env.eval_arg (5));
823
516
      point_t pt5 = pt4;
824
516
      pt5.move (env.eval_arg (6), env.eval_arg (7));
825
516
      point_t pt6 = pt5;
826
516
      pt6.move_x (env.eval_arg (8));
827
516
      pt6.y = env.get_pt ().y;
828
829
516
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
830
516
    }
831
155
    else
832
155
      env.set_error ();
833
671
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hflex1(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
812
351
  {
813
351
    if (likely (env.argStack.get_count () == 9))
814
264
    {
815
264
      point_t pt1 = env.get_pt ();
816
264
      pt1.move (env.eval_arg (0), env.eval_arg (1));
817
264
      point_t pt2 = pt1;
818
264
      pt2.move (env.eval_arg (2), env.eval_arg (3));
819
264
      point_t pt3 = pt2;
820
264
      pt3.move_x (env.eval_arg (4));
821
264
      point_t pt4 = pt3;
822
264
      pt4.move_x (env.eval_arg (5));
823
264
      point_t pt5 = pt4;
824
264
      pt5.move (env.eval_arg (6), env.eval_arg (7));
825
264
      point_t pt6 = pt5;
826
264
      pt6.move_x (env.eval_arg (8));
827
264
      pt6.y = env.get_pt ().y;
828
829
264
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
830
264
    }
831
87
    else
832
87
      env.set_error ();
833
351
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hflex1(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
812
126
  {
813
126
    if (likely (env.argStack.get_count () == 9))
814
42
    {
815
42
      point_t pt1 = env.get_pt ();
816
42
      pt1.move (env.eval_arg (0), env.eval_arg (1));
817
42
      point_t pt2 = pt1;
818
42
      pt2.move (env.eval_arg (2), env.eval_arg (3));
819
42
      point_t pt3 = pt2;
820
42
      pt3.move_x (env.eval_arg (4));
821
42
      point_t pt4 = pt3;
822
42
      pt4.move_x (env.eval_arg (5));
823
42
      point_t pt5 = pt4;
824
42
      pt5.move (env.eval_arg (6), env.eval_arg (7));
825
42
      point_t pt6 = pt5;
826
42
      pt6.move_x (env.eval_arg (8));
827
42
      pt6.y = env.get_pt ().y;
828
829
42
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
830
42
    }
831
84
    else
832
84
      env.set_error ();
833
126
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hflex1(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
812
671
  {
813
671
    if (likely (env.argStack.get_count () == 9))
814
22
    {
815
22
      point_t pt1 = env.get_pt ();
816
22
      pt1.move (env.eval_arg (0), env.eval_arg (1));
817
22
      point_t pt2 = pt1;
818
22
      pt2.move (env.eval_arg (2), env.eval_arg (3));
819
22
      point_t pt3 = pt2;
820
22
      pt3.move_x (env.eval_arg (4));
821
22
      point_t pt4 = pt3;
822
22
      pt4.move_x (env.eval_arg (5));
823
22
      point_t pt5 = pt4;
824
22
      pt5.move (env.eval_arg (6), env.eval_arg (7));
825
22
      point_t pt6 = pt5;
826
22
      pt6.move_x (env.eval_arg (8));
827
22
      pt6.y = env.get_pt ().y;
828
829
22
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
830
22
    }
831
649
    else
832
649
      env.set_error ();
833
671
  }
834
835
  static void flex1 (ENV &env, PARAM& param)
836
3.48k
  {
837
3.48k
    if (likely (env.argStack.get_count () == 11))
838
2.93k
    {
839
2.93k
      point_t d;
840
17.5k
      for (unsigned int i = 0; i < 10; i += 2)
841
14.6k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
842
843
2.93k
      point_t pt1 = env.get_pt ();
844
2.93k
      pt1.move (env.eval_arg (0), env.eval_arg (1));
845
2.93k
      point_t pt2 = pt1;
846
2.93k
      pt2.move (env.eval_arg (2), env.eval_arg (3));
847
2.93k
      point_t pt3 = pt2;
848
2.93k
      pt3.move (env.eval_arg (4), env.eval_arg (5));
849
2.93k
      point_t pt4 = pt3;
850
2.93k
      pt4.move (env.eval_arg (6), env.eval_arg (7));
851
2.93k
      point_t pt5 = pt4;
852
2.93k
      pt5.move (env.eval_arg (8), env.eval_arg (9));
853
2.93k
      point_t pt6 = pt5;
854
855
2.93k
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
856
1.34k
      {
857
1.34k
  pt6.move_x (env.eval_arg (10));
858
1.34k
  pt6.y = env.get_pt ().y;
859
1.34k
      }
860
1.58k
      else
861
1.58k
      {
862
1.58k
  pt6.x = env.get_pt ().x;
863
1.58k
  pt6.move_y (env.eval_arg (10));
864
1.58k
      }
865
866
2.93k
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
867
2.93k
    }
868
557
    else
869
557
      env.set_error ();
870
3.48k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::flex1(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
836
1.26k
  {
837
1.26k
    if (likely (env.argStack.get_count () == 11))
838
1.13k
    {
839
1.13k
      point_t d;
840
6.82k
      for (unsigned int i = 0; i < 10; i += 2)
841
5.69k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
842
843
1.13k
      point_t pt1 = env.get_pt ();
844
1.13k
      pt1.move (env.eval_arg (0), env.eval_arg (1));
845
1.13k
      point_t pt2 = pt1;
846
1.13k
      pt2.move (env.eval_arg (2), env.eval_arg (3));
847
1.13k
      point_t pt3 = pt2;
848
1.13k
      pt3.move (env.eval_arg (4), env.eval_arg (5));
849
1.13k
      point_t pt4 = pt3;
850
1.13k
      pt4.move (env.eval_arg (6), env.eval_arg (7));
851
1.13k
      point_t pt5 = pt4;
852
1.13k
      pt5.move (env.eval_arg (8), env.eval_arg (9));
853
1.13k
      point_t pt6 = pt5;
854
855
1.13k
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
856
489
      {
857
489
  pt6.move_x (env.eval_arg (10));
858
489
  pt6.y = env.get_pt ().y;
859
489
      }
860
649
      else
861
649
      {
862
649
  pt6.x = env.get_pt ().x;
863
649
  pt6.move_y (env.eval_arg (10));
864
649
      }
865
866
1.13k
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
867
1.13k
    }
868
130
    else
869
130
      env.set_error ();
870
1.26k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::flex1(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
836
732
  {
837
732
    if (likely (env.argStack.get_count () == 11))
838
656
    {
839
656
      point_t d;
840
3.93k
      for (unsigned int i = 0; i < 10; i += 2)
841
3.28k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
842
843
656
      point_t pt1 = env.get_pt ();
844
656
      pt1.move (env.eval_arg (0), env.eval_arg (1));
845
656
      point_t pt2 = pt1;
846
656
      pt2.move (env.eval_arg (2), env.eval_arg (3));
847
656
      point_t pt3 = pt2;
848
656
      pt3.move (env.eval_arg (4), env.eval_arg (5));
849
656
      point_t pt4 = pt3;
850
656
      pt4.move (env.eval_arg (6), env.eval_arg (7));
851
656
      point_t pt5 = pt4;
852
656
      pt5.move (env.eval_arg (8), env.eval_arg (9));
853
656
      point_t pt6 = pt5;
854
855
656
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
856
276
      {
857
276
  pt6.move_x (env.eval_arg (10));
858
276
  pt6.y = env.get_pt ().y;
859
276
      }
860
380
      else
861
380
      {
862
380
  pt6.x = env.get_pt ().x;
863
380
  pt6.move_y (env.eval_arg (10));
864
380
      }
865
866
656
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
867
656
    }
868
76
    else
869
76
      env.set_error ();
870
732
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::flex1(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
836
800
  {
837
800
    if (likely (env.argStack.get_count () == 11))
838
726
    {
839
726
      point_t d;
840
4.35k
      for (unsigned int i = 0; i < 10; i += 2)
841
3.63k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
842
843
726
      point_t pt1 = env.get_pt ();
844
726
      pt1.move (env.eval_arg (0), env.eval_arg (1));
845
726
      point_t pt2 = pt1;
846
726
      pt2.move (env.eval_arg (2), env.eval_arg (3));
847
726
      point_t pt3 = pt2;
848
726
      pt3.move (env.eval_arg (4), env.eval_arg (5));
849
726
      point_t pt4 = pt3;
850
726
      pt4.move (env.eval_arg (6), env.eval_arg (7));
851
726
      point_t pt5 = pt4;
852
726
      pt5.move (env.eval_arg (8), env.eval_arg (9));
853
726
      point_t pt6 = pt5;
854
855
726
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
856
380
      {
857
380
  pt6.move_x (env.eval_arg (10));
858
380
  pt6.y = env.get_pt ().y;
859
380
      }
860
346
      else
861
346
      {
862
346
  pt6.x = env.get_pt ().x;
863
346
  pt6.move_y (env.eval_arg (10));
864
346
      }
865
866
726
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
867
726
    }
868
74
    else
869
74
      env.set_error ();
870
800
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::flex1(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
836
689
  {
837
689
    if (likely (env.argStack.get_count () == 11))
838
412
    {
839
412
      point_t d;
840
2.47k
      for (unsigned int i = 0; i < 10; i += 2)
841
2.06k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
842
843
412
      point_t pt1 = env.get_pt ();
844
412
      pt1.move (env.eval_arg (0), env.eval_arg (1));
845
412
      point_t pt2 = pt1;
846
412
      pt2.move (env.eval_arg (2), env.eval_arg (3));
847
412
      point_t pt3 = pt2;
848
412
      pt3.move (env.eval_arg (4), env.eval_arg (5));
849
412
      point_t pt4 = pt3;
850
412
      pt4.move (env.eval_arg (6), env.eval_arg (7));
851
412
      point_t pt5 = pt4;
852
412
      pt5.move (env.eval_arg (8), env.eval_arg (9));
853
412
      point_t pt6 = pt5;
854
855
412
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
856
203
      {
857
203
  pt6.move_x (env.eval_arg (10));
858
203
  pt6.y = env.get_pt ().y;
859
203
      }
860
209
      else
861
209
      {
862
209
  pt6.x = env.get_pt ().x;
863
209
  pt6.move_y (env.eval_arg (10));
864
209
      }
865
866
412
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
867
412
    }
868
277
    else
869
277
      env.set_error ();
870
689
  }
871
872
  protected:
873
  static void curve2 (ENV &env, PARAM& param,
874
          const point_t &pt1, const point_t &pt2, const point_t &pt3,
875
          const point_t &pt4, const point_t &pt5, const point_t &pt6)
876
5.53k
  {
877
5.53k
    PATH::curve (env, param, pt1, pt2, pt3);
878
5.53k
    PATH::curve (env, param, pt4, pt5, pt6);
879
5.53k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::curve2(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&)
Line
Count
Source
876
2.42k
  {
877
2.42k
    PATH::curve (env, param, pt1, pt2, pt3);
878
2.42k
    PATH::curve (env, param, pt4, pt5, pt6);
879
2.42k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::curve2(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&)
Line
Count
Source
876
1.38k
  {
877
1.38k
    PATH::curve (env, param, pt1, pt2, pt3);
878
1.38k
    PATH::curve (env, param, pt4, pt5, pt6);
879
1.38k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::curve2(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&)
Line
Count
Source
876
940
  {
877
940
    PATH::curve (env, param, pt1, pt2, pt3);
878
940
    PATH::curve (env, param, pt4, pt5, pt6);
879
940
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::curve2(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&)
Line
Count
Source
876
787
  {
877
787
    PATH::curve (env, param, pt1, pt2, pt3);
878
787
    PATH::curve (env, param, pt4, pt5, pt6);
879
787
  }
880
};
881
882
template <typename ENV, typename OPSET, typename PARAM>
883
struct cs_interpreter_t : interpreter_t<ENV>
884
{
885
73.4k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_extents_t, cff1_extents_param_t>::cs_interpreter_t(CFF::cff1_cs_interp_env_t&)
Line
Count
Source
885
10.1k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_path_t, cff1_path_param_t>::cs_interpreter_t(CFF::cff1_cs_interp_env_t&)
Line
Count
Source
885
5.70k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
Unexecuted instantiation: CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_seac_t, get_seac_param_t>::cs_interpreter_t(CFF::cff1_cs_interp_env_t&)
CFF::cs_interpreter_t<CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_cs_opset_extents_t, cff2_extents_param_t>::cs_interpreter_t(CFF::cff2_cs_interp_env_t<CFF::number_t>&)
Line
Count
Source
885
5.52k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
CFF::cs_interpreter_t<CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_cs_opset_path_t, cff2_path_param_t>::cs_interpreter_t(CFF::cff2_cs_interp_env_t<CFF::number_t>&)
Line
Count
Source
885
52.0k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
886
887
  bool interpret (PARAM& param, int64_t *budget = nullptr)
888
73.4k
  {
889
73.4k
    SUPER::env.set_endchar (false);
890
73.4k
    SUPER::env.set_budget (budget);
891
892
    /* Cap the operator count by the caller's remaining budget so the single
893
     * max_ops counter enforces both the structural limit and the live work
894
     * budget, with no budget check in the hot loop.  The consumed operators
895
     * are charged back after the loop, and since the cap never exceeds the
896
     * remaining budget the charstring cannot overshoot it.  CFF2 blend
897
     * charges its proportional work separately, in place. */
898
73.4k
    int64_t remaining = budget ? *budget : (int64_t) HB_CFF_MAX_OPS;
899
73.4k
    unsigned max_ops = (unsigned) hb_clamp (remaining, (int64_t) 0, (int64_t) HB_CFF_MAX_OPS);
900
73.4k
    unsigned start_ops = max_ops;
901
902
73.4k
    bool ret = true;
903
73.4k
    if (likely (max_ops))
904
825M
      for (;;) {
905
825M
  OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
906
825M
  if (unlikely (SUPER::env.in_error () || !--max_ops))
907
56.7k
  {
908
56.7k
    SUPER::env.set_error ();
909
56.7k
    ret = false;
910
56.7k
    break;
911
56.7k
  }
912
825M
  if (SUPER::env.is_endchar ())
913
16.7k
    break;
914
825M
      }
915
0
    else
916
0
    {
917
0
      SUPER::env.set_error ();
918
0
      ret = false;
919
0
    }
920
921
73.4k
    if (budget) *budget -= (int64_t) (start_ops - max_ops);
922
923
73.4k
    return ret;
924
73.4k
  }
CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_extents_t, cff1_extents_param_t>::interpret(cff1_extents_param_t&, long*)
Line
Count
Source
888
10.1k
  {
889
10.1k
    SUPER::env.set_endchar (false);
890
10.1k
    SUPER::env.set_budget (budget);
891
892
    /* Cap the operator count by the caller's remaining budget so the single
893
     * max_ops counter enforces both the structural limit and the live work
894
     * budget, with no budget check in the hot loop.  The consumed operators
895
     * are charged back after the loop, and since the cap never exceeds the
896
     * remaining budget the charstring cannot overshoot it.  CFF2 blend
897
     * charges its proportional work separately, in place. */
898
10.1k
    int64_t remaining = budget ? *budget : (int64_t) HB_CFF_MAX_OPS;
899
10.1k
    unsigned max_ops = (unsigned) hb_clamp (remaining, (int64_t) 0, (int64_t) HB_CFF_MAX_OPS);
900
10.1k
    unsigned start_ops = max_ops;
901
902
10.1k
    bool ret = true;
903
10.1k
    if (likely (max_ops))
904
487M
      for (;;) {
905
487M
  OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
906
487M
  if (unlikely (SUPER::env.in_error () || !--max_ops))
907
8.36k
  {
908
8.36k
    SUPER::env.set_error ();
909
8.36k
    ret = false;
910
8.36k
    break;
911
8.36k
  }
912
487M
  if (SUPER::env.is_endchar ())
913
1.79k
    break;
914
487M
      }
915
0
    else
916
0
    {
917
0
      SUPER::env.set_error ();
918
0
      ret = false;
919
0
    }
920
921
10.1k
    if (budget) *budget -= (int64_t) (start_ops - max_ops);
922
923
10.1k
    return ret;
924
10.1k
  }
CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_path_t, cff1_path_param_t>::interpret(cff1_path_param_t&, long*)
Line
Count
Source
888
5.70k
  {
889
5.70k
    SUPER::env.set_endchar (false);
890
5.70k
    SUPER::env.set_budget (budget);
891
892
    /* Cap the operator count by the caller's remaining budget so the single
893
     * max_ops counter enforces both the structural limit and the live work
894
     * budget, with no budget check in the hot loop.  The consumed operators
895
     * are charged back after the loop, and since the cap never exceeds the
896
     * remaining budget the charstring cannot overshoot it.  CFF2 blend
897
     * charges its proportional work separately, in place. */
898
5.70k
    int64_t remaining = budget ? *budget : (int64_t) HB_CFF_MAX_OPS;
899
5.70k
    unsigned max_ops = (unsigned) hb_clamp (remaining, (int64_t) 0, (int64_t) HB_CFF_MAX_OPS);
900
5.70k
    unsigned start_ops = max_ops;
901
902
5.70k
    bool ret = true;
903
5.70k
    if (likely (max_ops))
904
332M
      for (;;) {
905
332M
  OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
906
332M
  if (unlikely (SUPER::env.in_error () || !--max_ops))
907
5.21k
  {
908
5.21k
    SUPER::env.set_error ();
909
5.21k
    ret = false;
910
5.21k
    break;
911
5.21k
  }
912
332M
  if (SUPER::env.is_endchar ())
913
493
    break;
914
332M
      }
915
0
    else
916
0
    {
917
0
      SUPER::env.set_error ();
918
0
      ret = false;
919
0
    }
920
921
5.70k
    if (budget) *budget -= (int64_t) (start_ops - max_ops);
922
923
5.70k
    return ret;
924
5.70k
  }
Unexecuted instantiation: CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_seac_t, get_seac_param_t>::interpret(get_seac_param_t&, long*)
CFF::cs_interpreter_t<CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_cs_opset_extents_t, cff2_extents_param_t>::interpret(cff2_extents_param_t&, long*)
Line
Count
Source
888
5.52k
  {
889
5.52k
    SUPER::env.set_endchar (false);
890
5.52k
    SUPER::env.set_budget (budget);
891
892
    /* Cap the operator count by the caller's remaining budget so the single
893
     * max_ops counter enforces both the structural limit and the live work
894
     * budget, with no budget check in the hot loop.  The consumed operators
895
     * are charged back after the loop, and since the cap never exceeds the
896
     * remaining budget the charstring cannot overshoot it.  CFF2 blend
897
     * charges its proportional work separately, in place. */
898
5.52k
    int64_t remaining = budget ? *budget : (int64_t) HB_CFF_MAX_OPS;
899
5.52k
    unsigned max_ops = (unsigned) hb_clamp (remaining, (int64_t) 0, (int64_t) HB_CFF_MAX_OPS);
900
5.52k
    unsigned start_ops = max_ops;
901
902
5.52k
    bool ret = true;
903
5.52k
    if (likely (max_ops))
904
1.82M
      for (;;) {
905
1.82M
  OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
906
1.82M
  if (unlikely (SUPER::env.in_error () || !--max_ops))
907
4.50k
  {
908
4.50k
    SUPER::env.set_error ();
909
4.50k
    ret = false;
910
4.50k
    break;
911
4.50k
  }
912
1.81M
  if (SUPER::env.is_endchar ())
913
1.01k
    break;
914
1.81M
      }
915
0
    else
916
0
    {
917
0
      SUPER::env.set_error ();
918
0
      ret = false;
919
0
    }
920
921
5.52k
    if (budget) *budget -= (int64_t) (start_ops - max_ops);
922
923
5.52k
    return ret;
924
5.52k
  }
CFF::cs_interpreter_t<CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_cs_opset_path_t, cff2_path_param_t>::interpret(cff2_path_param_t&, long*)
Line
Count
Source
888
52.0k
  {
889
52.0k
    SUPER::env.set_endchar (false);
890
52.0k
    SUPER::env.set_budget (budget);
891
892
    /* Cap the operator count by the caller's remaining budget so the single
893
     * max_ops counter enforces both the structural limit and the live work
894
     * budget, with no budget check in the hot loop.  The consumed operators
895
     * are charged back after the loop, and since the cap never exceeds the
896
     * remaining budget the charstring cannot overshoot it.  CFF2 blend
897
     * charges its proportional work separately, in place. */
898
52.0k
    int64_t remaining = budget ? *budget : (int64_t) HB_CFF_MAX_OPS;
899
52.0k
    unsigned max_ops = (unsigned) hb_clamp (remaining, (int64_t) 0, (int64_t) HB_CFF_MAX_OPS);
900
52.0k
    unsigned start_ops = max_ops;
901
902
52.0k
    bool ret = true;
903
52.0k
    if (likely (max_ops))
904
4.68M
      for (;;) {
905
4.68M
  OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
906
4.68M
  if (unlikely (SUPER::env.in_error () || !--max_ops))
907
38.6k
  {
908
38.6k
    SUPER::env.set_error ();
909
38.6k
    ret = false;
910
38.6k
    break;
911
38.6k
  }
912
4.64M
  if (SUPER::env.is_endchar ())
913
13.4k
    break;
914
4.64M
      }
915
0
    else
916
0
    {
917
0
      SUPER::env.set_error ();
918
0
      ret = false;
919
0
    }
920
921
52.0k
    if (budget) *budget -= (int64_t) (start_ops - max_ops);
922
923
52.0k
    return ret;
924
52.0k
  }
925
926
  private:
927
  typedef interpreter_t<ENV> SUPER;
928
};
929
930
} /* namespace CFF */
931
932
#endif /* HB_CFF_INTERP_CS_COMMON_HH */