plotboilerplate 1.14.0 → 1.17.0

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 (232) hide show
  1. package/README.md +2 -0
  2. package/changelog.md +57 -0
  3. package/dist/index.esm.js +856 -694
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.esm.min.js +1 -1
  6. package/dist/index.esm.min.js.map +1 -1
  7. package/dist/plotboilerplate.browser.min.js +1 -1
  8. package/dist/plotboilerplate.browser.min.js.map +1 -1
  9. package/dist/plotboilerplate.js +858 -598
  10. package/dist/plotboilerplate.min.js +1 -1
  11. package/package.json +1 -1
  12. package/src/cjs/BezierPath.d.ts +32 -14
  13. package/src/cjs/BezierPath.js +65 -24
  14. package/src/cjs/BezierPath.js.map +1 -1
  15. package/src/cjs/Bounds.d.ts +22 -1
  16. package/src/cjs/Bounds.js +24 -1
  17. package/src/cjs/Bounds.js.map +1 -1
  18. package/src/cjs/Circle.d.ts +15 -13
  19. package/src/cjs/Circle.js +16 -34
  20. package/src/cjs/Circle.js.map +1 -1
  21. package/src/cjs/CircleSector.d.ts +17 -16
  22. package/src/cjs/CircleSector.js +12 -24
  23. package/src/cjs/CircleSector.js.map +1 -1
  24. package/src/cjs/CubicBezierCurve.d.ts +16 -15
  25. package/src/cjs/CubicBezierCurve.js +57 -94
  26. package/src/cjs/CubicBezierCurve.js.map +1 -1
  27. package/src/cjs/KeyHandler.d.ts +10 -3
  28. package/src/cjs/KeyHandler.js +28 -23
  29. package/src/cjs/KeyHandler.js.map +1 -1
  30. package/src/cjs/Line.d.ts +2 -15
  31. package/src/cjs/Line.js +6 -31
  32. package/src/cjs/Line.js.map +1 -1
  33. package/src/cjs/MouseHandler.js +43 -53
  34. package/src/cjs/MouseHandler.js.map +1 -1
  35. package/src/cjs/PBImage.d.ts +15 -13
  36. package/src/cjs/PBImage.js +11 -15
  37. package/src/cjs/PBImage.js.map +1 -1
  38. package/src/cjs/PBText.d.ts +13 -12
  39. package/src/cjs/PBText.js +8 -12
  40. package/src/cjs/PBText.js.map +1 -1
  41. package/src/cjs/PlotBoilerplate.js +3 -2
  42. package/src/cjs/PlotBoilerplate.js.map +1 -1
  43. package/src/cjs/Polygon.d.ts +44 -14
  44. package/src/cjs/Polygon.js +116 -66
  45. package/src/cjs/Polygon.js.map +1 -1
  46. package/src/cjs/Triangle.d.ts +15 -13
  47. package/src/cjs/Triangle.js +23 -64
  48. package/src/cjs/Triangle.js.map +1 -1
  49. package/src/cjs/VEllipse.d.ts +14 -9
  50. package/src/cjs/VEllipse.js +10 -18
  51. package/src/cjs/VEllipse.js.map +1 -1
  52. package/src/cjs/VEllipseSector.d.ts +15 -1
  53. package/src/cjs/VEllipseSector.js +11 -1
  54. package/src/cjs/VEllipseSector.js.map +1 -1
  55. package/src/cjs/Vector.d.ts +3 -15
  56. package/src/cjs/Vector.js +9 -49
  57. package/src/cjs/Vector.js.map +1 -1
  58. package/src/cjs/VertTuple.d.ts +15 -1
  59. package/src/cjs/VertTuple.js +14 -19
  60. package/src/cjs/VertTuple.js.map +1 -1
  61. package/src/cjs/Vertex.d.ts +47 -13
  62. package/src/cjs/Vertex.js +62 -22
  63. package/src/cjs/Vertex.js.map +1 -1
  64. package/src/cjs/VertexListeners.d.ts +12 -8
  65. package/src/cjs/VertexListeners.js +18 -25
  66. package/src/cjs/VertexListeners.js.map +1 -1
  67. package/src/cjs/draw.d.ts +41 -2
  68. package/src/cjs/draw.js +140 -3
  69. package/src/cjs/draw.js.map +1 -1
  70. package/src/cjs/drawgl.d.ts +38 -2
  71. package/src/cjs/drawgl.js +41 -2
  72. package/src/cjs/drawgl.js.map +1 -1
  73. package/src/cjs/drawutilssvg.d.ts +66 -3
  74. package/src/cjs/drawutilssvg.js +140 -15
  75. package/src/cjs/drawutilssvg.js.map +1 -1
  76. package/src/cjs/index.d.ts +0 -1
  77. package/src/cjs/index.js +0 -1
  78. package/src/cjs/index.js.map +1 -1
  79. package/src/cjs/interfaces/DrawLib.d.ts +61 -26
  80. package/src/cjs/interfaces/DrawLib.js +2 -0
  81. package/src/cjs/interfaces/DrawLib.js.map +1 -1
  82. package/src/cjs/interfaces/core.d.ts +0 -12
  83. package/src/cjs/module.d.ts +1 -3
  84. package/src/cjs/module.js +2 -5
  85. package/src/cjs/module.js.map +1 -1
  86. package/src/cjs/utils/creategui.js +16 -2
  87. package/src/cjs/utils/datastructures/Girih.d.ts +5 -0
  88. package/src/cjs/utils/datastructures/Girih.js +18 -14
  89. package/src/cjs/utils/datastructures/Girih.js.map +1 -1
  90. package/src/cjs/utils/datastructures/GirihPenroseRhombus.js +42 -25
  91. package/src/cjs/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
  92. package/src/cjs/utils/datastructures/GirihTile.js +2 -13
  93. package/src/cjs/utils/datastructures/GirihTile.js.map +1 -1
  94. package/src/cjs/utils/findInVertexArray.d.ts +19 -0
  95. package/src/cjs/utils/findInVertexArray.js +29 -0
  96. package/src/cjs/utils/findInVertexArray.js.map +1 -0
  97. package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +17 -1
  98. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +50 -32
  99. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  100. package/src/cjs/utils/io/DndFileHandler.d.ts +63 -0
  101. package/src/cjs/utils/io/DndFileHandler.js +112 -0
  102. package/src/cjs/utils/io/DndFileHandler.js.map +1 -0
  103. package/src/cjs/utils/io/FileDrop.d.ts +98 -0
  104. package/src/cjs/utils/io/FileDrop.js +142 -0
  105. package/src/cjs/utils/io/FileDrop.js.map +1 -0
  106. package/src/esm/BezierPath.d.ts +32 -14
  107. package/src/esm/BezierPath.js +65 -24
  108. package/src/esm/BezierPath.js.map +1 -1
  109. package/src/esm/Bounds.d.ts +22 -1
  110. package/src/esm/Bounds.js +24 -1
  111. package/src/esm/Bounds.js.map +1 -1
  112. package/src/esm/Circle.d.ts +15 -13
  113. package/src/esm/Circle.js +16 -34
  114. package/src/esm/Circle.js.map +1 -1
  115. package/src/esm/CircleSector.d.ts +17 -16
  116. package/src/esm/CircleSector.js +12 -24
  117. package/src/esm/CircleSector.js.map +1 -1
  118. package/src/esm/CubicBezierCurve.d.ts +16 -15
  119. package/src/esm/CubicBezierCurve.js +57 -94
  120. package/src/esm/CubicBezierCurve.js.map +1 -1
  121. package/src/esm/KeyHandler.d.ts +10 -3
  122. package/src/esm/KeyHandler.js +28 -23
  123. package/src/esm/KeyHandler.js.map +1 -1
  124. package/src/esm/Line.d.ts +2 -15
  125. package/src/esm/Line.js +6 -31
  126. package/src/esm/Line.js.map +1 -1
  127. package/src/esm/MouseHandler.js +43 -53
  128. package/src/esm/MouseHandler.js.map +1 -1
  129. package/src/esm/PBImage.d.ts +15 -13
  130. package/src/esm/PBImage.js +11 -15
  131. package/src/esm/PBImage.js.map +1 -1
  132. package/src/esm/PBText.d.ts +13 -12
  133. package/src/esm/PBText.js +8 -12
  134. package/src/esm/PBText.js.map +1 -1
  135. package/src/esm/PlotBoilerplate.js +3 -2
  136. package/src/esm/PlotBoilerplate.js.map +1 -1
  137. package/src/esm/Polygon.d.ts +44 -14
  138. package/src/esm/Polygon.js +116 -66
  139. package/src/esm/Polygon.js.map +1 -1
  140. package/src/esm/Triangle.d.ts +15 -13
  141. package/src/esm/Triangle.js +23 -64
  142. package/src/esm/Triangle.js.map +1 -1
  143. package/src/esm/VEllipse.d.ts +14 -9
  144. package/src/esm/VEllipse.js +10 -18
  145. package/src/esm/VEllipse.js.map +1 -1
  146. package/src/esm/VEllipseSector.d.ts +15 -1
  147. package/src/esm/VEllipseSector.js +11 -1
  148. package/src/esm/VEllipseSector.js.map +1 -1
  149. package/src/esm/Vector.d.ts +3 -15
  150. package/src/esm/Vector.js +9 -49
  151. package/src/esm/Vector.js.map +1 -1
  152. package/src/esm/VertTuple.d.ts +15 -1
  153. package/src/esm/VertTuple.js +14 -19
  154. package/src/esm/VertTuple.js.map +1 -1
  155. package/src/esm/Vertex.d.ts +47 -13
  156. package/src/esm/Vertex.js +62 -22
  157. package/src/esm/Vertex.js.map +1 -1
  158. package/src/esm/VertexListeners.d.ts +12 -8
  159. package/src/esm/VertexListeners.js +18 -25
  160. package/src/esm/VertexListeners.js.map +1 -1
  161. package/src/esm/draw.d.ts +41 -2
  162. package/src/esm/draw.js +139 -3
  163. package/src/esm/draw.js.map +1 -1
  164. package/src/esm/drawgl.d.ts +38 -2
  165. package/src/esm/drawgl.js +41 -2
  166. package/src/esm/drawgl.js.map +1 -1
  167. package/src/esm/drawutilssvg.d.ts +66 -3
  168. package/src/esm/drawutilssvg.js +140 -15
  169. package/src/esm/drawutilssvg.js.map +1 -1
  170. package/src/esm/index.d.ts +0 -1
  171. package/src/esm/index.js +0 -1
  172. package/src/esm/index.js.map +1 -1
  173. package/src/esm/interfaces/DrawLib.d.ts +61 -26
  174. package/src/esm/interfaces/DrawLib.js +2 -0
  175. package/src/esm/interfaces/DrawLib.js.map +1 -1
  176. package/src/esm/interfaces/core.d.ts +0 -12
  177. package/src/esm/module.d.ts +1 -3
  178. package/src/esm/module.js +5 -4
  179. package/src/esm/module.js.map +1 -1
  180. package/src/esm/utils/datastructures/Girih.d.ts +5 -0
  181. package/src/esm/utils/datastructures/Girih.js +18 -14
  182. package/src/esm/utils/datastructures/Girih.js.map +1 -1
  183. package/src/esm/utils/datastructures/GirihPenroseRhombus.js +42 -25
  184. package/src/esm/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
  185. package/src/esm/utils/datastructures/GirihTile.js +2 -13
  186. package/src/esm/utils/datastructures/GirihTile.js.map +1 -1
  187. package/src/esm/utils/findInVertexArray.d.ts +19 -0
  188. package/src/esm/utils/findInVertexArray.js +25 -0
  189. package/src/esm/utils/findInVertexArray.js.map +1 -0
  190. package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +17 -1
  191. package/src/esm/utils/helpers/BezierPathInteractionHelper.js +49 -32
  192. package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  193. package/src/esm/utils/io/DndFileHandler.d.ts +63 -0
  194. package/src/esm/utils/io/DndFileHandler.js +106 -0
  195. package/src/esm/utils/io/DndFileHandler.js.map +1 -0
  196. package/src/esm/utils/io/FileDrop.d.ts +98 -0
  197. package/src/esm/utils/io/FileDrop.js +136 -0
  198. package/src/esm/utils/io/FileDrop.js.map +1 -0
  199. package/src/ts/BezierPath.ts +78 -22
  200. package/src/ts/Bounds.ts +25 -1
  201. package/src/ts/Circle.ts +187 -200
  202. package/src/ts/CircleSector.ts +141 -141
  203. package/src/ts/CubicBezierCurve.ts +738 -810
  204. package/src/ts/KeyHandler.ts +221 -212
  205. package/src/ts/Line.ts +48 -80
  206. package/src/ts/MouseHandler.ts +356 -368
  207. package/src/ts/PBImage.ts +67 -69
  208. package/src/ts/PBText.ts +16 -14
  209. package/src/ts/PlotBoilerplate.ts +4 -2
  210. package/src/ts/Polygon.ts +493 -451
  211. package/src/ts/Triangle.ts +444 -489
  212. package/src/ts/VEllipse.ts +18 -17
  213. package/src/ts/VEllipseSector.ts +20 -1
  214. package/src/ts/Vector.ts +124 -160
  215. package/src/ts/VertTuple.ts +333 -338
  216. package/src/ts/Vertex.ts +75 -21
  217. package/src/ts/VertexListeners.ts +248 -266
  218. package/src/ts/draw.ts +192 -3
  219. package/src/ts/drawgl.ts +44 -2
  220. package/src/ts/drawutilssvg.ts +181 -15
  221. package/src/ts/index.ts +0 -1
  222. package/src/ts/interfaces/DrawLib.ts +69 -26
  223. package/src/ts/interfaces/core.ts +0 -11
  224. package/src/ts/module.ts +2 -4
  225. package/src/ts/utils/datastructures/Girih.ts +204 -209
  226. package/src/ts/utils/datastructures/GirihPenroseRhombus.ts +170 -152
  227. package/src/ts/utils/datastructures/GirihTile.ts +394 -419
  228. package/src/ts/utils/findInVertexArray.ts +28 -0
  229. package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +56 -34
  230. package/src/ts/utils/io/FileDrop.ts +178 -0
  231. package/src/ts/SVGBuilder.ts +0 -109
  232. package/src/ts/utils/algorithms/sh-tmp.ts~ +0 -59
