abstract-image 3.2.5 → 3.3.2

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 (132) hide show
  1. package/CHANGELOG.md +38 -27
  2. package/LICENSE +21 -21
  3. package/README.md +73 -73
  4. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-ellipse.js +379 -379
  5. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-group.js +123 -123
  6. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-line.js +55 -55
  7. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polygon.js +89 -89
  8. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polyline.js +79 -79
  9. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-rectangle.js +99 -99
  10. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text-growth-directions.js +135 -135
  11. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text.js +63 -63
  12. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-ellipse.js +24 -24
  13. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-empty-text.js +26 -26
  14. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-group.js +31 -31
  15. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-line.js +20 -20
  16. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polygon.js +34 -34
  17. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polyline.js +26 -26
  18. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-rectangle.js +20 -20
  19. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text-growth-directions.js +59 -59
  20. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text.js +26 -26
  21. package/lib/exporters/__tests__/exception/png-unsupported.test.js +1 -1
  22. package/lib/exporters/__tests__/exception/png-unsupported.test.js.map +1 -1
  23. package/lib/exporters/__tests__/png-export-image/test-defs/png-createPNG.js +1 -1
  24. package/lib/exporters/__tests__/png-export-image/test-defs/png-createPNG.js.map +1 -1
  25. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-png.d.ts.map +1 -1
  26. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-png.js +2 -2
  27. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-png.js.map +1 -1
  28. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-url.d.ts +3 -0
  29. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-url.d.ts.map +1 -0
  30. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-url.js +33 -0
  31. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-url.js.map +1 -0
  32. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary.js +1 -1
  33. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary.js.map +1 -1
  34. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-binary.js +1 -1
  35. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-binary.js.map +1 -1
  36. package/lib/exporters/__tests__/svg-export-image.test.d.ts +2 -0
  37. package/lib/exporters/__tests__/svg-export-image.test.d.ts.map +1 -0
  38. package/lib/exporters/__tests__/svg-export-image.test.js +35 -0
  39. package/lib/exporters/__tests__/svg-export-image.test.js.map +1 -0
  40. package/lib/exporters/png-export-image.js +2 -2
  41. package/lib/exporters/png-export-image.js.map +1 -1
  42. package/lib/exporters/react-svg-export-image.d.ts.map +1 -1
  43. package/lib/exporters/react-svg-export-image.js +23 -11
  44. package/lib/exporters/react-svg-export-image.js.map +1 -1
  45. package/lib/exporters/svg-export-image.d.ts.map +1 -1
  46. package/lib/exporters/svg-export-image.js +46 -15
  47. package/lib/exporters/svg-export-image.js.map +1 -1
  48. package/lib/model/component.d.ts +11 -2
  49. package/lib/model/component.d.ts.map +1 -1
  50. package/lib/model/component.js.map +1 -1
  51. package/package.json +4 -2
  52. package/src/__stories__/react-svg-export/example-1.stories.tsx +54 -54
  53. package/src/__stories__/svg-export/example-1.stories.tsx +42 -42
  54. package/src/exporters/__tests__/dxf2d-export-image/export-test-def.ts +11 -11
  55. package/src/exporters/__tests__/dxf2d-export-image/export.test.tsx +13 -13
  56. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-ellipse.ts +405 -405
  57. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-group.ts +166 -166
  58. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-line.ts +80 -80
  59. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polygon.ts +114 -114
  60. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polyline.ts +103 -103
  61. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-rectangle.ts +125 -125
  62. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text-growth-directions.ts +214 -214
  63. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text.ts +97 -97
  64. package/src/exporters/__tests__/eps-export-image/export-test-def.ts +11 -11
  65. package/src/exporters/__tests__/eps-export-image/export.test.tsx +13 -13
  66. package/src/exporters/__tests__/eps-export-image/test-defs/eps-ellipse.ts +50 -50
  67. package/src/exporters/__tests__/eps-export-image/test-defs/eps-empty-text.ts +60 -60
  68. package/src/exporters/__tests__/eps-export-image/test-defs/eps-group.ts +74 -74
  69. package/src/exporters/__tests__/eps-export-image/test-defs/eps-line.ts +45 -45
  70. package/src/exporters/__tests__/eps-export-image/test-defs/eps-polygon.ts +65 -65
  71. package/src/exporters/__tests__/eps-export-image/test-defs/eps-polyline.ts +58 -58
  72. package/src/exporters/__tests__/eps-export-image/test-defs/eps-rectangle.ts +46 -46
  73. package/src/exporters/__tests__/eps-export-image/test-defs/eps-text-growth-directions.ts +138 -138
  74. package/src/exporters/__tests__/eps-export-image/test-defs/eps-text.ts +60 -60
  75. package/src/exporters/__tests__/exception/png-unsupported.test.tsx +25 -25
  76. package/src/exporters/__tests__/exception/react-svg-direction-exception.test.tsx +65 -65
  77. package/src/exporters/__tests__/exception/svg-direction-exception.test.tsx +65 -65
  78. package/src/exporters/__tests__/png-export-image/export-test-def.ts +11 -11
  79. package/src/exporters/__tests__/png-export-image/export.test.tsx +13 -13
  80. package/src/exporters/__tests__/png-export-image/test-defs/png-createPNG.tsx +26 -26
  81. package/src/exporters/__tests__/react-svg-export-image/export-test-def.tsx +13 -13
  82. package/src/exporters/__tests__/react-svg-export-image/export.test.tsx +13 -13
  83. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-png.tsx +26 -27
  84. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-url.tsx +26 -0
  85. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary.tsx +25 -25
  86. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-callback.tsx +60 -60
  87. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-ellipse.tsx +28 -28
  88. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-empty-text.tsx +35 -35
  89. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-group.tsx +44 -44
  90. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-line.tsx +26 -26
  91. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polygon.tsx +32 -32
  92. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polyline.tsx +33 -33
  93. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-rectangle.tsx +27 -27
  94. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-subimage.tsx +36 -36
  95. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-bold.tsx +50 -50
  96. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-growth-directions.tsx +80 -80
  97. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-italic.tsx +65 -65
  98. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-sub.tsx +35 -35
  99. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text.tsx +35 -35
  100. package/src/exporters/__tests__/svg-export-image/export-test-def.ts +11 -11
  101. package/src/exporters/__tests__/svg-export-image/export.test.tsx +13 -13
  102. package/src/exporters/__tests__/svg-export-image/test-defs/svg-binary.tsx +25 -25
  103. package/src/exporters/__tests__/svg-export-image/test-defs/svg-ellipse.ts +27 -27
  104. package/src/exporters/__tests__/svg-export-image/test-defs/svg-empty-text.ts +34 -34
  105. package/src/exporters/__tests__/svg-export-image/test-defs/svg-group.ts +44 -44
  106. package/src/exporters/__tests__/svg-export-image/test-defs/svg-line.ts +26 -26
  107. package/src/exporters/__tests__/svg-export-image/test-defs/svg-polygon.ts +32 -32
  108. package/src/exporters/__tests__/svg-export-image/test-defs/svg-polyline.ts +33 -33
  109. package/src/exporters/__tests__/svg-export-image/test-defs/svg-rectangle.ts +27 -27
  110. package/src/exporters/__tests__/svg-export-image/test-defs/svg-text-bold.ts +50 -50
  111. package/src/exporters/__tests__/svg-export-image/test-defs/svg-text-growth-directions.ts +80 -80
  112. package/src/exporters/__tests__/svg-export-image/test-defs/svg-text-italic.ts +65 -65
  113. package/src/exporters/__tests__/svg-export-image/test-defs/svg-text.ts +35 -35
  114. package/src/exporters/dxf2d-export-image.ts +218 -218
  115. package/src/exporters/eps-export-image.ts +154 -154
  116. package/src/exporters/index.ts +3 -3
  117. package/src/exporters/png-export-image.ts +12 -12
  118. package/src/exporters/react-svg-export-image.tsx +315 -305
  119. package/src/exporters/svg-export-image.ts +309 -300
  120. package/src/index.ts +11 -11
  121. package/src/model/__tests__/color/export-test-def.ts +13 -13
  122. package/src/model/__tests__/color/export.test.tsx +14 -14
  123. package/src/model/__tests__/color/test-defs/color-from-string.ts +46 -46
  124. package/src/model/__tests__/color/test-defs/color-to-string.ts +35 -35
  125. package/src/model/__tests__/color/test-defs/color-undefined-2.ts +8 -8
  126. package/src/model/__tests__/color/test-defs/color-undefined.ts +8 -8
  127. package/src/model/abstract-image.ts +25 -25
  128. package/src/model/color.ts +52 -52
  129. package/src/model/component.ts +279 -266
  130. package/src/model/index.ts +5 -5
  131. package/src/model/point.ts +11 -11
  132. package/src/model/size.ts +11 -11
