@shqld/canvas 3.2.2-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/Readme.md +654 -0
  2. package/binding.gyp +229 -0
  3. package/browser.js +31 -0
  4. package/index.d.ts +507 -0
  5. package/index.js +94 -0
  6. package/lib/DOMMatrix.js +678 -0
  7. package/lib/bindings.js +113 -0
  8. package/lib/canvas.js +113 -0
  9. package/lib/context2d.js +11 -0
  10. package/lib/image.js +97 -0
  11. package/lib/jpegstream.js +41 -0
  12. package/lib/pattern.js +15 -0
  13. package/lib/pdfstream.js +35 -0
  14. package/lib/pngstream.js +42 -0
  15. package/package.json +77 -0
  16. package/scripts/install.js +19 -0
  17. package/src/Backends.h +9 -0
  18. package/src/Canvas.cc +1026 -0
  19. package/src/Canvas.h +128 -0
  20. package/src/CanvasError.h +37 -0
  21. package/src/CanvasGradient.cc +113 -0
  22. package/src/CanvasGradient.h +20 -0
  23. package/src/CanvasPattern.cc +129 -0
  24. package/src/CanvasPattern.h +33 -0
  25. package/src/CanvasRenderingContext2d.cc +3527 -0
  26. package/src/CanvasRenderingContext2d.h +238 -0
  27. package/src/CharData.h +233 -0
  28. package/src/FontParser.cc +605 -0
  29. package/src/FontParser.h +115 -0
  30. package/src/Image.cc +1719 -0
  31. package/src/Image.h +146 -0
  32. package/src/ImageData.cc +138 -0
  33. package/src/ImageData.h +26 -0
  34. package/src/InstanceData.h +12 -0
  35. package/src/JPEGStream.h +157 -0
  36. package/src/PNG.h +292 -0
  37. package/src/Point.h +11 -0
  38. package/src/Util.h +9 -0
  39. package/src/bmp/BMPParser.cc +459 -0
  40. package/src/bmp/BMPParser.h +60 -0
  41. package/src/bmp/LICENSE.md +24 -0
  42. package/src/closure.cc +52 -0
  43. package/src/closure.h +98 -0
  44. package/src/color.cc +796 -0
  45. package/src/color.h +30 -0
  46. package/src/dll_visibility.h +20 -0
  47. package/src/init.cc +114 -0
  48. package/src/register_font.cc +352 -0
  49. package/src/register_font.h +7 -0
  50. package/util/has_lib.js +119 -0
  51. package/util/win_jpeg_lookup.js +21 -0