@@ -6,12 +6,10 @@
6
6
  * @version 1.1.1
7
7
  **/
8
8
 
9
-
10
9
  import { Circle } from "./Circle";
11
10
  import { UIDGenerator } from "./UIDGenerator";
12
11
  import { SVGPathParams, SVGSerializable, UID, XYCoords } from "./interfaces";
13
12
 
14
-
15
13
  /**
16
14
  * @classdesc A simple circle sector: circle, start- and end-angle.
17
15
  *
@@ -22,151 +20,153 @@ import { SVGPathParams, SVGSerializable, UID, XYCoords } from "./interfaces";
22
20
  * @requires XYCoords
23
21
  **/
24
22
  export class CircleSector implements SVGSerializable {
25
-
26
- /**
27
- * Required to generate proper CSS classes and other class related IDs.
28
- **/
29
- readonly className : string = "CircleSector";
30
-
31
-
23
+ /**
24
+ * Required to generate proper CSS classes and other class related IDs.
25
+ **/
26
+ readonly className: string = "CircleSector";
27
+
28
+ /**
29
+ * The UID of this drawable object.
30
+ *
31
+ * @member {UID}
32
+ * @memberof CircleSector
33
+ * @instance
34
+ * @readonly
35
+ */
36
+ readonly uid: UID;
37
+
38
+ /**
39
+ * @member {Circle}
40
+ * @memberof CircleSector
41
+ * @instance
42
+ */
43
+ circle: Circle;
44
+
45
+ /**
46
+ * @member {number}
47
+ * @memberof CircleSector
48
+ * @instance
49
+ */
50
+ startAngle: number;
51
+
52
+ /**
53
+ * @member {number}
54
+ * @memberof CircleSector
55
+ * @instance
56
+ */
57
+ endAngle: number;
58
+
59
+ /**
60
+ * @member isDestroyed
61
+ * @memberof CircleSector
62
+ * @type {boolean}
63
+ * @instance
64
+ */
65
+ isDestroyed: boolean;
66
+
67
+ /**
68
+ * Create a new circle sector with given circle, start- and end-angle.
69
+ *
70
+ * @constructor
71
+ * @name CircleSector
72
+ * @param {Circle} circle - The circle.
73
+ * @param {number} startAngle - The start angle of the sector.
74
+ * @param {number} endAngle - The end angle of the sector.
75
+ */
76
+ constructor(circle: Circle, startAngle: number, endAngle: number) {
77
+ this.uid = UIDGenerator.next();
78
+ this.circle = circle;
79
+ this.startAngle = startAngle;
80
+ this.endAngle = endAngle;
81
+ }
82
+
83
+ /**
84
+ * This function should invalidate any installed listeners and invalidate this object.
85
+ * After calling this function the object might not hold valid data any more and
86
+ * should not be used.
87
+ */
88
+ destroy() {
89
+ this.circle.destroy();
90
+ this.isDestroyed = true;
91
+ }
92
+
93
+ static circleSectorUtils = {
32
94
  /**
33
- * The UID of this drawable object.
95
+ * Helper function to convert polar circle coordinates to cartesian coordinates.
34
96
  *
35
- * @member {UID}
36
- * @memberof CircleSector
37
- * @instance
38
- * @readonly
39
- */
40
- readonly uid : UID;
41
-
42
-
43
- /**
44
- * @member {Circle}
45
- * @memberof CircleSector
46
- * @instance
47
- */
48
- circle:Circle;
49
-
50
- /**
51
- * @member {number}
52
- * @memberof CircleSector
53
- * @instance
54
- */
55
- startAngle:number;
56
-
57
- /**
58
- * @member {number}
59
- * @memberof CircleSector
60
- * @instance
97
+ * TODO: generalize for ellipses (two radii).
98
+ *
99
+ * @param {number} angle - The angle in radians.
61
100
  */
62
- endAngle:number;
63
-
101
+ polarToCartesian: (centerX: number, centerY: number, radius: number, angle: number): XYCoords => {
102
+ return {
103
+ x: centerX + radius * Math.cos(angle),
104
+ y: centerY + radius * Math.sin(angle)
105
+ };
106
+ },
64
107
 
65
108
  /**
66
- * Create a new circle sector with given circle, start- and end-angle.
109
+ * Helper function to convert a circle section as SVG arc params (for the `d` attribute).
110
+ * Found at: https://stackoverflow.com/questions/5736398/how-to-calculate-the-svg-path-for-an-arc-of-a-circle
67
111
  *
68
- * @constructor
69
- * @name CircleSector
70
- * @param {Circle} circle - The circle.
71
- * @param {number} startAngle - The start angle of the sector.
72
- * @param {number} endAngle - The end angle of the sector.
73
- */
74
- constructor( circle:Circle, startAngle:number, endAngle:number ) {
75
- this.uid = UIDGenerator.next();
76
- this.circle = circle;
77
- this.startAngle = startAngle;
78
- this.endAngle = endAngle;
79
- };
80
-
81
-
82
-
83
-
84
- /**
85
- * Create an SVG representation of this circle.
112
+ * TODO: generalize for ellipses (two radii).
86
113
  *
87
- * @method toSVGString
88
- * @param {object=} options - An optional set of options, like 'className'.
89
- * @return {string} A string representing the SVG code for this vertex.
90
- * @instance
91
- * @memberof Circle
114
+ * @param {boolean} options.moveToStart - If false (default=true) the initial 'Move' command will not be used.
115
+ * @return [ 'A', radiusx, radiusy, rotation=0, largeArcFlag=1|0, sweepFlag=0, endx, endy ]
92
116
  */
93
- toSVGString( options:{className?:string } ) {
94
- options = options || {};
95
- var buffer : Array<string> = [];
96
- buffer.push( '<path ' );
97
- if( options.className )
98
- buffer.push( ' class="' + options.className + '"' );
99
- const data : SVGPathParams = CircleSector.circleSectorUtils.describeSVGArc(
100
- this.circle.center.x, this.circle.center.y,
101
- this.circle.radius,
102
- this.startAngle, this.endAngle );
103
- buffer.push( ' d="' + data.join(" ") + '" />' );
104
- return buffer.join('');
105
- };
106
-
107
- static circleSectorUtils = {
108
- /**
109
- * Helper function to convert polar circle coordinates to cartesian coordinates.
110
- *
111
- * TODO: generalize for ellipses (two radii).
112
- *
113
- * @param {number} angle - The angle in radians.
114
- */
115
- polarToCartesian : ( centerX:number, centerY:number, radius:number, angle:number ) : XYCoords => {
116
- return {
117
- x: centerX + (radius * Math.cos(angle)),
118
- y: centerY + (radius * Math.sin(angle))
119
- };
120
- },
121
-
122
- /**
123
- * Helper function to convert a circle section as SVG arc params (for the `d` attribute).
124
- * Found at: https://stackoverflow.com/questions/5736398/how-to-calculate-the-svg-path-for-an-arc-of-a-circle
125
- *
126
- * TODO: generalize for ellipses (two radii).
127
- *
128
- * @param {boolean} options.moveToStart - If false (default=true) the initial 'Move' command will not be used.
129
- * @return [ 'A', radiusx, radiusy, rotation=0, largeArcFlag=1|0, sweepFlag=0, endx, endy ]
130
- */
131
- describeSVGArc : ( x:number, y:number,
132
- radius:number,
133
- startAngle:number, endAngle:number,
134
- options?:{moveToStart:boolean}
135
- ) : SVGPathParams => {
136
-
137
- if( typeof options === 'undefined' )
138
- options = { moveToStart : true };
139
-
140
- const end : XYCoords = CircleSector.circleSectorUtils.polarToCartesian(x, y, radius, endAngle);
141
- const start : XYCoords = CircleSector.circleSectorUtils.polarToCartesian(x, y, radius, startAngle);
142
-
143
- // Split full circles into two halves.
144
- // Some browsers have problems to render full circles (described by start==end).
145
- if( Math.PI*2-Math.abs(startAngle-endAngle) < 0.001 ) {
146
- const firstHalf : SVGPathParams = CircleSector.circleSectorUtils.describeSVGArc( x, y, radius, startAngle, startAngle+(endAngle-startAngle)/2, options );
147
- const secondHalf : SVGPathParams = CircleSector.circleSectorUtils.describeSVGArc( x, y, radius, startAngle+(endAngle-startAngle)/2, endAngle, options );
148
- return firstHalf.concat( secondHalf );
149
- }
150
-
151
- // Boolean stored as integers (0|1).
152
- const diff : number = endAngle-startAngle;
153
- var largeArcFlag : number;
154
- var sweepFlag : number;
155
- if( diff < 0 ) {
156
- largeArcFlag = Math.abs(diff) < Math.PI ? 1 : 0;
157
- sweepFlag = 1;
158
- } else {
159
- largeArcFlag = Math.abs(diff) > Math.PI ? 1 : 0;
160
- sweepFlag = 1;
161
- }
162
-
163
- const pathData = [];
164
- if( options.moveToStart ) {
165
- pathData.push('M', start.x, start.y );
166
- }
167
- pathData.push("A", radius, radius, 0, largeArcFlag, sweepFlag, end.x, end.y );
168
- return pathData;
169
- }
170
- };
171
-
117
+ describeSVGArc: (
118
+ x: number,
119
+ y: number,
120
+ radius: number,
121
+ startAngle: number,
122
+ endAngle: number,
123
+ options?: { moveToStart: boolean }
124
+ ): SVGPathParams => {
125
+ if (typeof options === "undefined") options = { moveToStart: true };
126
+
127
+ const end: XYCoords = CircleSector.circleSectorUtils.polarToCartesian(x, y, radius, endAngle);
128
+ const start: XYCoords = CircleSector.circleSectorUtils.polarToCartesian(x, y, radius, startAngle);
129
+
130
+ // Split full circles into two halves.
131
+ // Some browsers have problems to render full circles (described by start==end).
132
+ if (Math.PI * 2 - Math.abs(startAngle - endAngle) < 0.001) {
133
+ const firstHalf: SVGPathParams = CircleSector.circleSectorUtils.describeSVGArc(
134
+ x,
135
+ y,
136
+ radius,
137
+ startAngle,
138
+ startAngle + (endAngle - startAngle) / 2,
139
+ options
140
+ );
141
+ const secondHalf: SVGPathParams = CircleSector.circleSectorUtils.describeSVGArc(
142
+ x,
143
+ y,
144
+ radius,
145
+ startAngle + (endAngle - startAngle) / 2,
146
+ endAngle,
147
+ options
148
+ );
149
+ return firstHalf.concat(secondHalf);
150
+ }
151
+
152
+ // Boolean stored as integers (0|1).
153
+ const diff: number = endAngle - startAngle;
154
+ var largeArcFlag: number;
155
+ var sweepFlag: number;
156
+ if (diff < 0) {
157
+ largeArcFlag = Math.abs(diff) < Math.PI ? 1 : 0;
158
+ sweepFlag = 1;
159
+ } else {
160
+ largeArcFlag = Math.abs(diff) > Math.PI ? 1 : 0;
161
+ sweepFlag = 1;
162
+ }
163
+
164
+ const pathData = [];
165
+ if (options.moveToStart) {
166
+ pathData.push("M", start.x, start.y);
167
+ }
168
+ pathData.push("A", radius, radius, 0, largeArcFlag, sweepFlag, end.x, end.y);
169
+ return pathData;
170
+ }
171
+ };
172
172
  } // END class