Coverage Report

Created: 2025-08-25 07:08

/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
191k
  {
46
191k
    str_ref = substr_;
47
191k
    type = type_;
48
191k
    subr_num = subr_num_;
49
191k
  }
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
219k
  {
67
219k
    subrs = subrs_;
68
219k
    unsigned int  nSubrs = get_count ();
69
219k
    if (nSubrs < 1240)
70
217k
      bias = 107;
71
1.70k
    else if (nSubrs < 33900)
72
1.69k
      bias = 1131;
73
7
    else
74
7
      bias = 32768;
75
219k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::init(CFF::Subrs<OT::NumType<true, unsigned short, 2u> > const*)
Line
Count
Source
66
198k
  {
67
198k
    subrs = subrs_;
68
198k
    unsigned int  nSubrs = get_count ();
69
198k
    if (nSubrs < 1240)
70
196k
      bias = 107;
71
1.68k
    else if (nSubrs < 33900)
72
1.67k
      bias = 1131;
73
7
    else
74
7
      bias = 32768;
75
198k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::init(CFF::Subrs<OT::NumType<true, unsigned int, 4u> > const*)
Line
Count
Source
66
20.8k
  {
67
20.8k
    subrs = subrs_;
68
20.8k
    unsigned int  nSubrs = get_count ();
69
20.8k
    if (nSubrs < 1240)
70
20.7k
      bias = 107;
71
21
    else if (nSubrs < 33900)
72
21
      bias = 1131;
73
0
    else
74
0
      bias = 32768;
75
20.8k
  }
76
77
219k
  void fini () {}
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::fini()
Line
Count
Source
77
198k
  void fini () {}
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::fini()
Line
Count
Source
77
20.8k
  void fini () {}
78
79
313k
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::get_count() const
Line
Count
Source
79
222k
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::get_count() const
Line
Count
Source
79
90.3k
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
80
94.5k
  unsigned int get_bias () const  { return bias; }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::get_bias() const
Line
Count
Source
80
24.8k
  unsigned int get_bias () const  { return bias; }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::get_bias() const
Line
Count
Source
80
69.6k
  unsigned int get_bias () const  { return bias; }
81
82
  hb_ubytes_t operator [] (unsigned int index) const
83
82.1k
  {
84
82.1k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
82.1k
    else
87
82.1k
      return (*subrs)[index];
88
82.1k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::operator[](unsigned int) const
Line
Count
Source
83
14.7k
  {
84
14.7k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
14.7k
    else
87
14.7k
      return (*subrs)[index];
88
14.7k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::operator[](unsigned int) const
Line
Count
Source
83
67.3k
  {
84
67.3k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
67.3k
    else
87
67.3k
      return (*subrs)[index];
88
67.3k
  }
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
4.05M
  {
99
4.05M
    x.set_int (_x);
100
4.05M
    y.set_int (_y);
101
4.05M
  }
102
103
737k
  void move_x (const number_t &dx) { x += dx; }
104
749k
  void move_y (const number_t &dy) { y += dy; }
105
400k
  void move (const number_t &dx, const number_t &dy) { move_x (dx); move_y (dy); }
106
1.47k
  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
109k
    interp_env_t<ARG> (str)
117
109k
  {
118
109k
    context.init (str, CSType_CharString);
119
109k
    seen_moveto = true;
120
109k
    seen_hintmask = false;
121
109k
    hstem_count = 0;
122
109k
    vstem_count = 0;
123
109k
    hintmask_size = 0;
124
109k
    pt.set_int (0, 0);
125
109k
    globalSubrs.init (globalSubrs_);
126
109k
    localSubrs.init (localSubrs_);
127
109k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::cs_interp_env_t(hb_array_t<unsigned char const> const&, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > const*, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > const*)
Line
Count
Source
116
99.1k
    interp_env_t<ARG> (str)
117
99.1k
  {
118
99.1k
    context.init (str, CSType_CharString);
119
99.1k
    seen_moveto = true;
120
99.1k
    seen_hintmask = false;
121
99.1k
    hstem_count = 0;
122
99.1k
    vstem_count = 0;
123
99.1k
    hintmask_size = 0;
124
99.1k
    pt.set_int (0, 0);
125
99.1k
    globalSubrs.init (globalSubrs_);
126
99.1k
    localSubrs.init (localSubrs_);
127
99.1k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::cs_interp_env_t(hb_array_t<unsigned char const> const&, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > const*, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > const*)
Line
Count
Source
116
10.4k
    interp_env_t<ARG> (str)
117
10.4k
  {
118
10.4k
    context.init (str, CSType_CharString);
119
10.4k
    seen_moveto = true;
120
10.4k
    seen_hintmask = false;
121
10.4k
    hstem_count = 0;
122
10.4k
    vstem_count = 0;
123
10.4k
    hintmask_size = 0;
124
10.4k
    pt.set_int (0, 0);
125
10.4k
    globalSubrs.init (globalSubrs_);
126
10.4k
    localSubrs.init (localSubrs_);
127
10.4k
  }
128
  ~cs_interp_env_t ()
129
109k
  {
130
109k
    globalSubrs.fini ();
131
109k
    localSubrs.fini ();
132
109k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::~cs_interp_env_t()
Line
Count
Source
129
99.1k
  {
130
99.1k
    globalSubrs.fini ();
131
99.1k
    localSubrs.fini ();
132
99.1k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::~cs_interp_env_t()
Line
Count
Source
129
10.4k
  {
130
10.4k
    globalSubrs.fini ();
131
10.4k
    localSubrs.fini ();
132
10.4k
  }
133
134
  bool in_error () const
135
4.22G
  {
136
4.22G
    return callStack.in_error () || SUPER::in_error ();
137
4.22G
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::in_error() const
Line
Count
Source
135
4.21G
  {
136
4.21G
    return callStack.in_error () || SUPER::in_error ();
137
4.21G
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::in_error() const
Line
Count
Source
135
2.86M
  {
136
2.86M
    return callStack.in_error () || SUPER::in_error ();
137
2.86M
  }
138
139
  bool pop_subr_num (const biased_subrs_t<SUBRS>& biasedSubrs, unsigned int &subr_num)
140
94.5k
  {
141
94.5k
    subr_num = 0;
142
94.5k
    int n = SUPER::argStack.pop_int ();
143
94.5k
    n += biasedSubrs.get_bias ();
144
94.5k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
145
9.64k
      return false;
146
147
84.8k
    subr_num = (unsigned int)n;
148
84.8k
    return true;
149
94.5k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::pop_subr_num(CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > > const&, unsigned int&)
Line
Count
Source
140
24.8k
  {
141
24.8k
    subr_num = 0;
142
24.8k
    int n = SUPER::argStack.pop_int ();
143
24.8k
    n += biasedSubrs.get_bias ();
144
24.8k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
145
8.87k
      return false;
146
147
15.9k
    subr_num = (unsigned int)n;
148
15.9k
    return true;
149
24.8k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::pop_subr_num(CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > > const&, unsigned int&)
Line
Count
Source
140
69.6k
  {
141
69.6k
    subr_num = 0;
142
69.6k
    int n = SUPER::argStack.pop_int ();
143
69.6k
    n += biasedSubrs.get_bias ();
144
69.6k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
145
766
      return false;
146
147
68.9k
    subr_num = (unsigned int)n;
148
68.9k
    return true;
149
69.6k
  }
150
151
  void call_subr (const biased_subrs_t<SUBRS>& biasedSubrs, cs_type_t type)
152
94.5k
  {
153
94.5k
    unsigned int subr_num = 0;
154
155
94.5k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
156
94.5k
     || callStack.get_count () >= kMaxCallLimit))
157
12.4k
    {
158
12.4k
      SUPER::set_error ();
159
12.4k
      return;
160
12.4k
    }
161
82.1k
    context.str_ref = SUPER::str_ref;
162
82.1k
    callStack.push (context);
163
164
82.1k
    context.init ( biasedSubrs[subr_num], type, subr_num);
165
82.1k
    SUPER::str_ref = context.str_ref;
166
82.1k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::call_subr(CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned short, 2u> > > const&, CFF::cs_type_t)
Line
Count
Source
152
24.8k
  {
153
24.8k
    unsigned int subr_num = 0;
154
155
24.8k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
156
24.8k
     || callStack.get_count () >= kMaxCallLimit))
157
10.0k
    {
158
10.0k
      SUPER::set_error ();
159
10.0k
      return;
160
10.0k
    }
161
14.7k
    context.str_ref = SUPER::str_ref;
162
14.7k
    callStack.push (context);
163
164
14.7k
    context.init ( biasedSubrs[subr_num], type, subr_num);
165
14.7k
    SUPER::str_ref = context.str_ref;
166
14.7k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::call_subr(CFF::biased_subrs_t<CFF::Subrs<OT::NumType<true, unsigned int, 4u> > > const&, CFF::cs_type_t)
Line
Count
Source
152
69.6k
  {
153
69.6k
    unsigned int subr_num = 0;
154
155
69.6k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
156
69.6k
     || callStack.get_count () >= kMaxCallLimit))
157
2.32k
    {
158
2.32k
      SUPER::set_error ();
159
2.32k
      return;
160
2.32k
    }
161
67.3k
    context.str_ref = SUPER::str_ref;
162
67.3k
    callStack.push (context);
163
164
67.3k
    context.init ( biasedSubrs[subr_num], type, subr_num);
165
67.3k
    SUPER::str_ref = context.str_ref;
166
67.3k
  }
167
168
  void return_from_subr ()
169
55.7k
  {
170
55.7k
    if (unlikely (SUPER::str_ref.in_error ()))
171
0
      SUPER::set_error ();
172
55.7k
    context = callStack.pop ();
173
55.7k
    SUPER::str_ref = context.str_ref;
174
55.7k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::return_from_subr()
Line
Count
Source
169
3.98k
  {
170
3.98k
    if (unlikely (SUPER::str_ref.in_error ()))
171
0
      SUPER::set_error ();
172
3.98k
    context = callStack.pop ();
173
3.98k
    SUPER::str_ref = context.str_ref;
174
3.98k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::return_from_subr()
Line
Count
Source
169
51.7k
  {
170
51.7k
    if (unlikely (SUPER::str_ref.in_error ()))
171
0
      SUPER::set_error ();
172
51.7k
    context = callStack.pop ();
173
51.7k
    SUPER::str_ref = context.str_ref;
174
51.7k
  }
175
176
  void determine_hintmask_size ()
177
97.8k
  {
178
97.8k
    if (!seen_hintmask)
179
18.6k
    {
180
18.6k
      vstem_count += SUPER::argStack.get_count() / 2;
181
18.6k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
182
18.6k
      seen_hintmask = true;
183
18.6k
    }
184
97.8k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::determine_hintmask_size()
Line
Count
Source
177
34.3k
  {
178
34.3k
    if (!seen_hintmask)
179
17.3k
    {
180
17.3k
      vstem_count += SUPER::argStack.get_count() / 2;
181
17.3k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
182
17.3k
      seen_hintmask = true;
183
17.3k
    }
184
34.3k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::determine_hintmask_size()
Line
Count
Source
177
63.5k
  {
178
63.5k
    if (!seen_hintmask)
179
1.36k
    {
180
1.36k
      vstem_count += SUPER::argStack.get_count() / 2;
181
1.36k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
182
1.36k
      seen_hintmask = true;
183
1.36k
    }
184
63.5k
  }
185
186
150k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::set_endchar(bool)
Line
Count
Source
186
138k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::set_endchar(bool)
Line
Count
Source
186
11.8k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
187
4.22G
  bool is_endchar () const { return endchar_flag; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::is_endchar() const
Line
Count
Source
187
4.21G
  bool is_endchar () const { return endchar_flag; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::is_endchar() const
Line
Count
Source
187
2.85M
  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
956k
  const point_t &get_pt () const { return pt; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::get_pt() const
Line
Count
Source
191
551k
  const point_t &get_pt () const { return pt; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::get_pt() const
Line
Count
Source
191
404k
  const point_t &get_pt () const { return pt; }
192
193
645k
  void moveto (const point_t &pt_ ) { pt = pt_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned short, 2u> > >::moveto(CFF::point_t const&)
Line
Count
Source
193
367k
  void moveto (const point_t &pt_ ) { pt = pt_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::NumType<true, unsigned int, 4u> > >::moveto(CFF::point_t const&)
Line
Count
Source
193
278k
  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
4.22G
  {
244
4.22G
    switch (op) {
245
246
55.7k
      case OpCode_return:
247
55.7k
  env.return_from_subr ();
248
55.7k
  break;
249
1.49k
      case OpCode_endchar:
250
1.49k
  OPSET::check_width (op, env, param);
251
1.49k
  env.set_endchar (true);
252
1.49k
  OPSET::flush_args_and_op (op, env, param);
253
1.49k
  break;
254
255
273k
      case OpCode_fixedcs:
256
273k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
273k
  break;
258
259
12.3k
      case OpCode_callsubr:
260
12.3k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
12.3k
  break;
262
263
82.1k
      case OpCode_callgsubr:
264
82.1k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
82.1k
  break;
266
267
151k
      case OpCode_hstem:
268
170k
      case OpCode_hstemhm:
269
170k
  OPSET::check_width (op, env, param);
270
170k
  OPSET::process_hstem (op, env, param);
271
170k
  break;
272
53.6k
      case OpCode_vstem:
273
63.4k
      case OpCode_vstemhm:
274
63.4k
  OPSET::check_width (op, env, param);
275
63.4k
  OPSET::process_vstem (op, env, param);
276
63.4k
  break;
277
64.9k
      case OpCode_hintmask:
278
97.8k
      case OpCode_cntrmask:
279
97.8k
  OPSET::check_width (op, env, param);
280
97.8k
  OPSET::process_hintmask (op, env, param);
281
97.8k
  break;
282
18.0k
      case OpCode_rmoveto:
283
18.0k
  OPSET::check_width (op, env, param);
284
18.0k
  PATH::rmoveto (env, param);
285
18.0k
  OPSET::process_post_move (op, env, param);
286
18.0k
  break;
287
28.0k
      case OpCode_hmoveto:
288
28.0k
  OPSET::check_width (op, env, param);
289
28.0k
  PATH::hmoveto (env, param);
290
28.0k
  OPSET::process_post_move (op, env, param);
291
28.0k
  break;
292
66.4k
      case OpCode_vmoveto:
293
66.4k
  OPSET::check_width (op, env, param);
294
66.4k
  PATH::vmoveto (env, param);
295
66.4k
  OPSET::process_post_move (op, env, param);
296
66.4k
  break;
297
39.3k
      case OpCode_rlineto:
298
39.3k
  PATH::rlineto (env, param);
299
39.3k
  process_post_path (op, env, param);
300
39.3k
  break;
301
73.4k
      case OpCode_hlineto:
302
73.4k
  PATH::hlineto (env, param);
303
73.4k
  process_post_path (op, env, param);
304
73.4k
  break;
305
85.9k
      case OpCode_vlineto:
306
85.9k
  PATH::vlineto (env, param);
307
85.9k
  process_post_path (op, env, param);
308
85.9k
  break;
309
56.8k
      case OpCode_rrcurveto:
310
56.8k
  PATH::rrcurveto (env, param);
311
56.8k
  process_post_path (op, env, param);
312
56.8k
  break;
313
35.0k
      case OpCode_rcurveline:
314
35.0k
  PATH::rcurveline (env, param);
315
35.0k
  process_post_path (op, env, param);
316
35.0k
  break;
317
40.8k
      case OpCode_rlinecurve:
318
40.8k
  PATH::rlinecurve (env, param);
319
40.8k
  process_post_path (op, env, param);
320
40.8k
  break;
321
15.4k
      case OpCode_vvcurveto:
322
15.4k
  PATH::vvcurveto (env, param);
323
15.4k
  process_post_path (op, env, param);
324
15.4k
  break;
325
20.0k
      case OpCode_hhcurveto:
326
20.0k
  PATH::hhcurveto (env, param);
327
20.0k
  process_post_path (op, env, param);
328
20.0k
  break;
329
40.7k
      case OpCode_vhcurveto:
330
40.7k
  PATH::vhcurveto (env, param);
331
40.7k
  process_post_path (op, env, param);
332
40.7k
  break;
333
24.0k
      case OpCode_hvcurveto:
334
24.0k
  PATH::hvcurveto (env, param);
335
24.0k
  process_post_path (op, env, param);
336
24.0k
  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
1.96k
      case OpCode_flex:
344
1.96k
  PATH::flex (env, param);
345
1.96k
  OPSET::process_post_flex (op, env, param);
346
1.96k
  break;
347
348
1.82k
      case OpCode_hflex1:
349
1.82k
  PATH::hflex1 (env, param);
350
1.82k
  OPSET::process_post_flex (op, env, param);
351
1.82k
  break;
352
353
3.43k
      case OpCode_flex1:
354
3.43k
  PATH::flex1 (env, param);
355
3.43k
  OPSET::process_post_flex (op, env, param);
356
3.43k
  break;
357
358
4.21G
      default:
359
4.21G
  SUPER::process_op (op, env);
360
4.21G
  break;
361
4.22G
    }
362
4.22G
  }
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
2.76G
  {
244
2.76G
    switch (op) {
245
246
2.70k
      case OpCode_return:
247
2.70k
  env.return_from_subr ();
248
2.70k
  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
104k
      case OpCode_fixedcs:
256
104k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
104k
  break;
258
259
7.15k
      case OpCode_callsubr:
260
7.15k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
7.15k
  break;
262
263
8.79k
      case OpCode_callgsubr:
264
8.79k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
8.79k
  break;
266
267
40.3k
      case OpCode_hstem:
268
46.9k
      case OpCode_hstemhm:
269
46.9k
  OPSET::check_width (op, env, param);
270
46.9k
  OPSET::process_hstem (op, env, param);
271
46.9k
  break;
272
18.4k
      case OpCode_vstem:
273
23.4k
      case OpCode_vstemhm:
274
23.4k
  OPSET::check_width (op, env, param);
275
23.4k
  OPSET::process_vstem (op, env, param);
276
23.4k
  break;
277
9.54k
      case OpCode_hintmask:
278
22.1k
      case OpCode_cntrmask:
279
22.1k
  OPSET::check_width (op, env, param);
280
22.1k
  OPSET::process_hintmask (op, env, param);
281
22.1k
  break;
282
5.91k
      case OpCode_rmoveto:
283
5.91k
  OPSET::check_width (op, env, param);
284
5.91k
  PATH::rmoveto (env, param);
285
5.91k
  OPSET::process_post_move (op, env, param);
286
5.91k
  break;
287
9.54k
      case OpCode_hmoveto:
288
9.54k
  OPSET::check_width (op, env, param);
289
9.54k
  PATH::hmoveto (env, param);
290
9.54k
  OPSET::process_post_move (op, env, param);
291
9.54k
  break;
292
23.0k
      case OpCode_vmoveto:
293
23.0k
  OPSET::check_width (op, env, param);
294
23.0k
  PATH::vmoveto (env, param);
295
23.0k
  OPSET::process_post_move (op, env, param);
296
23.0k
  break;
297
11.6k
      case OpCode_rlineto:
298
11.6k
  PATH::rlineto (env, param);
299
11.6k
  process_post_path (op, env, param);
300
11.6k
  break;
301
44.5k
      case OpCode_hlineto:
302
44.5k
  PATH::hlineto (env, param);
303
44.5k
  process_post_path (op, env, param);
304
44.5k
  break;
305
30.4k
      case OpCode_vlineto:
306
30.4k
  PATH::vlineto (env, param);
307
30.4k
  process_post_path (op, env, param);
308
30.4k
  break;
309
17.2k
      case OpCode_rrcurveto:
310
17.2k
  PATH::rrcurveto (env, param);
311
17.2k
  process_post_path (op, env, param);
312
17.2k
  break;
313
8.35k
      case OpCode_rcurveline:
314
8.35k
  PATH::rcurveline (env, param);
315
8.35k
  process_post_path (op, env, param);
316
8.35k
  break;
317
8.43k
      case OpCode_rlinecurve:
318
8.43k
  PATH::rlinecurve (env, param);
319
8.43k
  process_post_path (op, env, param);
320
8.43k
  break;
321
5.23k
      case OpCode_vvcurveto:
322
5.23k
  PATH::vvcurveto (env, param);
323
5.23k
  process_post_path (op, env, param);
324
5.23k
  break;
325
4.31k
      case OpCode_hhcurveto:
326
4.31k
  PATH::hhcurveto (env, param);
327
4.31k
  process_post_path (op, env, param);
328
4.31k
  break;
329
15.5k
      case OpCode_vhcurveto:
330
15.5k
  PATH::vhcurveto (env, param);
331
15.5k
  process_post_path (op, env, param);
332
15.5k
  break;
333
8.18k
      case OpCode_hvcurveto:
334
8.18k
  PATH::hvcurveto (env, param);
335
8.18k
  process_post_path (op, env, param);
336
8.18k
  break;
337
338
272
      case OpCode_hflex:
339
272
  PATH::hflex (env, param);
340
272
  OPSET::process_post_flex (op, env, param);
341
272
  break;
342
343
1.12k
      case OpCode_flex:
344
1.12k
  PATH::flex (env, param);
345
1.12k
  OPSET::process_post_flex (op, env, param);
346
1.12k
  break;
347
348
763
      case OpCode_hflex1:
349
763
  PATH::hflex1 (env, param);
350
763
  OPSET::process_post_flex (op, env, param);
351
763
  break;
352
353
1.82k
      case OpCode_flex1:
354
1.82k
  PATH::flex1 (env, param);
355
1.82k
  OPSET::process_post_flex (op, env, param);
356
1.82k
  break;
357
358
2.76G
      default:
359
2.76G
  SUPER::process_op (op, env);
360
2.76G
  break;
361
2.76G
    }
362
2.76G
  }
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
1.45G
  {
244
1.45G
    switch (op) {
245
246
1.28k
      case OpCode_return:
247
1.28k
  env.return_from_subr ();
248
1.28k
  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
58.4k
      case OpCode_fixedcs:
256
58.4k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
58.4k
  break;
258
259
3.39k
      case OpCode_callsubr:
260
3.39k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
3.39k
  break;
262
263
5.51k
      case OpCode_callgsubr:
264
5.51k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
5.51k
  break;
266
267
22.1k
      case OpCode_hstem:
268
24.2k
      case OpCode_hstemhm:
269
24.2k
  OPSET::check_width (op, env, param);
270
24.2k
  OPSET::process_hstem (op, env, param);
271
24.2k
  break;
272
9.57k
      case OpCode_vstem:
273
12.4k
      case OpCode_vstemhm:
274
12.4k
  OPSET::check_width (op, env, param);
275
12.4k
  OPSET::process_vstem (op, env, param);
276
12.4k
  break;
277
5.16k
      case OpCode_hintmask:
278
12.1k
      case OpCode_cntrmask:
279
12.1k
  OPSET::check_width (op, env, param);
280
12.1k
  OPSET::process_hintmask (op, env, param);
281
12.1k
  break;
282
3.23k
      case OpCode_rmoveto:
283
3.23k
  OPSET::check_width (op, env, param);
284
3.23k
  PATH::rmoveto (env, param);
285
3.23k
  OPSET::process_post_move (op, env, param);
286
3.23k
  break;
287
5.63k
      case OpCode_hmoveto:
288
5.63k
  OPSET::check_width (op, env, param);
289
5.63k
  PATH::hmoveto (env, param);
290
5.63k
  OPSET::process_post_move (op, env, param);
291
5.63k
  break;
292
12.9k
      case OpCode_vmoveto:
293
12.9k
  OPSET::check_width (op, env, param);
294
12.9k
  PATH::vmoveto (env, param);
295
12.9k
  OPSET::process_post_move (op, env, param);
296
12.9k
  break;
297
6.28k
      case OpCode_rlineto:
298
6.28k
  PATH::rlineto (env, param);
299
6.28k
  process_post_path (op, env, param);
300
6.28k
  break;
301
10.5k
      case OpCode_hlineto:
302
10.5k
  PATH::hlineto (env, param);
303
10.5k
  process_post_path (op, env, param);
304
10.5k
  break;
305
18.2k
      case OpCode_vlineto:
306
18.2k
  PATH::vlineto (env, param);
307
18.2k
  process_post_path (op, env, param);
308
18.2k
  break;
309
10.6k
      case OpCode_rrcurveto:
310
10.6k
  PATH::rrcurveto (env, param);
311
10.6k
  process_post_path (op, env, param);
312
10.6k
  break;
313
5.63k
      case OpCode_rcurveline:
314
5.63k
  PATH::rcurveline (env, param);
315
5.63k
  process_post_path (op, env, param);
316
5.63k
  break;
317
5.36k
      case OpCode_rlinecurve:
318
5.36k
  PATH::rlinecurve (env, param);
319
5.36k
  process_post_path (op, env, param);
320
5.36k
  break;
321
3.27k
      case OpCode_vvcurveto:
322
3.27k
  PATH::vvcurveto (env, param);
323
3.27k
  process_post_path (op, env, param);
324
3.27k
  break;
325
2.50k
      case OpCode_hhcurveto:
326
2.50k
  PATH::hhcurveto (env, param);
327
2.50k
  process_post_path (op, env, param);
328
2.50k
  break;
329
9.24k
      case OpCode_vhcurveto:
330
9.24k
  PATH::vhcurveto (env, param);
331
9.24k
  process_post_path (op, env, param);
332
9.24k
  break;
333
5.28k
      case OpCode_hvcurveto:
334
5.28k
  PATH::hvcurveto (env, param);
335
5.28k
  process_post_path (op, env, param);
336
5.28k
  break;
337
338
142
      case OpCode_hflex:
339
142
  PATH::hflex (env, param);
340
142
  OPSET::process_post_flex (op, env, param);
341
142
  break;
342
343
605
      case OpCode_flex:
344
605
  PATH::flex (env, param);
345
605
  OPSET::process_post_flex (op, env, param);
346
605
  break;
347
348
437
      case OpCode_hflex1:
349
437
  PATH::hflex1 (env, param);
350
437
  OPSET::process_post_flex (op, env, param);
351
437
  break;
352
353
1.17k
      case OpCode_flex1:
354
1.17k
  PATH::flex1 (env, param);
355
1.17k
  OPSET::process_post_flex (op, env, param);
356
1.17k
  break;
357
358
1.45G
      default:
359
1.45G
  SUPER::process_op (op, env);
360
1.45G
  break;
361
1.45G
    }
362
1.45G
  }
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
1.63M
  {
244
1.63M
    switch (op) {
245
246
29.8k
      case OpCode_return:
247
29.8k
  env.return_from_subr ();
248
29.8k
  break;
249
852
      case OpCode_endchar:
250
852
  OPSET::check_width (op, env, param);
251
852
  env.set_endchar (true);
252
852
  OPSET::flush_args_and_op (op, env, param);
253
852
  break;
254
255
63.1k
      case OpCode_fixedcs:
256
63.1k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
63.1k
  break;
258
259
571
      case OpCode_callsubr:
260
571
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
571
  break;
262
263
40.4k
      case OpCode_callgsubr:
264
40.4k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
40.4k
  break;
266
267
51.3k
      case OpCode_hstem:
268
57.9k
      case OpCode_hstemhm:
269
57.9k
  OPSET::check_width (op, env, param);
270
57.9k
  OPSET::process_hstem (op, env, param);
271
57.9k
  break;
272
15.7k
      case OpCode_vstem:
273
16.8k
      case OpCode_vstemhm:
274
16.8k
  OPSET::check_width (op, env, param);
275
16.8k
  OPSET::process_vstem (op, env, param);
276
16.8k
  break;
277
28.8k
      case OpCode_hintmask:
278
36.5k
      case OpCode_cntrmask:
279
36.5k
  OPSET::check_width (op, env, param);
280
36.5k
  OPSET::process_hintmask (op, env, param);
281
36.5k
  break;
282
4.89k
      case OpCode_rmoveto:
283
4.89k
  OPSET::check_width (op, env, param);
284
4.89k
  PATH::rmoveto (env, param);
285
4.89k
  OPSET::process_post_move (op, env, param);
286
4.89k
  break;
287
7.46k
      case OpCode_hmoveto:
288
7.46k
  OPSET::check_width (op, env, param);
289
7.46k
  PATH::hmoveto (env, param);
290
7.46k
  OPSET::process_post_move (op, env, param);
291
7.46k
  break;
292
18.2k
      case OpCode_vmoveto:
293
18.2k
  OPSET::check_width (op, env, param);
294
18.2k
  PATH::vmoveto (env, param);
295
18.2k
  OPSET::process_post_move (op, env, param);
296
18.2k
  break;
297
12.2k
      case OpCode_rlineto:
298
12.2k
  PATH::rlineto (env, param);
299
12.2k
  process_post_path (op, env, param);
300
12.2k
  break;
301
10.3k
      case OpCode_hlineto:
302
10.3k
  PATH::hlineto (env, param);
303
10.3k
  process_post_path (op, env, param);
304
10.3k
  break;
305
21.3k
      case OpCode_vlineto:
306
21.3k
  PATH::vlineto (env, param);
307
21.3k
  process_post_path (op, env, param);
308
21.3k
  break;
309
15.7k
      case OpCode_rrcurveto:
310
15.7k
  PATH::rrcurveto (env, param);
311
15.7k
  process_post_path (op, env, param);
312
15.7k
  break;
313
13.0k
      case OpCode_rcurveline:
314
13.0k
  PATH::rcurveline (env, param);
315
13.0k
  process_post_path (op, env, param);
316
13.0k
  break;
317
15.2k
      case OpCode_rlinecurve:
318
15.2k
  PATH::rlinecurve (env, param);
319
15.2k
  process_post_path (op, env, param);
320
15.2k
  break;
321
3.78k
      case OpCode_vvcurveto:
322
3.78k
  PATH::vvcurveto (env, param);
323
3.78k
  process_post_path (op, env, param);
324
3.78k
  break;
325
7.57k
      case OpCode_hhcurveto:
326
7.57k
  PATH::hhcurveto (env, param);
327
7.57k
  process_post_path (op, env, param);
328
7.57k
  break;
329
9.88k
      case OpCode_vhcurveto:
330
9.88k
  PATH::vhcurveto (env, param);
331
9.88k
  process_post_path (op, env, param);
332
9.88k
  break;
333
6.33k
      case OpCode_hvcurveto:
334
6.33k
  PATH::hvcurveto (env, param);
335
6.33k
  process_post_path (op, env, param);
336
6.33k
  break;
337
338
234
      case OpCode_hflex:
339
234
  PATH::hflex (env, param);
340
234
  OPSET::process_post_flex (op, env, param);
341
234
  break;
342
343
150
      case OpCode_flex:
344
150
  PATH::flex (env, param);
345
150
  OPSET::process_post_flex (op, env, param);
346
150
  break;
347
348
225
      case OpCode_hflex1:
349
225
  PATH::hflex1 (env, param);
350
225
  OPSET::process_post_flex (op, env, param);
351
225
  break;
352
353
269
      case OpCode_flex1:
354
269
  PATH::flex1 (env, param);
355
269
  OPSET::process_post_flex (op, env, param);
356
269
  break;
357
358
1.24M
      default:
359
1.24M
  SUPER::process_op (op, env);
360
1.24M
  break;
361
1.63M
    }
362
1.63M
  }
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.21M
  {
244
1.21M
    switch (op) {
245
246
21.8k
      case OpCode_return:
247
21.8k
  env.return_from_subr ();
248
21.8k
  break;
249
647
      case OpCode_endchar:
250
647
  OPSET::check_width (op, env, param);
251
647
  env.set_endchar (true);
252
647
  OPSET::flush_args_and_op (op, env, param);
253
647
  break;
254
255
47.3k
      case OpCode_fixedcs:
256
47.3k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
47.3k
  break;
258
259
1.27k
      case OpCode_callsubr:
260
1.27k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
1.27k
  break;
262
263
27.3k
      case OpCode_callgsubr:
264
27.3k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
27.3k
  break;
266
267
37.9k
      case OpCode_hstem:
268
41.1k
      case OpCode_hstemhm:
269
41.1k
  OPSET::check_width (op, env, param);
270
41.1k
  OPSET::process_hstem (op, env, param);
271
41.1k
  break;
272
9.94k
      case OpCode_vstem:
273
10.6k
      case OpCode_vstemhm:
274
10.6k
  OPSET::check_width (op, env, param);
275
10.6k
  OPSET::process_vstem (op, env, param);
276
10.6k
  break;
277
21.3k
      case OpCode_hintmask:
278
27.0k
      case OpCode_cntrmask:
279
27.0k
  OPSET::check_width (op, env, param);
280
27.0k
  OPSET::process_hintmask (op, env, param);
281
27.0k
  break;
282
3.96k
      case OpCode_rmoveto:
283
3.96k
  OPSET::check_width (op, env, param);
284
3.96k
  PATH::rmoveto (env, param);
285
3.96k
  OPSET::process_post_move (op, env, param);
286
3.96k
  break;
287
5.36k
      case OpCode_hmoveto:
288
5.36k
  OPSET::check_width (op, env, param);
289
5.36k
  PATH::hmoveto (env, param);
290
5.36k
  OPSET::process_post_move (op, env, param);
291
5.36k
  break;
292
12.1k
      case OpCode_vmoveto:
293
12.1k
  OPSET::check_width (op, env, param);
294
12.1k
  PATH::vmoveto (env, param);
295
12.1k
  OPSET::process_post_move (op, env, param);
296
12.1k
  break;
297
9.25k
      case OpCode_rlineto:
298
9.25k
  PATH::rlineto (env, param);
299
9.25k
  process_post_path (op, env, param);
300
9.25k
  break;
301
7.92k
      case OpCode_hlineto:
302
7.92k
  PATH::hlineto (env, param);
303
7.92k
  process_post_path (op, env, param);
304
7.92k
  break;
305
15.8k
      case OpCode_vlineto:
306
15.8k
  PATH::vlineto (env, param);
307
15.8k
  process_post_path (op, env, param);
308
15.8k
  break;
309
13.2k
      case OpCode_rrcurveto:
310
13.2k
  PATH::rrcurveto (env, param);
311
13.2k
  process_post_path (op, env, param);
312
13.2k
  break;
313
8.00k
      case OpCode_rcurveline:
314
8.00k
  PATH::rcurveline (env, param);
315
8.00k
  process_post_path (op, env, param);
316
8.00k
  break;
317
11.8k
      case OpCode_rlinecurve:
318
11.8k
  PATH::rlinecurve (env, param);
319
11.8k
  process_post_path (op, env, param);
320
11.8k
  break;
321
3.16k
      case OpCode_vvcurveto:
322
3.16k
  PATH::vvcurveto (env, param);
323
3.16k
  process_post_path (op, env, param);
324
3.16k
  break;
325
5.64k
      case OpCode_hhcurveto:
326
5.64k
  PATH::hhcurveto (env, param);
327
5.64k
  process_post_path (op, env, param);
328
5.64k
  break;
329
6.08k
      case OpCode_vhcurveto:
330
6.08k
  PATH::vhcurveto (env, param);
331
6.08k
  process_post_path (op, env, param);
332
6.08k
  break;
333
4.25k
      case OpCode_hvcurveto:
334
4.25k
  PATH::hvcurveto (env, param);
335
4.25k
  process_post_path (op, env, param);
336
4.25k
  break;
337
338
399
      case OpCode_hflex:
339
399
  PATH::hflex (env, param);
340
399
  OPSET::process_post_flex (op, env, param);
341
399
  break;
342
343
88
      case OpCode_flex:
344
88
  PATH::flex (env, param);
345
88
  OPSET::process_post_flex (op, env, param);
346
88
  break;
347
348
398
      case OpCode_hflex1:
349
398
  PATH::hflex1 (env, param);
350
398
  OPSET::process_post_flex (op, env, param);
351
398
  break;
352
353
174
      case OpCode_flex1:
354
174
  PATH::flex1 (env, param);
355
174
  OPSET::process_post_flex (op, env, param);
356
174
  break;
357
358
934k
      default:
359
934k
  SUPER::process_op (op, env);
360
934k
  break;
361
1.21M
    }
362
1.21M
  }
363
364
  static void process_hstem (op_code_t op, ENV &env, PARAM& param)
365
170k
  {
366
170k
    env.hstem_count += env.argStack.get_count () / 2;
367
170k
    OPSET::flush_args_and_op (op, env, param);
368
170k
  }
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
46.9k
  {
366
46.9k
    env.hstem_count += env.argStack.get_count () / 2;
367
46.9k
    OPSET::flush_args_and_op (op, env, param);
368
46.9k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_hstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
365
24.2k
  {
366
24.2k
    env.hstem_count += env.argStack.get_count () / 2;
367
24.2k
    OPSET::flush_args_and_op (op, env, param);
368
24.2k
  }
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
57.9k
  {
366
57.9k
    env.hstem_count += env.argStack.get_count () / 2;
367
57.9k
    OPSET::flush_args_and_op (op, env, param);
368
57.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>::process_hstem(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
365
41.1k
  {
366
41.1k
    env.hstem_count += env.argStack.get_count () / 2;
367
41.1k
    OPSET::flush_args_and_op (op, env, param);
368
41.1k
  }
369
370
  static void process_vstem (op_code_t op, ENV &env, PARAM& param)
371
63.4k
  {
372
63.4k
    env.vstem_count += env.argStack.get_count () / 2;
373
63.4k
    OPSET::flush_args_and_op (op, env, param);
374
63.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_vstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
371
23.4k
  {
372
23.4k
    env.vstem_count += env.argStack.get_count () / 2;
373
23.4k
    OPSET::flush_args_and_op (op, env, param);
374
23.4k
  }
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
12.4k
  {
372
12.4k
    env.vstem_count += env.argStack.get_count () / 2;
373
12.4k
    OPSET::flush_args_and_op (op, env, param);
374
12.4k
  }
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
16.8k
  {
372
16.8k
    env.vstem_count += env.argStack.get_count () / 2;
373
16.8k
    OPSET::flush_args_and_op (op, env, param);
374
16.8k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_vstem(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
371
10.6k
  {
372
10.6k
    env.vstem_count += env.argStack.get_count () / 2;
373
10.6k
    OPSET::flush_args_and_op (op, env, param);
374
10.6k
  }
375
376
  static void process_hintmask (op_code_t op, ENV &env, PARAM& param)
377
97.8k
  {
378
97.8k
    env.determine_hintmask_size ();
379
97.8k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
96.4k
    {
381
96.4k
      OPSET::flush_hintmask (op, env, param);
382
96.4k
      env.str_ref.inc (env.hintmask_size);
383
96.4k
    }
384
97.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
22.1k
  {
378
22.1k
    env.determine_hintmask_size ();
379
22.1k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
21.6k
    {
381
21.6k
      OPSET::flush_hintmask (op, env, param);
382
21.6k
      env.str_ref.inc (env.hintmask_size);
383
21.6k
    }
384
22.1k
  }
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
12.1k
  {
378
12.1k
    env.determine_hintmask_size ();
379
12.1k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
11.9k
    {
381
11.9k
      OPSET::flush_hintmask (op, env, param);
382
11.9k
      env.str_ref.inc (env.hintmask_size);
383
11.9k
    }
384
12.1k
  }
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
36.5k
  {
378
36.5k
    env.determine_hintmask_size ();
379
36.5k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
36.1k
    {
381
36.1k
      OPSET::flush_hintmask (op, env, param);
382
36.1k
      env.str_ref.inc (env.hintmask_size);
383
36.1k
    }
384
36.5k
  }
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
27.0k
  {
378
27.0k
    env.determine_hintmask_size ();
379
27.0k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
26.7k
    {
381
26.7k
      OPSET::flush_hintmask (op, env, param);
382
26.7k
      env.str_ref.inc (env.hintmask_size);
383
26.7k
    }
384
27.0k
  }
385
386
  static void process_post_flex (op_code_t op, ENV &env, PARAM& param)
387
8.27k
  {
388
8.27k
    OPSET::flush_args_and_op (op, env, param);
389
8.27k
  }
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
3.97k
  {
388
3.97k
    OPSET::flush_args_and_op (op, env, param);
389
3.97k
  }
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
2.35k
  {
388
2.35k
    OPSET::flush_args_and_op (op, env, param);
389
2.35k
  }
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
878
  {
388
878
    OPSET::flush_args_and_op (op, env, param);
389
878
  }
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
1.05k
  {
388
1.05k
    OPSET::flush_args_and_op (op, env, param);
389
1.05k
  }
390
391
  static void check_width (op_code_t op, ENV &env, PARAM& param)
392
243k
  {}
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
142k
  {}
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
100k
  {}
393
394
  static void process_post_move (op_code_t op, ENV &env, PARAM& param)
395
112k
  {
396
112k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
112k
    OPSET::flush_args_and_op (op, env, param);
402
112k
  }
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
38.4k
  {
396
38.4k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
38.4k
    OPSET::flush_args_and_op (op, env, param);
402
38.4k
  }
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
21.8k
  {
396
21.8k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
21.8k
    OPSET::flush_args_and_op (op, env, param);
402
21.8k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_post_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
30.6k
  {
396
30.6k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
30.6k
    OPSET::flush_args_and_op (op, env, param);
402
30.6k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_post_move(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
395
21.4k
  {
396
21.4k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
21.4k
    OPSET::flush_args_and_op (op, env, param);
402
21.4k
  }
403
404
  static void process_post_path (op_code_t op, ENV &env, PARAM& param)
405
431k
  {
406
431k
    OPSET::flush_args_and_op (op, env, param);
407
431k
  }
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
154k
  {
406
154k
    OPSET::flush_args_and_op (op, env, param);
407
154k
  }
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
77.1k
  {
406
77.1k
    OPSET::flush_args_and_op (op, env, param);
407
77.1k
  }
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
115k
  {
406
115k
    OPSET::flush_args_and_op (op, env, param);
407
115k
  }
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
85.3k
  {
406
85.3k
    OPSET::flush_args_and_op (op, env, param);
407
85.3k
  }
408
409
  static void flush_args_and_op (op_code_t op, ENV &env, PARAM& param)
410
941k
  {
411
941k
    OPSET::flush_args (env, param);
412
941k
    OPSET::flush_op (op, env, param);
413
941k
  }
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
335k
  {
411
335k
    OPSET::flush_args (env, param);
412
335k
    OPSET::flush_op (op, env, param);
413
335k
  }
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
159k
  {
411
159k
    OPSET::flush_args (env, param);
412
159k
    OPSET::flush_op (op, env, param);
413
159k
  }
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
258k
  {
411
258k
    OPSET::flush_args (env, param);
412
258k
    OPSET::flush_op (op, env, param);
413
258k
  }
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
187k
  {
411
187k
    OPSET::flush_args (env, param);
412
187k
    OPSET::flush_op (op, env, param);
413
187k
  }
414
415
  static void flush_args (ENV &env, PARAM& param)
416
941k
  {
417
941k
    env.pop_n_args (env.argStack.get_count ());
418
941k
  }
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
335k
  {
417
335k
    env.pop_n_args (env.argStack.get_count ());
418
335k
  }
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
159k
  {
417
159k
    env.pop_n_args (env.argStack.get_count ());
418
159k
  }
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
258k
  {
417
258k
    env.pop_n_args (env.argStack.get_count ());
418
258k
  }
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
187k
  {
417
187k
    env.pop_n_args (env.argStack.get_count ());
418
187k
  }
419
420
  static void flush_op (op_code_t op, ENV &env, PARAM& param)
421
941k
  {
422
941k
  }
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
335k
  {
422
335k
  }
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
159k
  {
422
159k
  }
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
258k
  {
422
258k
  }
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
187k
  {
422
187k
  }
423
424
  static void flush_hintmask (op_code_t op, ENV &env, PARAM& param)
425
96.4k
  {
426
96.4k
    OPSET::flush_args_and_op (op, env, param);
427
96.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>::flush_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
425
21.6k
  {
426
21.6k
    OPSET::flush_args_and_op (op, env, param);
427
21.6k
  }
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
11.9k
  {
426
11.9k
    OPSET::flush_args_and_op (op, env, param);
427
11.9k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::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
36.1k
  {
426
36.1k
    OPSET::flush_args_and_op (op, env, param);
427
36.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>::flush_hintmask(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
425
26.7k
  {
426
26.7k
    OPSET::flush_args_and_op (op, env, param);
427
26.7k
  }
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
18.0k
  {
456
18.0k
    point_t pt1 = env.get_pt ();
457
18.0k
    const number_t &dy = env.pop_arg ();
458
18.0k
    const number_t &dx = env.pop_arg ();
459
18.0k
    pt1.move (dx, dy);
460
18.0k
    PATH::moveto (env, param, pt1);
461
18.0k
  }
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
5.91k
  {
456
5.91k
    point_t pt1 = env.get_pt ();
457
5.91k
    const number_t &dy = env.pop_arg ();
458
5.91k
    const number_t &dx = env.pop_arg ();
459
5.91k
    pt1.move (dx, dy);
460
5.91k
    PATH::moveto (env, param, pt1);
461
5.91k
  }
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
3.23k
  {
456
3.23k
    point_t pt1 = env.get_pt ();
457
3.23k
    const number_t &dy = env.pop_arg ();
458
3.23k
    const number_t &dx = env.pop_arg ();
459
3.23k
    pt1.move (dx, dy);
460
3.23k
    PATH::moveto (env, param, pt1);
461
3.23k
  }
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
4.89k
  {
456
4.89k
    point_t pt1 = env.get_pt ();
457
4.89k
    const number_t &dy = env.pop_arg ();
458
4.89k
    const number_t &dx = env.pop_arg ();
459
4.89k
    pt1.move (dx, dy);
460
4.89k
    PATH::moveto (env, param, pt1);
461
4.89k
  }
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
3.96k
  {
456
3.96k
    point_t pt1 = env.get_pt ();
457
3.96k
    const number_t &dy = env.pop_arg ();
458
3.96k
    const number_t &dx = env.pop_arg ();
459
3.96k
    pt1.move (dx, dy);
460
3.96k
    PATH::moveto (env, param, pt1);
461
3.96k
  }
462
463
  static void hmoveto (ENV &env, PARAM& param)
464
28.0k
  {
465
28.0k
    point_t pt1 = env.get_pt ();
466
28.0k
    pt1.move_x (env.pop_arg ());
467
28.0k
    PATH::moveto (env, param, pt1);
468
28.0k
  }
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
9.54k
  {
465
9.54k
    point_t pt1 = env.get_pt ();
466
9.54k
    pt1.move_x (env.pop_arg ());
467
9.54k
    PATH::moveto (env, param, pt1);
468
9.54k
  }
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
5.63k
  {
465
5.63k
    point_t pt1 = env.get_pt ();
466
5.63k
    pt1.move_x (env.pop_arg ());
467
5.63k
    PATH::moveto (env, param, pt1);
468
5.63k
  }
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
7.46k
  {
465
7.46k
    point_t pt1 = env.get_pt ();
466
7.46k
    pt1.move_x (env.pop_arg ());
467
7.46k
    PATH::moveto (env, param, pt1);
468
7.46k
  }
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
5.36k
  {
465
5.36k
    point_t pt1 = env.get_pt ();
466
5.36k
    pt1.move_x (env.pop_arg ());
467
5.36k
    PATH::moveto (env, param, pt1);
468
5.36k
  }
469
470
  static void vmoveto (ENV &env, PARAM& param)
471
66.4k
  {
472
66.4k
    point_t pt1 = env.get_pt ();
473
66.4k
    pt1.move_y (env.pop_arg ());
474
66.4k
    PATH::moveto (env, param, pt1);
475
66.4k
  }
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
23.0k
  {
472
23.0k
    point_t pt1 = env.get_pt ();
473
23.0k
    pt1.move_y (env.pop_arg ());
474
23.0k
    PATH::moveto (env, param, pt1);
475
23.0k
  }
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
12.9k
  {
472
12.9k
    point_t pt1 = env.get_pt ();
473
12.9k
    pt1.move_y (env.pop_arg ());
474
12.9k
    PATH::moveto (env, param, pt1);
475
12.9k
  }
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
18.2k
  {
472
18.2k
    point_t pt1 = env.get_pt ();
473
18.2k
    pt1.move_y (env.pop_arg ());
474
18.2k
    PATH::moveto (env, param, pt1);
475
18.2k
  }
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
12.1k
  {
472
12.1k
    point_t pt1 = env.get_pt ();
473
12.1k
    pt1.move_y (env.pop_arg ());
474
12.1k
    PATH::moveto (env, param, pt1);
475
12.1k
  }
476
477
  static void rlineto (ENV &env, PARAM& param)
478
39.3k
  {
479
80.0k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
40.6k
    {
481
40.6k
      point_t pt1 = env.get_pt ();
482
40.6k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
40.6k
      PATH::line (env, param, pt1);
484
40.6k
    }
485
39.3k
  }
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
11.6k
  {
479
27.2k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
15.6k
    {
481
15.6k
      point_t pt1 = env.get_pt ();
482
15.6k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
15.6k
      PATH::line (env, param, pt1);
484
15.6k
    }
485
11.6k
  }
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.28k
  {
479
15.0k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
8.79k
    {
481
8.79k
      point_t pt1 = env.get_pt ();
482
8.79k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
8.79k
      PATH::line (env, param, pt1);
484
8.79k
    }
485
6.28k
  }
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
12.2k
  {
479
21.3k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
9.10k
    {
481
9.10k
      point_t pt1 = env.get_pt ();
482
9.10k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
9.10k
      PATH::line (env, param, pt1);
484
9.10k
    }
485
12.2k
  }
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
9.25k
  {
479
16.3k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
7.12k
    {
481
7.12k
      point_t pt1 = env.get_pt ();
482
7.12k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
7.12k
      PATH::line (env, param, pt1);
484
7.12k
    }
485
9.25k
  }
486
487
  static void hlineto (ENV &env, PARAM& param)
488
73.4k
  {
489
73.4k
    point_t pt1;
490
73.4k
    unsigned int i = 0;
491
122k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
49.3k
    {
493
49.3k
      pt1 = env.get_pt ();
494
49.3k
      pt1.move_x (env.eval_arg (i));
495
49.3k
      PATH::line (env, param, pt1);
496
49.3k
      pt1.move_y (env.eval_arg (i+1));
497
49.3k
      PATH::line (env, param, pt1);
498
49.3k
    }
499
73.4k
    if (i < env.argStack.get_count ())
500
46.4k
    {
501
46.4k
      pt1 = env.get_pt ();
502
46.4k
      pt1.move_x (env.eval_arg (i));
503
46.4k
      PATH::line (env, param, pt1);
504
46.4k
    }
505
73.4k
  }
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
44.5k
  {
489
44.5k
    point_t pt1;
490
44.5k
    unsigned int i = 0;
491
67.5k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
22.9k
    {
493
22.9k
      pt1 = env.get_pt ();
494
22.9k
      pt1.move_x (env.eval_arg (i));
495
22.9k
      PATH::line (env, param, pt1);
496
22.9k
      pt1.move_y (env.eval_arg (i+1));
497
22.9k
      PATH::line (env, param, pt1);
498
22.9k
    }
499
44.5k
    if (i < env.argStack.get_count ())
500
35.2k
    {
501
35.2k
      pt1 = env.get_pt ();
502
35.2k
      pt1.move_x (env.eval_arg (i));
503
35.2k
      PATH::line (env, param, pt1);
504
35.2k
    }
505
44.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
10.5k
  {
489
10.5k
    point_t pt1;
490
10.5k
    unsigned int i = 0;
491
24.2k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
13.7k
    {
493
13.7k
      pt1 = env.get_pt ();
494
13.7k
      pt1.move_x (env.eval_arg (i));
495
13.7k
      PATH::line (env, param, pt1);
496
13.7k
      pt1.move_y (env.eval_arg (i+1));
497
13.7k
      PATH::line (env, param, pt1);
498
13.7k
    }
499
10.5k
    if (i < env.argStack.get_count ())
500
5.02k
    {
501
5.02k
      pt1 = env.get_pt ();
502
5.02k
      pt1.move_x (env.eval_arg (i));
503
5.02k
      PATH::line (env, param, pt1);
504
5.02k
    }
505
10.5k
  }
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
10.3k
  {
489
10.3k
    point_t pt1;
490
10.3k
    unsigned int i = 0;
491
17.9k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
7.56k
    {
493
7.56k
      pt1 = env.get_pt ();
494
7.56k
      pt1.move_x (env.eval_arg (i));
495
7.56k
      PATH::line (env, param, pt1);
496
7.56k
      pt1.move_y (env.eval_arg (i+1));
497
7.56k
      PATH::line (env, param, pt1);
498
7.56k
    }
499
10.3k
    if (i < env.argStack.get_count ())
500
3.71k
    {
501
3.71k
      pt1 = env.get_pt ();
502
3.71k
      pt1.move_x (env.eval_arg (i));
503
3.71k
      PATH::line (env, param, pt1);
504
3.71k
    }
505
10.3k
  }
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
7.92k
  {
489
7.92k
    point_t pt1;
490
7.92k
    unsigned int i = 0;
491
13.0k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
5.13k
    {
493
5.13k
      pt1 = env.get_pt ();
494
5.13k
      pt1.move_x (env.eval_arg (i));
495
5.13k
      PATH::line (env, param, pt1);
496
5.13k
      pt1.move_y (env.eval_arg (i+1));
497
5.13k
      PATH::line (env, param, pt1);
498
5.13k
    }
499
7.92k
    if (i < env.argStack.get_count ())
500
2.46k
    {
501
2.46k
      pt1 = env.get_pt ();
502
2.46k
      pt1.move_x (env.eval_arg (i));
503
2.46k
      PATH::line (env, param, pt1);
504
2.46k
    }
505
7.92k
  }
506
507
  static void vlineto (ENV &env, PARAM& param)
508
85.9k
  {
509
85.9k
    point_t pt1;
510
85.9k
    unsigned int i = 0;
511
125k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
39.1k
    {
513
39.1k
      pt1 = env.get_pt ();
514
39.1k
      pt1.move_y (env.eval_arg (i));
515
39.1k
      PATH::line (env, param, pt1);
516
39.1k
      pt1.move_x (env.eval_arg (i+1));
517
39.1k
      PATH::line (env, param, pt1);
518
39.1k
    }
519
85.9k
    if (i < env.argStack.get_count ())
520
30.6k
    {
521
30.6k
      pt1 = env.get_pt ();
522
30.6k
      pt1.move_y (env.eval_arg (i));
523
30.6k
      PATH::line (env, param, pt1);
524
30.6k
    }
525
85.9k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::vlineto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
508
30.4k
  {
509
30.4k
    point_t pt1;
510
30.4k
    unsigned int i = 0;
511
45.4k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
14.9k
    {
513
14.9k
      pt1 = env.get_pt ();
514
14.9k
      pt1.move_y (env.eval_arg (i));
515
14.9k
      PATH::line (env, param, pt1);
516
14.9k
      pt1.move_x (env.eval_arg (i+1));
517
14.9k
      PATH::line (env, param, pt1);
518
14.9k
    }
519
30.4k
    if (i < env.argStack.get_count ())
520
8.55k
    {
521
8.55k
      pt1 = env.get_pt ();
522
8.55k
      pt1.move_y (env.eval_arg (i));
523
8.55k
      PATH::line (env, param, pt1);
524
8.55k
    }
525
30.4k
  }
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
18.2k
  {
509
18.2k
    point_t pt1;
510
18.2k
    unsigned int i = 0;
511
27.3k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
9.11k
    {
513
9.11k
      pt1 = env.get_pt ();
514
9.11k
      pt1.move_y (env.eval_arg (i));
515
9.11k
      PATH::line (env, param, pt1);
516
9.11k
      pt1.move_x (env.eval_arg (i+1));
517
9.11k
      PATH::line (env, param, pt1);
518
9.11k
    }
519
18.2k
    if (i < env.argStack.get_count ())
520
4.76k
    {
521
4.76k
      pt1 = env.get_pt ();
522
4.76k
      pt1.move_y (env.eval_arg (i));
523
4.76k
      PATH::line (env, param, pt1);
524
4.76k
    }
525
18.2k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::vlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
508
21.3k
  {
509
21.3k
    point_t pt1;
510
21.3k
    unsigned int i = 0;
511
29.8k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
8.53k
    {
513
8.53k
      pt1 = env.get_pt ();
514
8.53k
      pt1.move_y (env.eval_arg (i));
515
8.53k
      PATH::line (env, param, pt1);
516
8.53k
      pt1.move_x (env.eval_arg (i+1));
517
8.53k
      PATH::line (env, param, pt1);
518
8.53k
    }
519
21.3k
    if (i < env.argStack.get_count ())
520
9.75k
    {
521
9.75k
      pt1 = env.get_pt ();
522
9.75k
      pt1.move_y (env.eval_arg (i));
523
9.75k
      PATH::line (env, param, pt1);
524
9.75k
    }
525
21.3k
  }
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
15.8k
  {
509
15.8k
    point_t pt1;
510
15.8k
    unsigned int i = 0;
511
22.4k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
6.59k
    {
513
6.59k
      pt1 = env.get_pt ();
514
6.59k
      pt1.move_y (env.eval_arg (i));
515
6.59k
      PATH::line (env, param, pt1);
516
6.59k
      pt1.move_x (env.eval_arg (i+1));
517
6.59k
      PATH::line (env, param, pt1);
518
6.59k
    }
519
15.8k
    if (i < env.argStack.get_count ())
520
7.56k
    {
521
7.56k
      pt1 = env.get_pt ();
522
7.56k
      pt1.move_y (env.eval_arg (i));
523
7.56k
      PATH::line (env, param, pt1);
524
7.56k
    }
525
15.8k
  }
526
527
  static void rrcurveto (ENV &env, PARAM& param)
528
56.8k
  {
529
68.7k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
11.8k
    {
531
11.8k
      point_t pt1 = env.get_pt ();
532
11.8k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
11.8k
      point_t pt2 = pt1;
534
11.8k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
11.8k
      point_t pt3 = pt2;
536
11.8k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
11.8k
      PATH::curve (env, param, pt1, pt2, pt3);
538
11.8k
    }
539
56.8k
  }
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
17.2k
  {
529
21.1k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
3.88k
    {
531
3.88k
      point_t pt1 = env.get_pt ();
532
3.88k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
3.88k
      point_t pt2 = pt1;
534
3.88k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
3.88k
      point_t pt3 = pt2;
536
3.88k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
3.88k
      PATH::curve (env, param, pt1, pt2, pt3);
538
3.88k
    }
539
17.2k
  }
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
10.6k
  {
529
13.0k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
2.36k
    {
531
2.36k
      point_t pt1 = env.get_pt ();
532
2.36k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
2.36k
      point_t pt2 = pt1;
534
2.36k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
2.36k
      point_t pt3 = pt2;
536
2.36k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
2.36k
      PATH::curve (env, param, pt1, pt2, pt3);
538
2.36k
    }
539
10.6k
  }
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
15.7k
  {
529
18.6k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
2.94k
    {
531
2.94k
      point_t pt1 = env.get_pt ();
532
2.94k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
2.94k
      point_t pt2 = pt1;
534
2.94k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
2.94k
      point_t pt3 = pt2;
536
2.94k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
2.94k
      PATH::curve (env, param, pt1, pt2, pt3);
538
2.94k
    }
539
15.7k
  }
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
13.2k
  {
529
15.8k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
2.66k
    {
531
2.66k
      point_t pt1 = env.get_pt ();
532
2.66k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
2.66k
      point_t pt2 = pt1;
534
2.66k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
2.66k
      point_t pt3 = pt2;
536
2.66k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
2.66k
      PATH::curve (env, param, pt1, pt2, pt3);
538
2.66k
    }
539
13.2k
  }
540
541
  static void rcurveline (ENV &env, PARAM& param)
542
35.0k
  {
543
35.0k
    unsigned int arg_count = env.argStack.get_count ();
544
35.0k
    if (unlikely (arg_count < 8))
545
25.3k
      return;
546
547
9.67k
    unsigned int i = 0;
548
9.67k
    unsigned int curve_limit = arg_count - 2;
549
24.0k
    for (; i + 6 <= curve_limit; i += 6)
550
14.3k
    {
551
14.3k
      point_t pt1 = env.get_pt ();
552
14.3k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
14.3k
      point_t pt2 = pt1;
554
14.3k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
14.3k
      point_t pt3 = pt2;
556
14.3k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
14.3k
      PATH::curve (env, param, pt1, pt2, pt3);
558
14.3k
    }
559
560
9.67k
    point_t pt1 = env.get_pt ();
561
9.67k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
9.67k
    PATH::line (env, param, pt1);
563
9.67k
  }
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
8.35k
  {
543
8.35k
    unsigned int arg_count = env.argStack.get_count ();
544
8.35k
    if (unlikely (arg_count < 8))
545
6.47k
      return;
546
547
1.87k
    unsigned int i = 0;
548
1.87k
    unsigned int curve_limit = arg_count - 2;
549
5.07k
    for (; i + 6 <= curve_limit; i += 6)
550
3.19k
    {
551
3.19k
      point_t pt1 = env.get_pt ();
552
3.19k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
3.19k
      point_t pt2 = pt1;
554
3.19k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
3.19k
      point_t pt3 = pt2;
556
3.19k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
3.19k
      PATH::curve (env, param, pt1, pt2, pt3);
558
3.19k
    }
559
560
1.87k
    point_t pt1 = env.get_pt ();
561
1.87k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
1.87k
    PATH::line (env, param, pt1);
563
1.87k
  }
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
5.63k
  {
543
5.63k
    unsigned int arg_count = env.argStack.get_count ();
544
5.63k
    if (unlikely (arg_count < 8))
545
4.34k
      return;
546
547
1.29k
    unsigned int i = 0;
548
1.29k
    unsigned int curve_limit = arg_count - 2;
549
3.54k
    for (; i + 6 <= curve_limit; i += 6)
550
2.25k
    {
551
2.25k
      point_t pt1 = env.get_pt ();
552
2.25k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
2.25k
      point_t pt2 = pt1;
554
2.25k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
2.25k
      point_t pt3 = pt2;
556
2.25k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
2.25k
      PATH::curve (env, param, pt1, pt2, pt3);
558
2.25k
    }
559
560
1.29k
    point_t pt1 = env.get_pt ();
561
1.29k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
1.29k
    PATH::line (env, param, pt1);
563
1.29k
  }
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
13.0k
  {
543
13.0k
    unsigned int arg_count = env.argStack.get_count ();
544
13.0k
    if (unlikely (arg_count < 8))
545
9.41k
      return;
546
547
3.61k
    unsigned int i = 0;
548
3.61k
    unsigned int curve_limit = arg_count - 2;
549
8.54k
    for (; i + 6 <= curve_limit; i += 6)
550
4.93k
    {
551
4.93k
      point_t pt1 = env.get_pt ();
552
4.93k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
4.93k
      point_t pt2 = pt1;
554
4.93k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
4.93k
      point_t pt3 = pt2;
556
4.93k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
4.93k
      PATH::curve (env, param, pt1, pt2, pt3);
558
4.93k
    }
559
560
3.61k
    point_t pt1 = env.get_pt ();
561
3.61k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
3.61k
    PATH::line (env, param, pt1);
563
3.61k
  }
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
8.00k
  {
543
8.00k
    unsigned int arg_count = env.argStack.get_count ();
544
8.00k
    if (unlikely (arg_count < 8))
545
5.10k
      return;
546
547
2.89k
    unsigned int i = 0;
548
2.89k
    unsigned int curve_limit = arg_count - 2;
549
6.86k
    for (; i + 6 <= curve_limit; i += 6)
550
3.96k
    {
551
3.96k
      point_t pt1 = env.get_pt ();
552
3.96k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
3.96k
      point_t pt2 = pt1;
554
3.96k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
3.96k
      point_t pt3 = pt2;
556
3.96k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
3.96k
      PATH::curve (env, param, pt1, pt2, pt3);
558
3.96k
    }
559
560
2.89k
    point_t pt1 = env.get_pt ();
561
2.89k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
2.89k
    PATH::line (env, param, pt1);
563
2.89k
  }
564
565
  static void rlinecurve (ENV &env, PARAM& param)
566
40.8k
  {
567
40.8k
    unsigned int arg_count = env.argStack.get_count ();
568
40.8k
    if (unlikely (arg_count < 8))
569
26.6k
      return;
570
571
14.2k
    unsigned int i = 0;
572
14.2k
    unsigned int line_limit = arg_count - 6;
573
47.8k
    for (; i + 2 <= line_limit; i += 2)
574
33.6k
    {
575
33.6k
      point_t pt1 = env.get_pt ();
576
33.6k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
33.6k
      PATH::line (env, param, pt1);
578
33.6k
    }
579
580
14.2k
    point_t pt1 = env.get_pt ();
581
14.2k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
14.2k
    point_t pt2 = pt1;
583
14.2k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
14.2k
    point_t pt3 = pt2;
585
14.2k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
14.2k
    PATH::curve (env, param, pt1, pt2, pt3);
587
14.2k
  }
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
8.43k
  {
567
8.43k
    unsigned int arg_count = env.argStack.get_count ();
568
8.43k
    if (unlikely (arg_count < 8))
569
5.86k
      return;
570
571
2.57k
    unsigned int i = 0;
572
2.57k
    unsigned int line_limit = arg_count - 6;
573
9.39k
    for (; i + 2 <= line_limit; i += 2)
574
6.82k
    {
575
6.82k
      point_t pt1 = env.get_pt ();
576
6.82k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
6.82k
      PATH::line (env, param, pt1);
578
6.82k
    }
579
580
2.57k
    point_t pt1 = env.get_pt ();
581
2.57k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
2.57k
    point_t pt2 = pt1;
583
2.57k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
2.57k
    point_t pt3 = pt2;
585
2.57k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
2.57k
    PATH::curve (env, param, pt1, pt2, pt3);
587
2.57k
  }
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
5.36k
  {
567
5.36k
    unsigned int arg_count = env.argStack.get_count ();
568
5.36k
    if (unlikely (arg_count < 8))
569
3.85k
      return;
570
571
1.51k
    unsigned int i = 0;
572
1.51k
    unsigned int line_limit = arg_count - 6;
573
5.65k
    for (; i + 2 <= line_limit; i += 2)
574
4.14k
    {
575
4.14k
      point_t pt1 = env.get_pt ();
576
4.14k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
4.14k
      PATH::line (env, param, pt1);
578
4.14k
    }
579
580
1.51k
    point_t pt1 = env.get_pt ();
581
1.51k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
1.51k
    point_t pt2 = pt1;
583
1.51k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
1.51k
    point_t pt3 = pt2;
585
1.51k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
1.51k
    PATH::curve (env, param, pt1, pt2, pt3);
587
1.51k
  }
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
15.2k
  {
567
15.2k
    unsigned int arg_count = env.argStack.get_count ();
568
15.2k
    if (unlikely (arg_count < 8))
569
9.29k
      return;
570
571
5.90k
    unsigned int i = 0;
572
5.90k
    unsigned int line_limit = arg_count - 6;
573
19.3k
    for (; i + 2 <= line_limit; i += 2)
574
13.4k
    {
575
13.4k
      point_t pt1 = env.get_pt ();
576
13.4k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
13.4k
      PATH::line (env, param, pt1);
578
13.4k
    }
579
580
5.90k
    point_t pt1 = env.get_pt ();
581
5.90k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
5.90k
    point_t pt2 = pt1;
583
5.90k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
5.90k
    point_t pt3 = pt2;
585
5.90k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
5.90k
    PATH::curve (env, param, pt1, pt2, pt3);
587
5.90k
  }
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
11.8k
  {
567
11.8k
    unsigned int arg_count = env.argStack.get_count ();
568
11.8k
    if (unlikely (arg_count < 8))
569
7.66k
      return;
570
571
4.21k
    unsigned int i = 0;
572
4.21k
    unsigned int line_limit = arg_count - 6;
573
13.4k
    for (; i + 2 <= line_limit; i += 2)
574
9.23k
    {
575
9.23k
      point_t pt1 = env.get_pt ();
576
9.23k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
9.23k
      PATH::line (env, param, pt1);
578
9.23k
    }
579
580
4.21k
    point_t pt1 = env.get_pt ();
581
4.21k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
4.21k
    point_t pt2 = pt1;
583
4.21k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
4.21k
    point_t pt3 = pt2;
585
4.21k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
4.21k
    PATH::curve (env, param, pt1, pt2, pt3);
587
4.21k
  }
588
589
  static void vvcurveto (ENV &env, PARAM& param)
590
15.4k
  {
591
15.4k
    unsigned int i = 0;
592
15.4k
    point_t pt1 = env.get_pt ();
593
15.4k
    if ((env.argStack.get_count () & 1) != 0)
594
5.22k
      pt1.move_x (env.eval_arg (i++));
595
27.1k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
11.7k
    {
597
11.7k
      pt1.move_y (env.eval_arg (i));
598
11.7k
      point_t pt2 = pt1;
599
11.7k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
11.7k
      point_t pt3 = pt2;
601
11.7k
      pt3.move_y (env.eval_arg (i+3));
602
11.7k
      PATH::curve (env, param, pt1, pt2, pt3);
603
11.7k
      pt1 = env.get_pt ();
604
11.7k
    }
605
15.4k
  }
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
5.23k
  {
591
5.23k
    unsigned int i = 0;
592
5.23k
    point_t pt1 = env.get_pt ();
593
5.23k
    if ((env.argStack.get_count () & 1) != 0)
594
2.16k
      pt1.move_x (env.eval_arg (i++));
595
8.34k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
3.11k
    {
597
3.11k
      pt1.move_y (env.eval_arg (i));
598
3.11k
      point_t pt2 = pt1;
599
3.11k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
3.11k
      point_t pt3 = pt2;
601
3.11k
      pt3.move_y (env.eval_arg (i+3));
602
3.11k
      PATH::curve (env, param, pt1, pt2, pt3);
603
3.11k
      pt1 = env.get_pt ();
604
3.11k
    }
605
5.23k
  }
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.27k
  {
591
3.27k
    unsigned int i = 0;
592
3.27k
    point_t pt1 = env.get_pt ();
593
3.27k
    if ((env.argStack.get_count () & 1) != 0)
594
1.39k
      pt1.move_x (env.eval_arg (i++));
595
5.24k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
1.97k
    {
597
1.97k
      pt1.move_y (env.eval_arg (i));
598
1.97k
      point_t pt2 = pt1;
599
1.97k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
1.97k
      point_t pt3 = pt2;
601
1.97k
      pt3.move_y (env.eval_arg (i+3));
602
1.97k
      PATH::curve (env, param, pt1, pt2, pt3);
603
1.97k
      pt1 = env.get_pt ();
604
1.97k
    }
605
3.27k
  }
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.78k
  {
591
3.78k
    unsigned int i = 0;
592
3.78k
    point_t pt1 = env.get_pt ();
593
3.78k
    if ((env.argStack.get_count () & 1) != 0)
594
728
      pt1.move_x (env.eval_arg (i++));
595
7.32k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
3.54k
    {
597
3.54k
      pt1.move_y (env.eval_arg (i));
598
3.54k
      point_t pt2 = pt1;
599
3.54k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
3.54k
      point_t pt3 = pt2;
601
3.54k
      pt3.move_y (env.eval_arg (i+3));
602
3.54k
      PATH::curve (env, param, pt1, pt2, pt3);
603
3.54k
      pt1 = env.get_pt ();
604
3.54k
    }
605
3.78k
  }
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
3.16k
  {
591
3.16k
    unsigned int i = 0;
592
3.16k
    point_t pt1 = env.get_pt ();
593
3.16k
    if ((env.argStack.get_count () & 1) != 0)
594
937
      pt1.move_x (env.eval_arg (i++));
595
6.24k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
3.08k
    {
597
3.08k
      pt1.move_y (env.eval_arg (i));
598
3.08k
      point_t pt2 = pt1;
599
3.08k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
3.08k
      point_t pt3 = pt2;
601
3.08k
      pt3.move_y (env.eval_arg (i+3));
602
3.08k
      PATH::curve (env, param, pt1, pt2, pt3);
603
3.08k
      pt1 = env.get_pt ();
604
3.08k
    }
605
3.16k
  }
606
607
  static void hhcurveto (ENV &env, PARAM& param)
608
20.0k
  {
609
20.0k
    unsigned int i = 0;
610
20.0k
    point_t pt1 = env.get_pt ();
611
20.0k
    if ((env.argStack.get_count () & 1) != 0)
612
9.35k
      pt1.move_y (env.eval_arg (i++));
613
37.3k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
17.3k
    {
615
17.3k
      pt1.move_x (env.eval_arg (i));
616
17.3k
      point_t pt2 = pt1;
617
17.3k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
17.3k
      point_t pt3 = pt2;
619
17.3k
      pt3.move_x (env.eval_arg (i+3));
620
17.3k
      PATH::curve (env, param, pt1, pt2, pt3);
621
17.3k
      pt1 = env.get_pt ();
622
17.3k
    }
623
20.0k
  }
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
4.31k
  {
609
4.31k
    unsigned int i = 0;
610
4.31k
    point_t pt1 = env.get_pt ();
611
4.31k
    if ((env.argStack.get_count () & 1) != 0)
612
1.33k
      pt1.move_y (env.eval_arg (i++));
613
12.1k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
7.78k
    {
615
7.78k
      pt1.move_x (env.eval_arg (i));
616
7.78k
      point_t pt2 = pt1;
617
7.78k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
7.78k
      point_t pt3 = pt2;
619
7.78k
      pt3.move_x (env.eval_arg (i+3));
620
7.78k
      PATH::curve (env, param, pt1, pt2, pt3);
621
7.78k
      pt1 = env.get_pt ();
622
7.78k
    }
623
4.31k
  }
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
2.50k
  {
609
2.50k
    unsigned int i = 0;
610
2.50k
    point_t pt1 = env.get_pt ();
611
2.50k
    if ((env.argStack.get_count () & 1) != 0)
612
874
      pt1.move_y (env.eval_arg (i++));
613
7.44k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
4.93k
    {
615
4.93k
      pt1.move_x (env.eval_arg (i));
616
4.93k
      point_t pt2 = pt1;
617
4.93k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
4.93k
      point_t pt3 = pt2;
619
4.93k
      pt3.move_x (env.eval_arg (i+3));
620
4.93k
      PATH::curve (env, param, pt1, pt2, pt3);
621
4.93k
      pt1 = env.get_pt ();
622
4.93k
    }
623
2.50k
  }
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
7.57k
  {
609
7.57k
    unsigned int i = 0;
610
7.57k
    point_t pt1 = env.get_pt ();
611
7.57k
    if ((env.argStack.get_count () & 1) != 0)
612
4.11k
      pt1.move_y (env.eval_arg (i++));
613
10.2k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
2.62k
    {
615
2.62k
      pt1.move_x (env.eval_arg (i));
616
2.62k
      point_t pt2 = pt1;
617
2.62k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
2.62k
      point_t pt3 = pt2;
619
2.62k
      pt3.move_x (env.eval_arg (i+3));
620
2.62k
      PATH::curve (env, param, pt1, pt2, pt3);
621
2.62k
      pt1 = env.get_pt ();
622
2.62k
    }
623
7.57k
  }
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
5.64k
  {
609
5.64k
    unsigned int i = 0;
610
5.64k
    point_t pt1 = env.get_pt ();
611
5.64k
    if ((env.argStack.get_count () & 1) != 0)
612
3.02k
      pt1.move_y (env.eval_arg (i++));
613
7.60k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
1.95k
    {
615
1.95k
      pt1.move_x (env.eval_arg (i));
616
1.95k
      point_t pt2 = pt1;
617
1.95k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
1.95k
      point_t pt3 = pt2;
619
1.95k
      pt3.move_x (env.eval_arg (i+3));
620
1.95k
      PATH::curve (env, param, pt1, pt2, pt3);
621
1.95k
      pt1 = env.get_pt ();
622
1.95k
    }
623
5.64k
  }
624
625
  static void vhcurveto (ENV &env, PARAM& param)
626
40.7k
  {
627
40.7k
    point_t pt1, pt2, pt3;
628
40.7k
    unsigned int i = 0;
629
40.7k
    if ((env.argStack.get_count () % 8) >= 4)
630
14.2k
    {
631
14.2k
      point_t pt1 = env.get_pt ();
632
14.2k
      pt1.move_y (env.eval_arg (i));
633
14.2k
      point_t pt2 = pt1;
634
14.2k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
14.2k
      point_t pt3 = pt2;
636
14.2k
      pt3.move_x (env.eval_arg (i+3));
637
14.2k
      i += 4;
638
639
26.8k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
12.5k
      {
641
12.5k
  PATH::curve (env, param, pt1, pt2, pt3);
642
12.5k
  pt1 = env.get_pt ();
643
12.5k
  pt1.move_x (env.eval_arg (i));
644
12.5k
  pt2 = pt1;
645
12.5k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
12.5k
  pt3 = pt2;
647
12.5k
  pt3.move_y (env.eval_arg (i+3));
648
12.5k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
12.5k
  pt1 = pt3;
651
12.5k
  pt1.move_y (env.eval_arg (i+4));
652
12.5k
  pt2 = pt1;
653
12.5k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
12.5k
  pt3 = pt2;
655
12.5k
  pt3.move_x (env.eval_arg (i+7));
656
12.5k
      }
657
14.2k
      if (i < env.argStack.get_count ())
658
8.62k
  pt3.move_y (env.eval_arg (i));
659
14.2k
      PATH::curve (env, param, pt1, pt2, pt3);
660
14.2k
    }
661
26.5k
    else
662
26.5k
    {
663
41.9k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
15.3k
      {
665
15.3k
  pt1 = env.get_pt ();
666
15.3k
  pt1.move_y (env.eval_arg (i));
667
15.3k
  pt2 = pt1;
668
15.3k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
15.3k
  pt3 = pt2;
670
15.3k
  pt3.move_x (env.eval_arg (i+3));
671
15.3k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
15.3k
  pt1 = pt3;
674
15.3k
  pt1.move_x (env.eval_arg (i+4));
675
15.3k
  pt2 = pt1;
676
15.3k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
15.3k
  pt3 = pt2;
678
15.3k
  pt3.move_y (env.eval_arg (i+7));
679
15.3k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
3.50k
    pt3.move_x (env.eval_arg (i+8));
681
15.3k
  PATH::curve (env, param, pt1, pt2, pt3);
682
15.3k
      }
683
26.5k
    }
684
40.7k
  }
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
15.5k
  {
627
15.5k
    point_t pt1, pt2, pt3;
628
15.5k
    unsigned int i = 0;
629
15.5k
    if ((env.argStack.get_count () % 8) >= 4)
630
3.88k
    {
631
3.88k
      point_t pt1 = env.get_pt ();
632
3.88k
      pt1.move_y (env.eval_arg (i));
633
3.88k
      point_t pt2 = pt1;
634
3.88k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
3.88k
      point_t pt3 = pt2;
636
3.88k
      pt3.move_x (env.eval_arg (i+3));
637
3.88k
      i += 4;
638
639
6.65k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
2.76k
      {
641
2.76k
  PATH::curve (env, param, pt1, pt2, pt3);
642
2.76k
  pt1 = env.get_pt ();
643
2.76k
  pt1.move_x (env.eval_arg (i));
644
2.76k
  pt2 = pt1;
645
2.76k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
2.76k
  pt3 = pt2;
647
2.76k
  pt3.move_y (env.eval_arg (i+3));
648
2.76k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
2.76k
  pt1 = pt3;
651
2.76k
  pt1.move_y (env.eval_arg (i+4));
652
2.76k
  pt2 = pt1;
653
2.76k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
2.76k
  pt3 = pt2;
655
2.76k
  pt3.move_x (env.eval_arg (i+7));
656
2.76k
      }
657
3.88k
      if (i < env.argStack.get_count ())
658
1.58k
  pt3.move_y (env.eval_arg (i));
659
3.88k
      PATH::curve (env, param, pt1, pt2, pt3);
660
3.88k
    }
661
11.7k
    else
662
11.7k
    {
663
15.6k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
3.95k
      {
665
3.95k
  pt1 = env.get_pt ();
666
3.95k
  pt1.move_y (env.eval_arg (i));
667
3.95k
  pt2 = pt1;
668
3.95k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
3.95k
  pt3 = pt2;
670
3.95k
  pt3.move_x (env.eval_arg (i+3));
671
3.95k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
3.95k
  pt1 = pt3;
674
3.95k
  pt1.move_x (env.eval_arg (i+4));
675
3.95k
  pt2 = pt1;
676
3.95k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
3.95k
  pt3 = pt2;
678
3.95k
  pt3.move_y (env.eval_arg (i+7));
679
3.95k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
1.33k
    pt3.move_x (env.eval_arg (i+8));
681
3.95k
  PATH::curve (env, param, pt1, pt2, pt3);
682
3.95k
      }
683
11.7k
    }
684
15.5k
  }
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
9.24k
  {
627
9.24k
    point_t pt1, pt2, pt3;
628
9.24k
    unsigned int i = 0;
629
9.24k
    if ((env.argStack.get_count () % 8) >= 4)
630
2.45k
    {
631
2.45k
      point_t pt1 = env.get_pt ();
632
2.45k
      pt1.move_y (env.eval_arg (i));
633
2.45k
      point_t pt2 = pt1;
634
2.45k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
2.45k
      point_t pt3 = pt2;
636
2.45k
      pt3.move_x (env.eval_arg (i+3));
637
2.45k
      i += 4;
638
639
4.10k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
1.65k
      {
641
1.65k
  PATH::curve (env, param, pt1, pt2, pt3);
642
1.65k
  pt1 = env.get_pt ();
643
1.65k
  pt1.move_x (env.eval_arg (i));
644
1.65k
  pt2 = pt1;
645
1.65k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
1.65k
  pt3 = pt2;
647
1.65k
  pt3.move_y (env.eval_arg (i+3));
648
1.65k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
1.65k
  pt1 = pt3;
651
1.65k
  pt1.move_y (env.eval_arg (i+4));
652
1.65k
  pt2 = pt1;
653
1.65k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
1.65k
  pt3 = pt2;
655
1.65k
  pt3.move_x (env.eval_arg (i+7));
656
1.65k
      }
657
2.45k
      if (i < env.argStack.get_count ())
658
1.03k
  pt3.move_y (env.eval_arg (i));
659
2.45k
      PATH::curve (env, param, pt1, pt2, pt3);
660
2.45k
    }
661
6.79k
    else
662
6.79k
    {
663
9.38k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
2.58k
      {
665
2.58k
  pt1 = env.get_pt ();
666
2.58k
  pt1.move_y (env.eval_arg (i));
667
2.58k
  pt2 = pt1;
668
2.58k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
2.58k
  pt3 = pt2;
670
2.58k
  pt3.move_x (env.eval_arg (i+3));
671
2.58k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
2.58k
  pt1 = pt3;
674
2.58k
  pt1.move_x (env.eval_arg (i+4));
675
2.58k
  pt2 = pt1;
676
2.58k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
2.58k
  pt3 = pt2;
678
2.58k
  pt3.move_y (env.eval_arg (i+7));
679
2.58k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
837
    pt3.move_x (env.eval_arg (i+8));
681
2.58k
  PATH::curve (env, param, pt1, pt2, pt3);
682
2.58k
      }
683
6.79k
    }
684
9.24k
  }
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
9.88k
  {
627
9.88k
    point_t pt1, pt2, pt3;
628
9.88k
    unsigned int i = 0;
629
9.88k
    if ((env.argStack.get_count () % 8) >= 4)
630
4.73k
    {
631
4.73k
      point_t pt1 = env.get_pt ();
632
4.73k
      pt1.move_y (env.eval_arg (i));
633
4.73k
      point_t pt2 = pt1;
634
4.73k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
4.73k
      point_t pt3 = pt2;
636
4.73k
      pt3.move_x (env.eval_arg (i+3));
637
4.73k
      i += 4;
638
639
10.0k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
5.27k
      {
641
5.27k
  PATH::curve (env, param, pt1, pt2, pt3);
642
5.27k
  pt1 = env.get_pt ();
643
5.27k
  pt1.move_x (env.eval_arg (i));
644
5.27k
  pt2 = pt1;
645
5.27k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
5.27k
  pt3 = pt2;
647
5.27k
  pt3.move_y (env.eval_arg (i+3));
648
5.27k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
5.27k
  pt1 = pt3;
651
5.27k
  pt1.move_y (env.eval_arg (i+4));
652
5.27k
  pt2 = pt1;
653
5.27k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
5.27k
  pt3 = pt2;
655
5.27k
  pt3.move_x (env.eval_arg (i+7));
656
5.27k
      }
657
4.73k
      if (i < env.argStack.get_count ())
658
3.58k
  pt3.move_y (env.eval_arg (i));
659
4.73k
      PATH::curve (env, param, pt1, pt2, pt3);
660
4.73k
    }
661
5.14k
    else
662
5.14k
    {
663
10.8k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
5.71k
      {
665
5.71k
  pt1 = env.get_pt ();
666
5.71k
  pt1.move_y (env.eval_arg (i));
667
5.71k
  pt2 = pt1;
668
5.71k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
5.71k
  pt3 = pt2;
670
5.71k
  pt3.move_x (env.eval_arg (i+3));
671
5.71k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
5.71k
  pt1 = pt3;
674
5.71k
  pt1.move_x (env.eval_arg (i+4));
675
5.71k
  pt2 = pt1;
676
5.71k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
5.71k
  pt3 = pt2;
678
5.71k
  pt3.move_y (env.eval_arg (i+7));
679
5.71k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
848
    pt3.move_x (env.eval_arg (i+8));
681
5.71k
  PATH::curve (env, param, pt1, pt2, pt3);
682
5.71k
      }
683
5.14k
    }
684
9.88k
  }
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
6.08k
  {
627
6.08k
    point_t pt1, pt2, pt3;
628
6.08k
    unsigned int i = 0;
629
6.08k
    if ((env.argStack.get_count () % 8) >= 4)
630
3.20k
    {
631
3.20k
      point_t pt1 = env.get_pt ();
632
3.20k
      pt1.move_y (env.eval_arg (i));
633
3.20k
      point_t pt2 = pt1;
634
3.20k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
3.20k
      point_t pt3 = pt2;
636
3.20k
      pt3.move_x (env.eval_arg (i+3));
637
3.20k
      i += 4;
638
639
6.06k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
2.86k
      {
641
2.86k
  PATH::curve (env, param, pt1, pt2, pt3);
642
2.86k
  pt1 = env.get_pt ();
643
2.86k
  pt1.move_x (env.eval_arg (i));
644
2.86k
  pt2 = pt1;
645
2.86k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
2.86k
  pt3 = pt2;
647
2.86k
  pt3.move_y (env.eval_arg (i+3));
648
2.86k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
2.86k
  pt1 = pt3;
651
2.86k
  pt1.move_y (env.eval_arg (i+4));
652
2.86k
  pt2 = pt1;
653
2.86k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
2.86k
  pt3 = pt2;
655
2.86k
  pt3.move_x (env.eval_arg (i+7));
656
2.86k
      }
657
3.20k
      if (i < env.argStack.get_count ())
658
2.42k
  pt3.move_y (env.eval_arg (i));
659
3.20k
      PATH::curve (env, param, pt1, pt2, pt3);
660
3.20k
    }
661
2.88k
    else
662
2.88k
    {
663
6.01k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
3.13k
      {
665
3.13k
  pt1 = env.get_pt ();
666
3.13k
  pt1.move_y (env.eval_arg (i));
667
3.13k
  pt2 = pt1;
668
3.13k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
3.13k
  pt3 = pt2;
670
3.13k
  pt3.move_x (env.eval_arg (i+3));
671
3.13k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
3.13k
  pt1 = pt3;
674
3.13k
  pt1.move_x (env.eval_arg (i+4));
675
3.13k
  pt2 = pt1;
676
3.13k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
3.13k
  pt3 = pt2;
678
3.13k
  pt3.move_y (env.eval_arg (i+7));
679
3.13k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
486
    pt3.move_x (env.eval_arg (i+8));
681
3.13k
  PATH::curve (env, param, pt1, pt2, pt3);
682
3.13k
      }
683
2.88k
    }
684
6.08k
  }
685
686
  static void hvcurveto (ENV &env, PARAM& param)
687
24.0k
  {
688
24.0k
    point_t pt1, pt2, pt3;
689
24.0k
    unsigned int i = 0;
690
24.0k
    if ((env.argStack.get_count () % 8) >= 4)
691
11.2k
    {
692
11.2k
      point_t pt1 = env.get_pt ();
693
11.2k
      pt1.move_x (env.eval_arg (i));
694
11.2k
      point_t pt2 = pt1;
695
11.2k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
11.2k
      point_t pt3 = pt2;
697
11.2k
      pt3.move_y (env.eval_arg (i+3));
698
11.2k
      i += 4;
699
700
20.5k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
9.33k
      {
702
9.33k
  PATH::curve (env, param, pt1, pt2, pt3);
703
9.33k
  pt1 = env.get_pt ();
704
9.33k
  pt1.move_y (env.eval_arg (i));
705
9.33k
  pt2 = pt1;
706
9.33k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
9.33k
  pt3 = pt2;
708
9.33k
  pt3.move_x (env.eval_arg (i+3));
709
9.33k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
9.33k
  pt1 = pt3;
712
9.33k
  pt1.move_x (env.eval_arg (i+4));
713
9.33k
  pt2 = pt1;
714
9.33k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
9.33k
  pt3 = pt2;
716
9.33k
  pt3.move_y (env.eval_arg (i+7));
717
9.33k
      }
718
11.2k
      if (i < env.argStack.get_count ())
719
7.62k
  pt3.move_x (env.eval_arg (i));
720
11.2k
      PATH::curve (env, param, pt1, pt2, pt3);
721
11.2k
    }
722
12.8k
    else
723
12.8k
    {
724
21.3k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
8.50k
      {
726
8.50k
  pt1 = env.get_pt ();
727
8.50k
  pt1.move_x (env.eval_arg (i));
728
8.50k
  pt2 = pt1;
729
8.50k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
8.50k
  pt3 = pt2;
731
8.50k
  pt3.move_y (env.eval_arg (i+3));
732
8.50k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
8.50k
  pt1 = pt3;
735
8.50k
  pt1.move_y (env.eval_arg (i+4));
736
8.50k
  pt2 = pt1;
737
8.50k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
8.50k
  pt3 = pt2;
739
8.50k
  pt3.move_x (env.eval_arg (i+7));
740
8.50k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
2.13k
    pt3.move_y (env.eval_arg (i+8));
742
8.50k
  PATH::curve (env, param, pt1, pt2, pt3);
743
8.50k
      }
744
12.8k
    }
745
24.0k
  }
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
8.18k
  {
688
8.18k
    point_t pt1, pt2, pt3;
689
8.18k
    unsigned int i = 0;
690
8.18k
    if ((env.argStack.get_count () % 8) >= 4)
691
3.19k
    {
692
3.19k
      point_t pt1 = env.get_pt ();
693
3.19k
      pt1.move_x (env.eval_arg (i));
694
3.19k
      point_t pt2 = pt1;
695
3.19k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
3.19k
      point_t pt3 = pt2;
697
3.19k
      pt3.move_y (env.eval_arg (i+3));
698
3.19k
      i += 4;
699
700
6.40k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
3.20k
      {
702
3.20k
  PATH::curve (env, param, pt1, pt2, pt3);
703
3.20k
  pt1 = env.get_pt ();
704
3.20k
  pt1.move_y (env.eval_arg (i));
705
3.20k
  pt2 = pt1;
706
3.20k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
3.20k
  pt3 = pt2;
708
3.20k
  pt3.move_x (env.eval_arg (i+3));
709
3.20k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
3.20k
  pt1 = pt3;
712
3.20k
  pt1.move_x (env.eval_arg (i+4));
713
3.20k
  pt2 = pt1;
714
3.20k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
3.20k
  pt3 = pt2;
716
3.20k
  pt3.move_y (env.eval_arg (i+7));
717
3.20k
      }
718
3.19k
      if (i < env.argStack.get_count ())
719
2.18k
  pt3.move_x (env.eval_arg (i));
720
3.19k
      PATH::curve (env, param, pt1, pt2, pt3);
721
3.19k
    }
722
4.98k
    else
723
4.98k
    {
724
7.78k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
2.79k
      {
726
2.79k
  pt1 = env.get_pt ();
727
2.79k
  pt1.move_x (env.eval_arg (i));
728
2.79k
  pt2 = pt1;
729
2.79k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
2.79k
  pt3 = pt2;
731
2.79k
  pt3.move_y (env.eval_arg (i+3));
732
2.79k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
2.79k
  pt1 = pt3;
735
2.79k
  pt1.move_y (env.eval_arg (i+4));
736
2.79k
  pt2 = pt1;
737
2.79k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
2.79k
  pt3 = pt2;
739
2.79k
  pt3.move_x (env.eval_arg (i+7));
740
2.79k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
756
    pt3.move_y (env.eval_arg (i+8));
742
2.79k
  PATH::curve (env, param, pt1, pt2, pt3);
743
2.79k
      }
744
4.98k
    }
745
8.18k
  }
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
5.28k
  {
688
5.28k
    point_t pt1, pt2, pt3;
689
5.28k
    unsigned int i = 0;
690
5.28k
    if ((env.argStack.get_count () % 8) >= 4)
691
1.99k
    {
692
1.99k
      point_t pt1 = env.get_pt ();
693
1.99k
      pt1.move_x (env.eval_arg (i));
694
1.99k
      point_t pt2 = pt1;
695
1.99k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
1.99k
      point_t pt3 = pt2;
697
1.99k
      pt3.move_y (env.eval_arg (i+3));
698
1.99k
      i += 4;
699
700
4.10k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
2.11k
      {
702
2.11k
  PATH::curve (env, param, pt1, pt2, pt3);
703
2.11k
  pt1 = env.get_pt ();
704
2.11k
  pt1.move_y (env.eval_arg (i));
705
2.11k
  pt2 = pt1;
706
2.11k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
2.11k
  pt3 = pt2;
708
2.11k
  pt3.move_x (env.eval_arg (i+3));
709
2.11k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
2.11k
  pt1 = pt3;
712
2.11k
  pt1.move_x (env.eval_arg (i+4));
713
2.11k
  pt2 = pt1;
714
2.11k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
2.11k
  pt3 = pt2;
716
2.11k
  pt3.move_y (env.eval_arg (i+7));
717
2.11k
      }
718
1.99k
      if (i < env.argStack.get_count ())
719
1.34k
  pt3.move_x (env.eval_arg (i));
720
1.99k
      PATH::curve (env, param, pt1, pt2, pt3);
721
1.99k
    }
722
3.29k
    else
723
3.29k
    {
724
5.09k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
1.79k
      {
726
1.79k
  pt1 = env.get_pt ();
727
1.79k
  pt1.move_x (env.eval_arg (i));
728
1.79k
  pt2 = pt1;
729
1.79k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
1.79k
  pt3 = pt2;
731
1.79k
  pt3.move_y (env.eval_arg (i+3));
732
1.79k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
1.79k
  pt1 = pt3;
735
1.79k
  pt1.move_y (env.eval_arg (i+4));
736
1.79k
  pt2 = pt1;
737
1.79k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
1.79k
  pt3 = pt2;
739
1.79k
  pt3.move_x (env.eval_arg (i+7));
740
1.79k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
484
    pt3.move_y (env.eval_arg (i+8));
742
1.79k
  PATH::curve (env, param, pt1, pt2, pt3);
743
1.79k
      }
744
3.29k
    }
745
5.28k
  }
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
6.33k
  {
688
6.33k
    point_t pt1, pt2, pt3;
689
6.33k
    unsigned int i = 0;
690
6.33k
    if ((env.argStack.get_count () % 8) >= 4)
691
3.58k
    {
692
3.58k
      point_t pt1 = env.get_pt ();
693
3.58k
      pt1.move_x (env.eval_arg (i));
694
3.58k
      point_t pt2 = pt1;
695
3.58k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
3.58k
      point_t pt3 = pt2;
697
3.58k
      pt3.move_y (env.eval_arg (i+3));
698
3.58k
      i += 4;
699
700
5.97k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
2.38k
      {
702
2.38k
  PATH::curve (env, param, pt1, pt2, pt3);
703
2.38k
  pt1 = env.get_pt ();
704
2.38k
  pt1.move_y (env.eval_arg (i));
705
2.38k
  pt2 = pt1;
706
2.38k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
2.38k
  pt3 = pt2;
708
2.38k
  pt3.move_x (env.eval_arg (i+3));
709
2.38k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
2.38k
  pt1 = pt3;
712
2.38k
  pt1.move_x (env.eval_arg (i+4));
713
2.38k
  pt2 = pt1;
714
2.38k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
2.38k
  pt3 = pt2;
716
2.38k
  pt3.move_y (env.eval_arg (i+7));
717
2.38k
      }
718
3.58k
      if (i < env.argStack.get_count ())
719
2.42k
  pt3.move_x (env.eval_arg (i));
720
3.58k
      PATH::curve (env, param, pt1, pt2, pt3);
721
3.58k
    }
722
2.74k
    else
723
2.74k
    {
724
5.06k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
2.31k
      {
726
2.31k
  pt1 = env.get_pt ();
727
2.31k
  pt1.move_x (env.eval_arg (i));
728
2.31k
  pt2 = pt1;
729
2.31k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
2.31k
  pt3 = pt2;
731
2.31k
  pt3.move_y (env.eval_arg (i+3));
732
2.31k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
2.31k
  pt1 = pt3;
735
2.31k
  pt1.move_y (env.eval_arg (i+4));
736
2.31k
  pt2 = pt1;
737
2.31k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
2.31k
  pt3 = pt2;
739
2.31k
  pt3.move_x (env.eval_arg (i+7));
740
2.31k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
531
    pt3.move_y (env.eval_arg (i+8));
742
2.31k
  PATH::curve (env, param, pt1, pt2, pt3);
743
2.31k
      }
744
2.74k
    }
745
6.33k
  }
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
4.25k
  {
688
4.25k
    point_t pt1, pt2, pt3;
689
4.25k
    unsigned int i = 0;
690
4.25k
    if ((env.argStack.get_count () % 8) >= 4)
691
2.48k
    {
692
2.48k
      point_t pt1 = env.get_pt ();
693
2.48k
      pt1.move_x (env.eval_arg (i));
694
2.48k
      point_t pt2 = pt1;
695
2.48k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
2.48k
      point_t pt3 = pt2;
697
2.48k
      pt3.move_y (env.eval_arg (i+3));
698
2.48k
      i += 4;
699
700
4.11k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
1.62k
      {
702
1.62k
  PATH::curve (env, param, pt1, pt2, pt3);
703
1.62k
  pt1 = env.get_pt ();
704
1.62k
  pt1.move_y (env.eval_arg (i));
705
1.62k
  pt2 = pt1;
706
1.62k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
1.62k
  pt3 = pt2;
708
1.62k
  pt3.move_x (env.eval_arg (i+3));
709
1.62k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
1.62k
  pt1 = pt3;
712
1.62k
  pt1.move_x (env.eval_arg (i+4));
713
1.62k
  pt2 = pt1;
714
1.62k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
1.62k
  pt3 = pt2;
716
1.62k
  pt3.move_y (env.eval_arg (i+7));
717
1.62k
      }
718
2.48k
      if (i < env.argStack.get_count ())
719
1.67k
  pt3.move_x (env.eval_arg (i));
720
2.48k
      PATH::curve (env, param, pt1, pt2, pt3);
721
2.48k
    }
722
1.77k
    else
723
1.77k
    {
724
3.36k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
1.59k
      {
726
1.59k
  pt1 = env.get_pt ();
727
1.59k
  pt1.move_x (env.eval_arg (i));
728
1.59k
  pt2 = pt1;
729
1.59k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
1.59k
  pt3 = pt2;
731
1.59k
  pt3.move_y (env.eval_arg (i+3));
732
1.59k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
1.59k
  pt1 = pt3;
735
1.59k
  pt1.move_y (env.eval_arg (i+4));
736
1.59k
  pt2 = pt1;
737
1.59k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
1.59k
  pt3 = pt2;
739
1.59k
  pt3.move_x (env.eval_arg (i+7));
740
1.59k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
361
    pt3.move_y (env.eval_arg (i+8));
742
1.59k
  PATH::curve (env, param, pt1, pt2, pt3);
743
1.59k
      }
744
1.77k
    }
745
4.25k
  }
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
382
    {
761
382
      point_t pt1 = env.get_pt ();
762
382
      pt1.move_x (env.eval_arg (0));
763
382
      point_t pt2 = pt1;
764
382
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
382
      point_t pt3 = pt2;
766
382
      pt3.move_x (env.eval_arg (3));
767
382
      point_t pt4 = pt3;
768
382
      pt4.move_x (env.eval_arg (4));
769
382
      point_t pt5 = pt4;
770
382
      pt5.move_x (env.eval_arg (5));
771
382
      pt5.y = pt1.y;
772
382
      point_t pt6 = pt5;
773
382
      pt6.move_x (env.eval_arg (6));
774
775
382
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
382
    }
777
665
    else
778
665
      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
272
  {
759
272
    if (likely (env.argStack.get_count () == 7))
760
44
    {
761
44
      point_t pt1 = env.get_pt ();
762
44
      pt1.move_x (env.eval_arg (0));
763
44
      point_t pt2 = pt1;
764
44
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
44
      point_t pt3 = pt2;
766
44
      pt3.move_x (env.eval_arg (3));
767
44
      point_t pt4 = pt3;
768
44
      pt4.move_x (env.eval_arg (4));
769
44
      point_t pt5 = pt4;
770
44
      pt5.move_x (env.eval_arg (5));
771
44
      pt5.y = pt1.y;
772
44
      point_t pt6 = pt5;
773
44
      pt6.move_x (env.eval_arg (6));
774
775
44
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
44
    }
777
228
    else
778
228
      env.set_error ();
779
272
  }
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
142
  {
759
142
    if (likely (env.argStack.get_count () == 7))
760
25
    {
761
25
      point_t pt1 = env.get_pt ();
762
25
      pt1.move_x (env.eval_arg (0));
763
25
      point_t pt2 = pt1;
764
25
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
25
      point_t pt3 = pt2;
766
25
      pt3.move_x (env.eval_arg (3));
767
25
      point_t pt4 = pt3;
768
25
      pt4.move_x (env.eval_arg (4));
769
25
      point_t pt5 = pt4;
770
25
      pt5.move_x (env.eval_arg (5));
771
25
      pt5.y = pt1.y;
772
25
      point_t pt6 = pt5;
773
25
      pt6.move_x (env.eval_arg (6));
774
775
25
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
25
    }
777
117
    else
778
117
      env.set_error ();
779
142
  }
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
234
  {
759
234
    if (likely (env.argStack.get_count () == 7))
760
194
    {
761
194
      point_t pt1 = env.get_pt ();
762
194
      pt1.move_x (env.eval_arg (0));
763
194
      point_t pt2 = pt1;
764
194
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
194
      point_t pt3 = pt2;
766
194
      pt3.move_x (env.eval_arg (3));
767
194
      point_t pt4 = pt3;
768
194
      pt4.move_x (env.eval_arg (4));
769
194
      point_t pt5 = pt4;
770
194
      pt5.move_x (env.eval_arg (5));
771
194
      pt5.y = pt1.y;
772
194
      point_t pt6 = pt5;
773
194
      pt6.move_x (env.eval_arg (6));
774
775
194
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
194
    }
777
40
    else
778
40
      env.set_error ();
779
234
  }
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
399
  {
759
399
    if (likely (env.argStack.get_count () == 7))
760
119
    {
761
119
      point_t pt1 = env.get_pt ();
762
119
      pt1.move_x (env.eval_arg (0));
763
119
      point_t pt2 = pt1;
764
119
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
119
      point_t pt3 = pt2;
766
119
      pt3.move_x (env.eval_arg (3));
767
119
      point_t pt4 = pt3;
768
119
      pt4.move_x (env.eval_arg (4));
769
119
      point_t pt5 = pt4;
770
119
      pt5.move_x (env.eval_arg (5));
771
119
      pt5.y = pt1.y;
772
119
      point_t pt6 = pt5;
773
119
      pt6.move_x (env.eval_arg (6));
774
775
119
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
119
    }
777
280
    else
778
280
      env.set_error ();
779
399
  }
780
781
  static void flex (ENV &env, PARAM& param)
782
1.96k
  {
783
1.96k
    if (likely (env.argStack.get_count () == 13))
784
787
    {
785
787
      point_t pt1 = env.get_pt ();
786
787
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
787
      point_t pt2 = pt1;
788
787
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
787
      point_t pt3 = pt2;
790
787
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
787
      point_t pt4 = pt3;
792
787
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
787
      point_t pt5 = pt4;
794
787
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
787
      point_t pt6 = pt5;
796
787
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
787
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
787
    }
800
1.17k
    else
801
1.17k
      env.set_error ();
802
1.96k
  }
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
1.12k
  {
783
1.12k
    if (likely (env.argStack.get_count () == 13))
784
422
    {
785
422
      point_t pt1 = env.get_pt ();
786
422
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
422
      point_t pt2 = pt1;
788
422
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
422
      point_t pt3 = pt2;
790
422
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
422
      point_t pt4 = pt3;
792
422
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
422
      point_t pt5 = pt4;
794
422
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
422
      point_t pt6 = pt5;
796
422
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
422
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
422
    }
800
700
    else
801
700
      env.set_error ();
802
1.12k
  }
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
605
  {
783
605
    if (likely (env.argStack.get_count () == 13))
784
248
    {
785
248
      point_t pt1 = env.get_pt ();
786
248
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
248
      point_t pt2 = pt1;
788
248
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
248
      point_t pt3 = pt2;
790
248
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
248
      point_t pt4 = pt3;
792
248
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
248
      point_t pt5 = pt4;
794
248
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
248
      point_t pt6 = pt5;
796
248
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
248
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
248
    }
800
357
    else
801
357
      env.set_error ();
802
605
  }
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
150
  {
783
150
    if (likely (env.argStack.get_count () == 13))
784
74
    {
785
74
      point_t pt1 = env.get_pt ();
786
74
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
74
      point_t pt2 = pt1;
788
74
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
74
      point_t pt3 = pt2;
790
74
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
74
      point_t pt4 = pt3;
792
74
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
74
      point_t pt5 = pt4;
794
74
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
74
      point_t pt6 = pt5;
796
74
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
74
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
74
    }
800
76
    else
801
76
      env.set_error ();
802
150
  }
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
88
  {
783
88
    if (likely (env.argStack.get_count () == 13))
784
43
    {
785
43
      point_t pt1 = env.get_pt ();
786
43
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
43
      point_t pt2 = pt1;
788
43
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
43
      point_t pt3 = pt2;
790
43
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
43
      point_t pt4 = pt3;
792
43
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
43
      point_t pt5 = pt4;
794
43
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
43
      point_t pt6 = pt5;
796
43
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
43
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
43
    }
800
45
    else
801
45
      env.set_error ();
802
88
  }
803
804
  static void hflex1 (ENV &env, PARAM& param)
805
1.82k
  {
806
1.82k
    if (likely (env.argStack.get_count () == 9))
807
825
    {
808
825
      point_t pt1 = env.get_pt ();
809
825
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
825
      point_t pt2 = pt1;
811
825
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
825
      point_t pt3 = pt2;
813
825
      pt3.move_x (env.eval_arg (4));
814
825
      point_t pt4 = pt3;
815
825
      pt4.move_x (env.eval_arg (5));
816
825
      point_t pt5 = pt4;
817
825
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
825
      point_t pt6 = pt5;
819
825
      pt6.move_x (env.eval_arg (8));
820
825
      pt6.y = env.get_pt ().y;
821
822
825
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
825
    }
824
998
    else
825
998
      env.set_error ();
826
1.82k
  }
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
763
  {
806
763
    if (likely (env.argStack.get_count () == 9))
807
361
    {
808
361
      point_t pt1 = env.get_pt ();
809
361
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
361
      point_t pt2 = pt1;
811
361
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
361
      point_t pt3 = pt2;
813
361
      pt3.move_x (env.eval_arg (4));
814
361
      point_t pt4 = pt3;
815
361
      pt4.move_x (env.eval_arg (5));
816
361
      point_t pt5 = pt4;
817
361
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
361
      point_t pt6 = pt5;
819
361
      pt6.move_x (env.eval_arg (8));
820
361
      pt6.y = env.get_pt ().y;
821
822
361
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
361
    }
824
402
    else
825
402
      env.set_error ();
826
763
  }
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
437
  {
806
437
    if (likely (env.argStack.get_count () == 9))
807
231
    {
808
231
      point_t pt1 = env.get_pt ();
809
231
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
231
      point_t pt2 = pt1;
811
231
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
231
      point_t pt3 = pt2;
813
231
      pt3.move_x (env.eval_arg (4));
814
231
      point_t pt4 = pt3;
815
231
      pt4.move_x (env.eval_arg (5));
816
231
      point_t pt5 = pt4;
817
231
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
231
      point_t pt6 = pt5;
819
231
      pt6.move_x (env.eval_arg (8));
820
231
      pt6.y = env.get_pt ().y;
821
822
231
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
231
    }
824
206
    else
825
206
      env.set_error ();
826
437
  }
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
225
  {
806
225
    if (likely (env.argStack.get_count () == 9))
807
144
    {
808
144
      point_t pt1 = env.get_pt ();
809
144
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
144
      point_t pt2 = pt1;
811
144
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
144
      point_t pt3 = pt2;
813
144
      pt3.move_x (env.eval_arg (4));
814
144
      point_t pt4 = pt3;
815
144
      pt4.move_x (env.eval_arg (5));
816
144
      point_t pt5 = pt4;
817
144
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
144
      point_t pt6 = pt5;
819
144
      pt6.move_x (env.eval_arg (8));
820
144
      pt6.y = env.get_pt ().y;
821
822
144
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
144
    }
824
81
    else
825
81
      env.set_error ();
826
225
  }
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
398
  {
806
398
    if (likely (env.argStack.get_count () == 9))
807
89
    {
808
89
      point_t pt1 = env.get_pt ();
809
89
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
89
      point_t pt2 = pt1;
811
89
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
89
      point_t pt3 = pt2;
813
89
      pt3.move_x (env.eval_arg (4));
814
89
      point_t pt4 = pt3;
815
89
      pt4.move_x (env.eval_arg (5));
816
89
      point_t pt5 = pt4;
817
89
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
89
      point_t pt6 = pt5;
819
89
      pt6.move_x (env.eval_arg (8));
820
89
      pt6.y = env.get_pt ().y;
821
822
89
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
89
    }
824
309
    else
825
309
      env.set_error ();
826
398
  }
827
828
  static void flex1 (ENV &env, PARAM& param)
829
3.43k
  {
830
3.43k
    if (likely (env.argStack.get_count () == 11))
831
2.31k
    {
832
2.31k
      point_t d;
833
13.8k
      for (unsigned int i = 0; i < 10; i += 2)
834
11.5k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
2.31k
      point_t pt1 = env.get_pt ();
837
2.31k
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
2.31k
      point_t pt2 = pt1;
839
2.31k
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
2.31k
      point_t pt3 = pt2;
841
2.31k
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
2.31k
      point_t pt4 = pt3;
843
2.31k
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
2.31k
      point_t pt5 = pt4;
845
2.31k
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
2.31k
      point_t pt6 = pt5;
847
848
2.31k
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
788
      {
850
788
  pt6.move_x (env.eval_arg (10));
851
788
  pt6.y = env.get_pt ().y;
852
788
      }
853
1.52k
      else
854
1.52k
      {
855
1.52k
  pt6.x = env.get_pt ().x;
856
1.52k
  pt6.move_y (env.eval_arg (10));
857
1.52k
      }
858
859
2.31k
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
2.31k
    }
861
1.12k
    else
862
1.12k
      env.set_error ();
863
3.43k
  }
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
1.82k
  {
830
1.82k
    if (likely (env.argStack.get_count () == 11))
831
1.17k
    {
832
1.17k
      point_t d;
833
7.05k
      for (unsigned int i = 0; i < 10; i += 2)
834
5.88k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
1.17k
      point_t pt1 = env.get_pt ();
837
1.17k
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
1.17k
      point_t pt2 = pt1;
839
1.17k
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
1.17k
      point_t pt3 = pt2;
841
1.17k
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
1.17k
      point_t pt4 = pt3;
843
1.17k
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
1.17k
      point_t pt5 = pt4;
845
1.17k
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
1.17k
      point_t pt6 = pt5;
847
848
1.17k
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
400
      {
850
400
  pt6.move_x (env.eval_arg (10));
851
400
  pt6.y = env.get_pt ().y;
852
400
      }
853
776
      else
854
776
      {
855
776
  pt6.x = env.get_pt ().x;
856
776
  pt6.move_y (env.eval_arg (10));
857
776
      }
858
859
1.17k
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
1.17k
    }
861
646
    else
862
646
      env.set_error ();
863
1.82k
  }
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
1.17k
  {
830
1.17k
    if (likely (env.argStack.get_count () == 11))
831
846
    {
832
846
      point_t d;
833
5.07k
      for (unsigned int i = 0; i < 10; i += 2)
834
4.23k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
846
      point_t pt1 = env.get_pt ();
837
846
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
846
      point_t pt2 = pt1;
839
846
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
846
      point_t pt3 = pt2;
841
846
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
846
      point_t pt4 = pt3;
843
846
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
846
      point_t pt5 = pt4;
845
846
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
846
      point_t pt6 = pt5;
847
848
846
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
293
      {
850
293
  pt6.move_x (env.eval_arg (10));
851
293
  pt6.y = env.get_pt ().y;
852
293
      }
853
553
      else
854
553
      {
855
553
  pt6.x = env.get_pt ().x;
856
553
  pt6.move_y (env.eval_arg (10));
857
553
      }
858
859
846
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
846
    }
861
327
    else
862
327
      env.set_error ();
863
1.17k
  }
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
269
  {
830
269
    if (likely (env.argStack.get_count () == 11))
831
204
    {
832
204
      point_t d;
833
1.22k
      for (unsigned int i = 0; i < 10; i += 2)
834
1.02k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
204
      point_t pt1 = env.get_pt ();
837
204
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
204
      point_t pt2 = pt1;
839
204
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
204
      point_t pt3 = pt2;
841
204
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
204
      point_t pt4 = pt3;
843
204
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
204
      point_t pt5 = pt4;
845
204
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
204
      point_t pt6 = pt5;
847
848
204
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
66
      {
850
66
  pt6.move_x (env.eval_arg (10));
851
66
  pt6.y = env.get_pt ().y;
852
66
      }
853
138
      else
854
138
      {
855
138
  pt6.x = env.get_pt ().x;
856
138
  pt6.move_y (env.eval_arg (10));
857
138
      }
858
859
204
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
204
    }
861
65
    else
862
65
      env.set_error ();
863
269
  }
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
174
  {
830
174
    if (likely (env.argStack.get_count () == 11))
831
86
    {
832
86
      point_t d;
833
516
      for (unsigned int i = 0; i < 10; i += 2)
834
430
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
86
      point_t pt1 = env.get_pt ();
837
86
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
86
      point_t pt2 = pt1;
839
86
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
86
      point_t pt3 = pt2;
841
86
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
86
      point_t pt4 = pt3;
843
86
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
86
      point_t pt5 = pt4;
845
86
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
86
      point_t pt6 = pt5;
847
848
86
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
29
      {
850
29
  pt6.move_x (env.eval_arg (10));
851
29
  pt6.y = env.get_pt ().y;
852
29
      }
853
57
      else
854
57
      {
855
57
  pt6.x = env.get_pt ().x;
856
57
  pt6.move_y (env.eval_arg (10));
857
57
      }
858
859
86
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
86
    }
861
88
    else
862
88
      env.set_error ();
863
174
  }
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
4.30k
  {
870
4.30k
    PATH::curve (env, param, pt1, pt2, pt3);
871
4.30k
    PATH::curve (env, param, pt4, pt5, pt6);
872
4.30k
  }
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
2.00k
  {
870
2.00k
    PATH::curve (env, param, pt1, pt2, pt3);
871
2.00k
    PATH::curve (env, param, pt4, pt5, pt6);
872
2.00k
  }
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
1.35k
  {
870
1.35k
    PATH::curve (env, param, pt1, pt2, pt3);
871
1.35k
    PATH::curve (env, param, pt4, pt5, pt6);
872
1.35k
  }
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
616
  {
870
616
    PATH::curve (env, param, pt1, pt2, pt3);
871
616
    PATH::curve (env, param, pt4, pt5, pt6);
872
616
  }
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
337
  {
870
337
    PATH::curve (env, param, pt1, pt2, pt3);
871
337
    PATH::curve (env, param, pt4, pt5, pt6);
872
337
  }
873
};
874
875
template <typename ENV, typename OPSET, typename PARAM>
876
struct cs_interpreter_t : interpreter_t<ENV>
877
{
878
109k
  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
75.9k
  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
23.2k
  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
4.24k
  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
6.15k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
879
880
  bool interpret (PARAM& param)
881
109k
  {
882
109k
    SUPER::env.set_endchar (false);
883
884
109k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
4.22G
    for (;;) {
886
4.22G
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
887
4.22G
      if (unlikely (SUPER::env.in_error () || !--max_ops))
888
76.1k
      {
889
76.1k
  SUPER::env.set_error ();
890
76.1k
  return false;
891
76.1k
      }
892
4.22G
      if (SUPER::env.is_endchar ())
893
33.4k
  break;
894
4.22G
    }
895
896
33.4k
    return true;
897
109k
  }
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
75.9k
  {
882
75.9k
    SUPER::env.set_endchar (false);
883
884
75.9k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
2.76G
    for (;;) {
886
2.76G
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
887
2.76G
      if (unlikely (SUPER::env.in_error () || !--max_ops))
888
44.3k
      {
889
44.3k
  SUPER::env.set_error ();
890
44.3k
  return false;
891
44.3k
      }
892
2.76G
      if (SUPER::env.is_endchar ())
893
31.6k
  break;
894
2.76G
    }
895
896
31.6k
    return true;
897
75.9k
  }
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
23.2k
  {
882
23.2k
    SUPER::env.set_endchar (false);
883
884
23.2k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
1.45G
    for (;;) {
886
1.45G
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
887
1.45G
      if (unlikely (SUPER::env.in_error () || !--max_ops))
888
22.9k
      {
889
22.9k
  SUPER::env.set_error ();
890
22.9k
  return false;
891
22.9k
      }
892
1.45G
      if (SUPER::env.is_endchar ())
893
306
  break;
894
1.45G
    }
895
896
306
    return true;
897
23.2k
  }
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
4.24k
  {
882
4.24k
    SUPER::env.set_endchar (false);
883
884
4.24k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
1.63M
    for (;;) {
886
1.63M
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
887
1.63M
      if (unlikely (SUPER::env.in_error () || !--max_ops))
888
3.39k
      {
889
3.39k
  SUPER::env.set_error ();
890
3.39k
  return false;
891
3.39k
      }
892
1.63M
      if (SUPER::env.is_endchar ())
893
852
  break;
894
1.63M
    }
895
896
852
    return true;
897
4.24k
  }
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
6.15k
  {
882
6.15k
    SUPER::env.set_endchar (false);
883
884
6.15k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
1.22M
    for (;;) {
886
1.22M
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
887
1.22M
      if (unlikely (SUPER::env.in_error () || !--max_ops))
888
5.50k
      {
889
5.50k
  SUPER::env.set_error ();
890
5.50k
  return false;
891
5.50k
      }
892
1.21M
      if (SUPER::env.is_endchar ())
893
647
  break;
894
1.21M
    }
895
896
647
    return true;
897
6.15k
  }
898
899
  private:
900
  typedef interpreter_t<ENV> SUPER;
901
};
902
903
} /* namespace CFF */
904
905
#endif /* HB_CFF_INTERP_CS_COMMON_HH */