@@ -1,218 +1,218 @@
1
- import * as AbstractImage from "../model/index";
2
-
3
- export function dxf2dExportImage(root: AbstractImage.AbstractImage): string {
4
- const builder: Builder = createBuilder();
5
- let height: number = root.size.height;
6
- let layer: number = 0;
7
-
8
- builder.append("999\nELIGO DXF GENERATOR\n");
9
- builder.append("0\nSECTION\n2\nHEADER\n");
10
- builder.append(
11
- "9\n$ACADVER\n1\nAC1009\n9\n$INSBASE\n10\n0.0\n20\n0.0\n30\n0.0\n"
12
- );
13
- builder.append("9\n$EXTMIN\n10\n0.0\n20\n0.0\n");
14
- builder.append("9\n$EXTMAX\n");
15
- builder.append("10\n" + root.size.width.toString() + "\n");
16
- builder.append("20\n" + root.size.height.toString() + "\n");
17
- builder.append("0\nENDSEC\n");
18
- builder.append("0\nSECTION\n2\nENTITIES\n");
19
-
20
- for (let component of root.components) {
21
- _visit(component, builder, layer, height);
22
- }
23
-
24
- builder.append("0\nENDSEC\n0\nEOF");
25
-
26
- return builder.build();
27
- }
28
-
29
- interface Builder {
30
- readonly append: (addedStr: string) => void;
31
- readonly build: () => string;
32
- }
33
- function createBuilder(): Builder {
34
- let str = "";
35
- return {
36
- append: (addedStr: string) => {
37
- str += addedStr;
38
- },
39
- build: () => str
40
- };
41
- }
42
-
43
- function _visit(
44
- // tslint:disable-next-line:variable-name
45
- c_in: AbstractImage.Component,
46
- builder: Builder,
47
- layer: number,
48
- height: number
49
- ): void {
50
- /*if (c_in.type === "") {
51
- let c: AbstractImage.Component = c_in;
52
- for (let component of c.components)
53
- _visit(component, builder, layer, height);
54
- }*/
55
-
56
- if (c_in.type === "group") {
57
- let c: AbstractImage.Group = c_in;
58
- for (const child of c.children) {
59
- _visit(child, builder, layer, height);
60
- }
61
- }
62
-
63
- if (c_in.type === "binaryimage") {
64
- //let c:BitmapImageComponent = c_in;
65
- //let importer = imageImporterFactory(c.format);
66
- //if (importer == null)
67
- // return;
68
- //let subImage = importer(c.data);
69
- //_visit(subImage, builder, layer, height);
70
- // Cannot include bitmaps in dxf output?
71
- return;
72
- }
73
-
74
- if (c_in.type === "subimage") {
75
- throw "TODO!";
76
- }
77
-
78
- if (c_in.type === "line") {
79
- let c: AbstractImage.Line = c_in;
80
- builder.append("0\nLINE\n");
81
- builder.append("8\nLines\n");
82
- builder.append("10\n" + c.start.x.toString() + "\n");
83
- builder.append("20\n" + _invert(c.start.y, height).toString() + "\n");
84
- builder.append("30\n0.0\n");
85
- builder.append("11\n" + c.end.x.toString() + "\n");
86
- builder.append("21\n" + _invert(c.end.y, height).toString() + "\n");
87
- builder.append("31\n0.0\n");
88
- }
89
-
90
- if (c_in.type === "polyline") {
91
- let c: AbstractImage.PolyLine = c_in;
92
- builder.append("0\nPOLYLINE\n");
93
- builder.append("8\n" + layer.toString() + "\n");
94
- builder.append("66\n" + "1" + "\n");
95
- for (let point of c.points) {
96
- builder.append("0\nVERTEX\n");
97
- builder.append("8\n" + layer.toString() + "\n");
98
- builder.append("10\n" + point.x.toString() + "\n");
99
- builder.append("20\n" + _invert(point.y, height).toString() + "\n");
100
- builder.append("30\n0.0\n");
101
- }
102
- builder.append("0\nSEQEND\n");
103
- builder.append("8\n" + layer.toString() + "\n");
104
- }
105
-
106
- if (c_in.type === "text") {
107
- let c: AbstractImage.Text = c_in;
108
- let horizontalAlignment: number;
109
- if (c.horizontalGrowthDirection === "left") {
110
- horizontalAlignment = 2;
111
- } else if (c.horizontalGrowthDirection === "uniform") {
112
- horizontalAlignment = 1;
113
- } else {
114
- horizontalAlignment = 0;
115
- }
116
-
117
- let verticalAlignment: number;
118
- if (c.verticalGrowthDirection === "up") {
119
- verticalAlignment = 0;
120
- } else if (c.verticalGrowthDirection === "uniform") {
121
- verticalAlignment = 2;
122
- } else {
123
- verticalAlignment = 3;
124
- }
125
-
126
- let fontSize = c.fontSize - 2;
127
-
128
- builder.append("0\nTEXT\n");
129
- builder.append("8\nText\n");
130
- builder.append("10\n" + c.position.x.toString() + "\n");
131
- builder.append("20\n" + _invert(c.position.y, height).toString() + "\n");
132
- builder.append("30\n0.0\n");
133
- builder.append("11\n" + c.position.x.toString() + "\n");
134
- builder.append("21\n" + _invert(c.position.y, height).toString() + "\n");
135
- builder.append("31\n0.0\n");
136
- builder.append("40\n" + fontSize.toString() + "\n");
137
- builder.append("1\n" + c.text + "\n");
138
- builder.append("72\n" + horizontalAlignment.toString() + "\n");
139
- builder.append("73\n" + verticalAlignment.toString() + "\n");
140
- }
141
-
142
- if (c_in.type === "ellipse") {
143
- let c: AbstractImage.Ellipse = c_in;
144
- layer++;
145
-
146
- builder.append("0\nPOLYLINE\n");
147
- builder.append("8\n" + layer.toString() + "\n");
148
- builder.append("66\n" + "1" + "\n");
149
-
150
- let r1 = Math.abs(c.bottomRight.x - c.topLeft.x) / 2.0;
151
- let r2 = Math.abs(c.topLeft.y - c.bottomRight.y) / 2.0;
152
- const numPoints: number = 32;
153
-
154
- // for (let t in Enumerable.Range(0, numPoints).Select(i => 2.0 * PI * i / numPoints))
155
-
156
- let mylist: Array<number> = [];
157
- for (let i: number = 0; i <= numPoints; i++) {
158
- mylist.push(2 * Math.PI * i / numPoints);
159
- }
160
-
161
- for (let t of mylist) {
162
- let x = c.topLeft.x + r1 + r1 * Math.cos(t);
163
- let y = c.topLeft.y + r2 + r2 * Math.sin(t);
164
- builder.append("0\nVERTEX\n");
165
- builder.append("8\n" + layer.toString() + "\n");
166
- builder.append("10\n" + x.toString() + "\n");
167
- builder.append("20\n" + _invert(y, height).toString() + "\n");
168
- builder.append("30\n0.0\n");
169
- }
170
- builder.append("0\nSEQEND\n");
171
- builder.append("8\n" + layer.toString() + "\n");
172
- }
173
-
174
- if (c_in.type === "polygon") {
175
- let c: AbstractImage.Polygon = c_in;
176
-
177
- builder.append("0\nPOLYLINE\n");
178
- builder.append("8\n" + layer.toString() + "\n");
179
- builder.append("66\n" + "1" + "\n");
180
- // for (let point in c.points.concat(c.points.take(1)))
181
- // for (let point of concat([c.points, c.points.take(1)])) {
182
- for (let point of c.points.concat(c.points[0])) {
183
- builder.append("0\nVERTEX\n");
184
- builder.append("8\n" + layer.toString() + "\n");
185
- builder.append("10\n" + point.x.toString() + "\n");
186
- builder.append("20\n" + _invert(point.y, height).toString() + "\n");
187
- builder.append("30\n0.0\n");
188
- }
189
- builder.append("0\nSEQEND\n");
190
- builder.append("8\n" + layer.toString() + "\n");
191
- }
192
-
193
- if (c_in.type === "rectangle") {
194
- let c: AbstractImage.Rectangle = c_in;
195
-
196
- builder.append("0\nPOLYLINE\n");
197
- builder.append("8\n" + layer.toString() + "\n");
198
- builder.append("66\n" + "1" + "\n");
199
- let corners = AbstractImage.corners(c);
200
- // for (let point in c.Corners().Concat(c.Corners().Take(1))) {
201
- // for (let point of concat([corners, corners.take(1)])) {
202
- for (let point of corners.concat(corners[0])) {
203
- builder.append("0\nVERTEX\n");
204
- builder.append("8\n" + layer.toString() + "\n");
205
- builder.append("10\n" + point.x.toString() + "\n");
206
- builder.append("20\n" + _invert(point.y, height).toString() + "\n");
207
- builder.append("30\n0.0\n");
208
- }
209
- builder.append("0\nSEQEND\n");
210
- builder.append("8\n" + layer.toString() + "\n");
211
- }
212
- }
213
-
214
- function _invert(d: number, height: number): number {
215
- return height - d;
216
- }
217
-
218
- //}
1
+ import * as AbstractImage from "../model/index";
2
+
3
+ export function dxf2dExportImage(root: AbstractImage.AbstractImage): string {
4
+ const builder: Builder = createBuilder();
5
+ let height: number = root.size.height;
6
+ let layer: number = 0;
7
+
8
+ builder.append("999\nELIGO DXF GENERATOR\n");
9
+ builder.append("0\nSECTION\n2\nHEADER\n");
10
+ builder.append(
11
+ "9\n$ACADVER\n1\nAC1009\n9\n$INSBASE\n10\n0.0\n20\n0.0\n30\n0.0\n"
12
+ );
13
+ builder.append("9\n$EXTMIN\n10\n0.0\n20\n0.0\n");
14
+ builder.append("9\n$EXTMAX\n");
15
+ builder.append("10\n" + root.size.width.toString() + "\n");
16
+ builder.append("20\n" + root.size.height.toString() + "\n");
17
+ builder.append("0\nENDSEC\n");
18
+ builder.append("0\nSECTION\n2\nENTITIES\n");
19
+
20
+ for (let component of root.components) {
21
+ _visit(component, builder, layer, height);
22
+ }
23
+
24
+ builder.append("0\nENDSEC\n0\nEOF");
25
+
26
+ return builder.build();
27
+ }
28
+
29
+ interface Builder {
30
+ readonly append: (addedStr: string) => void;
31
+ readonly build: () => string;
32
+ }
33
+ function createBuilder(): Builder {
34
+ let str = "";
35
+ return {
36
+ append: (addedStr: string) => {
37
+ str += addedStr;
38
+ },
39
+ build: () => str
40
+ };
41
+ }
42
+
43
+ function _visit(
44
+ // tslint:disable-next-line:variable-name
45
+ c_in: AbstractImage.Component,
46
+ builder: Builder,
47
+ layer: number,
48
+ height: number
49
+ ): void {
50
+ /*if (c_in.type === "") {
51
+ let c: AbstractImage.Component = c_in;
52
+ for (let component of c.components)
53
+ _visit(component, builder, layer, height);
54
+ }*/
55
+
56
+ if (c_in.type === "group") {
57
+ let c: AbstractImage.Group = c_in;
58
+ for (const child of c.children) {
59
+ _visit(child, builder, layer, height);
60
+ }
61
+ }
62
+
63
+ if (c_in.type === "binaryimage") {
64
+ //let c:BitmapImageComponent = c_in;
65
+ //let importer = imageImporterFactory(c.format);
66
+ //if (importer == null)
67
+ // return;
68
+ //let subImage = importer(c.data);
69
+ //_visit(subImage, builder, layer, height);
70
+ // Cannot include bitmaps in dxf output?
71
+ return;
72
+ }
73
+
74
+ if (c_in.type === "subimage") {
75
+ throw "TODO!";
76
+ }
77
+
78
+ if (c_in.type === "line") {
79
+ let c: AbstractImage.Line = c_in;
80
+ builder.append("0\nLINE\n");
81
+ builder.append("8\nLines\n");
82
+ builder.append("10\n" + c.start.x.toString() + "\n");
83
+ builder.append("20\n" + _invert(c.start.y, height).toString() + "\n");
84
+ builder.append("30\n0.0\n");
85
+ builder.append("11\n" + c.end.x.toString() + "\n");
86
+ builder.append("21\n" + _invert(c.end.y, height).toString() + "\n");
87
+ builder.append("31\n0.0\n");
88
+ }
89
+
90
+ if (c_in.type === "polyline") {
91
+ let c: AbstractImage.PolyLine = c_in;
92
+ builder.append("0\nPOLYLINE\n");
93
+ builder.append("8\n" + layer.toString() + "\n");
94
+ builder.append("66\n" + "1" + "\n");
95
+ for (let point of c.points) {
96
+ builder.append("0\nVERTEX\n");
97
+ builder.append("8\n" + layer.toString() + "\n");
98
+ builder.append("10\n" + point.x.toString() + "\n");
99
+ builder.append("20\n" + _invert(point.y, height).toString() + "\n");
100
+ builder.append("30\n0.0\n");
101
+ }
102
+ builder.append("0\nSEQEND\n");
103
+ builder.append("8\n" + layer.toString() + "\n");
104
+ }
105
+
106
+ if (c_in.type === "text") {
107
+ let c: AbstractImage.Text = c_in;
108
+ let horizontalAlignment: number;
109
+ if (c.horizontalGrowthDirection === "left") {
110
+ horizontalAlignment = 2;
111
+ } else if (c.horizontalGrowthDirection === "uniform") {
112
+ horizontalAlignment = 1;
113
+ } else {
114
+ horizontalAlignment = 0;
115
+ }
116
+
117
+ let verticalAlignment: number;
118
+ if (c.verticalGrowthDirection === "up") {
119
+ verticalAlignment = 0;
120
+ } else if (c.verticalGrowthDirection === "uniform") {
121
+ verticalAlignment = 2;
122
+ } else {
123
+ verticalAlignment = 3;
124
+ }
125
+
126
+ let fontSize = c.fontSize - 2;
127
+
128
+ builder.append("0\nTEXT\n");
129
+ builder.append("8\nText\n");
130
+ builder.append("10\n" + c.position.x.toString() + "\n");
131
+ builder.append("20\n" + _invert(c.position.y, height).toString() + "\n");
132
+ builder.append("30\n0.0\n");
133
+ builder.append("11\n" + c.position.x.toString() + "\n");
134
+ builder.append("21\n" + _invert(c.position.y, height).toString() + "\n");
135
+ builder.append("31\n0.0\n");
136
+ builder.append("40\n" + fontSize.toString() + "\n");
137
+ builder.append("1\n" + c.text + "\n");
138
+ builder.append("72\n" + horizontalAlignment.toString() + "\n");
139
+ builder.append("73\n" + verticalAlignment.toString() + "\n");
140
+ }
141
+
142
+ if (c_in.type === "ellipse") {
143
+ let c: AbstractImage.Ellipse = c_in;
144
+ layer++;
145
+
146
+ builder.append("0\nPOLYLINE\n");
147
+ builder.append("8\n" + layer.toString() + "\n");
148
+ builder.append("66\n" + "1" + "\n");
149
+
150
+ let r1 = Math.abs(c.bottomRight.x - c.topLeft.x) / 2.0;
151
+ let r2 = Math.abs(c.topLeft.y - c.bottomRight.y) / 2.0;
152
+ const numPoints: number = 32;
153
+
154
+ // for (let t in Enumerable.Range(0, numPoints).Select(i => 2.0 * PI * i / numPoints))
155
+
156
+ let mylist: Array<number> = [];
157
+ for (let i: number = 0; i <= numPoints; i++) {
158
+ mylist.push(2 * Math.PI * i / numPoints);
159
+ }
160
+
161
+ for (let t of mylist) {
162
+ let x = c.topLeft.x + r1 + r1 * Math.cos(t);
163
+ let y = c.topLeft.y + r2 + r2 * Math.sin(t);
164
+ builder.append("0\nVERTEX\n");
165
+ builder.append("8\n" + layer.toString() + "\n");
166
+ builder.append("10\n" + x.toString() + "\n");
167
+ builder.append("20\n" + _invert(y, height).toString() + "\n");
168
+ builder.append("30\n0.0\n");
169
+ }
170
+ builder.append("0\nSEQEND\n");
171
+ builder.append("8\n" + layer.toString() + "\n");
172
+ }
173
+
174
+ if (c_in.type === "polygon") {
175
+ let c: AbstractImage.Polygon = c_in;
176
+
177
+ builder.append("0\nPOLYLINE\n");
178
+ builder.append("8\n" + layer.toString() + "\n");
179
+ builder.append("66\n" + "1" + "\n");
180
+ // for (let point in c.points.concat(c.points.take(1)))
181
+ // for (let point of concat([c.points, c.points.take(1)])) {
182
+ for (let point of c.points.concat(c.points[0])) {
183
+ builder.append("0\nVERTEX\n");
184
+ builder.append("8\n" + layer.toString() + "\n");
185
+ builder.append("10\n" + point.x.toString() + "\n");
186
+ builder.append("20\n" + _invert(point.y, height).toString() + "\n");
187
+ builder.append("30\n0.0\n");
188
+ }
189
+ builder.append("0\nSEQEND\n");
190
+ builder.append("8\n" + layer.toString() + "\n");
191
+ }
192
+
193
+ if (c_in.type === "rectangle") {
194
+ let c: AbstractImage.Rectangle = c_in;
195
+
196
+ builder.append("0\nPOLYLINE\n");
197
+ builder.append("8\n" + layer.toString() + "\n");
198
+ builder.append("66\n" + "1" + "\n");
199
+ let corners = AbstractImage.corners(c);
200
+ // for (let point in c.Corners().Concat(c.Corners().Take(1))) {
201
+ // for (let point of concat([corners, corners.take(1)])) {
202
+ for (let point of corners.concat(corners[0])) {
203
+ builder.append("0\nVERTEX\n");
204
+ builder.append("8\n" + layer.toString() + "\n");
205
+ builder.append("10\n" + point.x.toString() + "\n");
206
+ builder.append("20\n" + _invert(point.y, height).toString() + "\n");
207
+ builder.append("30\n0.0\n");
208
+ }
209
+ builder.append("0\nSEQEND\n");
210
+ builder.append("8\n" + layer.toString() + "\n");
211
+ }
212
+ }
213
+
214
+ function _invert(d: number, height: number): number {
215
+ return height - d;
216
+ }
217
+
218
+ //}