@@ -0,0 +1,238 @@
1
+ // Copyright (c) 2010 LearnBoost <tj@learnboost.com>
2
+
3
+ #pragma once
4
+
5
+ #include "cairo.h"
6
+ #include "Canvas.h"
7
+ #include "color.h"
8
+ #include "napi.h"
9
+ #include <pango/pangocairo.h>
10
+ #include <stack>
11
+
12
+ /*
13
+ * State struct.
14
+ *
15
+ * Used in conjunction with Save() / Restore() since
16
+ * cairo's gstate maintains only a single source pattern at a time.
17
+ */
18
+
19
+ struct canvas_state_t {
20
+ rgba_t fill = { 0, 0, 0, 1 };
21
+ rgba_t stroke = { 0, 0, 0, 1 };
22
+ rgba_t shadow = { 0, 0, 0, 0 };
23
+ double shadowOffsetX = 0.;
24
+ double shadowOffsetY = 0.;
25
+ cairo_pattern_t* fillPattern = nullptr;
26
+ cairo_pattern_t* strokePattern = nullptr;
27
+ cairo_pattern_t* fillGradient = nullptr;
28
+ cairo_pattern_t* strokeGradient = nullptr;
29
+ PangoFontDescription* fontDescription = nullptr;
30
+ std::string font = "10px sans-serif";
31
+ cairo_filter_t patternQuality = CAIRO_FILTER_GOOD;
32
+ float globalAlpha = 1.f;
33
+ int shadowBlur = 0;
34
+ text_align_t textAlignment = TEXT_ALIGNMENT_START;
35
+ text_baseline_t textBaseline = TEXT_BASELINE_ALPHABETIC;
36
+ canvas_draw_mode_t textDrawingMode = TEXT_DRAW_PATHS;
37
+ bool imageSmoothingEnabled = true;
38
+ std::string direction = "ltr";
39
+ std::string lang = "";
40
+
41
+ canvas_state_t() {
42
+ fontDescription = pango_font_description_from_string("sans");
43
+ pango_font_description_set_absolute_size(fontDescription, 10 * PANGO_SCALE);
44
+ }
45
+
46
+ canvas_state_t(const canvas_state_t& other) {
47
+ fill = other.fill;
48
+ stroke = other.stroke;
49
+ patternQuality = other.patternQuality;
50
+ fillPattern = other.fillPattern;
51
+ strokePattern = other.strokePattern;
52
+ fillGradient = other.fillGradient;
53
+ strokeGradient = other.strokeGradient;
54
+ globalAlpha = other.globalAlpha;
55
+ textAlignment = other.textAlignment;
56
+ textBaseline = other.textBaseline;
57
+ shadow = other.shadow;
58
+ shadowBlur = other.shadowBlur;
59
+ shadowOffsetX = other.shadowOffsetX;
60
+ shadowOffsetY = other.shadowOffsetY;
61
+ textDrawingMode = other.textDrawingMode;
62
+ fontDescription = pango_font_description_copy(other.fontDescription);
63
+ font = other.font;
64
+ imageSmoothingEnabled = other.imageSmoothingEnabled;
65
+ direction = other.direction;
66
+ lang = other.lang;
67
+ }
68
+
69
+ ~canvas_state_t() {
70
+ pango_font_description_free(fontDescription);
71
+ }
72
+ };
73
+
74
+ /*
75
+ * Equivalent to a PangoRectangle but holds floats instead of ints
76
+ * (software pixels are stored here instead of pango units)
77
+ *
78
+ * Should be compatible with PANGO_ASCENT, PANGO_LBEARING, etc.
79
+ */
80
+
81
+ typedef struct {
82
+ float x;
83
+ float y;
84
+ float width;
85
+ float height;
86
+ } float_rectangle;
87
+
88
+ class Context2d : public Napi::ObjectWrap<Context2d> {
89
+ public:
90
+ std::stack<canvas_state_t> states;
91
+ canvas_state_t *state;
92
+ Context2d(const Napi::CallbackInfo& info);
93
+ static void Initialize(Napi::Env& env, Napi::Object& target);
94
+ void DrawImage(const Napi::CallbackInfo& info);
95
+ void PutImageData(const Napi::CallbackInfo& info);
96
+ void Save(const Napi::CallbackInfo& info);
97
+ void Restore(const Napi::CallbackInfo& info);
98
+ void Rotate(const Napi::CallbackInfo& info);
99
+ void Translate(const Napi::CallbackInfo& info);
100
+ void Scale(const Napi::CallbackInfo& info);
101
+ void Transform(const Napi::CallbackInfo& info);
102
+ Napi::Value GetTransform(const Napi::CallbackInfo& info);
103
+ void ResetTransform(const Napi::CallbackInfo& info);
104
+ void SetTransform(const Napi::CallbackInfo& info);
105
+ Napi::Value IsPointInPath(const Napi::CallbackInfo& info);
106
+ void BeginPath(const Napi::CallbackInfo& info);
107
+ void ClosePath(const Napi::CallbackInfo& info);
108
+ void AddPage(const Napi::CallbackInfo& info);
109
+ void Clip(const Napi::CallbackInfo& info);
110
+ void Fill(const Napi::CallbackInfo& info);
111
+ void Stroke(const Napi::CallbackInfo& info);
112
+ void FillText(const Napi::CallbackInfo& info);
113
+ void StrokeText(const Napi::CallbackInfo& info);
114
+ static Napi::Value SetFont(const Napi::CallbackInfo& info);
115
+ static Napi::Value SetFillColor(const Napi::CallbackInfo& info);
116
+ static Napi::Value SetStrokeColor(const Napi::CallbackInfo& info);
117
+ static Napi::Value SetStrokePattern(const Napi::CallbackInfo& info);
118
+ static Napi::Value SetTextAlignment(const Napi::CallbackInfo& info);
119
+ void SetLineDash(const Napi::CallbackInfo& info);
120
+ Napi::Value GetLineDash(const Napi::CallbackInfo& info);
121
+ Napi::Value MeasureText(const Napi::CallbackInfo& info);
122
+ void BezierCurveTo(const Napi::CallbackInfo& info);
123
+ void QuadraticCurveTo(const Napi::CallbackInfo& info);
124
+ void LineTo(const Napi::CallbackInfo& info);
125
+ void MoveTo(const Napi::CallbackInfo& info);
126
+ void FillRect(const Napi::CallbackInfo& info);
127
+ void StrokeRect(const Napi::CallbackInfo& info);
128
+ void ClearRect(const Napi::CallbackInfo& info);
129
+ void Rect(const Napi::CallbackInfo& info);
130
+ void RoundRect(const Napi::CallbackInfo& info);
131
+ void Arc(const Napi::CallbackInfo& info);
132
+ void ArcTo(const Napi::CallbackInfo& info);
133
+ void Ellipse(const Napi::CallbackInfo& info);
134
+ Napi::Value GetImageData(const Napi::CallbackInfo& info);
135
+ Napi::Value CreateImageData(const Napi::CallbackInfo& info);
136
+ static Napi::Value GetStrokeColor(const Napi::CallbackInfo& info);
137
+ Napi::Value CreatePattern(const Napi::CallbackInfo& info);
138
+ Napi::Value CreateLinearGradient(const Napi::CallbackInfo& info);
139
+ Napi::Value CreateRadialGradient(const Napi::CallbackInfo& info);
140
+ Napi::Value GetFormat(const Napi::CallbackInfo& info);
141
+ Napi::Value GetPatternQuality(const Napi::CallbackInfo& info);
142
+ Napi::Value GetImageSmoothingEnabled(const Napi::CallbackInfo& info);
143
+ Napi::Value GetGlobalCompositeOperation(const Napi::CallbackInfo& info);
144
+ Napi::Value GetGlobalAlpha(const Napi::CallbackInfo& info);
145
+ Napi::Value GetShadowColor(const Napi::CallbackInfo& info);
146
+ Napi::Value GetMiterLimit(const Napi::CallbackInfo& info);
147
+ Napi::Value GetLineCap(const Napi::CallbackInfo& info);
148
+ Napi::Value GetLineJoin(const Napi::CallbackInfo& info);
149
+ Napi::Value GetLineWidth(const Napi::CallbackInfo& info);
150
+ Napi::Value GetLineDashOffset(const Napi::CallbackInfo& info);
151
+ Napi::Value GetShadowOffsetX(const Napi::CallbackInfo& info);
152
+ Napi::Value GetShadowOffsetY(const Napi::CallbackInfo& info);
153
+ Napi::Value GetShadowBlur(const Napi::CallbackInfo& info);
154
+ Napi::Value GetAntiAlias(const Napi::CallbackInfo& info);
155
+ Napi::Value GetTextDrawingMode(const Napi::CallbackInfo& info);
156
+ Napi::Value GetQuality(const Napi::CallbackInfo& info);
157
+ Napi::Value GetCurrentTransform(const Napi::CallbackInfo& info);
158
+ Napi::Value GetFillStyle(const Napi::CallbackInfo& info);
159
+ Napi::Value GetStrokeStyle(const Napi::CallbackInfo& info);
160
+ Napi::Value GetFont(const Napi::CallbackInfo& info);
161
+ Napi::Value GetTextBaseline(const Napi::CallbackInfo& info);
162
+ Napi::Value GetTextAlign(const Napi::CallbackInfo& info);
163
+ Napi::Value GetLanguage(const Napi::CallbackInfo& info);
164
+ void SetPatternQuality(const Napi::CallbackInfo& info, const Napi::Value& value);
165
+ void SetImageSmoothingEnabled(const Napi::CallbackInfo& info, const Napi::Value& value);
166
+ void SetGlobalCompositeOperation(const Napi::CallbackInfo& info, const Napi::Value& value);
167
+ void SetGlobalAlpha(const Napi::CallbackInfo& info, const Napi::Value& value);
168
+ void SetShadowColor(const Napi::CallbackInfo& info, const Napi::Value& value);
169
+ void SetMiterLimit(const Napi::CallbackInfo& info, const Napi::Value& value);
170
+ void SetLineCap(const Napi::CallbackInfo& info, const Napi::Value& value);
171
+ void SetLineJoin(const Napi::CallbackInfo& info, const Napi::Value& value);
172
+ void SetLineWidth(const Napi::CallbackInfo& info, const Napi::Value& value);
173
+ void SetLineDashOffset(const Napi::CallbackInfo& info, const Napi::Value& value);
174
+ void SetShadowOffsetX(const Napi::CallbackInfo& info, const Napi::Value& value);
175
+ void SetShadowOffsetY(const Napi::CallbackInfo& info, const Napi::Value& value);
176
+ void SetShadowBlur(const Napi::CallbackInfo& info, const Napi::Value& value);
177
+ void SetAntiAlias(const Napi::CallbackInfo& info, const Napi::Value& value);
178
+ void SetTextDrawingMode(const Napi::CallbackInfo& info, const Napi::Value& value);
179
+ void SetQuality(const Napi::CallbackInfo& info, const Napi::Value& value);
180
+ void SetCurrentTransform(const Napi::CallbackInfo& info, const Napi::Value& value);
181
+ void SetFillStyle(const Napi::CallbackInfo& info, const Napi::Value& value);
182
+ void SetStrokeStyle(const Napi::CallbackInfo& info, const Napi::Value& value);
183
+ void SetFont(const Napi::CallbackInfo& info, const Napi::Value& value);
184
+ void SetTextBaseline(const Napi::CallbackInfo& info, const Napi::Value& value);
185
+ void SetTextAlign(const Napi::CallbackInfo& info, const Napi::Value& value);
186
+ void SetLanguage(const Napi::CallbackInfo& info, const Napi::Value& value);
187
+ #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 16, 0)
188
+ void BeginTag(const Napi::CallbackInfo& info);
189
+ void EndTag(const Napi::CallbackInfo& info);
190
+ #endif
191
+ Napi::Value GetDirection(const Napi::CallbackInfo& info);
192
+ void SetDirection(const Napi::CallbackInfo& info, const Napi::Value& value);
193
+ inline void setContext(cairo_t *ctx) { _context = ctx; }
194
+ inline cairo_t *context(){ return _context; }
195
+ inline Canvas *canvas(){ return _canvas; }
196
+ inline bool hasShadow();
197
+ void inline setSourceRGBA(rgba_t color);
198
+ void inline setSourceRGBA(cairo_t *ctx, rgba_t color);
199
+ void setTextPath(double x, double y);
200
+ void blur(cairo_surface_t *surface, int radius);
201
+ void shadow(void (fn)(cairo_t *cr));
202
+ void shadowStart();
203
+ void shadowApply();
204
+ void savePath();
205
+ void restorePath();
206
+ void saveState();
207
+ void restoreState();
208
+ void inline setFillRule(Napi::Value value);
209
+ void fill(bool preserve = false);
210
+ void stroke(bool preserve = false);
211
+ void save();
212
+ void restore();
213
+ void setFontFromState();
214
+ void resetState();
215
+ inline PangoLayout *layout(){ return _layout; }
216
+ ~Context2d();
217
+ Napi::Env env;
218
+
219
+ private:
220
+ void _resetPersistentHandles();
221
+ Napi::Value _getFillColor();
222
+ Napi::Value _getStrokeColor();
223
+ Napi::Value get_current_transform();
224
+ void _setFillColor(Napi::Value arg);
225
+ void _setFillPattern(Napi::Value arg);
226
+ void _setStrokeColor(Napi::Value arg);
227
+ void _setStrokePattern(Napi::Value arg);
228
+ void checkFonts();
229
+ void paintText(const Napi::CallbackInfo&, bool);
230
+ text_align_t resolveTextAlignment();
231
+ Napi::Reference<Napi::Value> _fillStyle;
232
+ Napi::Reference<Napi::Value> _strokeStyle;
233
+ Canvas *_canvas;
234
+ cairo_t *_context = nullptr;
235
+ cairo_path_t *_path;
236
+ PangoLayout *_layout = nullptr;
237
+ int fontSerial = 1;
238
+ };
package/src/CharData.h ADDED
@@ -0,0 +1,233 @@
1
+ // This is used for classifying characters according to the definition of tokens
2
+ // in the CSS standards, but could be extended for any other future uses
3
+
4
+ #pragma once
5
+
6
+ #include <cstdint>
7
+
8
+ namespace CharData {
9
+ static constexpr uint8_t Whitespace = 0x1;
10
+ static constexpr uint8_t Newline = 0x2;
11
+ static constexpr uint8_t Hex = 0x4;
12
+ static constexpr uint8_t Nmstart = 0x8;
13
+ static constexpr uint8_t Nmchar = 0x10;
14
+ static constexpr uint8_t Sign = 0x20;
15
+ static constexpr uint8_t Digit = 0x40;
16
+ static constexpr uint8_t NumStart = 0x80;
17
+ };
18
+
19
+ using namespace CharData;
20
+
21
+ constexpr const uint8_t charData[256] = {
22
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0-8
23
+ Whitespace, // 9 (HT)
24
+ Whitespace | Newline, // 10 (LF)
25
+ 0, // 11 (VT)
26
+ Whitespace | Newline, // 12 (FF)
27
+ Whitespace | Newline, // 13 (CR)
28
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 14-31
29
+ Whitespace, // 32 (Space)
30
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 33-42
31
+ Sign | NumStart, // 43 (+)
32
+ 0, // 44
33
+ Nmchar | Sign | NumStart, // 45 (-)
34
+ 0, 0, // 46-47
35
+ Nmchar | Digit | NumStart | Hex, // 48 (0)
36
+ Nmchar | Digit | NumStart | Hex, // 49 (1)
37
+ Nmchar | Digit | NumStart | Hex, // 50 (2)
38
+ Nmchar | Digit | NumStart | Hex, // 51 (3)
39
+ Nmchar | Digit | NumStart | Hex, // 52 (4)
40
+ Nmchar | Digit | NumStart | Hex, // 53 (5)
41
+ Nmchar | Digit | NumStart | Hex, // 54 (6)
42
+ Nmchar | Digit | NumStart | Hex, // 55 (7)
43
+ Nmchar | Digit | NumStart | Hex, // 56 (8)
44
+ Nmchar | Digit | NumStart | Hex, // 57 (9)
45
+ 0, 0, 0, 0, 0, 0, 0, // 58-64
46
+ Nmstart | Nmchar | Hex, // 65 (A)
47
+ Nmstart | Nmchar | Hex, // 66 (B)
48
+ Nmstart | Nmchar | Hex, // 67 (C)
49
+ Nmstart | Nmchar | Hex, // 68 (D)
50
+ Nmstart | Nmchar | Hex, // 69 (E)
51
+ Nmstart | Nmchar | Hex, // 70 (F)
52
+ Nmstart | Nmchar, // 71 (G)
53
+ Nmstart | Nmchar, // 72 (H)
54
+ Nmstart | Nmchar, // 73 (I)
55
+ Nmstart | Nmchar, // 74 (J)
56
+ Nmstart | Nmchar, // 75 (K)
57
+ Nmstart | Nmchar, // 76 (L)
58
+ Nmstart | Nmchar, // 77 (M)
59
+ Nmstart | Nmchar, // 78 (N)
60
+ Nmstart | Nmchar, // 79 (O)
61
+ Nmstart | Nmchar, // 80 (P)
62
+ Nmstart | Nmchar, // 81 (Q)
63
+ Nmstart | Nmchar, // 82 (R)
64
+ Nmstart | Nmchar, // 83 (S)
65
+ Nmstart | Nmchar, // 84 (T)
66
+ Nmstart | Nmchar, // 85 (U)
67
+ Nmstart | Nmchar, // 86 (V)
68
+ Nmstart | Nmchar, // 87 (W)
69
+ Nmstart | Nmchar, // 88 (X)
70
+ Nmstart | Nmchar, // 89 (Y)
71
+ Nmstart | Nmchar, // 90 (Z)
72
+ 0, // 91
73
+ Nmstart, // 92 (\)
74
+ 0, 0, // 93-94
75
+ Nmstart | Nmchar, // 95 (_)
76
+ 0, // 96
77
+ Nmstart | Nmchar | Hex, // 97 (a)
78
+ Nmstart | Nmchar | Hex, // 98 (b)
79
+ Nmstart | Nmchar | Hex, // 99 (c)
80
+ Nmstart | Nmchar | Hex, // 100 (d)
81
+ Nmstart | Nmchar | Hex, // 101 (e)
82
+ Nmstart | Nmchar | Hex, // 102 (f)
83
+ Nmstart | Nmchar, // 103 (g)
84
+ Nmstart | Nmchar, // 104 (h)
85
+ Nmstart | Nmchar, // 105 (i)
86
+ Nmstart | Nmchar, // 106 (j)
87
+ Nmstart | Nmchar, // 107 (k)
88
+ Nmstart | Nmchar, // 108 (l)
89
+ Nmstart | Nmchar, // 109 (m)
90
+ Nmstart | Nmchar, // 110 (n)
91
+ Nmstart | Nmchar, // 111 (o)
92
+ Nmstart | Nmchar, // 112 (p)
93
+ Nmstart | Nmchar, // 113 (q)
94
+ Nmstart | Nmchar, // 114 (r)
95
+ Nmstart | Nmchar, // 115 (s)
96
+ Nmstart | Nmchar, // 116 (t)
97
+ Nmstart | Nmchar, // 117 (u)
98
+ Nmstart | Nmchar, // 118 (v)
99
+ Nmstart | Nmchar, // 119 (w)
100
+ Nmstart | Nmchar, // 120 (x)
101
+ Nmstart | Nmchar, // 121 (y)
102
+ Nmstart | Nmchar, // 122 (z)
103
+ 0, 0, 0, 0, 0, // 123-127
104
+ // Non-ASCII
105
+ Nmstart | Nmchar, // 128
106
+ Nmstart | Nmchar, // 129
107
+ Nmstart | Nmchar, // 130
108
+ Nmstart | Nmchar, // 131
109
+ Nmstart | Nmchar, // 132
110
+ Nmstart | Nmchar, // 133
111
+ Nmstart | Nmchar, // 134
112
+ Nmstart | Nmchar, // 135
113
+ Nmstart | Nmchar, // 136
114
+ Nmstart | Nmchar, // 137
115
+ Nmstart | Nmchar, // 138
116
+ Nmstart | Nmchar, // 139
117
+ Nmstart | Nmchar, // 140
118
+ Nmstart | Nmchar, // 141
119
+ Nmstart | Nmchar, // 142
120
+ Nmstart | Nmchar, // 143
121
+ Nmstart | Nmchar, // 144
122
+ Nmstart | Nmchar, // 145
123
+ Nmstart | Nmchar, // 146
124
+ Nmstart | Nmchar, // 147
125
+ Nmstart | Nmchar, // 148
126
+ Nmstart | Nmchar, // 149
127
+ Nmstart | Nmchar, // 150
128
+ Nmstart | Nmchar, // 151
129
+ Nmstart | Nmchar, // 152
130
+ Nmstart | Nmchar, // 153
131
+ Nmstart | Nmchar, // 154
132
+ Nmstart | Nmchar, // 155
133
+ Nmstart | Nmchar, // 156
134
+ Nmstart | Nmchar, // 157
135
+ Nmstart | Nmchar, // 158
136
+ Nmstart | Nmchar, // 159
137
+ Nmstart | Nmchar, // 160
138
+ Nmstart | Nmchar, // 161
139
+ Nmstart | Nmchar, // 162
140
+ Nmstart | Nmchar, // 163
141
+ Nmstart | Nmchar, // 164
142
+ Nmstart | Nmchar, // 165
143
+ Nmstart | Nmchar, // 166
144
+ Nmstart | Nmchar, // 167
145
+ Nmstart | Nmchar, // 168
146
+ Nmstart | Nmchar, // 169
147
+ Nmstart | Nmchar, // 170
148
+ Nmstart | Nmchar, // 171
149
+ Nmstart | Nmchar, // 172
150
+ Nmstart | Nmchar, // 173
151
+ Nmstart | Nmchar, // 174
152
+ Nmstart | Nmchar, // 175
153
+ Nmstart | Nmchar, // 176
154
+ Nmstart | Nmchar, // 177
155
+ Nmstart | Nmchar, // 178
156
+ Nmstart | Nmchar, // 179
157
+ Nmstart | Nmchar, // 180
158
+ Nmstart | Nmchar, // 181
159
+ Nmstart | Nmchar, // 182
160
+ Nmstart | Nmchar, // 183
161
+ Nmstart | Nmchar, // 184
162
+ Nmstart | Nmchar, // 185
163
+ Nmstart | Nmchar, // 186
164
+ Nmstart | Nmchar, // 187
165
+ Nmstart | Nmchar, // 188
166
+ Nmstart | Nmchar, // 189
167
+ Nmstart | Nmchar, // 190
168
+ Nmstart | Nmchar, // 191
169
+ Nmstart | Nmchar, // 192
170
+ Nmstart | Nmchar, // 193
171
+ Nmstart | Nmchar, // 194
172
+ Nmstart | Nmchar, // 195
173
+ Nmstart | Nmchar, // 196
174
+ Nmstart | Nmchar, // 197
175
+ Nmstart | Nmchar, // 198
176
+ Nmstart | Nmchar, // 199
177
+ Nmstart | Nmchar, // 200
178
+ Nmstart | Nmchar, // 201
179
+ Nmstart | Nmchar, // 202
180
+ Nmstart | Nmchar, // 203
181
+ Nmstart | Nmchar, // 204
182
+ Nmstart | Nmchar, // 205
183
+ Nmstart | Nmchar, // 206
184
+ Nmstart | Nmchar, // 207
185
+ Nmstart | Nmchar, // 208
186
+ Nmstart | Nmchar, // 209
187
+ Nmstart | Nmchar, // 210
188
+ Nmstart | Nmchar, // 211
189
+ Nmstart | Nmchar, // 212
190
+ Nmstart | Nmchar, // 213
191
+ Nmstart | Nmchar, // 214
192
+ Nmstart | Nmchar, // 215
193
+ Nmstart | Nmchar, // 216
194
+ Nmstart | Nmchar, // 217
195
+ Nmstart | Nmchar, // 218
196
+ Nmstart | Nmchar, // 219
197
+ Nmstart | Nmchar, // 220
198
+ Nmstart | Nmchar, // 221
199
+ Nmstart | Nmchar, // 222
200
+ Nmstart | Nmchar, // 223
201
+ Nmstart | Nmchar, // 224
202
+ Nmstart | Nmchar, // 225
203
+ Nmstart | Nmchar, // 226
204
+ Nmstart | Nmchar, // 227
205
+ Nmstart | Nmchar, // 228
206
+ Nmstart | Nmchar, // 229
207
+ Nmstart | Nmchar, // 230
208
+ Nmstart | Nmchar, // 231
209
+ Nmstart | Nmchar, // 232
210
+ Nmstart | Nmchar, // 233
211
+ Nmstart | Nmchar, // 234
212
+ Nmstart | Nmchar, // 235
213
+ Nmstart | Nmchar, // 236
214
+ Nmstart | Nmchar, // 237
215
+ Nmstart | Nmchar, // 238
216
+ Nmstart | Nmchar, // 239
217
+ Nmstart | Nmchar, // 240
218
+ Nmstart | Nmchar, // 241
219
+ Nmstart | Nmchar, // 242
220
+ Nmstart | Nmchar, // 243
221
+ Nmstart | Nmchar, // 244
222
+ Nmstart | Nmchar, // 245
223
+ Nmstart | Nmchar, // 246
224
+ Nmstart | Nmchar, // 247
225
+ Nmstart | Nmchar, // 248
226
+ Nmstart | Nmchar, // 249
227
+ Nmstart | Nmchar, // 250
228
+ Nmstart | Nmchar, // 251
229
+ Nmstart | Nmchar, // 252
230
+ Nmstart | Nmchar, // 253
231
+ Nmstart | Nmchar, // 254
232
+ Nmstart | Nmchar // 255
233
+ };