Coverage Report

Created: 2023-06-07 06:27

/src/harfbuzz/src/hb-cff-interp-cs-common.hh
Line
Count
Source (jump to first uncovered line)
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
119k
  {
46
119k
    str_ref = substr_;
47
119k
    type = type_;
48
119k
    subr_num = subr_num_;
49
119k
  }
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
108k
  {
67
108k
    subrs = subrs_;
68
108k
    unsigned int  nSubrs = get_count ();
69
108k
    if (nSubrs < 1240)
70
104k
      bias = 107;
71
3.38k
    else if (nSubrs < 33900)
72
3.29k
      bias = 1131;
73
88
    else
74
88
      bias = 32768;
75
108k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > >::init(CFF::Subrs<OT::IntType<unsigned short, 2u> > const*)
Line
Count
Source
66
54.5k
  {
67
54.5k
    subrs = subrs_;
68
54.5k
    unsigned int  nSubrs = get_count ();
69
54.5k
    if (nSubrs < 1240)
70
51.5k
      bias = 107;
71
3.01k
    else if (nSubrs < 33900)
72
3.00k
      bias = 1131;
73
6
    else
74
6
      bias = 32768;
75
54.5k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > >::init(CFF::Subrs<OT::IntType<unsigned int, 4u> > const*)
Line
Count
Source
66
53.7k
  {
67
53.7k
    subrs = subrs_;
68
53.7k
    unsigned int  nSubrs = get_count ();
69
53.7k
    if (nSubrs < 1240)
70
53.3k
      bias = 107;
71
377
    else if (nSubrs < 33900)
72
295
      bias = 1131;
73
82
    else
74
82
      bias = 32768;
75
53.7k
  }
76
77
108k
  void fini () {}
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > >::fini()
Line
Count
Source
77
54.5k
  void fini () {}
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > >::fini()
Line
Count
Source
77
53.7k
  void fini () {}
78
79
177k
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > >::get_count() const
Line
Count
Source
79
83.1k
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > >::get_count() const
Line
Count
Source
79
94.5k
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
80
69.9k
  unsigned int get_bias () const  { return bias; }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > >::get_bias() const
Line
Count
Source
80
28.6k
  unsigned int get_bias () const  { return bias; }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > >::get_bias() const
Line
Count
Source
80
41.2k
  unsigned int get_bias () const  { return bias; }
81
82
  hb_ubytes_t operator [] (unsigned int index) const
83
65.4k
  {
84
65.4k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
65.4k
    else
87
65.4k
      return (*subrs)[index];
88
65.4k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > >::operator[](unsigned int) const
Line
Count
Source
83
26.3k
  {
84
26.3k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
26.3k
    else
87
26.3k
      return (*subrs)[index];
88
26.3k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > >::operator[](unsigned int) const
Line
Count
Source
83
39.0k
  {
84
39.0k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
39.0k
    else
87
39.0k
      return (*subrs)[index];
88
39.0k
  }
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
274k
  {
99
274k
    x.set_int (_x);
100
274k
    y.set_int (_y);
101
274k
  }
102
103
890k
  void move_x (const number_t &dx) { x += dx; }
104
861k
  void move_y (const number_t &dy) { y += dy; }
105
469k
  void move (const number_t &dx, const number_t &dy) { move_x (dx); move_y (dy); }
106
52.4k
  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
    interp_env_t<ARG> (str)
117
54.1k
  {
118
54.1k
    context.init (str, CSType_CharString);
119
54.1k
    seen_moveto = true;
120
54.1k
    seen_hintmask = false;
121
54.1k
    hstem_count = 0;
122
54.1k
    vstem_count = 0;
123
54.1k
    hintmask_size = 0;
124
54.1k
    pt.set_int (0, 0);
125
54.1k
    globalSubrs.init (globalSubrs_);
126
54.1k
    localSubrs.init (localSubrs_);
127
54.1k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::cs_interp_env_t(hb_array_t<unsigned char const> const&, CFF::Subrs<OT::IntType<unsigned short, 2u> > const*, CFF::Subrs<OT::IntType<unsigned short, 2u> > const*)
Line
Count
Source
117
27.2k
  {
118
27.2k
    context.init (str, CSType_CharString);
119
27.2k
    seen_moveto = true;
120
27.2k
    seen_hintmask = false;
121
27.2k
    hstem_count = 0;
122
27.2k
    vstem_count = 0;
123
27.2k
    hintmask_size = 0;
124
27.2k
    pt.set_int (0, 0);
125
27.2k
    globalSubrs.init (globalSubrs_);
126
27.2k
    localSubrs.init (localSubrs_);
127
27.2k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::cs_interp_env_t(hb_array_t<unsigned char const> const&, CFF::Subrs<OT::IntType<unsigned int, 4u> > const*, CFF::Subrs<OT::IntType<unsigned int, 4u> > const*)
Line
Count
Source
117
26.8k
  {
118
26.8k
    context.init (str, CSType_CharString);
119
26.8k
    seen_moveto = true;
120
26.8k
    seen_hintmask = false;
121
26.8k
    hstem_count = 0;
122
26.8k
    vstem_count = 0;
123
26.8k
    hintmask_size = 0;
124
26.8k
    pt.set_int (0, 0);
125
26.8k
    globalSubrs.init (globalSubrs_);
126
26.8k
    localSubrs.init (localSubrs_);
127
26.8k
  }
128
  ~cs_interp_env_t ()
129
54.1k
  {
130
54.1k
    globalSubrs.fini ();
131
54.1k
    localSubrs.fini ();
132
54.1k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::~cs_interp_env_t()
Line
Count
Source
129
27.2k
  {
130
27.2k
    globalSubrs.fini ();
131
27.2k
    localSubrs.fini ();
132
27.2k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::~cs_interp_env_t()
Line
Count
Source
129
26.8k
  {
130
26.8k
    globalSubrs.fini ();
131
26.8k
    localSubrs.fini ();
132
26.8k
  }
133
134
  bool in_error () const
135
3.42M
  {
136
3.42M
    return callStack.in_error () || SUPER::in_error ();
137
3.42M
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::in_error() const
Line
Count
Source
135
1.83M
  {
136
1.83M
    return callStack.in_error () || SUPER::in_error ();
137
1.83M
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::in_error() const
Line
Count
Source
135
1.58M
  {
136
1.58M
    return callStack.in_error () || SUPER::in_error ();
137
1.58M
  }
138
139
  bool pop_subr_num (const biased_subrs_t<SUBRS>& biasedSubrs, unsigned int &subr_num)
140
69.9k
  {
141
69.9k
    subr_num = 0;
142
69.9k
    int n = SUPER::argStack.pop_int ();
143
69.9k
    n += biasedSubrs.get_bias ();
144
69.9k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
145
2.46k
      return false;
146
147
67.4k
    subr_num = (unsigned int)n;
148
67.4k
    return true;
149
69.9k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::pop_subr_num(CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > > const&, unsigned int&)
Line
Count
Source
140
28.6k
  {
141
28.6k
    subr_num = 0;
142
28.6k
    int n = SUPER::argStack.pop_int ();
143
28.6k
    n += biasedSubrs.get_bias ();
144
28.6k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
145
492
      return false;
146
147
28.2k
    subr_num = (unsigned int)n;
148
28.2k
    return true;
149
28.6k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::pop_subr_num(CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > > const&, unsigned int&)
Line
Count
Source
140
41.2k
  {
141
41.2k
    subr_num = 0;
142
41.2k
    int n = SUPER::argStack.pop_int ();
143
41.2k
    n += biasedSubrs.get_bias ();
144
41.2k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
145
1.97k
      return false;
146
147
39.2k
    subr_num = (unsigned int)n;
148
39.2k
    return true;
149
41.2k
  }
150
151
  void call_subr (const biased_subrs_t<SUBRS>& biasedSubrs, cs_type_t type)
152
69.9k
  {
153
69.9k
    unsigned int subr_num = 0;
154
155
69.9k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
156
69.9k
     || callStack.get_count () >= kMaxCallLimit))
157
4.52k
    {
158
4.52k
      SUPER::set_error ();
159
4.52k
      return;
160
4.52k
    }
161
65.4k
    context.str_ref = SUPER::str_ref;
162
65.4k
    callStack.push (context);
163
164
65.4k
    context.init ( biasedSubrs[subr_num], type, subr_num);
165
65.4k
    SUPER::str_ref = context.str_ref;
166
65.4k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::call_subr(CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > > const&, CFF::cs_type_t)
Line
Count
Source
152
28.6k
  {
153
28.6k
    unsigned int subr_num = 0;
154
155
28.6k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
156
28.6k
     || callStack.get_count () >= kMaxCallLimit))
157
2.30k
    {
158
2.30k
      SUPER::set_error ();
159
2.30k
      return;
160
2.30k
    }
161
26.3k
    context.str_ref = SUPER::str_ref;
162
26.3k
    callStack.push (context);
163
164
26.3k
    context.init ( biasedSubrs[subr_num], type, subr_num);
165
26.3k
    SUPER::str_ref = context.str_ref;
166
26.3k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::call_subr(CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > > const&, CFF::cs_type_t)
Line
Count
Source
152
41.2k
  {
153
41.2k
    unsigned int subr_num = 0;
154
155
41.2k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
156
41.2k
     || callStack.get_count () >= kMaxCallLimit))
157
2.21k
    {
158
2.21k
      SUPER::set_error ();
159
2.21k
      return;
160
2.21k
    }
161
39.0k
    context.str_ref = SUPER::str_ref;
162
39.0k
    callStack.push (context);
163
164
39.0k
    context.init ( biasedSubrs[subr_num], type, subr_num);
165
39.0k
    SUPER::str_ref = context.str_ref;
166
39.0k
  }
167
168
  void return_from_subr ()
169
36.6k
  {
170
36.6k
    if (unlikely (SUPER::str_ref.in_error ()))
171
0
      SUPER::set_error ();
172
36.6k
    context = callStack.pop ();
173
36.6k
    SUPER::str_ref = context.str_ref;
174
36.6k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::return_from_subr()
Line
Count
Source
169
1.82k
  {
170
1.82k
    if (unlikely (SUPER::str_ref.in_error ()))
171
0
      SUPER::set_error ();
172
1.82k
    context = callStack.pop ();
173
1.82k
    SUPER::str_ref = context.str_ref;
174
1.82k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::return_from_subr()
Line
Count
Source
169
34.8k
  {
170
34.8k
    if (unlikely (SUPER::str_ref.in_error ()))
171
0
      SUPER::set_error ();
172
34.8k
    context = callStack.pop ();
173
34.8k
    SUPER::str_ref = context.str_ref;
174
34.8k
  }
175
176
  void determine_hintmask_size ()
177
15.8k
  {
178
15.8k
    if (!seen_hintmask)
179
5.08k
    {
180
5.08k
      vstem_count += SUPER::argStack.get_count() / 2;
181
5.08k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
182
5.08k
      seen_hintmask = true;
183
5.08k
    }
184
15.8k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::determine_hintmask_size()
Line
Count
Source
177
5.24k
  {
178
5.24k
    if (!seen_hintmask)
179
2.36k
    {
180
2.36k
      vstem_count += SUPER::argStack.get_count() / 2;
181
2.36k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
182
2.36k
      seen_hintmask = true;
183
2.36k
    }
184
5.24k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::determine_hintmask_size()
Line
Count
Source
177
10.5k
  {
178
10.5k
    if (!seen_hintmask)
179
2.72k
    {
180
2.72k
      vstem_count += SUPER::argStack.get_count() / 2;
181
2.72k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
182
2.72k
      seen_hintmask = true;
183
2.72k
    }
184
10.5k
  }
185
186
72.7k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::set_endchar(bool)
Line
Count
Source
186
35.2k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::set_endchar(bool)
Line
Count
Source
186
37.4k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
187
3.38M
  bool is_endchar () const { return endchar_flag; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::is_endchar() const
Line
Count
Source
187
1.81M
  bool is_endchar () const { return endchar_flag; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::is_endchar() const
Line
Count
Source
187
1.56M
  bool is_endchar () const { return endchar_flag; }
188
189
  const number_t &get_x () const { return pt.x; }
190
  const number_t &get_y () const { return pt.y; }
191
862k
  const point_t &get_pt () const { return pt; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::get_pt() const
Line
Count
Source
191
519k
  const point_t &get_pt () const { return pt; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::get_pt() const
Line
Count
Source
191
342k
  const point_t &get_pt () const { return pt; }
192
193
690k
  void moveto (const point_t &pt_ ) { pt = pt_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::moveto(CFF::point_t const&)
Line
Count
Source
193
408k
  void moveto (const point_t &pt_ ) { pt = pt_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::moveto(CFF::point_t const&)
Line
Count
Source
193
281k
  void moveto (const point_t &pt_ ) { pt = pt_; }
194
195
  public:
196
  call_context_t   context;
197
  bool    endchar_flag;
198
  bool    seen_moveto;
199
  bool    seen_hintmask;
200
201
  unsigned int  hstem_count;
202
  unsigned int  vstem_count;
203
  unsigned int  hintmask_size;
204
  call_stack_t  callStack;
205
  biased_subrs_t<SUBRS>   globalSubrs;
206
  biased_subrs_t<SUBRS>   localSubrs;
207
208
  private:
209
  point_t  pt;
210
211
  typedef interp_env_t<ARG> SUPER;
212
};
213
214
template <typename ENV, typename PARAM>
215
struct path_procs_null_t
216
{
217
0
  static void rmoveto (ENV &env, PARAM& param) {}
218
0
  static void hmoveto (ENV &env, PARAM& param) {}
219
0
  static void vmoveto (ENV &env, PARAM& param) {}
220
0
  static void rlineto (ENV &env, PARAM& param) {}
221
0
  static void hlineto (ENV &env, PARAM& param) {}
222
0
  static void vlineto (ENV &env, PARAM& param) {}
223
0
  static void rrcurveto (ENV &env, PARAM& param) {}
224
0
  static void rcurveline (ENV &env, PARAM& param) {}
225
0
  static void rlinecurve (ENV &env, PARAM& param) {}
226
0
  static void vvcurveto (ENV &env, PARAM& param) {}
227
0
  static void hhcurveto (ENV &env, PARAM& param) {}
228
0
  static void vhcurveto (ENV &env, PARAM& param) {}
229
0
  static void hvcurveto (ENV &env, PARAM& param) {}
230
  static void moveto (ENV &env, PARAM& param, const point_t &pt) {}
231
  static void line (ENV &env, PARAM& param, const point_t &pt1) {}
232
  static void curve (ENV &env, PARAM& param, const point_t &pt1, const point_t &pt2, const point_t &pt3) {}
233
0
  static void hflex (ENV &env, PARAM& param) {}
234
0
  static void flex (ENV &env, PARAM& param) {}
235
0
  static void hflex1 (ENV &env, PARAM& param) {}
236
0
  static void flex1 (ENV &env, PARAM& param) {}
237
};
238
239
template <typename ARG, typename OPSET, typename ENV, typename PARAM, typename PATH=path_procs_null_t<ENV, PARAM>>
240
struct cs_opset_t : opset_t<ARG>
241
{
242
  static void process_op (op_code_t op, ENV &env, PARAM& param)
243
3.40M
  {
244
3.40M
    switch (op) {
245
246
36.6k
      case OpCode_return:
247
36.6k
  env.return_from_subr ();
248
36.6k
  break;
249
10.5k
      case OpCode_endchar:
250
10.5k
  OPSET::check_width (op, env, param);
251
10.5k
  env.set_endchar (true);
252
10.5k
  OPSET::flush_args_and_op (op, env, param);
253
10.5k
  break;
254
255
129k
      case OpCode_fixedcs:
256
129k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
129k
  break;
258
259
29.8k
      case OpCode_callsubr:
260
29.8k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
29.8k
  break;
262
263
40.0k
      case OpCode_callgsubr:
264
40.0k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
40.0k
  break;
266
267
17.9k
      case OpCode_hstem:
268
31.3k
      case OpCode_hstemhm:
269
31.3k
  OPSET::check_width (op, env, param);
270
31.3k
  OPSET::process_hstem (op, env, param);
271
31.3k
  break;
272
6.60k
      case OpCode_vstem:
273
16.2k
      case OpCode_vstemhm:
274
16.2k
  OPSET::check_width (op, env, param);
275
16.2k
  OPSET::process_vstem (op, env, param);
276
16.2k
  break;
277
8.45k
      case OpCode_hintmask:
278
15.8k
      case OpCode_cntrmask:
279
15.8k
  OPSET::check_width (op, env, param);
280
15.8k
  OPSET::process_hintmask (op, env, param);
281
15.8k
  break;
282
42.9k
      case OpCode_rmoveto:
283
42.9k
  OPSET::check_width (op, env, param);
284
42.9k
  PATH::rmoveto (env, param);
285
42.9k
  OPSET::process_post_move (op, env, param);
286
42.9k
  break;
287
20.3k
      case OpCode_hmoveto:
288
20.3k
  OPSET::check_width (op, env, param);
289
20.3k
  PATH::hmoveto (env, param);
290
20.3k
  OPSET::process_post_move (op, env, param);
291
20.3k
  break;
292
26.0k
      case OpCode_vmoveto:
293
26.0k
  OPSET::check_width (op, env, param);
294
26.0k
  PATH::vmoveto (env, param);
295
26.0k
  OPSET::process_post_move (op, env, param);
296
26.0k
  break;
297
23.9k
      case OpCode_rlineto:
298
23.9k
  PATH::rlineto (env, param);
299
23.9k
  process_post_path (op, env, param);
300
23.9k
  break;
301
69.6k
      case OpCode_hlineto:
302
69.6k
  PATH::hlineto (env, param);
303
69.6k
  process_post_path (op, env, param);
304
69.6k
  break;
305
37.8k
      case OpCode_vlineto:
306
37.8k
  PATH::vlineto (env, param);
307
37.8k
  process_post_path (op, env, param);
308
37.8k
  break;
309
27.6k
      case OpCode_rrcurveto:
310
27.6k
  PATH::rrcurveto (env, param);
311
27.6k
  process_post_path (op, env, param);
312
27.6k
  break;
313
27.3k
      case OpCode_rcurveline:
314
27.3k
  PATH::rcurveline (env, param);
315
27.3k
  process_post_path (op, env, param);
316
27.3k
  break;
317
22.7k
      case OpCode_rlinecurve:
318
22.7k
  PATH::rlinecurve (env, param);
319
22.7k
  process_post_path (op, env, param);
320
22.7k
  break;
321
17.2k
      case OpCode_vvcurveto:
322
17.2k
  PATH::vvcurveto (env, param);
323
17.2k
  process_post_path (op, env, param);
324
17.2k
  break;
325
28.5k
      case OpCode_hhcurveto:
326
28.5k
  PATH::hhcurveto (env, param);
327
28.5k
  process_post_path (op, env, param);
328
28.5k
  break;
329
23.3k
      case OpCode_vhcurveto:
330
23.3k
  PATH::vhcurveto (env, param);
331
23.3k
  process_post_path (op, env, param);
332
23.3k
  break;
333
35.2k
      case OpCode_hvcurveto:
334
35.2k
  PATH::hvcurveto (env, param);
335
35.2k
  process_post_path (op, env, param);
336
35.2k
  break;
337
338
1.04k
      case OpCode_hflex:
339
1.04k
  PATH::hflex (env, param);
340
1.04k
  OPSET::process_post_flex (op, env, param);
341
1.04k
  break;
342
343
740
      case OpCode_flex:
344
740
  PATH::flex (env, param);
345
740
  OPSET::process_post_flex (op, env, param);
346
740
  break;
347
348
1.31k
      case OpCode_hflex1:
349
1.31k
  PATH::hflex1 (env, param);
350
1.31k
  OPSET::process_post_flex (op, env, param);
351
1.31k
  break;
352
353
2.22k
      case OpCode_flex1:
354
2.22k
  PATH::flex1 (env, param);
355
2.22k
  OPSET::process_post_flex (op, env, param);
356
2.22k
  break;
357
358
2.68M
      default:
359
2.68M
  SUPER::process_op (op, env);
360
2.68M
  break;
361
3.40M
    }
362
3.40M
  }
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
243
913k
  {
244
913k
    switch (op) {
245
246
913
      case OpCode_return:
247
913
  env.return_from_subr ();
248
913
  break;
249
0
      case OpCode_endchar:
250
0
  OPSET::check_width (op, env, param);
251
0
  env.set_endchar (true);
252
0
  OPSET::flush_args_and_op (op, env, param);
253
0
  break;
254
255
35.3k
      case OpCode_fixedcs:
256
35.3k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
35.3k
  break;
258
259
3.93k
      case OpCode_callsubr:
260
3.93k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
3.93k
  break;
262
263
10.4k
      case OpCode_callgsubr:
264
10.4k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
10.4k
  break;
266
267
6.55k
      case OpCode_hstem:
268
7.98k
      case OpCode_hstemhm:
269
7.98k
  OPSET::check_width (op, env, param);
270
7.98k
  OPSET::process_hstem (op, env, param);
271
7.98k
  break;
272
2.47k
      case OpCode_vstem:
273
4.89k
      case OpCode_vstemhm:
274
4.89k
  OPSET::check_width (op, env, param);
275
4.89k
  OPSET::process_vstem (op, env, param);
276
4.89k
  break;
277
1.07k
      case OpCode_hintmask:
278
2.61k
      case OpCode_cntrmask:
279
2.61k
  OPSET::check_width (op, env, param);
280
2.61k
  OPSET::process_hintmask (op, env, param);
281
2.61k
  break;
282
11.4k
      case OpCode_rmoveto:
283
11.4k
  OPSET::check_width (op, env, param);
284
11.4k
  PATH::rmoveto (env, param);
285
11.4k
  OPSET::process_post_move (op, env, param);
286
11.4k
  break;
287
7.56k
      case OpCode_hmoveto:
288
7.56k
  OPSET::check_width (op, env, param);
289
7.56k
  PATH::hmoveto (env, param);
290
7.56k
  OPSET::process_post_move (op, env, param);
291
7.56k
  break;
292
6.59k
      case OpCode_vmoveto:
293
6.59k
  OPSET::check_width (op, env, param);
294
6.59k
  PATH::vmoveto (env, param);
295
6.59k
  OPSET::process_post_move (op, env, param);
296
6.59k
  break;
297
6.48k
      case OpCode_rlineto:
298
6.48k
  PATH::rlineto (env, param);
299
6.48k
  process_post_path (op, env, param);
300
6.48k
  break;
301
24.5k
      case OpCode_hlineto:
302
24.5k
  PATH::hlineto (env, param);
303
24.5k
  process_post_path (op, env, param);
304
24.5k
  break;
305
12.8k
      case OpCode_vlineto:
306
12.8k
  PATH::vlineto (env, param);
307
12.8k
  process_post_path (op, env, param);
308
12.8k
  break;
309
8.34k
      case OpCode_rrcurveto:
310
8.34k
  PATH::rrcurveto (env, param);
311
8.34k
  process_post_path (op, env, param);
312
8.34k
  break;
313
6.59k
      case OpCode_rcurveline:
314
6.59k
  PATH::rcurveline (env, param);
315
6.59k
  process_post_path (op, env, param);
316
6.59k
  break;
317
4.55k
      case OpCode_rlinecurve:
318
4.55k
  PATH::rlinecurve (env, param);
319
4.55k
  process_post_path (op, env, param);
320
4.55k
  break;
321
3.88k
      case OpCode_vvcurveto:
322
3.88k
  PATH::vvcurveto (env, param);
323
3.88k
  process_post_path (op, env, param);
324
3.88k
  break;
325
5.77k
      case OpCode_hhcurveto:
326
5.77k
  PATH::hhcurveto (env, param);
327
5.77k
  process_post_path (op, env, param);
328
5.77k
  break;
329
5.48k
      case OpCode_vhcurveto:
330
5.48k
  PATH::vhcurveto (env, param);
331
5.48k
  process_post_path (op, env, param);
332
5.48k
  break;
333
10.3k
      case OpCode_hvcurveto:
334
10.3k
  PATH::hvcurveto (env, param);
335
10.3k
  process_post_path (op, env, param);
336
10.3k
  break;
337
338
133
      case OpCode_hflex:
339
133
  PATH::hflex (env, param);
340
133
  OPSET::process_post_flex (op, env, param);
341
133
  break;
342
343
124
      case OpCode_flex:
344
124
  PATH::flex (env, param);
345
124
  OPSET::process_post_flex (op, env, param);
346
124
  break;
347
348
232
      case OpCode_hflex1:
349
232
  PATH::hflex1 (env, param);
350
232
  OPSET::process_post_flex (op, env, param);
351
232
  break;
352
353
511
      case OpCode_flex1:
354
511
  PATH::flex1 (env, param);
355
511
  OPSET::process_post_flex (op, env, param);
356
511
  break;
357
358
732k
      default:
359
732k
  SUPER::process_op (op, env);
360
732k
  break;
361
913k
    }
362
913k
  }
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
243
914k
  {
244
914k
    switch (op) {
245
246
914
      case OpCode_return:
247
914
  env.return_from_subr ();
248
914
  break;
249
0
      case OpCode_endchar:
250
0
  OPSET::check_width (op, env, param);
251
0
  env.set_endchar (true);
252
0
  OPSET::flush_args_and_op (op, env, param);
253
0
  break;
254
255
35.3k
      case OpCode_fixedcs:
256
35.3k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
35.3k
  break;
258
259
3.94k
      case OpCode_callsubr:
260
3.94k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
3.94k
  break;
262
263
10.4k
      case OpCode_callgsubr:
264
10.4k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
10.4k
  break;
266
267
6.55k
      case OpCode_hstem:
268
7.99k
      case OpCode_hstemhm:
269
7.99k
  OPSET::check_width (op, env, param);
270
7.99k
  OPSET::process_hstem (op, env, param);
271
7.99k
  break;
272
2.47k
      case OpCode_vstem:
273
4.89k
      case OpCode_vstemhm:
274
4.89k
  OPSET::check_width (op, env, param);
275
4.89k
  OPSET::process_vstem (op, env, param);
276
4.89k
  break;
277
1.07k
      case OpCode_hintmask:
278
2.63k
      case OpCode_cntrmask:
279
2.63k
  OPSET::check_width (op, env, param);
280
2.63k
  OPSET::process_hintmask (op, env, param);
281
2.63k
  break;
282
11.4k
      case OpCode_rmoveto:
283
11.4k
  OPSET::check_width (op, env, param);
284
11.4k
  PATH::rmoveto (env, param);
285
11.4k
  OPSET::process_post_move (op, env, param);
286
11.4k
  break;
287
7.56k
      case OpCode_hmoveto:
288
7.56k
  OPSET::check_width (op, env, param);
289
7.56k
  PATH::hmoveto (env, param);
290
7.56k
  OPSET::process_post_move (op, env, param);
291
7.56k
  break;
292
6.59k
      case OpCode_vmoveto:
293
6.59k
  OPSET::check_width (op, env, param);
294
6.59k
  PATH::vmoveto (env, param);
295
6.59k
  OPSET::process_post_move (op, env, param);
296
6.59k
  break;
297
6.48k
      case OpCode_rlineto:
298
6.48k
  PATH::rlineto (env, param);
299
6.48k
  process_post_path (op, env, param);
300
6.48k
  break;
301
24.6k
      case OpCode_hlineto:
302
24.6k
  PATH::hlineto (env, param);
303
24.6k
  process_post_path (op, env, param);
304
24.6k
  break;
305
12.8k
      case OpCode_vlineto:
306
12.8k
  PATH::vlineto (env, param);
307
12.8k
  process_post_path (op, env, param);
308
12.8k
  break;
309
8.34k
      case OpCode_rrcurveto:
310
8.34k
  PATH::rrcurveto (env, param);
311
8.34k
  process_post_path (op, env, param);
312
8.34k
  break;
313
6.59k
      case OpCode_rcurveline:
314
6.59k
  PATH::rcurveline (env, param);
315
6.59k
  process_post_path (op, env, param);
316
6.59k
  break;
317
4.55k
      case OpCode_rlinecurve:
318
4.55k
  PATH::rlinecurve (env, param);
319
4.55k
  process_post_path (op, env, param);
320
4.55k
  break;
321
3.88k
      case OpCode_vvcurveto:
322
3.88k
  PATH::vvcurveto (env, param);
323
3.88k
  process_post_path (op, env, param);
324
3.88k
  break;
325
5.79k
      case OpCode_hhcurveto:
326
5.79k
  PATH::hhcurveto (env, param);
327
5.79k
  process_post_path (op, env, param);
328
5.79k
  break;
329
5.48k
      case OpCode_vhcurveto:
330
5.48k
  PATH::vhcurveto (env, param);
331
5.48k
  process_post_path (op, env, param);
332
5.48k
  break;
333
10.3k
      case OpCode_hvcurveto:
334
10.3k
  PATH::hvcurveto (env, param);
335
10.3k
  process_post_path (op, env, param);
336
10.3k
  break;
337
338
133
      case OpCode_hflex:
339
133
  PATH::hflex (env, param);
340
133
  OPSET::process_post_flex (op, env, param);
341
133
  break;
342
343
124
      case OpCode_flex:
344
124
  PATH::flex (env, param);
345
124
  OPSET::process_post_flex (op, env, param);
346
124
  break;
347
348
232
      case OpCode_hflex1:
349
232
  PATH::hflex1 (env, param);
350
232
  OPSET::process_post_flex (op, env, param);
351
232
  break;
352
353
511
      case OpCode_flex1:
354
511
  PATH::flex1 (env, param);
355
511
  OPSET::process_post_flex (op, env, param);
356
511
  break;
357
358
732k
      default:
359
732k
  SUPER::process_op (op, env);
360
732k
  break;
361
914k
    }
362
914k
  }
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
243
459k
  {
244
459k
    switch (op) {
245
246
8.99k
      case OpCode_return:
247
8.99k
  env.return_from_subr ();
248
8.99k
  break;
249
4.05k
      case OpCode_endchar:
250
4.05k
  OPSET::check_width (op, env, param);
251
4.05k
  env.set_endchar (true);
252
4.05k
  OPSET::flush_args_and_op (op, env, param);
253
4.05k
  break;
254
255
26.5k
      case OpCode_fixedcs:
256
26.5k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
26.5k
  break;
258
259
1.34k
      case OpCode_callsubr:
260
1.34k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
1.34k
  break;
262
263
9.27k
      case OpCode_callgsubr:
264
9.27k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
9.27k
  break;
266
267
2.21k
      case OpCode_hstem:
268
2.96k
      case OpCode_hstemhm:
269
2.96k
  OPSET::check_width (op, env, param);
270
2.96k
  OPSET::process_hstem (op, env, param);
271
2.96k
  break;
272
725
      case OpCode_vstem:
273
3.13k
      case OpCode_vstemhm:
274
3.13k
  OPSET::check_width (op, env, param);
275
3.13k
  OPSET::process_vstem (op, env, param);
276
3.13k
  break;
277
1.51k
      case OpCode_hintmask:
278
3.43k
      case OpCode_cntrmask:
279
3.43k
  OPSET::check_width (op, env, param);
280
3.43k
  OPSET::process_hintmask (op, env, param);
281
3.43k
  break;
282
6.03k
      case OpCode_rmoveto:
283
6.03k
  OPSET::check_width (op, env, param);
284
6.03k
  PATH::rmoveto (env, param);
285
6.03k
  OPSET::process_post_move (op, env, param);
286
6.03k
  break;
287
2.41k
      case OpCode_hmoveto:
288
2.41k
  OPSET::check_width (op, env, param);
289
2.41k
  PATH::hmoveto (env, param);
290
2.41k
  OPSET::process_post_move (op, env, param);
291
2.41k
  break;
292
5.72k
      case OpCode_vmoveto:
293
5.72k
  OPSET::check_width (op, env, param);
294
5.72k
  PATH::vmoveto (env, param);
295
5.72k
  OPSET::process_post_move (op, env, param);
296
5.72k
  break;
297
4.27k
      case OpCode_rlineto:
298
4.27k
  PATH::rlineto (env, param);
299
4.27k
  process_post_path (op, env, param);
300
4.27k
  break;
301
8.10k
      case OpCode_hlineto:
302
8.10k
  PATH::hlineto (env, param);
303
8.10k
  process_post_path (op, env, param);
304
8.10k
  break;
305
5.08k
      case OpCode_vlineto:
306
5.08k
  PATH::vlineto (env, param);
307
5.08k
  process_post_path (op, env, param);
308
5.08k
  break;
309
3.37k
      case OpCode_rrcurveto:
310
3.37k
  PATH::rrcurveto (env, param);
311
3.37k
  process_post_path (op, env, param);
312
3.37k
  break;
313
2.80k
      case OpCode_rcurveline:
314
2.80k
  PATH::rcurveline (env, param);
315
2.80k
  process_post_path (op, env, param);
316
2.80k
  break;
317
3.44k
      case OpCode_rlinecurve:
318
3.44k
  PATH::rlinecurve (env, param);
319
3.44k
  process_post_path (op, env, param);
320
3.44k
  break;
321
3.01k
      case OpCode_vvcurveto:
322
3.01k
  PATH::vvcurveto (env, param);
323
3.01k
  process_post_path (op, env, param);
324
3.01k
  break;
325
2.70k
      case OpCode_hhcurveto:
326
2.70k
  PATH::hhcurveto (env, param);
327
2.70k
  process_post_path (op, env, param);
328
2.70k
  break;
329
3.07k
      case OpCode_vhcurveto:
330
3.07k
  PATH::vhcurveto (env, param);
331
3.07k
  process_post_path (op, env, param);
332
3.07k
  break;
333
3.84k
      case OpCode_hvcurveto:
334
3.84k
  PATH::hvcurveto (env, param);
335
3.84k
  process_post_path (op, env, param);
336
3.84k
  break;
337
338
268
      case OpCode_hflex:
339
268
  PATH::hflex (env, param);
340
268
  OPSET::process_post_flex (op, env, param);
341
268
  break;
342
343
61
      case OpCode_flex:
344
61
  PATH::flex (env, param);
345
61
  OPSET::process_post_flex (op, env, param);
346
61
  break;
347
348
279
      case OpCode_hflex1:
349
279
  PATH::hflex1 (env, param);
350
279
  OPSET::process_post_flex (op, env, param);
351
279
  break;
352
353
193
      case OpCode_flex1:
354
193
  PATH::flex1 (env, param);
355
193
  OPSET::process_post_flex (op, env, param);
356
193
  break;
357
358
345k
      default:
359
345k
  SUPER::process_op (op, env);
360
345k
  break;
361
459k
    }
362
459k
  }
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
243
1.11M
  {
244
1.11M
    switch (op) {
245
246
25.8k
      case OpCode_return:
247
25.8k
  env.return_from_subr ();
248
25.8k
  break;
249
6.48k
      case OpCode_endchar:
250
6.48k
  OPSET::check_width (op, env, param);
251
6.48k
  env.set_endchar (true);
252
6.48k
  OPSET::flush_args_and_op (op, env, param);
253
6.48k
  break;
254
255
32.4k
      case OpCode_fixedcs:
256
32.4k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
32.4k
  break;
258
259
20.6k
      case OpCode_callsubr:
260
20.6k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
20.6k
  break;
262
263
10.0k
      case OpCode_callgsubr:
264
10.0k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
10.0k
  break;
266
267
2.64k
      case OpCode_hstem:
268
12.4k
      case OpCode_hstemhm:
269
12.4k
  OPSET::check_width (op, env, param);
270
12.4k
  OPSET::process_hstem (op, env, param);
271
12.4k
  break;
272
934
      case OpCode_vstem:
273
3.35k
      case OpCode_vstemhm:
274
3.35k
  OPSET::check_width (op, env, param);
275
3.35k
  OPSET::process_vstem (op, env, param);
276
3.35k
  break;
277
4.79k
      case OpCode_hintmask:
278
7.14k
      case OpCode_cntrmask:
279
7.14k
  OPSET::check_width (op, env, param);
280
7.14k
  OPSET::process_hintmask (op, env, param);
281
7.14k
  break;
282
14.0k
      case OpCode_rmoveto:
283
14.0k
  OPSET::check_width (op, env, param);
284
14.0k
  PATH::rmoveto (env, param);
285
14.0k
  OPSET::process_post_move (op, env, param);
286
14.0k
  break;
287
2.82k
      case OpCode_hmoveto:
288
2.82k
  OPSET::check_width (op, env, param);
289
2.82k
  PATH::hmoveto (env, param);
290
2.82k
  OPSET::process_post_move (op, env, param);
291
2.82k
  break;
292
7.15k
      case OpCode_vmoveto:
293
7.15k
  OPSET::check_width (op, env, param);
294
7.15k
  PATH::vmoveto (env, param);
295
7.15k
  OPSET::process_post_move (op, env, param);
296
7.15k
  break;
297
6.73k
      case OpCode_rlineto:
298
6.73k
  PATH::rlineto (env, param);
299
6.73k
  process_post_path (op, env, param);
300
6.73k
  break;
301
12.3k
      case OpCode_hlineto:
302
12.3k
  PATH::hlineto (env, param);
303
12.3k
  process_post_path (op, env, param);
304
12.3k
  break;
305
7.12k
      case OpCode_vlineto:
306
7.12k
  PATH::vlineto (env, param);
307
7.12k
  process_post_path (op, env, param);
308
7.12k
  break;
309
7.55k
      case OpCode_rrcurveto:
310
7.55k
  PATH::rrcurveto (env, param);
311
7.55k
  process_post_path (op, env, param);
312
7.55k
  break;
313
11.4k
      case OpCode_rcurveline:
314
11.4k
  PATH::rcurveline (env, param);
315
11.4k
  process_post_path (op, env, param);
316
11.4k
  break;
317
10.2k
      case OpCode_rlinecurve:
318
10.2k
  PATH::rlinecurve (env, param);
319
10.2k
  process_post_path (op, env, param);
320
10.2k
  break;
321
6.45k
      case OpCode_vvcurveto:
322
6.45k
  PATH::vvcurveto (env, param);
323
6.45k
  process_post_path (op, env, param);
324
6.45k
  break;
325
14.2k
      case OpCode_hhcurveto:
326
14.2k
  PATH::hhcurveto (env, param);
327
14.2k
  process_post_path (op, env, param);
328
14.2k
  break;
329
9.26k
      case OpCode_vhcurveto:
330
9.26k
  PATH::vhcurveto (env, param);
331
9.26k
  process_post_path (op, env, param);
332
9.26k
  break;
333
10.6k
      case OpCode_hvcurveto:
334
10.6k
  PATH::hvcurveto (env, param);
335
10.6k
  process_post_path (op, env, param);
336
10.6k
  break;
337
338
512
      case OpCode_hflex:
339
512
  PATH::hflex (env, param);
340
512
  OPSET::process_post_flex (op, env, param);
341
512
  break;
342
343
431
      case OpCode_flex:
344
431
  PATH::flex (env, param);
345
431
  OPSET::process_post_flex (op, env, param);
346
431
  break;
347
348
567
      case OpCode_hflex1:
349
567
  PATH::hflex1 (env, param);
350
567
  OPSET::process_post_flex (op, env, param);
351
567
  break;
352
353
1.00k
      case OpCode_flex1:
354
1.00k
  PATH::flex1 (env, param);
355
1.00k
  OPSET::process_post_flex (op, env, param);
356
1.00k
  break;
357
358
875k
      default:
359
875k
  SUPER::process_op (op, env);
360
875k
  break;
361
1.11M
    }
362
1.11M
  }
363
364
  static void process_hstem (op_code_t op, ENV &env, PARAM& param)
365
31.3k
  {
366
31.3k
    env.hstem_count += env.argStack.get_count () / 2;
367
31.3k
    OPSET::flush_args_and_op (op, env, param);
368
31.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_hstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
365
7.98k
  {
366
7.98k
    env.hstem_count += env.argStack.get_count () / 2;
367
7.98k
    OPSET::flush_args_and_op (op, env, param);
368
7.98k
  }
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
365
7.99k
  {
366
7.99k
    env.hstem_count += env.argStack.get_count () / 2;
367
7.99k
    OPSET::flush_args_and_op (op, env, param);
368
7.99k
  }
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
365
2.96k
  {
366
2.96k
    env.hstem_count += env.argStack.get_count () / 2;
367
2.96k
    OPSET::flush_args_and_op (op, env, param);
368
2.96k
  }
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
365
12.4k
  {
366
12.4k
    env.hstem_count += env.argStack.get_count () / 2;
367
12.4k
    OPSET::flush_args_and_op (op, env, param);
368
12.4k
  }
369
370
  static void process_vstem (op_code_t op, ENV &env, PARAM& param)
371
16.2k
  {
372
16.2k
    env.vstem_count += env.argStack.get_count () / 2;
373
16.2k
    OPSET::flush_args_and_op (op, env, param);
374
16.2k
  }
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
371
4.89k
  {
372
4.89k
    env.vstem_count += env.argStack.get_count () / 2;
373
4.89k
    OPSET::flush_args_and_op (op, env, param);
374
4.89k
  }
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
371
4.89k
  {
372
4.89k
    env.vstem_count += env.argStack.get_count () / 2;
373
4.89k
    OPSET::flush_args_and_op (op, env, param);
374
4.89k
  }
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
371
3.13k
  {
372
3.13k
    env.vstem_count += env.argStack.get_count () / 2;
373
3.13k
    OPSET::flush_args_and_op (op, env, param);
374
3.13k
  }
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
371
3.35k
  {
372
3.35k
    env.vstem_count += env.argStack.get_count () / 2;
373
3.35k
    OPSET::flush_args_and_op (op, env, param);
374
3.35k
  }
375
376
  static void process_hintmask (op_code_t op, ENV &env, PARAM& param)
377
15.8k
  {
378
15.8k
    env.determine_hintmask_size ();
379
15.8k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
15.0k
    {
381
15.0k
      OPSET::flush_hintmask (op, env, param);
382
15.0k
      env.str_ref.inc (env.hintmask_size);
383
15.0k
    }
384
15.8k
  }
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
377
2.61k
  {
378
2.61k
    env.determine_hintmask_size ();
379
2.61k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
2.53k
    {
381
2.53k
      OPSET::flush_hintmask (op, env, param);
382
2.53k
      env.str_ref.inc (env.hintmask_size);
383
2.53k
    }
384
2.61k
  }
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
377
2.63k
  {
378
2.63k
    env.determine_hintmask_size ();
379
2.63k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
2.54k
    {
381
2.54k
      OPSET::flush_hintmask (op, env, param);
382
2.54k
      env.str_ref.inc (env.hintmask_size);
383
2.54k
    }
384
2.63k
  }
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
377
3.43k
  {
378
3.43k
    env.determine_hintmask_size ();
379
3.43k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
3.14k
    {
381
3.14k
      OPSET::flush_hintmask (op, env, param);
382
3.14k
      env.str_ref.inc (env.hintmask_size);
383
3.14k
    }
384
3.43k
  }
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
377
7.14k
  {
378
7.14k
    env.determine_hintmask_size ();
379
7.14k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
6.85k
    {
381
6.85k
      OPSET::flush_hintmask (op, env, param);
382
6.85k
      env.str_ref.inc (env.hintmask_size);
383
6.85k
    }
384
7.14k
  }
385
386
  static void process_post_flex (op_code_t op, ENV &env, PARAM& param)
387
5.31k
  {
388
5.31k
    OPSET::flush_args_and_op (op, env, param);
389
5.31k
  }
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
387
1.00k
  {
388
1.00k
    OPSET::flush_args_and_op (op, env, param);
389
1.00k
  }
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
387
1.00k
  {
388
1.00k
    OPSET::flush_args_and_op (op, env, param);
389
1.00k
  }
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
387
801
  {
388
801
    OPSET::flush_args_and_op (op, env, param);
389
801
  }
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
387
2.51k
  {
388
2.51k
    OPSET::flush_args_and_op (op, env, param);
389
2.51k
  }
390
391
  static void check_width (op_code_t op, ENV &env, PARAM& param)
392
81.2k
  {}
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
392
27.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>::check_width(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
392
53.4k
  {}
393
394
  static void process_post_move (op_code_t op, ENV &env, PARAM& param)
395
89.4k
  {
396
89.4k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
89.4k
    OPSET::flush_args_and_op (op, env, param);
402
89.4k
  }
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
395
25.5k
  {
396
25.5k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
25.5k
    OPSET::flush_args_and_op (op, env, param);
402
25.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
395
25.5k
  {
396
25.5k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
25.5k
    OPSET::flush_args_and_op (op, env, param);
402
25.5k
  }
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
395
14.1k
  {
396
14.1k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
14.1k
    OPSET::flush_args_and_op (op, env, param);
402
14.1k
  }
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
395
24.0k
  {
396
24.0k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
24.0k
    OPSET::flush_args_and_op (op, env, param);
402
24.0k
  }
403
404
  static void process_post_path (op_code_t op, ENV &env, PARAM& param)
405
313k
  {
406
313k
    OPSET::flush_args_and_op (op, env, param);
407
313k
  }
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
405
88.8k
  {
406
88.8k
    OPSET::flush_args_and_op (op, env, param);
407
88.8k
  }
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
405
89.0k
  {
406
89.0k
    OPSET::flush_args_and_op (op, env, param);
407
89.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> >::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
405
39.7k
  {
406
39.7k
    OPSET::flush_args_and_op (op, env, param);
407
39.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_post_path(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
405
95.9k
  {
406
95.9k
    OPSET::flush_args_and_op (op, env, param);
407
95.9k
  }
408
409
  static void flush_args_and_op (op_code_t op, ENV &env, PARAM& param)
410
490k
  {
411
490k
    OPSET::flush_args (env, param);
412
490k
    OPSET::flush_op (op, env, param);
413
490k
  }
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
410
135k
  {
411
135k
    OPSET::flush_args (env, param);
412
135k
    OPSET::flush_op (op, env, param);
413
135k
  }
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
410
135k
  {
411
135k
    OPSET::flush_args (env, param);
412
135k
    OPSET::flush_op (op, env, param);
413
135k
  }
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
410
67.9k
  {
411
67.9k
    OPSET::flush_args (env, param);
412
67.9k
    OPSET::flush_op (op, env, param);
413
67.9k
  }
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
410
151k
  {
411
151k
    OPSET::flush_args (env, param);
412
151k
    OPSET::flush_op (op, env, param);
413
151k
  }
414
415
  static void flush_args (ENV &env, PARAM& param)
416
490k
  {
417
490k
    env.pop_n_args (env.argStack.get_count ());
418
490k
  }
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
416
135k
  {
417
135k
    env.pop_n_args (env.argStack.get_count ());
418
135k
  }
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
416
135k
  {
417
135k
    env.pop_n_args (env.argStack.get_count ());
418
135k
  }
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
416
67.9k
  {
417
67.9k
    env.pop_n_args (env.argStack.get_count ());
418
67.9k
  }
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
416
151k
  {
417
151k
    env.pop_n_args (env.argStack.get_count ());
418
151k
  }
419
420
  static void flush_op (op_code_t op, ENV &env, PARAM& param)
421
490k
  {
422
490k
  }
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
421
135k
  {
422
135k
  }
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
421
135k
  {
422
135k
  }
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
421
67.9k
  {
422
67.9k
  }
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
421
151k
  {
422
151k
  }
423
424
  static void flush_hintmask (op_code_t op, ENV &env, PARAM& param)
425
15.0k
  {
426
15.0k
    OPSET::flush_args_and_op (op, env, param);
427
15.0k
  }
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
425
2.53k
  {
426
2.53k
    OPSET::flush_args_and_op (op, env, param);
427
2.53k
  }
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
425
2.54k
  {
426
2.54k
    OPSET::flush_args_and_op (op, env, param);
427
2.54k
  }
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
425
3.14k
  {
426
3.14k
    OPSET::flush_args_and_op (op, env, param);
427
3.14k
  }
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
425
6.85k
  {
426
6.85k
    OPSET::flush_args_and_op (op, env, param);
427
6.85k
  }
428
429
  static bool is_number_op (op_code_t op)
430
  {
431
    switch (op)
432
    {
433
      case OpCode_shortint:
434
      case OpCode_fixedcs:
435
      case OpCode_TwoBytePosInt0: case OpCode_TwoBytePosInt1:
436
      case OpCode_TwoBytePosInt2: case OpCode_TwoBytePosInt3:
437
      case OpCode_TwoByteNegInt0: case OpCode_TwoByteNegInt1:
438
      case OpCode_TwoByteNegInt2: case OpCode_TwoByteNegInt3:
439
  return true;
440
441
      default:
442
  /* 1-byte integer */
443
  return (OpCode_OneByteIntFirst <= op) && (op <= OpCode_OneByteIntLast);
444
    }
445
  }
446
447
  protected:
448
  typedef opset_t<ARG>  SUPER;
449
};
450
451
template <typename PATH, typename ENV, typename PARAM>
452
struct path_procs_t
453
{
454
  static void rmoveto (ENV &env, PARAM& param)
455
42.9k
  {
456
42.9k
    point_t pt1 = env.get_pt ();
457
42.9k
    const number_t &dy = env.pop_arg ();
458
42.9k
    const number_t &dx = env.pop_arg ();
459
42.9k
    pt1.move (dx, dy);
460
42.9k
    PATH::moveto (env, param, pt1);
461
42.9k
  }
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
455
11.4k
  {
456
11.4k
    point_t pt1 = env.get_pt ();
457
11.4k
    const number_t &dy = env.pop_arg ();
458
11.4k
    const number_t &dx = env.pop_arg ();
459
11.4k
    pt1.move (dx, dy);
460
11.4k
    PATH::moveto (env, param, pt1);
461
11.4k
  }
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
455
11.4k
  {
456
11.4k
    point_t pt1 = env.get_pt ();
457
11.4k
    const number_t &dy = env.pop_arg ();
458
11.4k
    const number_t &dx = env.pop_arg ();
459
11.4k
    pt1.move (dx, dy);
460
11.4k
    PATH::moveto (env, param, pt1);
461
11.4k
  }
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
455
6.03k
  {
456
6.03k
    point_t pt1 = env.get_pt ();
457
6.03k
    const number_t &dy = env.pop_arg ();
458
6.03k
    const number_t &dx = env.pop_arg ();
459
6.03k
    pt1.move (dx, dy);
460
6.03k
    PATH::moveto (env, param, pt1);
461
6.03k
  }
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
455
14.0k
  {
456
14.0k
    point_t pt1 = env.get_pt ();
457
14.0k
    const number_t &dy = env.pop_arg ();
458
14.0k
    const number_t &dx = env.pop_arg ();
459
14.0k
    pt1.move (dx, dy);
460
14.0k
    PATH::moveto (env, param, pt1);
461
14.0k
  }
462
463
  static void hmoveto (ENV &env, PARAM& param)
464
20.3k
  {
465
20.3k
    point_t pt1 = env.get_pt ();
466
20.3k
    pt1.move_x (env.pop_arg ());
467
20.3k
    PATH::moveto (env, param, pt1);
468
20.3k
  }
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
464
7.56k
  {
465
7.56k
    point_t pt1 = env.get_pt ();
466
7.56k
    pt1.move_x (env.pop_arg ());
467
7.56k
    PATH::moveto (env, param, pt1);
468
7.56k
  }
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
464
7.56k
  {
465
7.56k
    point_t pt1 = env.get_pt ();
466
7.56k
    pt1.move_x (env.pop_arg ());
467
7.56k
    PATH::moveto (env, param, pt1);
468
7.56k
  }
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
464
2.41k
  {
465
2.41k
    point_t pt1 = env.get_pt ();
466
2.41k
    pt1.move_x (env.pop_arg ());
467
2.41k
    PATH::moveto (env, param, pt1);
468
2.41k
  }
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
464
2.82k
  {
465
2.82k
    point_t pt1 = env.get_pt ();
466
2.82k
    pt1.move_x (env.pop_arg ());
467
2.82k
    PATH::moveto (env, param, pt1);
468
2.82k
  }
469
470
  static void vmoveto (ENV &env, PARAM& param)
471
26.0k
  {
472
26.0k
    point_t pt1 = env.get_pt ();
473
26.0k
    pt1.move_y (env.pop_arg ());
474
26.0k
    PATH::moveto (env, param, pt1);
475
26.0k
  }
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
471
6.59k
  {
472
6.59k
    point_t pt1 = env.get_pt ();
473
6.59k
    pt1.move_y (env.pop_arg ());
474
6.59k
    PATH::moveto (env, param, pt1);
475
6.59k
  }
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
471
6.59k
  {
472
6.59k
    point_t pt1 = env.get_pt ();
473
6.59k
    pt1.move_y (env.pop_arg ());
474
6.59k
    PATH::moveto (env, param, pt1);
475
6.59k
  }
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
471
5.72k
  {
472
5.72k
    point_t pt1 = env.get_pt ();
473
5.72k
    pt1.move_y (env.pop_arg ());
474
5.72k
    PATH::moveto (env, param, pt1);
475
5.72k
  }
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
471
7.15k
  {
472
7.15k
    point_t pt1 = env.get_pt ();
473
7.15k
    pt1.move_y (env.pop_arg ());
474
7.15k
    PATH::moveto (env, param, pt1);
475
7.15k
  }
476
477
  static void rlineto (ENV &env, PARAM& param)
478
23.9k
  {
479
58.9k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
34.9k
    {
481
34.9k
      point_t pt1 = env.get_pt ();
482
34.9k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
34.9k
      PATH::line (env, param, pt1);
484
34.9k
    }
485
23.9k
  }
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
478
6.48k
  {
479
16.5k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
10.0k
    {
481
10.0k
      point_t pt1 = env.get_pt ();
482
10.0k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
10.0k
      PATH::line (env, param, pt1);
484
10.0k
    }
485
6.48k
  }
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
478
6.48k
  {
479
16.5k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
10.0k
    {
481
10.0k
      point_t pt1 = env.get_pt ();
482
10.0k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
10.0k
      PATH::line (env, param, pt1);
484
10.0k
    }
485
6.48k
  }
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
478
4.27k
  {
479
10.2k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
5.96k
    {
481
5.96k
      point_t pt1 = env.get_pt ();
482
5.96k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
5.96k
      PATH::line (env, param, pt1);
484
5.96k
    }
485
4.27k
  }
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
478
6.73k
  {
479
15.5k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
8.81k
    {
481
8.81k
      point_t pt1 = env.get_pt ();
482
8.81k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
8.81k
      PATH::line (env, param, pt1);
484
8.81k
    }
485
6.73k
  }
486
487
  static void hlineto (ENV &env, PARAM& param)
488
69.6k
  {
489
69.6k
    point_t pt1;
490
69.6k
    unsigned int i = 0;
491
145k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
75.9k
    {
493
75.9k
      pt1 = env.get_pt ();
494
75.9k
      pt1.move_x (env.eval_arg (i));
495
75.9k
      PATH::line (env, param, pt1);
496
75.9k
      pt1.move_y (env.eval_arg (i+1));
497
75.9k
      PATH::line (env, param, pt1);
498
75.9k
    }
499
69.6k
    if (i < env.argStack.get_count ())
500
27.8k
    {
501
27.8k
      pt1 = env.get_pt ();
502
27.8k
      pt1.move_x (env.eval_arg (i));
503
27.8k
      PATH::line (env, param, pt1);
504
27.8k
    }
505
69.6k
  }
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
488
24.5k
  {
489
24.5k
    point_t pt1;
490
24.5k
    unsigned int i = 0;
491
49.8k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
25.2k
    {
493
25.2k
      pt1 = env.get_pt ();
494
25.2k
      pt1.move_x (env.eval_arg (i));
495
25.2k
      PATH::line (env, param, pt1);
496
25.2k
      pt1.move_y (env.eval_arg (i+1));
497
25.2k
      PATH::line (env, param, pt1);
498
25.2k
    }
499
24.5k
    if (i < env.argStack.get_count ())
500
8.38k
    {
501
8.38k
      pt1 = env.get_pt ();
502
8.38k
      pt1.move_x (env.eval_arg (i));
503
8.38k
      PATH::line (env, param, pt1);
504
8.38k
    }
505
24.5k
  }
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
488
24.6k
  {
489
24.6k
    point_t pt1;
490
24.6k
    unsigned int i = 0;
491
49.8k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
25.2k
    {
493
25.2k
      pt1 = env.get_pt ();
494
25.2k
      pt1.move_x (env.eval_arg (i));
495
25.2k
      PATH::line (env, param, pt1);
496
25.2k
      pt1.move_y (env.eval_arg (i+1));
497
25.2k
      PATH::line (env, param, pt1);
498
25.2k
    }
499
24.6k
    if (i < env.argStack.get_count ())
500
8.38k
    {
501
8.38k
      pt1 = env.get_pt ();
502
8.38k
      pt1.move_x (env.eval_arg (i));
503
8.38k
      PATH::line (env, param, pt1);
504
8.38k
    }
505
24.6k
  }
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
488
8.10k
  {
489
8.10k
    point_t pt1;
490
8.10k
    unsigned int i = 0;
491
16.7k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
8.62k
    {
493
8.62k
      pt1 = env.get_pt ();
494
8.62k
      pt1.move_x (env.eval_arg (i));
495
8.62k
      PATH::line (env, param, pt1);
496
8.62k
      pt1.move_y (env.eval_arg (i+1));
497
8.62k
      PATH::line (env, param, pt1);
498
8.62k
    }
499
8.10k
    if (i < env.argStack.get_count ())
500
4.65k
    {
501
4.65k
      pt1 = env.get_pt ();
502
4.65k
      pt1.move_x (env.eval_arg (i));
503
4.65k
      PATH::line (env, param, pt1);
504
4.65k
    }
505
8.10k
  }
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
488
12.3k
  {
489
12.3k
    point_t pt1;
490
12.3k
    unsigned int i = 0;
491
29.2k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
16.8k
    {
493
16.8k
      pt1 = env.get_pt ();
494
16.8k
      pt1.move_x (env.eval_arg (i));
495
16.8k
      PATH::line (env, param, pt1);
496
16.8k
      pt1.move_y (env.eval_arg (i+1));
497
16.8k
      PATH::line (env, param, pt1);
498
16.8k
    }
499
12.3k
    if (i < env.argStack.get_count ())
500
6.43k
    {
501
6.43k
      pt1 = env.get_pt ();
502
6.43k
      pt1.move_x (env.eval_arg (i));
503
6.43k
      PATH::line (env, param, pt1);
504
6.43k
    }
505
12.3k
  }
506
507
  static void vlineto (ENV &env, PARAM& param)
508
37.8k
  {
509
37.8k
    point_t pt1;
510
37.8k
    unsigned int i = 0;
511
85.0k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
47.1k
    {
513
47.1k
      pt1 = env.get_pt ();
514
47.1k
      pt1.move_y (env.eval_arg (i));
515
47.1k
      PATH::line (env, param, pt1);
516
47.1k
      pt1.move_x (env.eval_arg (i+1));
517
47.1k
      PATH::line (env, param, pt1);
518
47.1k
    }
519
37.8k
    if (i < env.argStack.get_count ())
520
17.5k
    {
521
17.5k
      pt1 = env.get_pt ();
522
17.5k
      pt1.move_y (env.eval_arg (i));
523
17.5k
      PATH::line (env, param, pt1);
524
17.5k
    }
525
37.8k
  }
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
508
12.8k
  {
509
12.8k
    point_t pt1;
510
12.8k
    unsigned int i = 0;
511
28.8k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
15.9k
    {
513
15.9k
      pt1 = env.get_pt ();
514
15.9k
      pt1.move_y (env.eval_arg (i));
515
15.9k
      PATH::line (env, param, pt1);
516
15.9k
      pt1.move_x (env.eval_arg (i+1));
517
15.9k
      PATH::line (env, param, pt1);
518
15.9k
    }
519
12.8k
    if (i < env.argStack.get_count ())
520
5.85k
    {
521
5.85k
      pt1 = env.get_pt ();
522
5.85k
      pt1.move_y (env.eval_arg (i));
523
5.85k
      PATH::line (env, param, pt1);
524
5.85k
    }
525
12.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
508
12.8k
  {
509
12.8k
    point_t pt1;
510
12.8k
    unsigned int i = 0;
511
28.8k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
15.9k
    {
513
15.9k
      pt1 = env.get_pt ();
514
15.9k
      pt1.move_y (env.eval_arg (i));
515
15.9k
      PATH::line (env, param, pt1);
516
15.9k
      pt1.move_x (env.eval_arg (i+1));
517
15.9k
      PATH::line (env, param, pt1);
518
15.9k
    }
519
12.8k
    if (i < env.argStack.get_count ())
520
5.86k
    {
521
5.86k
      pt1 = env.get_pt ();
522
5.86k
      pt1.move_y (env.eval_arg (i));
523
5.86k
      PATH::line (env, param, pt1);
524
5.86k
    }
525
12.8k
  }
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
508
5.08k
  {
509
5.08k
    point_t pt1;
510
5.08k
    unsigned int i = 0;
511
10.7k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
5.67k
    {
513
5.67k
      pt1 = env.get_pt ();
514
5.67k
      pt1.move_y (env.eval_arg (i));
515
5.67k
      PATH::line (env, param, pt1);
516
5.67k
      pt1.move_x (env.eval_arg (i+1));
517
5.67k
      PATH::line (env, param, pt1);
518
5.67k
    }
519
5.08k
    if (i < env.argStack.get_count ())
520
2.62k
    {
521
2.62k
      pt1 = env.get_pt ();
522
2.62k
      pt1.move_y (env.eval_arg (i));
523
2.62k
      PATH::line (env, param, pt1);
524
2.62k
    }
525
5.08k
  }
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
508
7.12k
  {
509
7.12k
    point_t pt1;
510
7.12k
    unsigned int i = 0;
511
16.6k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
9.50k
    {
513
9.50k
      pt1 = env.get_pt ();
514
9.50k
      pt1.move_y (env.eval_arg (i));
515
9.50k
      PATH::line (env, param, pt1);
516
9.50k
      pt1.move_x (env.eval_arg (i+1));
517
9.50k
      PATH::line (env, param, pt1);
518
9.50k
    }
519
7.12k
    if (i < env.argStack.get_count ())
520
3.20k
    {
521
3.20k
      pt1 = env.get_pt ();
522
3.20k
      pt1.move_y (env.eval_arg (i));
523
3.20k
      PATH::line (env, param, pt1);
524
3.20k
    }
525
7.12k
  }
526
527
  static void rrcurveto (ENV &env, PARAM& param)
528
27.6k
  {
529
50.6k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
23.0k
    {
531
23.0k
      point_t pt1 = env.get_pt ();
532
23.0k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
23.0k
      point_t pt2 = pt1;
534
23.0k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
23.0k
      point_t pt3 = pt2;
536
23.0k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
23.0k
      PATH::curve (env, param, pt1, pt2, pt3);
538
23.0k
    }
539
27.6k
  }
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
528
8.34k
  {
529
14.8k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
6.47k
    {
531
6.47k
      point_t pt1 = env.get_pt ();
532
6.47k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
6.47k
      point_t pt2 = pt1;
534
6.47k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
6.47k
      point_t pt3 = pt2;
536
6.47k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
6.47k
      PATH::curve (env, param, pt1, pt2, pt3);
538
6.47k
    }
539
8.34k
  }
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
528
8.34k
  {
529
14.8k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
6.47k
    {
531
6.47k
      point_t pt1 = env.get_pt ();
532
6.47k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
6.47k
      point_t pt2 = pt1;
534
6.47k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
6.47k
      point_t pt3 = pt2;
536
6.47k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
6.47k
      PATH::curve (env, param, pt1, pt2, pt3);
538
6.47k
    }
539
8.34k
  }
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
528
3.37k
  {
529
5.50k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
2.13k
    {
531
2.13k
      point_t pt1 = env.get_pt ();
532
2.13k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
2.13k
      point_t pt2 = pt1;
534
2.13k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
2.13k
      point_t pt3 = pt2;
536
2.13k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
2.13k
      PATH::curve (env, param, pt1, pt2, pt3);
538
2.13k
    }
539
3.37k
  }
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
528
7.55k
  {
529
15.5k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
7.96k
    {
531
7.96k
      point_t pt1 = env.get_pt ();
532
7.96k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
7.96k
      point_t pt2 = pt1;
534
7.96k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
7.96k
      point_t pt3 = pt2;
536
7.96k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
7.96k
      PATH::curve (env, param, pt1, pt2, pt3);
538
7.96k
    }
539
7.55k
  }
540
541
  static void rcurveline (ENV &env, PARAM& param)
542
27.3k
  {
543
27.3k
    unsigned int arg_count = env.argStack.get_count ();
544
27.3k
    if (unlikely (arg_count < 8))
545
16.4k
      return;
546
547
10.9k
    unsigned int i = 0;
548
10.9k
    unsigned int curve_limit = arg_count - 2;
549
26.0k
    for (; i + 6 <= curve_limit; i += 6)
550
15.1k
    {
551
15.1k
      point_t pt1 = env.get_pt ();
552
15.1k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
15.1k
      point_t pt2 = pt1;
554
15.1k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
15.1k
      point_t pt3 = pt2;
556
15.1k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
15.1k
      PATH::curve (env, param, pt1, pt2, pt3);
558
15.1k
    }
559
560
10.9k
    point_t pt1 = env.get_pt ();
561
10.9k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
10.9k
    PATH::line (env, param, pt1);
563
10.9k
  }
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
542
6.59k
  {
543
6.59k
    unsigned int arg_count = env.argStack.get_count ();
544
6.59k
    if (unlikely (arg_count < 8))
545
5.07k
      return;
546
547
1.51k
    unsigned int i = 0;
548
1.51k
    unsigned int curve_limit = arg_count - 2;
549
4.08k
    for (; i + 6 <= curve_limit; i += 6)
550
2.56k
    {
551
2.56k
      point_t pt1 = env.get_pt ();
552
2.56k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
2.56k
      point_t pt2 = pt1;
554
2.56k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
2.56k
      point_t pt3 = pt2;
556
2.56k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
2.56k
      PATH::curve (env, param, pt1, pt2, pt3);
558
2.56k
    }
559
560
1.51k
    point_t pt1 = env.get_pt ();
561
1.51k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
1.51k
    PATH::line (env, param, pt1);
563
1.51k
  }
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
542
6.59k
  {
543
6.59k
    unsigned int arg_count = env.argStack.get_count ();
544
6.59k
    if (unlikely (arg_count < 8))
545
5.07k
      return;
546
547
1.51k
    unsigned int i = 0;
548
1.51k
    unsigned int curve_limit = arg_count - 2;
549
4.08k
    for (; i + 6 <= curve_limit; i += 6)
550
2.56k
    {
551
2.56k
      point_t pt1 = env.get_pt ();
552
2.56k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
2.56k
      point_t pt2 = pt1;
554
2.56k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
2.56k
      point_t pt3 = pt2;
556
2.56k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
2.56k
      PATH::curve (env, param, pt1, pt2, pt3);
558
2.56k
    }
559
560
1.51k
    point_t pt1 = env.get_pt ();
561
1.51k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
1.51k
    PATH::line (env, param, pt1);
563
1.51k
  }
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
542
2.80k
  {
543
2.80k
    unsigned int arg_count = env.argStack.get_count ();
544
2.80k
    if (unlikely (arg_count < 8))
545
1.91k
      return;
546
547
887
    unsigned int i = 0;
548
887
    unsigned int curve_limit = arg_count - 2;
549
2.25k
    for (; i + 6 <= curve_limit; i += 6)
550
1.36k
    {
551
1.36k
      point_t pt1 = env.get_pt ();
552
1.36k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
1.36k
      point_t pt2 = pt1;
554
1.36k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
1.36k
      point_t pt3 = pt2;
556
1.36k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
1.36k
      PATH::curve (env, param, pt1, pt2, pt3);
558
1.36k
    }
559
560
887
    point_t pt1 = env.get_pt ();
561
887
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
887
    PATH::line (env, param, pt1);
563
887
  }
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
542
11.4k
  {
543
11.4k
    unsigned int arg_count = env.argStack.get_count ();
544
11.4k
    if (unlikely (arg_count < 8))
545
4.42k
      return;
546
547
6.97k
    unsigned int i = 0;
548
6.97k
    unsigned int curve_limit = arg_count - 2;
549
15.6k
    for (; i + 6 <= curve_limit; i += 6)
550
8.67k
    {
551
8.67k
      point_t pt1 = env.get_pt ();
552
8.67k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
8.67k
      point_t pt2 = pt1;
554
8.67k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
8.67k
      point_t pt3 = pt2;
556
8.67k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
8.67k
      PATH::curve (env, param, pt1, pt2, pt3);
558
8.67k
    }
559
560
6.97k
    point_t pt1 = env.get_pt ();
561
6.97k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
6.97k
    PATH::line (env, param, pt1);
563
6.97k
  }
564
565
  static void rlinecurve (ENV &env, PARAM& param)
566
22.7k
  {
567
22.7k
    unsigned int arg_count = env.argStack.get_count ();
568
22.7k
    if (unlikely (arg_count < 8))
569
10.3k
      return;
570
571
12.4k
    unsigned int i = 0;
572
12.4k
    unsigned int line_limit = arg_count - 6;
573
58.3k
    for (; i + 2 <= line_limit; i += 2)
574
45.8k
    {
575
45.8k
      point_t pt1 = env.get_pt ();
576
45.8k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
45.8k
      PATH::line (env, param, pt1);
578
45.8k
    }
579
580
12.4k
    point_t pt1 = env.get_pt ();
581
12.4k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
12.4k
    point_t pt2 = pt1;
583
12.4k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
12.4k
    point_t pt3 = pt2;
585
12.4k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
12.4k
    PATH::curve (env, param, pt1, pt2, pt3);
587
12.4k
  }
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
566
4.55k
  {
567
4.55k
    unsigned int arg_count = env.argStack.get_count ();
568
4.55k
    if (unlikely (arg_count < 8))
569
1.94k
      return;
570
571
2.60k
    unsigned int i = 0;
572
2.60k
    unsigned int line_limit = arg_count - 6;
573
15.1k
    for (; i + 2 <= line_limit; i += 2)
574
12.5k
    {
575
12.5k
      point_t pt1 = env.get_pt ();
576
12.5k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
12.5k
      PATH::line (env, param, pt1);
578
12.5k
    }
579
580
2.60k
    point_t pt1 = env.get_pt ();
581
2.60k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
2.60k
    point_t pt2 = pt1;
583
2.60k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
2.60k
    point_t pt3 = pt2;
585
2.60k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
2.60k
    PATH::curve (env, param, pt1, pt2, pt3);
587
2.60k
  }
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
566
4.55k
  {
567
4.55k
    unsigned int arg_count = env.argStack.get_count ();
568
4.55k
    if (unlikely (arg_count < 8))
569
1.94k
      return;
570
571
2.60k
    unsigned int i = 0;
572
2.60k
    unsigned int line_limit = arg_count - 6;
573
15.1k
    for (; i + 2 <= line_limit; i += 2)
574
12.5k
    {
575
12.5k
      point_t pt1 = env.get_pt ();
576
12.5k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
12.5k
      PATH::line (env, param, pt1);
578
12.5k
    }
579
580
2.60k
    point_t pt1 = env.get_pt ();
581
2.60k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
2.60k
    point_t pt2 = pt1;
583
2.60k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
2.60k
    point_t pt3 = pt2;
585
2.60k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
2.60k
    PATH::curve (env, param, pt1, pt2, pt3);
587
2.60k
  }
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
566
3.44k
  {
567
3.44k
    unsigned int arg_count = env.argStack.get_count ();
568
3.44k
    if (unlikely (arg_count < 8))
569
1.82k
      return;
570
571
1.62k
    unsigned int i = 0;
572
1.62k
    unsigned int line_limit = arg_count - 6;
573
9.53k
    for (; i + 2 <= line_limit; i += 2)
574
7.91k
    {
575
7.91k
      point_t pt1 = env.get_pt ();
576
7.91k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
7.91k
      PATH::line (env, param, pt1);
578
7.91k
    }
579
580
1.62k
    point_t pt1 = env.get_pt ();
581
1.62k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
1.62k
    point_t pt2 = pt1;
583
1.62k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
1.62k
    point_t pt3 = pt2;
585
1.62k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
1.62k
    PATH::curve (env, param, pt1, pt2, pt3);
587
1.62k
  }
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
566
10.2k
  {
567
10.2k
    unsigned int arg_count = env.argStack.get_count ();
568
10.2k
    if (unlikely (arg_count < 8))
569
4.64k
      return;
570
571
5.59k
    unsigned int i = 0;
572
5.59k
    unsigned int line_limit = arg_count - 6;
573
18.4k
    for (; i + 2 <= line_limit; i += 2)
574
12.8k
    {
575
12.8k
      point_t pt1 = env.get_pt ();
576
12.8k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
12.8k
      PATH::line (env, param, pt1);
578
12.8k
    }
579
580
5.59k
    point_t pt1 = env.get_pt ();
581
5.59k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
5.59k
    point_t pt2 = pt1;
583
5.59k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
5.59k
    point_t pt3 = pt2;
585
5.59k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
5.59k
    PATH::curve (env, param, pt1, pt2, pt3);
587
5.59k
  }
588
589
  static void vvcurveto (ENV &env, PARAM& param)
590
17.2k
  {
591
17.2k
    unsigned int i = 0;
592
17.2k
    point_t pt1 = env.get_pt ();
593
17.2k
    if ((env.argStack.get_count () & 1) != 0)
594
8.75k
      pt1.move_x (env.eval_arg (i++));
595
40.8k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
23.6k
    {
597
23.6k
      pt1.move_y (env.eval_arg (i));
598
23.6k
      point_t pt2 = pt1;
599
23.6k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
23.6k
      point_t pt3 = pt2;
601
23.6k
      pt3.move_y (env.eval_arg (i+3));
602
23.6k
      PATH::curve (env, param, pt1, pt2, pt3);
603
23.6k
      pt1 = env.get_pt ();
604
23.6k
    }
605
17.2k
  }
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
590
3.88k
  {
591
3.88k
    unsigned int i = 0;
592
3.88k
    point_t pt1 = env.get_pt ();
593
3.88k
    if ((env.argStack.get_count () & 1) != 0)
594
1.03k
      pt1.move_x (env.eval_arg (i++));
595
10.6k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
6.77k
    {
597
6.77k
      pt1.move_y (env.eval_arg (i));
598
6.77k
      point_t pt2 = pt1;
599
6.77k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
6.77k
      point_t pt3 = pt2;
601
6.77k
      pt3.move_y (env.eval_arg (i+3));
602
6.77k
      PATH::curve (env, param, pt1, pt2, pt3);
603
6.77k
      pt1 = env.get_pt ();
604
6.77k
    }
605
3.88k
  }
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
590
3.88k
  {
591
3.88k
    unsigned int i = 0;
592
3.88k
    point_t pt1 = env.get_pt ();
593
3.88k
    if ((env.argStack.get_count () & 1) != 0)
594
1.03k
      pt1.move_x (env.eval_arg (i++));
595
10.6k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
6.77k
    {
597
6.77k
      pt1.move_y (env.eval_arg (i));
598
6.77k
      point_t pt2 = pt1;
599
6.77k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
6.77k
      point_t pt3 = pt2;
601
6.77k
      pt3.move_y (env.eval_arg (i+3));
602
6.77k
      PATH::curve (env, param, pt1, pt2, pt3);
603
6.77k
      pt1 = env.get_pt ();
604
6.77k
    }
605
3.88k
  }
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
590
3.01k
  {
591
3.01k
    unsigned int i = 0;
592
3.01k
    point_t pt1 = env.get_pt ();
593
3.01k
    if ((env.argStack.get_count () & 1) != 0)
594
2.03k
      pt1.move_x (env.eval_arg (i++));
595
6.29k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
3.27k
    {
597
3.27k
      pt1.move_y (env.eval_arg (i));
598
3.27k
      point_t pt2 = pt1;
599
3.27k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
3.27k
      point_t pt3 = pt2;
601
3.27k
      pt3.move_y (env.eval_arg (i+3));
602
3.27k
      PATH::curve (env, param, pt1, pt2, pt3);
603
3.27k
      pt1 = env.get_pt ();
604
3.27k
    }
605
3.01k
  }
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
590
6.45k
  {
591
6.45k
    unsigned int i = 0;
592
6.45k
    point_t pt1 = env.get_pt ();
593
6.45k
    if ((env.argStack.get_count () & 1) != 0)
594
4.64k
      pt1.move_x (env.eval_arg (i++));
595
13.2k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
6.80k
    {
597
6.80k
      pt1.move_y (env.eval_arg (i));
598
6.80k
      point_t pt2 = pt1;
599
6.80k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
6.80k
      point_t pt3 = pt2;
601
6.80k
      pt3.move_y (env.eval_arg (i+3));
602
6.80k
      PATH::curve (env, param, pt1, pt2, pt3);
603
6.80k
      pt1 = env.get_pt ();
604
6.80k
    }
605
6.45k
  }
606
607
  static void hhcurveto (ENV &env, PARAM& param)
608
28.5k
  {
609
28.5k
    unsigned int i = 0;
610
28.5k
    point_t pt1 = env.get_pt ();
611
28.5k
    if ((env.argStack.get_count () & 1) != 0)
612
12.9k
      pt1.move_y (env.eval_arg (i++));
613
60.5k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
31.9k
    {
615
31.9k
      pt1.move_x (env.eval_arg (i));
616
31.9k
      point_t pt2 = pt1;
617
31.9k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
31.9k
      point_t pt3 = pt2;
619
31.9k
      pt3.move_x (env.eval_arg (i+3));
620
31.9k
      PATH::curve (env, param, pt1, pt2, pt3);
621
31.9k
      pt1 = env.get_pt ();
622
31.9k
    }
623
28.5k
  }
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
608
5.77k
  {
609
5.77k
    unsigned int i = 0;
610
5.77k
    point_t pt1 = env.get_pt ();
611
5.77k
    if ((env.argStack.get_count () & 1) != 0)
612
1.71k
      pt1.move_y (env.eval_arg (i++));
613
12.8k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
7.04k
    {
615
7.04k
      pt1.move_x (env.eval_arg (i));
616
7.04k
      point_t pt2 = pt1;
617
7.04k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
7.04k
      point_t pt3 = pt2;
619
7.04k
      pt3.move_x (env.eval_arg (i+3));
620
7.04k
      PATH::curve (env, param, pt1, pt2, pt3);
621
7.04k
      pt1 = env.get_pt ();
622
7.04k
    }
623
5.77k
  }
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
608
5.79k
  {
609
5.79k
    unsigned int i = 0;
610
5.79k
    point_t pt1 = env.get_pt ();
611
5.79k
    if ((env.argStack.get_count () & 1) != 0)
612
1.73k
      pt1.move_y (env.eval_arg (i++));
613
12.8k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
7.05k
    {
615
7.05k
      pt1.move_x (env.eval_arg (i));
616
7.05k
      point_t pt2 = pt1;
617
7.05k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
7.05k
      point_t pt3 = pt2;
619
7.05k
      pt3.move_x (env.eval_arg (i+3));
620
7.05k
      PATH::curve (env, param, pt1, pt2, pt3);
621
7.05k
      pt1 = env.get_pt ();
622
7.05k
    }
623
5.79k
  }
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
608
2.70k
  {
609
2.70k
    unsigned int i = 0;
610
2.70k
    point_t pt1 = env.get_pt ();
611
2.70k
    if ((env.argStack.get_count () & 1) != 0)
612
1.54k
      pt1.move_y (env.eval_arg (i++));
613
5.50k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
2.80k
    {
615
2.80k
      pt1.move_x (env.eval_arg (i));
616
2.80k
      point_t pt2 = pt1;
617
2.80k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
2.80k
      point_t pt3 = pt2;
619
2.80k
      pt3.move_x (env.eval_arg (i+3));
620
2.80k
      PATH::curve (env, param, pt1, pt2, pt3);
621
2.80k
      pt1 = env.get_pt ();
622
2.80k
    }
623
2.70k
  }
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
608
14.2k
  {
609
14.2k
    unsigned int i = 0;
610
14.2k
    point_t pt1 = env.get_pt ();
611
14.2k
    if ((env.argStack.get_count () & 1) != 0)
612
7.99k
      pt1.move_y (env.eval_arg (i++));
613
29.3k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
15.0k
    {
615
15.0k
      pt1.move_x (env.eval_arg (i));
616
15.0k
      point_t pt2 = pt1;
617
15.0k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
15.0k
      point_t pt3 = pt2;
619
15.0k
      pt3.move_x (env.eval_arg (i+3));
620
15.0k
      PATH::curve (env, param, pt1, pt2, pt3);
621
15.0k
      pt1 = env.get_pt ();
622
15.0k
    }
623
14.2k
  }
624
625
  static void vhcurveto (ENV &env, PARAM& param)
626
23.3k
  {
627
23.3k
    point_t pt1, pt2, pt3;
628
23.3k
    unsigned int i = 0;
629
23.3k
    if ((env.argStack.get_count () % 8) >= 4)
630
9.18k
    {
631
9.18k
      point_t pt1 = env.get_pt ();
632
9.18k
      pt1.move_y (env.eval_arg (i));
633
9.18k
      point_t pt2 = pt1;
634
9.18k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
9.18k
      point_t pt3 = pt2;
636
9.18k
      pt3.move_x (env.eval_arg (i+3));
637
9.18k
      i += 4;
638
639
16.4k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
7.27k
      {
641
7.27k
  PATH::curve (env, param, pt1, pt2, pt3);
642
7.27k
  pt1 = env.get_pt ();
643
7.27k
  pt1.move_x (env.eval_arg (i));
644
7.27k
  pt2 = pt1;
645
7.27k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
7.27k
  pt3 = pt2;
647
7.27k
  pt3.move_y (env.eval_arg (i+3));
648
7.27k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
7.27k
  pt1 = pt3;
651
7.27k
  pt1.move_y (env.eval_arg (i+4));
652
7.27k
  pt2 = pt1;
653
7.27k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
7.27k
  pt3 = pt2;
655
7.27k
  pt3.move_x (env.eval_arg (i+7));
656
7.27k
      }
657
9.18k
      if (i < env.argStack.get_count ())
658
5.44k
  pt3.move_y (env.eval_arg (i));
659
9.18k
      PATH::curve (env, param, pt1, pt2, pt3);
660
9.18k
    }
661
14.1k
    else
662
14.1k
    {
663
23.9k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
9.84k
      {
665
9.84k
  pt1 = env.get_pt ();
666
9.84k
  pt1.move_y (env.eval_arg (i));
667
9.84k
  pt2 = pt1;
668
9.84k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
9.84k
  pt3 = pt2;
670
9.84k
  pt3.move_x (env.eval_arg (i+3));
671
9.84k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
9.84k
  pt1 = pt3;
674
9.84k
  pt1.move_x (env.eval_arg (i+4));
675
9.84k
  pt2 = pt1;
676
9.84k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
9.84k
  pt3 = pt2;
678
9.84k
  pt3.move_y (env.eval_arg (i+7));
679
9.84k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
1.94k
    pt3.move_x (env.eval_arg (i+8));
681
9.84k
  PATH::curve (env, param, pt1, pt2, pt3);
682
9.84k
      }
683
14.1k
    }
684
23.3k
  }
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
626
5.48k
  {
627
5.48k
    point_t pt1, pt2, pt3;
628
5.48k
    unsigned int i = 0;
629
5.48k
    if ((env.argStack.get_count () % 8) >= 4)
630
2.37k
    {
631
2.37k
      point_t pt1 = env.get_pt ();
632
2.37k
      pt1.move_y (env.eval_arg (i));
633
2.37k
      point_t pt2 = pt1;
634
2.37k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
2.37k
      point_t pt3 = pt2;
636
2.37k
      pt3.move_x (env.eval_arg (i+3));
637
2.37k
      i += 4;
638
639
4.99k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
2.62k
      {
641
2.62k
  PATH::curve (env, param, pt1, pt2, pt3);
642
2.62k
  pt1 = env.get_pt ();
643
2.62k
  pt1.move_x (env.eval_arg (i));
644
2.62k
  pt2 = pt1;
645
2.62k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
2.62k
  pt3 = pt2;
647
2.62k
  pt3.move_y (env.eval_arg (i+3));
648
2.62k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
2.62k
  pt1 = pt3;
651
2.62k
  pt1.move_y (env.eval_arg (i+4));
652
2.62k
  pt2 = pt1;
653
2.62k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
2.62k
  pt3 = pt2;
655
2.62k
  pt3.move_x (env.eval_arg (i+7));
656
2.62k
      }
657
2.37k
      if (i < env.argStack.get_count ())
658
1.33k
  pt3.move_y (env.eval_arg (i));
659
2.37k
      PATH::curve (env, param, pt1, pt2, pt3);
660
2.37k
    }
661
3.11k
    else
662
3.11k
    {
663
6.25k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
3.14k
      {
665
3.14k
  pt1 = env.get_pt ();
666
3.14k
  pt1.move_y (env.eval_arg (i));
667
3.14k
  pt2 = pt1;
668
3.14k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
3.14k
  pt3 = pt2;
670
3.14k
  pt3.move_x (env.eval_arg (i+3));
671
3.14k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
3.14k
  pt1 = pt3;
674
3.14k
  pt1.move_x (env.eval_arg (i+4));
675
3.14k
  pt2 = pt1;
676
3.14k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
3.14k
  pt3 = pt2;
678
3.14k
  pt3.move_y (env.eval_arg (i+7));
679
3.14k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
480
    pt3.move_x (env.eval_arg (i+8));
681
3.14k
  PATH::curve (env, param, pt1, pt2, pt3);
682
3.14k
      }
683
3.11k
    }
684
5.48k
  }
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
626
5.48k
  {
627
5.48k
    point_t pt1, pt2, pt3;
628
5.48k
    unsigned int i = 0;
629
5.48k
    if ((env.argStack.get_count () % 8) >= 4)
630
2.37k
    {
631
2.37k
      point_t pt1 = env.get_pt ();
632
2.37k
      pt1.move_y (env.eval_arg (i));
633
2.37k
      point_t pt2 = pt1;
634
2.37k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
2.37k
      point_t pt3 = pt2;
636
2.37k
      pt3.move_x (env.eval_arg (i+3));
637
2.37k
      i += 4;
638
639
4.99k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
2.62k
      {
641
2.62k
  PATH::curve (env, param, pt1, pt2, pt3);
642
2.62k
  pt1 = env.get_pt ();
643
2.62k
  pt1.move_x (env.eval_arg (i));
644
2.62k
  pt2 = pt1;
645
2.62k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
2.62k
  pt3 = pt2;
647
2.62k
  pt3.move_y (env.eval_arg (i+3));
648
2.62k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
2.62k
  pt1 = pt3;
651
2.62k
  pt1.move_y (env.eval_arg (i+4));
652
2.62k
  pt2 = pt1;
653
2.62k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
2.62k
  pt3 = pt2;
655
2.62k
  pt3.move_x (env.eval_arg (i+7));
656
2.62k
      }
657
2.37k
      if (i < env.argStack.get_count ())
658
1.33k
  pt3.move_y (env.eval_arg (i));
659
2.37k
      PATH::curve (env, param, pt1, pt2, pt3);
660
2.37k
    }
661
3.11k
    else
662
3.11k
    {
663
6.25k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
3.14k
      {
665
3.14k
  pt1 = env.get_pt ();
666
3.14k
  pt1.move_y (env.eval_arg (i));
667
3.14k
  pt2 = pt1;
668
3.14k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
3.14k
  pt3 = pt2;
670
3.14k
  pt3.move_x (env.eval_arg (i+3));
671
3.14k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
3.14k
  pt1 = pt3;
674
3.14k
  pt1.move_x (env.eval_arg (i+4));
675
3.14k
  pt2 = pt1;
676
3.14k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
3.14k
  pt3 = pt2;
678
3.14k
  pt3.move_y (env.eval_arg (i+7));
679
3.14k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
480
    pt3.move_x (env.eval_arg (i+8));
681
3.14k
  PATH::curve (env, param, pt1, pt2, pt3);
682
3.14k
      }
683
3.11k
    }
684
5.48k
  }
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
626
3.07k
  {
627
3.07k
    point_t pt1, pt2, pt3;
628
3.07k
    unsigned int i = 0;
629
3.07k
    if ((env.argStack.get_count () % 8) >= 4)
630
1.03k
    {
631
1.03k
      point_t pt1 = env.get_pt ();
632
1.03k
      pt1.move_y (env.eval_arg (i));
633
1.03k
      point_t pt2 = pt1;
634
1.03k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
1.03k
      point_t pt3 = pt2;
636
1.03k
      pt3.move_x (env.eval_arg (i+3));
637
1.03k
      i += 4;
638
639
2.04k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
1.01k
      {
641
1.01k
  PATH::curve (env, param, pt1, pt2, pt3);
642
1.01k
  pt1 = env.get_pt ();
643
1.01k
  pt1.move_x (env.eval_arg (i));
644
1.01k
  pt2 = pt1;
645
1.01k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
1.01k
  pt3 = pt2;
647
1.01k
  pt3.move_y (env.eval_arg (i+3));
648
1.01k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
1.01k
  pt1 = pt3;
651
1.01k
  pt1.move_y (env.eval_arg (i+4));
652
1.01k
  pt2 = pt1;
653
1.01k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
1.01k
  pt3 = pt2;
655
1.01k
  pt3.move_x (env.eval_arg (i+7));
656
1.01k
      }
657
1.03k
      if (i < env.argStack.get_count ())
658
584
  pt3.move_y (env.eval_arg (i));
659
1.03k
      PATH::curve (env, param, pt1, pt2, pt3);
660
1.03k
    }
661
2.03k
    else
662
2.03k
    {
663
3.63k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
1.59k
      {
665
1.59k
  pt1 = env.get_pt ();
666
1.59k
  pt1.move_y (env.eval_arg (i));
667
1.59k
  pt2 = pt1;
668
1.59k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
1.59k
  pt3 = pt2;
670
1.59k
  pt3.move_x (env.eval_arg (i+3));
671
1.59k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
1.59k
  pt1 = pt3;
674
1.59k
  pt1.move_x (env.eval_arg (i+4));
675
1.59k
  pt2 = pt1;
676
1.59k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
1.59k
  pt3 = pt2;
678
1.59k
  pt3.move_y (env.eval_arg (i+7));
679
1.59k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
375
    pt3.move_x (env.eval_arg (i+8));
681
1.59k
  PATH::curve (env, param, pt1, pt2, pt3);
682
1.59k
      }
683
2.03k
    }
684
3.07k
  }
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
626
9.26k
  {
627
9.26k
    point_t pt1, pt2, pt3;
628
9.26k
    unsigned int i = 0;
629
9.26k
    if ((env.argStack.get_count () % 8) >= 4)
630
3.40k
    {
631
3.40k
      point_t pt1 = env.get_pt ();
632
3.40k
      pt1.move_y (env.eval_arg (i));
633
3.40k
      point_t pt2 = pt1;
634
3.40k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
3.40k
      point_t pt3 = pt2;
636
3.40k
      pt3.move_x (env.eval_arg (i+3));
637
3.40k
      i += 4;
638
639
4.42k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
1.01k
      {
641
1.01k
  PATH::curve (env, param, pt1, pt2, pt3);
642
1.01k
  pt1 = env.get_pt ();
643
1.01k
  pt1.move_x (env.eval_arg (i));
644
1.01k
  pt2 = pt1;
645
1.01k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
1.01k
  pt3 = pt2;
647
1.01k
  pt3.move_y (env.eval_arg (i+3));
648
1.01k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
1.01k
  pt1 = pt3;
651
1.01k
  pt1.move_y (env.eval_arg (i+4));
652
1.01k
  pt2 = pt1;
653
1.01k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
1.01k
  pt3 = pt2;
655
1.01k
  pt3.move_x (env.eval_arg (i+7));
656
1.01k
      }
657
3.40k
      if (i < env.argStack.get_count ())
658
2.19k
  pt3.move_y (env.eval_arg (i));
659
3.40k
      PATH::curve (env, param, pt1, pt2, pt3);
660
3.40k
    }
661
5.85k
    else
662
5.85k
    {
663
7.82k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
1.96k
      {
665
1.96k
  pt1 = env.get_pt ();
666
1.96k
  pt1.move_y (env.eval_arg (i));
667
1.96k
  pt2 = pt1;
668
1.96k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
1.96k
  pt3 = pt2;
670
1.96k
  pt3.move_x (env.eval_arg (i+3));
671
1.96k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
1.96k
  pt1 = pt3;
674
1.96k
  pt1.move_x (env.eval_arg (i+4));
675
1.96k
  pt2 = pt1;
676
1.96k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
1.96k
  pt3 = pt2;
678
1.96k
  pt3.move_y (env.eval_arg (i+7));
679
1.96k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
610
    pt3.move_x (env.eval_arg (i+8));
681
1.96k
  PATH::curve (env, param, pt1, pt2, pt3);
682
1.96k
      }
683
5.85k
    }
684
9.26k
  }
685
686
  static void hvcurveto (ENV &env, PARAM& param)
687
35.2k
  {
688
35.2k
    point_t pt1, pt2, pt3;
689
35.2k
    unsigned int i = 0;
690
35.2k
    if ((env.argStack.get_count () % 8) >= 4)
691
15.8k
    {
692
15.8k
      point_t pt1 = env.get_pt ();
693
15.8k
      pt1.move_x (env.eval_arg (i));
694
15.8k
      point_t pt2 = pt1;
695
15.8k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
15.8k
      point_t pt3 = pt2;
697
15.8k
      pt3.move_y (env.eval_arg (i+3));
698
15.8k
      i += 4;
699
700
27.7k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
11.8k
      {
702
11.8k
  PATH::curve (env, param, pt1, pt2, pt3);
703
11.8k
  pt1 = env.get_pt ();
704
11.8k
  pt1.move_y (env.eval_arg (i));
705
11.8k
  pt2 = pt1;
706
11.8k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
11.8k
  pt3 = pt2;
708
11.8k
  pt3.move_x (env.eval_arg (i+3));
709
11.8k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
11.8k
  pt1 = pt3;
712
11.8k
  pt1.move_x (env.eval_arg (i+4));
713
11.8k
  pt2 = pt1;
714
11.8k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
11.8k
  pt3 = pt2;
716
11.8k
  pt3.move_y (env.eval_arg (i+7));
717
11.8k
      }
718
15.8k
      if (i < env.argStack.get_count ())
719
11.2k
  pt3.move_x (env.eval_arg (i));
720
15.8k
      PATH::curve (env, param, pt1, pt2, pt3);
721
15.8k
    }
722
19.4k
    else
723
19.4k
    {
724
29.5k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
10.1k
      {
726
10.1k
  pt1 = env.get_pt ();
727
10.1k
  pt1.move_x (env.eval_arg (i));
728
10.1k
  pt2 = pt1;
729
10.1k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
10.1k
  pt3 = pt2;
731
10.1k
  pt3.move_y (env.eval_arg (i+3));
732
10.1k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
10.1k
  pt1 = pt3;
735
10.1k
  pt1.move_y (env.eval_arg (i+4));
736
10.1k
  pt2 = pt1;
737
10.1k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
10.1k
  pt3 = pt2;
739
10.1k
  pt3.move_x (env.eval_arg (i+7));
740
10.1k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
2.34k
    pt3.move_y (env.eval_arg (i+8));
742
10.1k
  PATH::curve (env, param, pt1, pt2, pt3);
743
10.1k
      }
744
19.4k
    }
745
35.2k
  }
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
687
10.3k
  {
688
10.3k
    point_t pt1, pt2, pt3;
689
10.3k
    unsigned int i = 0;
690
10.3k
    if ((env.argStack.get_count () % 8) >= 4)
691
3.16k
    {
692
3.16k
      point_t pt1 = env.get_pt ();
693
3.16k
      pt1.move_x (env.eval_arg (i));
694
3.16k
      point_t pt2 = pt1;
695
3.16k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
3.16k
      point_t pt3 = pt2;
697
3.16k
      pt3.move_y (env.eval_arg (i+3));
698
3.16k
      i += 4;
699
700
6.59k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
3.43k
      {
702
3.43k
  PATH::curve (env, param, pt1, pt2, pt3);
703
3.43k
  pt1 = env.get_pt ();
704
3.43k
  pt1.move_y (env.eval_arg (i));
705
3.43k
  pt2 = pt1;
706
3.43k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
3.43k
  pt3 = pt2;
708
3.43k
  pt3.move_x (env.eval_arg (i+3));
709
3.43k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
3.43k
  pt1 = pt3;
712
3.43k
  pt1.move_x (env.eval_arg (i+4));
713
3.43k
  pt2 = pt1;
714
3.43k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
3.43k
  pt3 = pt2;
716
3.43k
  pt3.move_y (env.eval_arg (i+7));
717
3.43k
      }
718
3.16k
      if (i < env.argStack.get_count ())
719
1.84k
  pt3.move_x (env.eval_arg (i));
720
3.16k
      PATH::curve (env, param, pt1, pt2, pt3);
721
3.16k
    }
722
7.21k
    else
723
7.21k
    {
724
10.5k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
3.32k
      {
726
3.32k
  pt1 = env.get_pt ();
727
3.32k
  pt1.move_x (env.eval_arg (i));
728
3.32k
  pt2 = pt1;
729
3.32k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
3.32k
  pt3 = pt2;
731
3.32k
  pt3.move_y (env.eval_arg (i+3));
732
3.32k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
3.32k
  pt1 = pt3;
735
3.32k
  pt1.move_y (env.eval_arg (i+4));
736
3.32k
  pt2 = pt1;
737
3.32k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
3.32k
  pt3 = pt2;
739
3.32k
  pt3.move_x (env.eval_arg (i+7));
740
3.32k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
699
    pt3.move_y (env.eval_arg (i+8));
742
3.32k
  PATH::curve (env, param, pt1, pt2, pt3);
743
3.32k
      }
744
7.21k
    }
745
10.3k
  }
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
687
10.3k
  {
688
10.3k
    point_t pt1, pt2, pt3;
689
10.3k
    unsigned int i = 0;
690
10.3k
    if ((env.argStack.get_count () % 8) >= 4)
691
3.17k
    {
692
3.17k
      point_t pt1 = env.get_pt ();
693
3.17k
      pt1.move_x (env.eval_arg (i));
694
3.17k
      point_t pt2 = pt1;
695
3.17k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
3.17k
      point_t pt3 = pt2;
697
3.17k
      pt3.move_y (env.eval_arg (i+3));
698
3.17k
      i += 4;
699
700
6.61k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
3.43k
      {
702
3.43k
  PATH::curve (env, param, pt1, pt2, pt3);
703
3.43k
  pt1 = env.get_pt ();
704
3.43k
  pt1.move_y (env.eval_arg (i));
705
3.43k
  pt2 = pt1;
706
3.43k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
3.43k
  pt3 = pt2;
708
3.43k
  pt3.move_x (env.eval_arg (i+3));
709
3.43k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
3.43k
  pt1 = pt3;
712
3.43k
  pt1.move_x (env.eval_arg (i+4));
713
3.43k
  pt2 = pt1;
714
3.43k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
3.43k
  pt3 = pt2;
716
3.43k
  pt3.move_y (env.eval_arg (i+7));
717
3.43k
      }
718
3.17k
      if (i < env.argStack.get_count ())
719
1.85k
  pt3.move_x (env.eval_arg (i));
720
3.17k
      PATH::curve (env, param, pt1, pt2, pt3);
721
3.17k
    }
722
7.21k
    else
723
7.21k
    {
724
10.5k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
3.32k
      {
726
3.32k
  pt1 = env.get_pt ();
727
3.32k
  pt1.move_x (env.eval_arg (i));
728
3.32k
  pt2 = pt1;
729
3.32k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
3.32k
  pt3 = pt2;
731
3.32k
  pt3.move_y (env.eval_arg (i+3));
732
3.32k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
3.32k
  pt1 = pt3;
735
3.32k
  pt1.move_y (env.eval_arg (i+4));
736
3.32k
  pt2 = pt1;
737
3.32k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
3.32k
  pt3 = pt2;
739
3.32k
  pt3.move_x (env.eval_arg (i+7));
740
3.32k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
699
    pt3.move_y (env.eval_arg (i+8));
742
3.32k
  PATH::curve (env, param, pt1, pt2, pt3);
743
3.32k
      }
744
7.21k
    }
745
10.3k
  }
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
687
3.84k
  {
688
3.84k
    point_t pt1, pt2, pt3;
689
3.84k
    unsigned int i = 0;
690
3.84k
    if ((env.argStack.get_count () % 8) >= 4)
691
1.53k
    {
692
1.53k
      point_t pt1 = env.get_pt ();
693
1.53k
      pt1.move_x (env.eval_arg (i));
694
1.53k
      point_t pt2 = pt1;
695
1.53k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
1.53k
      point_t pt3 = pt2;
697
1.53k
      pt3.move_y (env.eval_arg (i+3));
698
1.53k
      i += 4;
699
700
3.97k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
2.44k
      {
702
2.44k
  PATH::curve (env, param, pt1, pt2, pt3);
703
2.44k
  pt1 = env.get_pt ();
704
2.44k
  pt1.move_y (env.eval_arg (i));
705
2.44k
  pt2 = pt1;
706
2.44k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
2.44k
  pt3 = pt2;
708
2.44k
  pt3.move_x (env.eval_arg (i+3));
709
2.44k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
2.44k
  pt1 = pt3;
712
2.44k
  pt1.move_x (env.eval_arg (i+4));
713
2.44k
  pt2 = pt1;
714
2.44k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
2.44k
  pt3 = pt2;
716
2.44k
  pt3.move_y (env.eval_arg (i+7));
717
2.44k
      }
718
1.53k
      if (i < env.argStack.get_count ())
719
1.09k
  pt3.move_x (env.eval_arg (i));
720
1.53k
      PATH::curve (env, param, pt1, pt2, pt3);
721
1.53k
    }
722
2.31k
    else
723
2.31k
    {
724
4.00k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
1.69k
      {
726
1.69k
  pt1 = env.get_pt ();
727
1.69k
  pt1.move_x (env.eval_arg (i));
728
1.69k
  pt2 = pt1;
729
1.69k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
1.69k
  pt3 = pt2;
731
1.69k
  pt3.move_y (env.eval_arg (i+3));
732
1.69k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
1.69k
  pt1 = pt3;
735
1.69k
  pt1.move_y (env.eval_arg (i+4));
736
1.69k
  pt2 = pt1;
737
1.69k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
1.69k
  pt3 = pt2;
739
1.69k
  pt3.move_x (env.eval_arg (i+7));
740
1.69k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
471
    pt3.move_y (env.eval_arg (i+8));
742
1.69k
  PATH::curve (env, param, pt1, pt2, pt3);
743
1.69k
      }
744
2.31k
    }
745
3.84k
  }
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
687
10.6k
  {
688
10.6k
    point_t pt1, pt2, pt3;
689
10.6k
    unsigned int i = 0;
690
10.6k
    if ((env.argStack.get_count () % 8) >= 4)
691
7.97k
    {
692
7.97k
      point_t pt1 = env.get_pt ();
693
7.97k
      pt1.move_x (env.eval_arg (i));
694
7.97k
      point_t pt2 = pt1;
695
7.97k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
7.97k
      point_t pt3 = pt2;
697
7.97k
      pt3.move_y (env.eval_arg (i+3));
698
7.97k
      i += 4;
699
700
10.5k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
2.58k
      {
702
2.58k
  PATH::curve (env, param, pt1, pt2, pt3);
703
2.58k
  pt1 = env.get_pt ();
704
2.58k
  pt1.move_y (env.eval_arg (i));
705
2.58k
  pt2 = pt1;
706
2.58k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
2.58k
  pt3 = pt2;
708
2.58k
  pt3.move_x (env.eval_arg (i+3));
709
2.58k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
2.58k
  pt1 = pt3;
712
2.58k
  pt1.move_x (env.eval_arg (i+4));
713
2.58k
  pt2 = pt1;
714
2.58k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
2.58k
  pt3 = pt2;
716
2.58k
  pt3.move_y (env.eval_arg (i+7));
717
2.58k
      }
718
7.97k
      if (i < env.argStack.get_count ())
719
6.46k
  pt3.move_x (env.eval_arg (i));
720
7.97k
      PATH::curve (env, param, pt1, pt2, pt3);
721
7.97k
    }
722
2.66k
    else
723
2.66k
    {
724
4.50k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
1.84k
      {
726
1.84k
  pt1 = env.get_pt ();
727
1.84k
  pt1.move_x (env.eval_arg (i));
728
1.84k
  pt2 = pt1;
729
1.84k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
1.84k
  pt3 = pt2;
731
1.84k
  pt3.move_y (env.eval_arg (i+3));
732
1.84k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
1.84k
  pt1 = pt3;
735
1.84k
  pt1.move_y (env.eval_arg (i+4));
736
1.84k
  pt2 = pt1;
737
1.84k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
1.84k
  pt3 = pt2;
739
1.84k
  pt3.move_x (env.eval_arg (i+7));
740
1.84k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
473
    pt3.move_y (env.eval_arg (i+8));
742
1.84k
  PATH::curve (env, param, pt1, pt2, pt3);
743
1.84k
      }
744
2.66k
    }
745
10.6k
  }
746
747
  /* default actions to be overridden */
748
  static void moveto (ENV &env, PARAM& param, const point_t &pt)
749
  { env.moveto (pt); }
750
751
  static void line (ENV &env, PARAM& param, const point_t &pt1)
752
  { PATH::moveto (env, param, pt1); }
753
754
  static void curve (ENV &env, PARAM& param, const point_t &pt1, const point_t &pt2, const point_t &pt3)
755
  { PATH::moveto (env, param, pt3); }
756
757
  static void hflex (ENV &env, PARAM& param)
758
1.04k
  {
759
1.04k
    if (likely (env.argStack.get_count () == 7))
760
684
    {
761
684
      point_t pt1 = env.get_pt ();
762
684
      pt1.move_x (env.eval_arg (0));
763
684
      point_t pt2 = pt1;
764
684
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
684
      point_t pt3 = pt2;
766
684
      pt3.move_x (env.eval_arg (3));
767
684
      point_t pt4 = pt3;
768
684
      pt4.move_x (env.eval_arg (4));
769
684
      point_t pt5 = pt4;
770
684
      pt5.move_x (env.eval_arg (5));
771
684
      pt5.y = pt1.y;
772
684
      point_t pt6 = pt5;
773
684
      pt6.move_x (env.eval_arg (6));
774
775
684
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
684
    }
777
362
    else
778
362
      env.set_error ();
779
1.04k
  }
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
758
133
  {
759
133
    if (likely (env.argStack.get_count () == 7))
760
97
    {
761
97
      point_t pt1 = env.get_pt ();
762
97
      pt1.move_x (env.eval_arg (0));
763
97
      point_t pt2 = pt1;
764
97
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
97
      point_t pt3 = pt2;
766
97
      pt3.move_x (env.eval_arg (3));
767
97
      point_t pt4 = pt3;
768
97
      pt4.move_x (env.eval_arg (4));
769
97
      point_t pt5 = pt4;
770
97
      pt5.move_x (env.eval_arg (5));
771
97
      pt5.y = pt1.y;
772
97
      point_t pt6 = pt5;
773
97
      pt6.move_x (env.eval_arg (6));
774
775
97
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
97
    }
777
36
    else
778
36
      env.set_error ();
779
133
  }
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
758
133
  {
759
133
    if (likely (env.argStack.get_count () == 7))
760
97
    {
761
97
      point_t pt1 = env.get_pt ();
762
97
      pt1.move_x (env.eval_arg (0));
763
97
      point_t pt2 = pt1;
764
97
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
97
      point_t pt3 = pt2;
766
97
      pt3.move_x (env.eval_arg (3));
767
97
      point_t pt4 = pt3;
768
97
      pt4.move_x (env.eval_arg (4));
769
97
      point_t pt5 = pt4;
770
97
      pt5.move_x (env.eval_arg (5));
771
97
      pt5.y = pt1.y;
772
97
      point_t pt6 = pt5;
773
97
      pt6.move_x (env.eval_arg (6));
774
775
97
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
97
    }
777
36
    else
778
36
      env.set_error ();
779
133
  }
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
758
268
  {
759
268
    if (likely (env.argStack.get_count () == 7))
760
245
    {
761
245
      point_t pt1 = env.get_pt ();
762
245
      pt1.move_x (env.eval_arg (0));
763
245
      point_t pt2 = pt1;
764
245
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
245
      point_t pt3 = pt2;
766
245
      pt3.move_x (env.eval_arg (3));
767
245
      point_t pt4 = pt3;
768
245
      pt4.move_x (env.eval_arg (4));
769
245
      point_t pt5 = pt4;
770
245
      pt5.move_x (env.eval_arg (5));
771
245
      pt5.y = pt1.y;
772
245
      point_t pt6 = pt5;
773
245
      pt6.move_x (env.eval_arg (6));
774
775
245
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
245
    }
777
23
    else
778
23
      env.set_error ();
779
268
  }
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
758
512
  {
759
512
    if (likely (env.argStack.get_count () == 7))
760
245
    {
761
245
      point_t pt1 = env.get_pt ();
762
245
      pt1.move_x (env.eval_arg (0));
763
245
      point_t pt2 = pt1;
764
245
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
245
      point_t pt3 = pt2;
766
245
      pt3.move_x (env.eval_arg (3));
767
245
      point_t pt4 = pt3;
768
245
      pt4.move_x (env.eval_arg (4));
769
245
      point_t pt5 = pt4;
770
245
      pt5.move_x (env.eval_arg (5));
771
245
      pt5.y = pt1.y;
772
245
      point_t pt6 = pt5;
773
245
      pt6.move_x (env.eval_arg (6));
774
775
245
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
245
    }
777
267
    else
778
267
      env.set_error ();
779
512
  }
780
781
  static void flex (ENV &env, PARAM& param)
782
740
  {
783
740
    if (likely (env.argStack.get_count () == 13))
784
380
    {
785
380
      point_t pt1 = env.get_pt ();
786
380
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
380
      point_t pt2 = pt1;
788
380
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
380
      point_t pt3 = pt2;
790
380
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
380
      point_t pt4 = pt3;
792
380
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
380
      point_t pt5 = pt4;
794
380
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
380
      point_t pt6 = pt5;
796
380
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
380
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
380
    }
800
360
    else
801
360
      env.set_error ();
802
740
  }
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
782
124
  {
783
124
    if (likely (env.argStack.get_count () == 13))
784
88
    {
785
88
      point_t pt1 = env.get_pt ();
786
88
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
88
      point_t pt2 = pt1;
788
88
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
88
      point_t pt3 = pt2;
790
88
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
88
      point_t pt4 = pt3;
792
88
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
88
      point_t pt5 = pt4;
794
88
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
88
      point_t pt6 = pt5;
796
88
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
88
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
88
    }
800
36
    else
801
36
      env.set_error ();
802
124
  }
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
782
124
  {
783
124
    if (likely (env.argStack.get_count () == 13))
784
88
    {
785
88
      point_t pt1 = env.get_pt ();
786
88
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
88
      point_t pt2 = pt1;
788
88
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
88
      point_t pt3 = pt2;
790
88
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
88
      point_t pt4 = pt3;
792
88
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
88
      point_t pt5 = pt4;
794
88
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
88
      point_t pt6 = pt5;
796
88
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
88
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
88
    }
800
36
    else
801
36
      env.set_error ();
802
124
  }
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
782
61
  {
783
61
    if (likely (env.argStack.get_count () == 13))
784
35
    {
785
35
      point_t pt1 = env.get_pt ();
786
35
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
35
      point_t pt2 = pt1;
788
35
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
35
      point_t pt3 = pt2;
790
35
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
35
      point_t pt4 = pt3;
792
35
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
35
      point_t pt5 = pt4;
794
35
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
35
      point_t pt6 = pt5;
796
35
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
35
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
35
    }
800
26
    else
801
26
      env.set_error ();
802
61
  }
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
782
431
  {
783
431
    if (likely (env.argStack.get_count () == 13))
784
169
    {
785
169
      point_t pt1 = env.get_pt ();
786
169
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
169
      point_t pt2 = pt1;
788
169
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
169
      point_t pt3 = pt2;
790
169
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
169
      point_t pt4 = pt3;
792
169
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
169
      point_t pt5 = pt4;
794
169
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
169
      point_t pt6 = pt5;
796
169
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
169
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
169
    }
800
262
    else
801
262
      env.set_error ();
802
431
  }
803
804
  static void hflex1 (ENV &env, PARAM& param)
805
1.31k
  {
806
1.31k
    if (likely (env.argStack.get_count () == 9))
807
968
    {
808
968
      point_t pt1 = env.get_pt ();
809
968
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
968
      point_t pt2 = pt1;
811
968
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
968
      point_t pt3 = pt2;
813
968
      pt3.move_x (env.eval_arg (4));
814
968
      point_t pt4 = pt3;
815
968
      pt4.move_x (env.eval_arg (5));
816
968
      point_t pt5 = pt4;
817
968
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
968
      point_t pt6 = pt5;
819
968
      pt6.move_x (env.eval_arg (8));
820
968
      pt6.y = env.get_pt ().y;
821
822
968
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
968
    }
824
342
    else
825
342
      env.set_error ();
826
1.31k
  }
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
805
232
  {
806
232
    if (likely (env.argStack.get_count () == 9))
807
196
    {
808
196
      point_t pt1 = env.get_pt ();
809
196
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
196
      point_t pt2 = pt1;
811
196
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
196
      point_t pt3 = pt2;
813
196
      pt3.move_x (env.eval_arg (4));
814
196
      point_t pt4 = pt3;
815
196
      pt4.move_x (env.eval_arg (5));
816
196
      point_t pt5 = pt4;
817
196
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
196
      point_t pt6 = pt5;
819
196
      pt6.move_x (env.eval_arg (8));
820
196
      pt6.y = env.get_pt ().y;
821
822
196
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
196
    }
824
36
    else
825
36
      env.set_error ();
826
232
  }
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
805
232
  {
806
232
    if (likely (env.argStack.get_count () == 9))
807
196
    {
808
196
      point_t pt1 = env.get_pt ();
809
196
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
196
      point_t pt2 = pt1;
811
196
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
196
      point_t pt3 = pt2;
813
196
      pt3.move_x (env.eval_arg (4));
814
196
      point_t pt4 = pt3;
815
196
      pt4.move_x (env.eval_arg (5));
816
196
      point_t pt5 = pt4;
817
196
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
196
      point_t pt6 = pt5;
819
196
      pt6.move_x (env.eval_arg (8));
820
196
      pt6.y = env.get_pt ().y;
821
822
196
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
196
    }
824
36
    else
825
36
      env.set_error ();
826
232
  }
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
805
279
  {
806
279
    if (likely (env.argStack.get_count () == 9))
807
252
    {
808
252
      point_t pt1 = env.get_pt ();
809
252
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
252
      point_t pt2 = pt1;
811
252
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
252
      point_t pt3 = pt2;
813
252
      pt3.move_x (env.eval_arg (4));
814
252
      point_t pt4 = pt3;
815
252
      pt4.move_x (env.eval_arg (5));
816
252
      point_t pt5 = pt4;
817
252
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
252
      point_t pt6 = pt5;
819
252
      pt6.move_x (env.eval_arg (8));
820
252
      pt6.y = env.get_pt ().y;
821
822
252
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
252
    }
824
27
    else
825
27
      env.set_error ();
826
279
  }
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
805
567
  {
806
567
    if (likely (env.argStack.get_count () == 9))
807
324
    {
808
324
      point_t pt1 = env.get_pt ();
809
324
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
324
      point_t pt2 = pt1;
811
324
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
324
      point_t pt3 = pt2;
813
324
      pt3.move_x (env.eval_arg (4));
814
324
      point_t pt4 = pt3;
815
324
      pt4.move_x (env.eval_arg (5));
816
324
      point_t pt5 = pt4;
817
324
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
324
      point_t pt6 = pt5;
819
324
      pt6.move_x (env.eval_arg (8));
820
324
      pt6.y = env.get_pt ().y;
821
822
324
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
324
    }
824
243
    else
825
243
      env.set_error ();
826
567
  }
827
828
  static void flex1 (ENV &env, PARAM& param)
829
2.22k
  {
830
2.22k
    if (likely (env.argStack.get_count () == 11))
831
1.83k
    {
832
1.83k
      point_t d;
833
11.0k
      for (unsigned int i = 0; i < 10; i += 2)
834
9.17k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
1.83k
      point_t pt1 = env.get_pt ();
837
1.83k
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
1.83k
      point_t pt2 = pt1;
839
1.83k
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
1.83k
      point_t pt3 = pt2;
841
1.83k
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
1.83k
      point_t pt4 = pt3;
843
1.83k
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
1.83k
      point_t pt5 = pt4;
845
1.83k
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
1.83k
      point_t pt6 = pt5;
847
848
1.83k
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
638
      {
850
638
  pt6.move_x (env.eval_arg (10));
851
638
  pt6.y = env.get_pt ().y;
852
638
      }
853
1.19k
      else
854
1.19k
      {
855
1.19k
  pt6.x = env.get_pt ().x;
856
1.19k
  pt6.move_y (env.eval_arg (10));
857
1.19k
      }
858
859
1.83k
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
1.83k
    }
861
388
    else
862
388
      env.set_error ();
863
2.22k
  }
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
829
511
  {
830
511
    if (likely (env.argStack.get_count () == 11))
831
470
    {
832
470
      point_t d;
833
2.82k
      for (unsigned int i = 0; i < 10; i += 2)
834
2.35k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
470
      point_t pt1 = env.get_pt ();
837
470
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
470
      point_t pt2 = pt1;
839
470
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
470
      point_t pt3 = pt2;
841
470
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
470
      point_t pt4 = pt3;
843
470
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
470
      point_t pt5 = pt4;
845
470
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
470
      point_t pt6 = pt5;
847
848
470
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
182
      {
850
182
  pt6.move_x (env.eval_arg (10));
851
182
  pt6.y = env.get_pt ().y;
852
182
      }
853
288
      else
854
288
      {
855
288
  pt6.x = env.get_pt ().x;
856
288
  pt6.move_y (env.eval_arg (10));
857
288
      }
858
859
470
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
470
    }
861
41
    else
862
41
      env.set_error ();
863
511
  }
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
829
511
  {
830
511
    if (likely (env.argStack.get_count () == 11))
831
470
    {
832
470
      point_t d;
833
2.82k
      for (unsigned int i = 0; i < 10; i += 2)
834
2.35k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
470
      point_t pt1 = env.get_pt ();
837
470
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
470
      point_t pt2 = pt1;
839
470
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
470
      point_t pt3 = pt2;
841
470
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
470
      point_t pt4 = pt3;
843
470
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
470
      point_t pt5 = pt4;
845
470
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
470
      point_t pt6 = pt5;
847
848
470
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
182
      {
850
182
  pt6.move_x (env.eval_arg (10));
851
182
  pt6.y = env.get_pt ().y;
852
182
      }
853
288
      else
854
288
      {
855
288
  pt6.x = env.get_pt ().x;
856
288
  pt6.move_y (env.eval_arg (10));
857
288
      }
858
859
470
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
470
    }
861
41
    else
862
41
      env.set_error ();
863
511
  }
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
829
193
  {
830
193
    if (likely (env.argStack.get_count () == 11))
831
154
    {
832
154
      point_t d;
833
924
      for (unsigned int i = 0; i < 10; i += 2)
834
770
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
154
      point_t pt1 = env.get_pt ();
837
154
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
154
      point_t pt2 = pt1;
839
154
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
154
      point_t pt3 = pt2;
841
154
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
154
      point_t pt4 = pt3;
843
154
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
154
      point_t pt5 = pt4;
845
154
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
154
      point_t pt6 = pt5;
847
848
154
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
73
      {
850
73
  pt6.move_x (env.eval_arg (10));
851
73
  pt6.y = env.get_pt ().y;
852
73
      }
853
81
      else
854
81
      {
855
81
  pt6.x = env.get_pt ().x;
856
81
  pt6.move_y (env.eval_arg (10));
857
81
      }
858
859
154
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
154
    }
861
39
    else
862
39
      env.set_error ();
863
193
  }
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
829
1.00k
  {
830
1.00k
    if (likely (env.argStack.get_count () == 11))
831
741
    {
832
741
      point_t d;
833
4.44k
      for (unsigned int i = 0; i < 10; i += 2)
834
3.70k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
741
      point_t pt1 = env.get_pt ();
837
741
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
741
      point_t pt2 = pt1;
839
741
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
741
      point_t pt3 = pt2;
841
741
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
741
      point_t pt4 = pt3;
843
741
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
741
      point_t pt5 = pt4;
845
741
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
741
      point_t pt6 = pt5;
847
848
741
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
201
      {
850
201
  pt6.move_x (env.eval_arg (10));
851
201
  pt6.y = env.get_pt ().y;
852
201
      }
853
540
      else
854
540
      {
855
540
  pt6.x = env.get_pt ().x;
856
540
  pt6.move_y (env.eval_arg (10));
857
540
      }
858
859
741
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
741
    }
861
267
    else
862
267
      env.set_error ();
863
1.00k
  }
864
865
  protected:
866
  static void curve2 (ENV &env, PARAM& param,
867
          const point_t &pt1, const point_t &pt2, const point_t &pt3,
868
          const point_t &pt4, const point_t &pt5, const point_t &pt6)
869
3.86k
  {
870
3.86k
    PATH::curve (env, param, pt1, pt2, pt3);
871
3.86k
    PATH::curve (env, param, pt4, pt5, pt6);
872
3.86k
  }
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
869
851
  {
870
851
    PATH::curve (env, param, pt1, pt2, pt3);
871
851
    PATH::curve (env, param, pt4, pt5, pt6);
872
851
  }
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
869
851
  {
870
851
    PATH::curve (env, param, pt1, pt2, pt3);
871
851
    PATH::curve (env, param, pt4, pt5, pt6);
872
851
  }
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
869
686
  {
870
686
    PATH::curve (env, param, pt1, pt2, pt3);
871
686
    PATH::curve (env, param, pt4, pt5, pt6);
872
686
  }
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
869
1.47k
  {
870
1.47k
    PATH::curve (env, param, pt1, pt2, pt3);
871
1.47k
    PATH::curve (env, param, pt4, pt5, pt6);
872
1.47k
  }
873
};
874
875
template <typename ENV, typename OPSET, typename PARAM>
876
struct cs_interpreter_t : interpreter_t<ENV>
877
{
878
54.1k
  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
878
13.6k
  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
878
13.6k
  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
878
5.73k
  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
878
21.1k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
879
880
  bool interpret (PARAM& param)
881
54.1k
  {
882
54.1k
    SUPER::env.set_endchar (false);
883
884
54.1k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
3.42M
    for (;;) {
886
3.42M
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
887
3.42M
      if (unlikely (SUPER::env.in_error () || !--max_ops))
888
38.7k
      {
889
38.7k
  SUPER::env.set_error ();
890
38.7k
  return false;
891
38.7k
      }
892
3.38M
      if (SUPER::env.is_endchar ())
893
15.3k
  break;
894
3.38M
    }
895
896
15.3k
    return true;
897
54.1k
  }
CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_extents_t, cff1_extents_param_t>::interpret(cff1_extents_param_t&)
Line
Count
Source
881
13.6k
  {
882
13.6k
    SUPER::env.set_endchar (false);
883
884
13.6k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
918k
    for (;;) {
886
918k
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
887
918k
      if (unlikely (SUPER::env.in_error () || !--max_ops))
888
11.1k
      {
889
11.1k
  SUPER::env.set_error ();
890
11.1k
  return false;
891
11.1k
      }
892
906k
      if (SUPER::env.is_endchar ())
893
2.41k
  break;
894
906k
    }
895
896
2.41k
    return true;
897
13.6k
  }
CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_path_t, cff1_path_param_t>::interpret(cff1_path_param_t&)
Line
Count
Source
881
13.6k
  {
882
13.6k
    SUPER::env.set_endchar (false);
883
884
13.6k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
918k
    for (;;) {
886
918k
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
887
918k
      if (unlikely (SUPER::env.in_error () || !--max_ops))
888
11.2k
      {
889
11.2k
  SUPER::env.set_error ();
890
11.2k
  return false;
891
11.2k
      }
892
907k
      if (SUPER::env.is_endchar ())
893
2.42k
  break;
894
907k
    }
895
896
2.42k
    return true;
897
13.6k
  }
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&)
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&)
Line
Count
Source
881
5.73k
  {
882
5.73k
    SUPER::env.set_endchar (false);
883
884
5.73k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
462k
    for (;;) {
886
462k
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
887
462k
      if (unlikely (SUPER::env.in_error () || !--max_ops))
888
1.67k
      {
889
1.67k
  SUPER::env.set_error ();
890
1.67k
  return false;
891
1.67k
      }
892
460k
      if (SUPER::env.is_endchar ())
893
4.05k
  break;
894
460k
    }
895
896
4.05k
    return true;
897
5.73k
  }
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&)
Line
Count
Source
881
21.1k
  {
882
21.1k
    SUPER::env.set_endchar (false);
883
884
21.1k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
1.12M
    for (;;) {
886
1.12M
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
887
1.12M
      if (unlikely (SUPER::env.in_error () || !--max_ops))
888
14.6k
      {
889
14.6k
  SUPER::env.set_error ();
890
14.6k
  return false;
891
14.6k
      }
892
1.10M
      if (SUPER::env.is_endchar ())
893
6.48k
  break;
894
1.10M
    }
895
896
6.48k
    return true;
897
21.1k
  }
898
899
  private:
900
  typedef interpreter_t<ENV> SUPER;
901
};
902
903
} /* namespace CFF */
904
905
#endif /* HB_CFF_INTERP_CS_COMMON_HH */