plotboilerplate 1.27.1 → 1.28.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.
- package/dist/index.esm.js +135 -36
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/plotboilerplate.browser.min.js +1 -1
- package/dist/plotboilerplate.browser.min.js.map +1 -1
- package/dist/plotboilerplate.js +96 -17
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +2 -1
- package/src/_cjs/BezierPath.d.ts +610 -0
- package/src/_cjs/BezierPath.js +1127 -0
- package/src/_cjs/BezierPath.js.map +1 -0
- package/src/_cjs/Bounds.d.ts +252 -0
- package/src/_cjs/Bounds.js +320 -0
- package/src/_cjs/Bounds.js.map +1 -0
- package/src/_cjs/Circle.d.ts +214 -0
- package/src/_cjs/Circle.js +339 -0
- package/src/_cjs/Circle.js.map +1 -0
- package/src/_cjs/CircleSector.d.ts +211 -0
- package/src/_cjs/CircleSector.js +364 -0
- package/src/_cjs/CircleSector.js.map +1 -0
- package/src/_cjs/CubicBezierCurve.d.ts +656 -0
- package/src/_cjs/CubicBezierCurve.js +1062 -0
- package/src/_cjs/CubicBezierCurve.js.map +1 -0
- package/src/_cjs/Grid.d.ts +83 -0
- package/src/_cjs/Grid.js +90 -0
- package/src/_cjs/Grid.js.map +1 -0
- package/src/_cjs/KeyHandler.d.ts +177 -0
- package/src/_cjs/KeyHandler.js +435 -0
- package/src/_cjs/KeyHandler.js.map +1 -0
- package/src/_cjs/Line.d.ts +134 -0
- package/src/_cjs/Line.js +220 -0
- package/src/_cjs/Line.js.map +1 -0
- package/src/_cjs/MouseHandler.d.ts +283 -0
- package/src/_cjs/MouseHandler.js +423 -0
- package/src/_cjs/MouseHandler.js.map +1 -0
- package/src/_cjs/PBImage.d.ts +81 -0
- package/src/_cjs/PBImage.js +61 -0
- package/src/_cjs/PBImage.js.map +1 -0
- package/src/_cjs/PBText.d.ts +118 -0
- package/src/_cjs/PBText.js +63 -0
- package/src/_cjs/PBText.js.map +1 -0
- package/src/_cjs/PlotBoilerplate.d.ts +899 -0
- package/src/_cjs/PlotBoilerplate.js +2348 -0
- package/src/_cjs/PlotBoilerplate.js.map +1 -0
- package/src/_cjs/Polygon.d.ts +520 -0
- package/src/_cjs/Polygon.js +933 -0
- package/src/_cjs/Polygon.js.map +1 -0
- package/src/_cjs/SVGBuilder.d.ts +47 -0
- package/src/_cjs/SVGBuilder.js +100 -0
- package/src/_cjs/SVGBuilder.js.map +1 -0
- package/src/_cjs/Triangle.d.ts +392 -0
- package/src/_cjs/Triangle.js +497 -0
- package/src/_cjs/Triangle.js.map +1 -0
- package/src/_cjs/UIDGenerator.d.ts +12 -0
- package/src/_cjs/UIDGenerator.js +21 -0
- package/src/_cjs/UIDGenerator.js.map +1 -0
- package/src/_cjs/VEllipse.d.ts +319 -0
- package/src/_cjs/VEllipse.js +578 -0
- package/src/_cjs/VEllipse.js.map +1 -0
- package/src/_cjs/VEllipseSector.d.ts +230 -0
- package/src/_cjs/VEllipseSector.js +428 -0
- package/src/_cjs/VEllipseSector.js.map +1 -0
- package/src/_cjs/Vector.d.ts +126 -0
- package/src/_cjs/Vector.js +199 -0
- package/src/_cjs/Vector.js.map +1 -0
- package/src/_cjs/VertTuple.d.ts +284 -0
- package/src/_cjs/VertTuple.js +348 -0
- package/src/_cjs/VertTuple.js.map +1 -0
- package/src/_cjs/Vertex.d.ts +498 -0
- package/src/_cjs/Vertex.js +703 -0
- package/src/_cjs/Vertex.js.map +1 -0
- package/src/_cjs/VertexAttr.d.ts +72 -0
- package/src/_cjs/VertexAttr.js +59 -0
- package/src/_cjs/VertexAttr.js.map +1 -0
- package/src/_cjs/VertexListeners.d.ts +208 -0
- package/src/_cjs/VertexListeners.js +267 -0
- package/src/_cjs/VertexListeners.js.map +1 -0
- package/src/_cjs/draw.d.ts +657 -0
- package/src/_cjs/draw.js +1164 -0
- package/src/_cjs/draw.js.map +1 -0
- package/src/_cjs/drawgl.d.ts +544 -0
- package/src/_cjs/drawgl.js +794 -0
- package/src/_cjs/drawgl.js.map +1 -0
- package/src/_cjs/drawutilssvg.d.ts +954 -0
- package/src/_cjs/drawutilssvg.js +1713 -0
- package/src/_cjs/drawutilssvg.js.map +1 -0
- package/src/_cjs/entry-glsupport.js +28 -0
- package/src/_cjs/entry.js +29 -0
- package/src/_cjs/geomutils.d.ts +77 -0
- package/src/_cjs/geomutils.js +126 -0
- package/src/_cjs/geomutils.js.map +1 -0
- package/src/_cjs/index.d.ts +102 -0
- package/src/_cjs/index.js +128 -0
- package/src/_cjs/index.js.map +1 -0
- package/src/_cjs/interfaces/DrawLib.d.ts +582 -0
- package/src/_cjs/interfaces/DrawLib.js +32 -0
- package/src/_cjs/interfaces/DrawLib.js.map +1 -0
- package/src/_cjs/interfaces/additionals.d.ts +95 -0
- package/src/_cjs/interfaces/additionals.js +3 -0
- package/src/_cjs/interfaces/additionals.js.map +1 -0
- package/src/_cjs/interfaces/core.d.ts +286 -0
- package/src/_cjs/interfaces/core.js +30 -0
- package/src/_cjs/interfaces/core.js.map +1 -0
- package/src/_cjs/interfaces/externals.d.ts +56 -0
- package/src/_cjs/interfaces/externals.js +8 -0
- package/src/_cjs/interfaces/externals.js.map +1 -0
- package/src/_cjs/interfaces/index.d.ts +4 -0
- package/src/_cjs/interfaces/index.js +21 -0
- package/src/_cjs/interfaces/index.js.map +1 -0
- package/src/_cjs/module.d.ts +26 -0
- package/src/_cjs/module.js +60 -0
- package/src/_cjs/module.js.map +1 -0
- package/src/_cjs/utils/InitializationObserver.d.ts +18 -0
- package/src/_cjs/utils/InitializationObserver.js +63 -0
- package/src/_cjs/utils/InitializationObserver.js.map +1 -0
- package/src/_cjs/utils/LissajousFigure.d.ts +34 -0
- package/src/_cjs/utils/LissajousFigure.js +100 -0
- package/src/_cjs/utils/LissajousFigure.js.map +1 -0
- package/src/_cjs/utils/NGons.d.ts +13 -0
- package/src/_cjs/utils/NGons.js +36 -0
- package/src/_cjs/utils/NGons.js.map +1 -0
- package/src/_cjs/utils/Params.d.ts +17 -0
- package/src/_cjs/utils/Params.js +53 -0
- package/src/_cjs/utils/Params.js.map +1 -0
- package/src/_cjs/utils/PerlinNoise.d.ts +19 -0
- package/src/_cjs/utils/PerlinNoise.js +352 -0
- package/src/_cjs/utils/PerlinNoise.js.map +1 -0
- package/src/_cjs/utils/SVGPathUtils.d.ts +22 -0
- package/src/_cjs/utils/SVGPathUtils.js +45 -0
- package/src/_cjs/utils/SVGPathUtils.js.map +1 -0
- package/src/_cjs/utils/WebColors.d.ts +35 -0
- package/src/_cjs/utils/WebColors.js +58 -0
- package/src/_cjs/utils/WebColors.js.map +1 -0
- package/src/_cjs/utils/WebColorsContrast.d.ts +6 -0
- package/src/_cjs/utils/WebColorsContrast.js +12 -0
- package/src/_cjs/utils/WebColorsContrast.js.map +1 -0
- package/src/_cjs/utils/WebColorsMalachite.d.ts +12 -0
- package/src/_cjs/utils/WebColorsMalachite.js +28 -0
- package/src/_cjs/utils/WebColorsMalachite.js.map +1 -0
- package/src/_cjs/utils/algorithms/CatmullRomPath.d.ts +60 -0
- package/src/_cjs/utils/algorithms/CatmullRomPath.js +108 -0
- package/src/_cjs/utils/algorithms/CatmullRomPath.js.map +1 -0
- package/src/_cjs/utils/algorithms/CircleIntersections.d.ts +170 -0
- package/src/_cjs/utils/algorithms/CircleIntersections.js +310 -0
- package/src/_cjs/utils/algorithms/CircleIntersections.js.map +1 -0
- package/src/_cjs/utils/algorithms/ContourLineDetection.d.ts +150 -0
- package/src/_cjs/utils/algorithms/ContourLineDetection.js +367 -0
- package/src/_cjs/utils/algorithms/ContourLineDetection.js.map +1 -0
- package/src/_cjs/utils/algorithms/CubicSplinePath.d.ts +63 -0
- package/src/_cjs/utils/algorithms/CubicSplinePath.js +175 -0
- package/src/_cjs/utils/algorithms/CubicSplinePath.js.map +1 -0
- package/src/_cjs/utils/algorithms/HobbyPath.d.ts +81 -0
- package/src/_cjs/utils/algorithms/HobbyPath.js +278 -0
- package/src/_cjs/utils/algorithms/HobbyPath.js.map +1 -0
- package/src/_cjs/utils/algorithms/Metaballs.d.ts +30 -0
- package/src/_cjs/utils/algorithms/Metaballs.js +114 -0
- package/src/_cjs/utils/algorithms/Metaballs.js.map +1 -0
- package/src/_cjs/utils/algorithms/PolygonInset.d.ts +184 -0
- package/src/_cjs/utils/algorithms/PolygonInset.js +431 -0
- package/src/_cjs/utils/algorithms/PolygonInset.js.map +1 -0
- package/src/_cjs/utils/algorithms/PolygonTesselationOutlines.d.ts +145 -0
- package/src/_cjs/utils/algorithms/PolygonTesselationOutlines.js +269 -0
- package/src/_cjs/utils/algorithms/PolygonTesselationOutlines.js.map +1 -0
- package/src/_cjs/utils/algorithms/arrayFill.d.ts +8 -0
- package/src/_cjs/utils/algorithms/arrayFill.js +18 -0
- package/src/_cjs/utils/algorithms/arrayFill.js.map +1 -0
- package/src/_cjs/utils/algorithms/arrayResize.d.ts +8 -0
- package/src/_cjs/utils/algorithms/arrayResize.js +24 -0
- package/src/_cjs/utils/algorithms/arrayResize.js.map +1 -0
- package/src/_cjs/utils/algorithms/arrayShuffle.d.ts +8 -0
- package/src/_cjs/utils/algorithms/arrayShuffle.js +15 -0
- package/src/_cjs/utils/algorithms/arrayShuffle.js.map +1 -0
- package/src/_cjs/utils/algorithms/clearDuplicateVertices.d.ts +22 -0
- package/src/_cjs/utils/algorithms/clearDuplicateVertices.js +51 -0
- package/src/_cjs/utils/algorithms/clearDuplicateVertices.js.map +1 -0
- package/src/_cjs/utils/algorithms/clearPolygonDuplicateVertices.d.ts +24 -0
- package/src/_cjs/utils/algorithms/clearPolygonDuplicateVertices.js +61 -0
- package/src/_cjs/utils/algorithms/clearPolygonDuplicateVertices.js.map +1 -0
- package/src/_cjs/utils/algorithms/convexHull.d.ts +23 -0
- package/src/_cjs/utils/algorithms/convexHull.js +71 -0
- package/src/_cjs/utils/algorithms/convexHull.js.map +1 -0
- package/src/_cjs/utils/algorithms/convexPolygonIncircle.d.ts +41 -0
- package/src/_cjs/utils/algorithms/convexPolygonIncircle.js +145 -0
- package/src/_cjs/utils/algorithms/convexPolygonIncircle.js.map +1 -0
- package/src/_cjs/utils/algorithms/delaunay.d.ts +30 -0
- package/src/_cjs/utils/algorithms/delaunay.js +158 -0
- package/src/_cjs/utils/algorithms/delaunay.js.map +1 -0
- package/src/_cjs/utils/algorithms/delaunay2voronoi.d.ts +25 -0
- package/src/_cjs/utils/algorithms/delaunay2voronoi.js +104 -0
- package/src/_cjs/utils/algorithms/delaunay2voronoi.js.map +1 -0
- package/src/_cjs/utils/algorithms/detectPaths.d.ts +21 -0
- package/src/_cjs/utils/algorithms/detectPaths.js +169 -0
- package/src/_cjs/utils/algorithms/detectPaths.js.map +1 -0
- package/src/_cjs/utils/algorithms/findPolygonSelfIntersections.d.ts +21 -0
- package/src/_cjs/utils/algorithms/findPolygonSelfIntersections.js +51 -0
- package/src/_cjs/utils/algorithms/findPolygonSelfIntersections.js.map +1 -0
- package/src/_cjs/utils/algorithms/getContrastColor.d.ts +13 -0
- package/src/_cjs/utils/algorithms/getContrastColor.js +26 -0
- package/src/_cjs/utils/algorithms/getContrastColor.js.map +1 -0
- package/src/_cjs/utils/algorithms/matrixFill.d.ts +10 -0
- package/src/_cjs/utils/algorithms/matrixFill.js +21 -0
- package/src/_cjs/utils/algorithms/matrixFill.js.map +1 -0
- package/src/_cjs/utils/algorithms/pixelCornersToRoundPaths.d.ts +23 -0
- package/src/_cjs/utils/algorithms/pixelCornersToRoundPaths.js +270 -0
- package/src/_cjs/utils/algorithms/pixelCornersToRoundPaths.js.map +1 -0
- package/src/_cjs/utils/algorithms/splitPolygonToNonIntersecting.d.ts +28 -0
- package/src/_cjs/utils/algorithms/splitPolygonToNonIntersecting.js +102 -0
- package/src/_cjs/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -0
- package/src/_cjs/utils/algorithms/sutherlandHodgman.d.ts +16 -0
- package/src/_cjs/utils/algorithms/sutherlandHodgman.js +76 -0
- package/src/_cjs/utils/algorithms/sutherlandHodgman.js.map +1 -0
- package/src/_cjs/utils/cloneVertexArray.d.ts +13 -0
- package/src/_cjs/utils/cloneVertexArray.js +23 -0
- package/src/_cjs/utils/cloneVertexArray.js.map +1 -0
- package/src/_cjs/utils/createRandomizedPolygon.d.ts +14 -0
- package/src/_cjs/utils/createRandomizedPolygon.js +32 -0
- package/src/_cjs/utils/createRandomizedPolygon.js.map +1 -0
- package/src/_cjs/utils/creategui.js +434 -0
- package/src/_cjs/utils/dat.gui.arrowbounce.polyfill.js +128 -0
- package/src/_cjs/utils/dat.gui.title.polyfill.js +35 -0
- package/src/_cjs/utils/datastructures/CircularIntervalSet.d.ts +83 -0
- package/src/_cjs/utils/datastructures/CircularIntervalSet.js +163 -0
- package/src/_cjs/utils/datastructures/CircularIntervalSet.js.map +1 -0
- package/src/_cjs/utils/datastructures/Color.d.ts +391 -0
- package/src/_cjs/utils/datastructures/Color.js +1084 -0
- package/src/_cjs/utils/datastructures/Color.js.map +1 -0
- package/src/_cjs/utils/datastructures/ColorGradient.d.ts +81 -0
- package/src/_cjs/utils/datastructures/ColorGradient.js +176 -0
- package/src/_cjs/utils/datastructures/ColorGradient.js.map +1 -0
- package/src/_cjs/utils/datastructures/DataGrid2d.d.ts +53 -0
- package/src/_cjs/utils/datastructures/DataGrid2d.js +20 -0
- package/src/_cjs/utils/datastructures/DataGrid2d.js.map +1 -0
- package/src/_cjs/utils/datastructures/DataGrid2dArrayMatrix.d.ts +88 -0
- package/src/_cjs/utils/datastructures/DataGrid2dArrayMatrix.js +155 -0
- package/src/_cjs/utils/datastructures/DataGrid2dArrayMatrix.js.map +1 -0
- package/src/_cjs/utils/datastructures/DataGrid2dListAdapter.d.ts +59 -0
- package/src/_cjs/utils/datastructures/DataGrid2dListAdapter.js +84 -0
- package/src/_cjs/utils/datastructures/DataGrid2dListAdapter.js.map +1 -0
- package/src/_cjs/utils/datastructures/GenericPath.d.ts +86 -0
- package/src/_cjs/utils/datastructures/GenericPath.js +122 -0
- package/src/_cjs/utils/datastructures/GenericPath.js.map +1 -0
- package/src/_cjs/utils/datastructures/GeometryMesh.d.ts +49 -0
- package/src/_cjs/utils/datastructures/GeometryMesh.js +58 -0
- package/src/_cjs/utils/datastructures/GeometryMesh.js.map +1 -0
- package/src/_cjs/utils/datastructures/Girih.d.ts +181 -0
- package/src/_cjs/utils/datastructures/Girih.js +266 -0
- package/src/_cjs/utils/datastructures/Girih.js.map +1 -0
- package/src/_cjs/utils/datastructures/GirihBowtie.d.ts +37 -0
- package/src/_cjs/utils/datastructures/GirihBowtie.js +152 -0
- package/src/_cjs/utils/datastructures/GirihBowtie.js.map +1 -0
- package/src/_cjs/utils/datastructures/GirihDecagon.d.ts +52 -0
- package/src/_cjs/utils/datastructures/GirihDecagon.js +132 -0
- package/src/_cjs/utils/datastructures/GirihDecagon.js.map +1 -0
- package/src/_cjs/utils/datastructures/GirihHexagon.d.ts +39 -0
- package/src/_cjs/utils/datastructures/GirihHexagon.js +200 -0
- package/src/_cjs/utils/datastructures/GirihHexagon.js.map +1 -0
- package/src/_cjs/utils/datastructures/GirihPenroseRhombus.d.ts +46 -0
- package/src/_cjs/utils/datastructures/GirihPenroseRhombus.js +189 -0
- package/src/_cjs/utils/datastructures/GirihPenroseRhombus.js.map +1 -0
- package/src/_cjs/utils/datastructures/GirihPentagon.d.ts +37 -0
- package/src/_cjs/utils/datastructures/GirihPentagon.js +109 -0
- package/src/_cjs/utils/datastructures/GirihPentagon.js.map +1 -0
- package/src/_cjs/utils/datastructures/GirihRhombus.d.ts +38 -0
- package/src/_cjs/utils/datastructures/GirihRhombus.js +155 -0
- package/src/_cjs/utils/datastructures/GirihRhombus.js.map +1 -0
- package/src/_cjs/utils/datastructures/GirihTile.d.ts +283 -0
- package/src/_cjs/utils/datastructures/GirihTile.js +308 -0
- package/src/_cjs/utils/datastructures/GirihTile.js.map +1 -0
- package/src/_cjs/utils/datastructures/Matrix4x4.d.ts +244 -0
- package/src/_cjs/utils/datastructures/Matrix4x4.js +262 -0
- package/src/_cjs/utils/datastructures/Matrix4x4.js.map +1 -0
- package/src/_cjs/utils/datastructures/VoronoiCell.d.ts +122 -0
- package/src/_cjs/utils/datastructures/VoronoiCell.js +183 -0
- package/src/_cjs/utils/datastructures/VoronoiCell.js.map +1 -0
- package/src/_cjs/utils/datastructures/interfaces.d.ts +13 -0
- package/src/_cjs/utils/datastructures/interfaces.js +10 -0
- package/src/_cjs/utils/datastructures/interfaces.js.map +1 -0
- package/src/_cjs/utils/detectDarkMode.d.ts +10 -0
- package/src/_cjs/utils/detectDarkMode.js +41 -0
- package/src/_cjs/utils/detectDarkMode.js.map +1 -0
- package/src/_cjs/utils/dom/components/ColorGradientPicker.d.ts +246 -0
- package/src/_cjs/utils/dom/components/ColorGradientPicker.js +667 -0
- package/src/_cjs/utils/dom/components/ColorGradientPicker.js.map +1 -0
- package/src/_cjs/utils/dom/components/ColorGradientPickerJSX.d.ts +129 -0
- package/src/_cjs/utils/dom/components/ColorGradientPickerJSX.js +520 -0
- package/src/_cjs/utils/dom/components/ColorGradientPickerJSX.js.map +1 -0
- package/src/_cjs/utils/dom/components/ColorGradientSelector.d.ts +118 -0
- package/src/_cjs/utils/dom/components/ColorGradientSelector.js +327 -0
- package/src/_cjs/utils/dom/components/ColorGradientSelector.js.map +1 -0
- package/src/_cjs/utils/dom/components/Test.d.ts +7 -0
- package/src/_cjs/utils/dom/components/Test.js +30 -0
- package/src/_cjs/utils/dom/components/Test.js.map +1 -0
- package/src/_cjs/utils/dom/getAvailableContainerSpace.d.ts +2 -0
- package/src/_cjs/utils/dom/getAvailableContainerSpace.js +29 -0
- package/src/_cjs/utils/dom/getAvailableContainerSpace.js.map +1 -0
- package/src/_cjs/utils/dom/getFProp.d.ts +5 -0
- package/src/_cjs/utils/dom/getFProp.js +12 -0
- package/src/_cjs/utils/dom/getFProp.js.map +1 -0
- package/src/_cjs/utils/dom/guiSizeToggler.d.ts +18 -0
- package/src/_cjs/utils/dom/guiSizeToggler.js +44 -0
- package/src/_cjs/utils/dom/guiSizeToggler.js.map +1 -0
- package/src/_cjs/utils/findInVertexArray.d.ts +19 -0
- package/src/_cjs/utils/findInVertexArray.js +29 -0
- package/src/_cjs/utils/findInVertexArray.js.map +1 -0
- package/src/_cjs/utils/getFProp.d.ts +5 -0
- package/src/_cjs/utils/getFProp.js +12 -0
- package/src/_cjs/utils/getFProp.js.map +1 -0
- package/src/_cjs/utils/gup.d.ts +14 -0
- package/src/_cjs/utils/gup.js +31 -0
- package/src/_cjs/utils/gup.js.map +1 -0
- package/src/_cjs/utils/helpers/BezierPathInteractionHelper.d.ts +272 -0
- package/src/_cjs/utils/helpers/BezierPathInteractionHelper.js +655 -0
- package/src/_cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -0
- package/src/_cjs/utils/helpers/CircleHelper.d.ts +73 -0
- package/src/_cjs/utils/helpers/CircleHelper.js +93 -0
- package/src/_cjs/utils/helpers/CircleHelper.js.map +1 -0
- package/src/_cjs/utils/helpers/CircleSectorHelper.d.ts +90 -0
- package/src/_cjs/utils/helpers/CircleSectorHelper.js +114 -0
- package/src/_cjs/utils/helpers/CircleSectorHelper.js.map +1 -0
- package/src/_cjs/utils/helpers/TriangleHelper.d.ts +57 -0
- package/src/_cjs/utils/helpers/TriangleHelper.js +83 -0
- package/src/_cjs/utils/helpers/TriangleHelper.js.map +1 -0
- package/src/_cjs/utils/helpers/VEllipseHelper.d.ts +32 -0
- package/src/_cjs/utils/helpers/VEllipseHelper.js +88 -0
- package/src/_cjs/utils/helpers/VEllipseHelper.js.map +1 -0
- package/src/_cjs/utils/helpers/VEllipseSectorHelper.d.ts +52 -0
- package/src/_cjs/utils/helpers/VEllipseSectorHelper.js +135 -0
- package/src/_cjs/utils/helpers/VEllipseSectorHelper.js.map +1 -0
- package/src/_cjs/utils/io/DndFileHandler.d.ts +63 -0
- package/src/_cjs/utils/io/DndFileHandler.js +112 -0
- package/src/_cjs/utils/io/DndFileHandler.js.map +1 -0
- package/src/_cjs/utils/io/FileDrop.d.ts +110 -0
- package/src/_cjs/utils/io/FileDrop.js +177 -0
- package/src/_cjs/utils/io/FileDrop.js.map +1 -0
- package/src/_cjs/utils/lil.gui.arrowbounce.polyfill.js +133 -0
- package/src/_cjs/utils/lil.gui.title.polyfill.js +32 -0
- package/src/_cjs/utils/module.js +18 -0
- package/src/_cjs/utils/parsers/LinearColorGradientParser.d.ts +78 -0
- package/src/_cjs/utils/parsers/LinearColorGradientParser.js +224 -0
- package/src/_cjs/utils/parsers/LinearColorGradientParser.js.map +1 -0
- package/src/_cjs/utils/parsers/OBJParser.d.ts +24 -0
- package/src/_cjs/utils/parsers/OBJParser.js +77 -0
- package/src/_cjs/utils/parsers/OBJParser.js.map +1 -0
- package/src/_cjs/utils/parsers/STLParser.d.ts +61 -0
- package/src/_cjs/utils/parsers/STLParser.js +182 -0
- package/src/_cjs/utils/parsers/STLParser.js.map +1 -0
- package/src/_cjs/utils/parsers/svg/parseSVGPathData.d.ts +27 -0
- package/src/_cjs/utils/parsers/svg/parseSVGPathData.js +486 -0
- package/src/_cjs/utils/parsers/svg/parseSVGPathData.js.map +1 -0
- package/src/_cjs/utils/parsers/svg/splitSVGPathData.d.ts +20 -0
- package/src/_cjs/utils/parsers/svg/splitSVGPathData.js +53 -0
- package/src/_cjs/utils/parsers/svg/splitSVGPathData.js.map +1 -0
- package/src/_cjs/utils/parsers/svg/types.d.ts +63 -0
- package/src/_cjs/utils/parsers/svg/types.js +17 -0
- package/src/_cjs/utils/parsers/svg/types.js.map +1 -0
- package/src/_cjs/utils/ts-runner.js +146 -0
- package/src/_cjs/utils/tsAsyncScriptLoader.js +74 -0
- package/src/_esm/BezierPath.d.ts +610 -0
- package/src/_esm/BezierPath.js +1124 -0
- package/src/_esm/BezierPath.js.map +1 -0
- package/src/_esm/Bounds.d.ts +252 -0
- package/src/_esm/Bounds.js +317 -0
- package/src/_esm/Bounds.js.map +1 -0
- package/src/_esm/Circle.d.ts +214 -0
- package/src/_esm/Circle.js +335 -0
- package/src/_esm/Circle.js.map +1 -0
- package/src/_esm/CircleSector.d.ts +211 -0
- package/src/_esm/CircleSector.js +359 -0
- package/src/_esm/CircleSector.js.map +1 -0
- package/src/_esm/CubicBezierCurve.d.ts +656 -0
- package/src/_esm/CubicBezierCurve.js +1057 -0
- package/src/_esm/CubicBezierCurve.js.map +1 -0
- package/src/_esm/Grid.d.ts +83 -0
- package/src/_esm/Grid.js +89 -0
- package/src/_esm/Grid.js.map +1 -0
- package/src/_esm/KeyHandler.d.ts +177 -0
- package/src/_esm/KeyHandler.js +434 -0
- package/src/_esm/KeyHandler.js.map +1 -0
- package/src/_esm/Line.d.ts +134 -0
- package/src/_esm/Line.js +200 -0
- package/src/_esm/Line.js.map +1 -0
- package/src/_esm/MouseHandler.d.ts +283 -0
- package/src/_esm/MouseHandler.js +397 -0
- package/src/_esm/MouseHandler.js.map +1 -0
- package/src/_esm/PBImage.d.ts +81 -0
- package/src/_esm/PBImage.js +60 -0
- package/src/_esm/PBImage.js.map +1 -0
- package/src/_esm/PBText.d.ts +118 -0
- package/src/_esm/PBText.js +62 -0
- package/src/_esm/PBText.js.map +1 -0
- package/src/_esm/PlotBoilerplate.d.ts +899 -0
- package/src/_esm/PlotBoilerplate.js +2347 -0
- package/src/_esm/PlotBoilerplate.js.map +1 -0
- package/src/_esm/Polygon.d.ts +520 -0
- package/src/_esm/Polygon.js +924 -0
- package/src/_esm/Polygon.js.map +1 -0
- package/src/_esm/SVGBuilder.d.ts +47 -0
- package/src/_esm/SVGBuilder.js +95 -0
- package/src/_esm/SVGBuilder.js.map +1 -0
- package/src/_esm/Triangle.d.ts +392 -0
- package/src/_esm/Triangle.js +493 -0
- package/src/_esm/Triangle.js.map +1 -0
- package/src/_esm/UIDGenerator.d.ts +12 -0
- package/src/_esm/UIDGenerator.js +18 -0
- package/src/_esm/UIDGenerator.js.map +1 -0
- package/src/_esm/VEllipse.d.ts +319 -0
- package/src/_esm/VEllipse.js +574 -0
- package/src/_esm/VEllipse.js.map +1 -0
- package/src/_esm/VEllipseSector.d.ts +230 -0
- package/src/_esm/VEllipseSector.js +422 -0
- package/src/_esm/VEllipseSector.js.map +1 -0
- package/src/_esm/Vector.d.ts +126 -0
- package/src/_esm/Vector.js +181 -0
- package/src/_esm/Vector.js.map +1 -0
- package/src/_esm/VertTuple.d.ts +284 -0
- package/src/_esm/VertTuple.js +347 -0
- package/src/_esm/VertTuple.js.map +1 -0
- package/src/_esm/Vertex.d.ts +498 -0
- package/src/_esm/Vertex.js +702 -0
- package/src/_esm/Vertex.js.map +1 -0
- package/src/_esm/VertexAttr.d.ts +72 -0
- package/src/_esm/VertexAttr.js +58 -0
- package/src/_esm/VertexAttr.js.map +1 -0
- package/src/_esm/VertexListeners.d.ts +209 -0
- package/src/_esm/VertexListeners.js +270 -0
- package/src/_esm/VertexListeners.js.map +1 -0
- package/src/_esm/draw.d.ts +657 -0
- package/src/_esm/draw.js +1159 -0
- package/src/_esm/draw.js.map +1 -0
- package/src/_esm/drawgl.d.ts +544 -0
- package/src/_esm/drawgl.js +812 -0
- package/src/_esm/drawgl.js.map +1 -0
- package/src/_esm/drawutilssvg.d.ts +954 -0
- package/src/_esm/drawutilssvg.js +1705 -0
- package/src/_esm/drawutilssvg.js.map +1 -0
- package/src/_esm/entry-glsupport.js +28 -0
- package/src/_esm/entry.js +29 -0
- package/src/_esm/geomutils.d.ts +77 -0
- package/src/_esm/geomutils.js +126 -0
- package/src/_esm/geomutils.js.map +1 -0
- package/src/_esm/index.d.ts +102 -0
- package/src/_esm/index.js +128 -0
- package/src/_esm/index.js.map +1 -0
- package/src/_esm/interfaces/DrawLib.d.ts +582 -0
- package/src/_esm/interfaces/DrawLib.js +32 -0
- package/src/_esm/interfaces/DrawLib.js.map +1 -0
- package/src/_esm/interfaces/additionals.d.ts +95 -0
- package/src/_esm/interfaces/additionals.js +3 -0
- package/src/_esm/interfaces/additionals.js.map +1 -0
- package/src/_esm/interfaces/core.d.ts +286 -0
- package/src/_esm/interfaces/core.js +30 -0
- package/src/_esm/interfaces/core.js.map +1 -0
- package/src/_esm/interfaces/externals.d.ts +56 -0
- package/src/_esm/interfaces/externals.js +8 -0
- package/src/_esm/interfaces/externals.js.map +1 -0
- package/src/_esm/interfaces/index.d.ts +4 -0
- package/src/_esm/interfaces/index.js +21 -0
- package/src/_esm/interfaces/index.js.map +1 -0
- package/src/_esm/module.d.ts +26 -0
- package/src/_esm/module.js +60 -0
- package/src/_esm/module.js.map +1 -0
- package/src/_esm/src/ts/BezierPath.d.ts +610 -0
- package/src/_esm/src/ts/BezierPath.js +1120 -0
- package/src/_esm/src/ts/BezierPath.js.map +1 -0
- package/src/_esm/src/ts/Bounds.d.ts +252 -0
- package/src/_esm/src/ts/Bounds.js +313 -0
- package/src/_esm/src/ts/Bounds.js.map +1 -0
- package/src/_esm/src/ts/Circle.d.ts +214 -0
- package/src/_esm/src/ts/Circle.js +331 -0
- package/src/_esm/src/ts/Circle.js.map +1 -0
- package/src/_esm/src/ts/CircleSector.d.ts +211 -0
- package/src/_esm/src/ts/CircleSector.js +355 -0
- package/src/_esm/src/ts/CircleSector.js.map +1 -0
- package/src/_esm/src/ts/CubicBezierCurve.d.ts +656 -0
- package/src/_esm/src/ts/CubicBezierCurve.js +1053 -0
- package/src/_esm/src/ts/CubicBezierCurve.js.map +1 -0
- package/src/_esm/src/ts/Grid.d.ts +83 -0
- package/src/_esm/src/ts/Grid.js +85 -0
- package/src/_esm/src/ts/Grid.js.map +1 -0
- package/src/_esm/src/ts/KeyHandler.d.ts +177 -0
- package/src/_esm/src/ts/KeyHandler.js +430 -0
- package/src/_esm/src/ts/KeyHandler.js.map +1 -0
- package/src/_esm/src/ts/Line.d.ts +134 -0
- package/src/_esm/src/ts/Line.js +196 -0
- package/src/_esm/src/ts/Line.js.map +1 -0
- package/src/_esm/src/ts/MouseHandler.d.ts +283 -0
- package/src/_esm/src/ts/MouseHandler.js +391 -0
- package/src/_esm/src/ts/MouseHandler.js.map +1 -0
- package/src/_esm/src/ts/PBImage.d.ts +81 -0
- package/src/_esm/src/ts/PBImage.js +56 -0
- package/src/_esm/src/ts/PBImage.js.map +1 -0
- package/src/_esm/src/ts/PBText.d.ts +118 -0
- package/src/_esm/src/ts/PBText.js +58 -0
- package/src/_esm/src/ts/PBText.js.map +1 -0
- package/src/_esm/src/ts/PlotBoilerplate.d.ts +899 -0
- package/src/_esm/src/ts/PlotBoilerplate.js +2340 -0
- package/src/_esm/src/ts/PlotBoilerplate.js.map +1 -0
- package/src/_esm/src/ts/Polygon.d.ts +520 -0
- package/src/_esm/src/ts/Polygon.js +920 -0
- package/src/_esm/src/ts/Polygon.js.map +1 -0
- package/src/_esm/src/ts/Triangle.d.ts +392 -0
- package/src/_esm/src/ts/Triangle.js +489 -0
- package/src/_esm/src/ts/Triangle.js.map +1 -0
- package/src/_esm/src/ts/UIDGenerator.d.ts +12 -0
- package/src/_esm/src/ts/UIDGenerator.js +14 -0
- package/src/_esm/src/ts/UIDGenerator.js.map +1 -0
- package/src/_esm/src/ts/VEllipse.d.ts +319 -0
- package/src/_esm/src/ts/VEllipse.js +570 -0
- package/src/_esm/src/ts/VEllipse.js.map +1 -0
- package/src/_esm/src/ts/VEllipseSector.d.ts +230 -0
- package/src/_esm/src/ts/VEllipseSector.js +418 -0
- package/src/_esm/src/ts/VEllipseSector.js.map +1 -0
- package/src/_esm/src/ts/Vector.d.ts +126 -0
- package/src/_esm/src/ts/Vector.js +177 -0
- package/src/_esm/src/ts/Vector.js.map +1 -0
- package/src/_esm/src/ts/VertTuple.d.ts +284 -0
- package/src/_esm/src/ts/VertTuple.js +343 -0
- package/src/_esm/src/ts/VertTuple.js.map +1 -0
- package/src/_esm/src/ts/Vertex.d.ts +498 -0
- package/src/_esm/src/ts/Vertex.js +698 -0
- package/src/_esm/src/ts/Vertex.js.map +1 -0
- package/src/_esm/src/ts/VertexAttr.d.ts +72 -0
- package/src/_esm/src/ts/VertexAttr.js +54 -0
- package/src/_esm/src/ts/VertexAttr.js.map +1 -0
- package/src/_esm/src/ts/VertexListeners.d.ts +209 -0
- package/src/_esm/src/ts/VertexListeners.js +266 -0
- package/src/_esm/src/ts/VertexListeners.js.map +1 -0
- package/src/_esm/src/ts/draw.d.ts +657 -0
- package/src/_esm/src/ts/draw.js +1155 -0
- package/src/_esm/src/ts/draw.js.map +1 -0
- package/src/_esm/src/ts/drawgl.d.ts +544 -0
- package/src/_esm/src/ts/drawgl.js +808 -0
- package/src/_esm/src/ts/drawgl.js.map +1 -0
- package/src/_esm/src/ts/drawutilssvg.d.ts +954 -0
- package/src/_esm/src/ts/drawutilssvg.js +1701 -0
- package/src/_esm/src/ts/drawutilssvg.js.map +1 -0
- package/src/_esm/src/ts/geomutils.d.ts +77 -0
- package/src/_esm/src/ts/geomutils.js +123 -0
- package/src/_esm/src/ts/geomutils.js.map +1 -0
- package/src/_esm/src/ts/index.d.ts +102 -0
- package/src/_esm/src/ts/index.js +112 -0
- package/src/_esm/src/ts/index.js.map +1 -0
- package/src/_esm/src/ts/interfaces/DrawLib.d.ts +582 -0
- package/src/_esm/src/ts/interfaces/DrawLib.js +31 -0
- package/src/_esm/src/ts/interfaces/DrawLib.js.map +1 -0
- package/src/_esm/src/ts/interfaces/additionals.d.ts +95 -0
- package/src/_esm/src/ts/interfaces/additionals.js +2 -0
- package/src/_esm/src/ts/interfaces/additionals.js.map +1 -0
- package/src/_esm/src/ts/interfaces/core.d.ts +286 -0
- package/src/_esm/src/ts/interfaces/core.js +29 -0
- package/src/_esm/src/ts/interfaces/core.js.map +1 -0
- package/src/_esm/src/ts/interfaces/externals.d.ts +56 -0
- package/src/_esm/src/ts/interfaces/externals.js +7 -0
- package/src/_esm/src/ts/interfaces/externals.js.map +1 -0
- package/src/_esm/src/ts/interfaces/index.d.ts +4 -0
- package/src/_esm/src/ts/interfaces/index.js +5 -0
- package/src/_esm/src/ts/interfaces/index.js.map +1 -0
- package/src/_esm/src/ts/module.d.ts +26 -0
- package/src/_esm/src/ts/module.js +38 -0
- package/src/_esm/src/ts/module.js.map +1 -0
- package/src/_esm/src/ts/utils/InitializationObserver.d.ts +18 -0
- package/src/_esm/src/ts/utils/InitializationObserver.js +57 -0
- package/src/_esm/src/ts/utils/InitializationObserver.js.map +1 -0
- package/src/_esm/src/ts/utils/LissajousFigure.d.ts +34 -0
- package/src/_esm/src/ts/utils/LissajousFigure.js +95 -0
- package/src/_esm/src/ts/utils/LissajousFigure.js.map +1 -0
- package/src/_esm/src/ts/utils/NGons.d.ts +13 -0
- package/src/_esm/src/ts/utils/NGons.js +33 -0
- package/src/_esm/src/ts/utils/NGons.js.map +1 -0
- package/src/_esm/src/ts/utils/Params.d.ts +17 -0
- package/src/_esm/src/ts/utils/Params.js +48 -0
- package/src/_esm/src/ts/utils/Params.js.map +1 -0
- package/src/_esm/src/ts/utils/PerlinNoise.d.ts +19 -0
- package/src/_esm/src/ts/utils/PerlinNoise.js +346 -0
- package/src/_esm/src/ts/utils/PerlinNoise.js.map +1 -0
- package/src/_esm/src/ts/utils/SVGPathUtils.d.ts +22 -0
- package/src/_esm/src/ts/utils/SVGPathUtils.js +42 -0
- package/src/_esm/src/ts/utils/SVGPathUtils.js.map +1 -0
- package/src/_esm/src/ts/utils/WebColors.d.ts +35 -0
- package/src/_esm/src/ts/utils/WebColors.js +54 -0
- package/src/_esm/src/ts/utils/WebColors.js.map +1 -0
- package/src/_esm/src/ts/utils/WebColorsContrast.d.ts +6 -0
- package/src/_esm/src/ts/utils/WebColorsContrast.js +9 -0
- package/src/_esm/src/ts/utils/WebColorsContrast.js.map +1 -0
- package/src/_esm/src/ts/utils/WebColorsMalachite.d.ts +12 -0
- package/src/_esm/src/ts/utils/WebColorsMalachite.js +25 -0
- package/src/_esm/src/ts/utils/WebColorsMalachite.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/CatmullRomPath.d.ts +60 -0
- package/src/_esm/src/ts/utils/algorithms/CatmullRomPath.js +103 -0
- package/src/_esm/src/ts/utils/algorithms/CatmullRomPath.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/CircleIntersections.d.ts +170 -0
- package/src/_esm/src/ts/utils/algorithms/CircleIntersections.js +303 -0
- package/src/_esm/src/ts/utils/algorithms/CircleIntersections.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/ContourLineDetection.d.ts +150 -0
- package/src/_esm/src/ts/utils/algorithms/ContourLineDetection.js +362 -0
- package/src/_esm/src/ts/utils/algorithms/ContourLineDetection.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/CubicSplinePath.d.ts +63 -0
- package/src/_esm/src/ts/utils/algorithms/CubicSplinePath.js +170 -0
- package/src/_esm/src/ts/utils/algorithms/CubicSplinePath.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/HobbyPath.d.ts +81 -0
- package/src/_esm/src/ts/utils/algorithms/HobbyPath.js +273 -0
- package/src/_esm/src/ts/utils/algorithms/HobbyPath.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/Metaballs.d.ts +30 -0
- package/src/_esm/src/ts/utils/algorithms/Metaballs.js +109 -0
- package/src/_esm/src/ts/utils/algorithms/Metaballs.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/PolygonInset.d.ts +184 -0
- package/src/_esm/src/ts/utils/algorithms/PolygonInset.js +424 -0
- package/src/_esm/src/ts/utils/algorithms/PolygonInset.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/PolygonTesselationOutlines.d.ts +145 -0
- package/src/_esm/src/ts/utils/algorithms/PolygonTesselationOutlines.js +262 -0
- package/src/_esm/src/ts/utils/algorithms/PolygonTesselationOutlines.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/arrayFill.d.ts +8 -0
- package/src/_esm/src/ts/utils/algorithms/arrayFill.js +14 -0
- package/src/_esm/src/ts/utils/algorithms/arrayFill.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/arrayResize.d.ts +8 -0
- package/src/_esm/src/ts/utils/algorithms/arrayResize.js +20 -0
- package/src/_esm/src/ts/utils/algorithms/arrayResize.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/arrayShuffle.d.ts +8 -0
- package/src/_esm/src/ts/utils/algorithms/arrayShuffle.js +11 -0
- package/src/_esm/src/ts/utils/algorithms/arrayShuffle.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/clearDuplicateVertices.d.ts +22 -0
- package/src/_esm/src/ts/utils/algorithms/clearDuplicateVertices.js +47 -0
- package/src/_esm/src/ts/utils/algorithms/clearDuplicateVertices.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/clearPolygonDuplicateVertices.d.ts +24 -0
- package/src/_esm/src/ts/utils/algorithms/clearPolygonDuplicateVertices.js +57 -0
- package/src/_esm/src/ts/utils/algorithms/clearPolygonDuplicateVertices.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/convexHull.d.ts +23 -0
- package/src/_esm/src/ts/utils/algorithms/convexHull.js +67 -0
- package/src/_esm/src/ts/utils/algorithms/convexHull.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/convexPolygonIncircle.d.ts +41 -0
- package/src/_esm/src/ts/utils/algorithms/convexPolygonIncircle.js +141 -0
- package/src/_esm/src/ts/utils/algorithms/convexPolygonIncircle.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/delaunay.d.ts +30 -0
- package/src/_esm/src/ts/utils/algorithms/delaunay.js +153 -0
- package/src/_esm/src/ts/utils/algorithms/delaunay.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/delaunay2voronoi.d.ts +25 -0
- package/src/_esm/src/ts/utils/algorithms/delaunay2voronoi.js +99 -0
- package/src/_esm/src/ts/utils/algorithms/delaunay2voronoi.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/detectPaths.d.ts +21 -0
- package/src/_esm/src/ts/utils/algorithms/detectPaths.js +165 -0
- package/src/_esm/src/ts/utils/algorithms/detectPaths.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/findPolygonSelfIntersections.d.ts +21 -0
- package/src/_esm/src/ts/utils/algorithms/findPolygonSelfIntersections.js +47 -0
- package/src/_esm/src/ts/utils/algorithms/findPolygonSelfIntersections.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/getContrastColor.d.ts +13 -0
- package/src/_esm/src/ts/utils/algorithms/getContrastColor.js +22 -0
- package/src/_esm/src/ts/utils/algorithms/getContrastColor.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/matrixFill.d.ts +10 -0
- package/src/_esm/src/ts/utils/algorithms/matrixFill.js +17 -0
- package/src/_esm/src/ts/utils/algorithms/matrixFill.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/pixelCornersToRoundPaths.d.ts +23 -0
- package/src/_esm/src/ts/utils/algorithms/pixelCornersToRoundPaths.js +266 -0
- package/src/_esm/src/ts/utils/algorithms/pixelCornersToRoundPaths.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/splitPolygonToNonIntersecting.d.ts +28 -0
- package/src/_esm/src/ts/utils/algorithms/splitPolygonToNonIntersecting.js +99 -0
- package/src/_esm/src/ts/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -0
- package/src/_esm/src/ts/utils/algorithms/sutherlandHodgman.d.ts +16 -0
- package/src/_esm/src/ts/utils/algorithms/sutherlandHodgman.js +72 -0
- package/src/_esm/src/ts/utils/algorithms/sutherlandHodgman.js.map +1 -0
- package/src/_esm/src/ts/utils/cloneVertexArray.d.ts +13 -0
- package/src/_esm/src/ts/utils/cloneVertexArray.js +19 -0
- package/src/_esm/src/ts/utils/cloneVertexArray.js.map +1 -0
- package/src/_esm/src/ts/utils/createRandomizedPolygon.d.ts +14 -0
- package/src/_esm/src/ts/utils/createRandomizedPolygon.js +28 -0
- package/src/_esm/src/ts/utils/createRandomizedPolygon.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/CircularIntervalSet.d.ts +83 -0
- package/src/_esm/src/ts/utils/datastructures/CircularIntervalSet.js +158 -0
- package/src/_esm/src/ts/utils/datastructures/CircularIntervalSet.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/Color.d.ts +391 -0
- package/src/_esm/src/ts/utils/datastructures/Color.js +1063 -0
- package/src/_esm/src/ts/utils/datastructures/Color.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/ColorGradient.d.ts +81 -0
- package/src/_esm/src/ts/utils/datastructures/ColorGradient.js +171 -0
- package/src/_esm/src/ts/utils/datastructures/ColorGradient.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/DataGrid2d.d.ts +53 -0
- package/src/_esm/src/ts/utils/datastructures/DataGrid2d.js +19 -0
- package/src/_esm/src/ts/utils/datastructures/DataGrid2d.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/DataGrid2dArrayMatrix.d.ts +88 -0
- package/src/_esm/src/ts/utils/datastructures/DataGrid2dArrayMatrix.js +150 -0
- package/src/_esm/src/ts/utils/datastructures/DataGrid2dArrayMatrix.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/DataGrid2dListAdapter.d.ts +59 -0
- package/src/_esm/src/ts/utils/datastructures/DataGrid2dListAdapter.js +79 -0
- package/src/_esm/src/ts/utils/datastructures/DataGrid2dListAdapter.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/GenericPath.d.ts +86 -0
- package/src/_esm/src/ts/utils/datastructures/GenericPath.js +117 -0
- package/src/_esm/src/ts/utils/datastructures/GenericPath.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/GeometryMesh.d.ts +49 -0
- package/src/_esm/src/ts/utils/datastructures/GeometryMesh.js +53 -0
- package/src/_esm/src/ts/utils/datastructures/GeometryMesh.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/Girih.d.ts +181 -0
- package/src/_esm/src/ts/utils/datastructures/Girih.js +261 -0
- package/src/_esm/src/ts/utils/datastructures/Girih.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/GirihBowtie.d.ts +37 -0
- package/src/_esm/src/ts/utils/datastructures/GirihBowtie.js +130 -0
- package/src/_esm/src/ts/utils/datastructures/GirihBowtie.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/GirihDecagon.d.ts +52 -0
- package/src/_esm/src/ts/utils/datastructures/GirihDecagon.js +110 -0
- package/src/_esm/src/ts/utils/datastructures/GirihDecagon.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/GirihHexagon.d.ts +39 -0
- package/src/_esm/src/ts/utils/datastructures/GirihHexagon.js +178 -0
- package/src/_esm/src/ts/utils/datastructures/GirihHexagon.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/GirihPenroseRhombus.d.ts +46 -0
- package/src/_esm/src/ts/utils/datastructures/GirihPenroseRhombus.js +167 -0
- package/src/_esm/src/ts/utils/datastructures/GirihPenroseRhombus.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/GirihPentagon.d.ts +37 -0
- package/src/_esm/src/ts/utils/datastructures/GirihPentagon.js +87 -0
- package/src/_esm/src/ts/utils/datastructures/GirihPentagon.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/GirihRhombus.d.ts +38 -0
- package/src/_esm/src/ts/utils/datastructures/GirihRhombus.js +133 -0
- package/src/_esm/src/ts/utils/datastructures/GirihRhombus.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/GirihTile.d.ts +283 -0
- package/src/_esm/src/ts/utils/datastructures/GirihTile.js +286 -0
- package/src/_esm/src/ts/utils/datastructures/GirihTile.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/Matrix4x4.d.ts +244 -0
- package/src/_esm/src/ts/utils/datastructures/Matrix4x4.js +246 -0
- package/src/_esm/src/ts/utils/datastructures/Matrix4x4.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/VoronoiCell.d.ts +122 -0
- package/src/_esm/src/ts/utils/datastructures/VoronoiCell.js +178 -0
- package/src/_esm/src/ts/utils/datastructures/VoronoiCell.js.map +1 -0
- package/src/_esm/src/ts/utils/datastructures/interfaces.d.ts +13 -0
- package/src/_esm/src/ts/utils/datastructures/interfaces.js +9 -0
- package/src/_esm/src/ts/utils/datastructures/interfaces.js.map +1 -0
- package/src/_esm/src/ts/utils/detectDarkMode.d.ts +10 -0
- package/src/_esm/src/ts/utils/detectDarkMode.js +37 -0
- package/src/_esm/src/ts/utils/detectDarkMode.js.map +1 -0
- package/src/_esm/src/ts/utils/dom/components/ColorGradientPicker.d.ts +246 -0
- package/src/_esm/src/ts/utils/dom/components/ColorGradientPicker.js +743 -0
- package/src/_esm/src/ts/utils/dom/components/ColorGradientPicker.js.map +1 -0
- package/src/_esm/src/ts/utils/dom/components/ColorGradientSelector.d.ts +118 -0
- package/src/_esm/src/ts/utils/dom/components/ColorGradientSelector.js +339 -0
- package/src/_esm/src/ts/utils/dom/components/ColorGradientSelector.js.map +1 -0
- package/src/_esm/src/ts/utils/dom/components/Test.d.ts +7 -0
- package/src/_esm/src/ts/utils/dom/components/Test.js +26 -0
- package/src/_esm/src/ts/utils/dom/components/Test.js.map +1 -0
- package/src/_esm/src/ts/utils/dom/getAvailableContainerSpace.d.ts +2 -0
- package/src/_esm/src/ts/utils/dom/getAvailableContainerSpace.js +25 -0
- package/src/_esm/src/ts/utils/dom/getAvailableContainerSpace.js.map +1 -0
- package/src/_esm/src/ts/utils/dom/getFProp.d.ts +5 -0
- package/src/_esm/src/ts/utils/dom/getFProp.js +8 -0
- package/src/_esm/src/ts/utils/dom/getFProp.js.map +1 -0
- package/src/_esm/src/ts/utils/dom/guiSizeToggler.d.ts +18 -0
- package/src/_esm/src/ts/utils/dom/guiSizeToggler.js +40 -0
- package/src/_esm/src/ts/utils/dom/guiSizeToggler.js.map +1 -0
- package/src/_esm/src/ts/utils/findInVertexArray.d.ts +19 -0
- package/src/_esm/src/ts/utils/findInVertexArray.js +25 -0
- package/src/_esm/src/ts/utils/findInVertexArray.js.map +1 -0
- package/src/_esm/src/ts/utils/gup.d.ts +14 -0
- package/src/_esm/src/ts/utils/gup.js +27 -0
- package/src/_esm/src/ts/utils/gup.js.map +1 -0
- package/src/_esm/src/ts/utils/helpers/BezierPathInteractionHelper.d.ts +272 -0
- package/src/_esm/src/ts/utils/helpers/BezierPathInteractionHelper.js +648 -0
- package/src/_esm/src/ts/utils/helpers/BezierPathInteractionHelper.js.map +1 -0
- package/src/_esm/src/ts/utils/helpers/CircleHelper.d.ts +73 -0
- package/src/_esm/src/ts/utils/helpers/CircleHelper.js +88 -0
- package/src/_esm/src/ts/utils/helpers/CircleHelper.js.map +1 -0
- package/src/_esm/src/ts/utils/helpers/CircleSectorHelper.d.ts +90 -0
- package/src/_esm/src/ts/utils/helpers/CircleSectorHelper.js +109 -0
- package/src/_esm/src/ts/utils/helpers/CircleSectorHelper.js.map +1 -0
- package/src/_esm/src/ts/utils/helpers/TriangleHelper.d.ts +57 -0
- package/src/_esm/src/ts/utils/helpers/TriangleHelper.js +78 -0
- package/src/_esm/src/ts/utils/helpers/TriangleHelper.js.map +1 -0
- package/src/_esm/src/ts/utils/helpers/VEllipseHelper.d.ts +32 -0
- package/src/_esm/src/ts/utils/helpers/VEllipseHelper.js +83 -0
- package/src/_esm/src/ts/utils/helpers/VEllipseHelper.js.map +1 -0
- package/src/_esm/src/ts/utils/helpers/VEllipseSectorHelper.d.ts +52 -0
- package/src/_esm/src/ts/utils/helpers/VEllipseSectorHelper.js +130 -0
- package/src/_esm/src/ts/utils/helpers/VEllipseSectorHelper.js.map +1 -0
- package/src/_esm/src/ts/utils/io/FileDrop.d.ts +110 -0
- package/src/_esm/src/ts/utils/io/FileDrop.js +171 -0
- package/src/_esm/src/ts/utils/io/FileDrop.js.map +1 -0
- package/src/_esm/src/ts/utils/parsers/LinearColorGradientParser.d.ts +78 -0
- package/src/_esm/src/ts/utils/parsers/LinearColorGradientParser.js +217 -0
- package/src/_esm/src/ts/utils/parsers/LinearColorGradientParser.js.map +1 -0
- package/src/_esm/src/ts/utils/parsers/OBJParser.d.ts +24 -0
- package/src/_esm/src/ts/utils/parsers/OBJParser.js +72 -0
- package/src/_esm/src/ts/utils/parsers/OBJParser.js.map +1 -0
- package/src/_esm/src/ts/utils/parsers/STLParser.d.ts +61 -0
- package/src/_esm/src/ts/utils/parsers/STLParser.js +175 -0
- package/src/_esm/src/ts/utils/parsers/STLParser.js.map +1 -0
- package/src/_esm/src/ts/utils/parsers/svg/parseSVGPathData.d.ts +27 -0
- package/src/_esm/src/ts/utils/parsers/svg/parseSVGPathData.js +482 -0
- package/src/_esm/src/ts/utils/parsers/svg/parseSVGPathData.js.map +1 -0
- package/src/_esm/src/ts/utils/parsers/svg/splitSVGPathData.d.ts +20 -0
- package/src/_esm/src/ts/utils/parsers/svg/splitSVGPathData.js +49 -0
- package/src/_esm/src/ts/utils/parsers/svg/splitSVGPathData.js.map +1 -0
- package/src/_esm/src/ts/utils/parsers/svg/types.d.ts +63 -0
- package/src/_esm/src/ts/utils/parsers/svg/types.js +16 -0
- package/src/_esm/src/ts/utils/parsers/svg/types.js.map +1 -0
- package/src/_esm/utils/InitializationObserver.d.ts +18 -0
- package/src/_esm/utils/InitializationObserver.js +61 -0
- package/src/_esm/utils/InitializationObserver.js.map +1 -0
- package/src/_esm/utils/LissajousFigure.d.ts +34 -0
- package/src/_esm/utils/LissajousFigure.js +99 -0
- package/src/_esm/utils/LissajousFigure.js.map +1 -0
- package/src/_esm/utils/NGons.d.ts +13 -0
- package/src/_esm/utils/NGons.js +36 -0
- package/src/_esm/utils/NGons.js.map +1 -0
- package/src/_esm/utils/Params.d.ts +17 -0
- package/src/_esm/utils/Params.js +52 -0
- package/src/_esm/utils/Params.js.map +1 -0
- package/src/_esm/utils/PerlinNoise.d.ts +19 -0
- package/src/_esm/utils/PerlinNoise.js +350 -0
- package/src/_esm/utils/PerlinNoise.js.map +1 -0
- package/src/_esm/utils/SVGPathUtils.d.ts +22 -0
- package/src/_esm/utils/SVGPathUtils.js +45 -0
- package/src/_esm/utils/SVGPathUtils.js.map +1 -0
- package/src/_esm/utils/WebColors.d.ts +35 -0
- package/src/_esm/utils/WebColors.js +58 -0
- package/src/_esm/utils/WebColors.js.map +1 -0
- package/src/_esm/utils/WebColorsContrast.d.ts +6 -0
- package/src/_esm/utils/WebColorsContrast.js +12 -0
- package/src/_esm/utils/WebColorsContrast.js.map +1 -0
- package/src/_esm/utils/WebColorsMalachite.d.ts +12 -0
- package/src/_esm/utils/WebColorsMalachite.js +28 -0
- package/src/_esm/utils/WebColorsMalachite.js.map +1 -0
- package/src/_esm/utils/algorithms/CatmullRomPath.d.ts +60 -0
- package/src/_esm/utils/algorithms/CatmullRomPath.js +107 -0
- package/src/_esm/utils/algorithms/CatmullRomPath.js.map +1 -0
- package/src/_esm/utils/algorithms/CircleIntersections.d.ts +170 -0
- package/src/_esm/utils/algorithms/CircleIntersections.js +307 -0
- package/src/_esm/utils/algorithms/CircleIntersections.js.map +1 -0
- package/src/_esm/utils/algorithms/ContourLineDetection.d.ts +150 -0
- package/src/_esm/utils/algorithms/ContourLineDetection.js +366 -0
- package/src/_esm/utils/algorithms/ContourLineDetection.js.map +1 -0
- package/src/_esm/utils/algorithms/CubicSplinePath.d.ts +63 -0
- package/src/_esm/utils/algorithms/CubicSplinePath.js +174 -0
- package/src/_esm/utils/algorithms/CubicSplinePath.js.map +1 -0
- package/src/_esm/utils/algorithms/HobbyPath.d.ts +81 -0
- package/src/_esm/utils/algorithms/HobbyPath.js +277 -0
- package/src/_esm/utils/algorithms/HobbyPath.js.map +1 -0
- package/src/_esm/utils/algorithms/Metaballs.d.ts +30 -0
- package/src/_esm/utils/algorithms/Metaballs.js +113 -0
- package/src/_esm/utils/algorithms/Metaballs.js.map +1 -0
- package/src/_esm/utils/algorithms/PolygonInset.d.ts +184 -0
- package/src/_esm/utils/algorithms/PolygonInset.js +428 -0
- package/src/_esm/utils/algorithms/PolygonInset.js.map +1 -0
- package/src/_esm/utils/algorithms/PolygonTesselationOutlines.d.ts +145 -0
- package/src/_esm/utils/algorithms/PolygonTesselationOutlines.js +267 -0
- package/src/_esm/utils/algorithms/PolygonTesselationOutlines.js.map +1 -0
- package/src/_esm/utils/algorithms/arrayFill.d.ts +8 -0
- package/src/_esm/utils/algorithms/arrayFill.js +18 -0
- package/src/_esm/utils/algorithms/arrayFill.js.map +1 -0
- package/src/_esm/utils/algorithms/arrayResize.d.ts +8 -0
- package/src/_esm/utils/algorithms/arrayResize.js +24 -0
- package/src/_esm/utils/algorithms/arrayResize.js.map +1 -0
- package/src/_esm/utils/algorithms/arrayShuffle.d.ts +8 -0
- package/src/_esm/utils/algorithms/arrayShuffle.js +15 -0
- package/src/_esm/utils/algorithms/arrayShuffle.js.map +1 -0
- package/src/_esm/utils/algorithms/clearDuplicateVertices.d.ts +22 -0
- package/src/_esm/utils/algorithms/clearDuplicateVertices.js +51 -0
- package/src/_esm/utils/algorithms/clearDuplicateVertices.js.map +1 -0
- package/src/_esm/utils/algorithms/clearPolygonDuplicateVertices.d.ts +24 -0
- package/src/_esm/utils/algorithms/clearPolygonDuplicateVertices.js +61 -0
- package/src/_esm/utils/algorithms/clearPolygonDuplicateVertices.js.map +1 -0
- package/src/_esm/utils/algorithms/convexHull.d.ts +23 -0
- package/src/_esm/utils/algorithms/convexHull.js +71 -0
- package/src/_esm/utils/algorithms/convexHull.js.map +1 -0
- package/src/_esm/utils/algorithms/convexPolygonIncircle.d.ts +41 -0
- package/src/_esm/utils/algorithms/convexPolygonIncircle.js +145 -0
- package/src/_esm/utils/algorithms/convexPolygonIncircle.js.map +1 -0
- package/src/_esm/utils/algorithms/createRandomizedPolygon.d.ts +14 -0
- package/src/_esm/utils/algorithms/createRandomizedPolygon.js +28 -0
- package/src/_esm/utils/algorithms/createRandomizedPolygon.js.map +1 -0
- package/src/_esm/utils/algorithms/delaunay.d.ts +30 -0
- package/src/_esm/utils/algorithms/delaunay.js +157 -0
- package/src/_esm/utils/algorithms/delaunay.js.map +1 -0
- package/src/_esm/utils/algorithms/delaunay2voronoi.d.ts +25 -0
- package/src/_esm/utils/algorithms/delaunay2voronoi.js +103 -0
- package/src/_esm/utils/algorithms/delaunay2voronoi.js.map +1 -0
- package/src/_esm/utils/algorithms/detectPaths.d.ts +21 -0
- package/src/_esm/utils/algorithms/detectPaths.js +169 -0
- package/src/_esm/utils/algorithms/detectPaths.js.map +1 -0
- package/src/_esm/utils/algorithms/findPolygonSelfIntersections.d.ts +21 -0
- package/src/_esm/utils/algorithms/findPolygonSelfIntersections.js +51 -0
- package/src/_esm/utils/algorithms/findPolygonSelfIntersections.js.map +1 -0
- package/src/_esm/utils/algorithms/getContrastColor.d.ts +13 -0
- package/src/_esm/utils/algorithms/getContrastColor.js +26 -0
- package/src/_esm/utils/algorithms/getContrastColor.js.map +1 -0
- package/src/_esm/utils/algorithms/matrixFill.d.ts +10 -0
- package/src/_esm/utils/algorithms/matrixFill.js +21 -0
- package/src/_esm/utils/algorithms/matrixFill.js.map +1 -0
- package/src/_esm/utils/algorithms/pixelCornersToRoundPaths.d.ts +23 -0
- package/src/_esm/utils/algorithms/pixelCornersToRoundPaths.js +270 -0
- package/src/_esm/utils/algorithms/pixelCornersToRoundPaths.js.map +1 -0
- package/src/_esm/utils/algorithms/splitPolygonToNonIntersecting.d.ts +28 -0
- package/src/_esm/utils/algorithms/splitPolygonToNonIntersecting.js +102 -0
- package/src/_esm/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -0
- package/src/_esm/utils/algorithms/sutherlandHodgman.d.ts +16 -0
- package/src/_esm/utils/algorithms/sutherlandHodgman.js +76 -0
- package/src/_esm/utils/algorithms/sutherlandHodgman.js.map +1 -0
- package/src/_esm/utils/cloneVertexArray.d.ts +13 -0
- package/src/_esm/utils/cloneVertexArray.js +23 -0
- package/src/_esm/utils/cloneVertexArray.js.map +1 -0
- package/src/_esm/utils/createRandomizedPolygon.d.ts +14 -0
- package/src/_esm/utils/createRandomizedPolygon.js +32 -0
- package/src/_esm/utils/createRandomizedPolygon.js.map +1 -0
- package/src/_esm/utils/datastructures/CircularIntervalSet.d.ts +83 -0
- package/src/_esm/utils/datastructures/CircularIntervalSet.js +162 -0
- package/src/_esm/utils/datastructures/CircularIntervalSet.js.map +1 -0
- package/src/_esm/utils/datastructures/Color.d.ts +391 -0
- package/src/_esm/utils/datastructures/Color.js +1067 -0
- package/src/_esm/utils/datastructures/Color.js.map +1 -0
- package/src/_esm/utils/datastructures/ColorGradient.d.ts +81 -0
- package/src/_esm/utils/datastructures/ColorGradient.js +175 -0
- package/src/_esm/utils/datastructures/ColorGradient.js.map +1 -0
- package/src/_esm/utils/datastructures/DataGrid2d.d.ts +53 -0
- package/src/_esm/utils/datastructures/DataGrid2d.js +20 -0
- package/src/_esm/utils/datastructures/DataGrid2d.js.map +1 -0
- package/src/_esm/utils/datastructures/DataGrid2dArrayMatrix.d.ts +88 -0
- package/src/_esm/utils/datastructures/DataGrid2dArrayMatrix.js +154 -0
- package/src/_esm/utils/datastructures/DataGrid2dArrayMatrix.js.map +1 -0
- package/src/_esm/utils/datastructures/DataGrid2dListAdapter.d.ts +59 -0
- package/src/_esm/utils/datastructures/DataGrid2dListAdapter.js +83 -0
- package/src/_esm/utils/datastructures/DataGrid2dListAdapter.js.map +1 -0
- package/src/_esm/utils/datastructures/GenericPath.d.ts +86 -0
- package/src/_esm/utils/datastructures/GenericPath.js +121 -0
- package/src/_esm/utils/datastructures/GenericPath.js.map +1 -0
- package/src/_esm/utils/datastructures/GeometryMesh.d.ts +49 -0
- package/src/_esm/utils/datastructures/GeometryMesh.js +57 -0
- package/src/_esm/utils/datastructures/GeometryMesh.js.map +1 -0
- package/src/_esm/utils/datastructures/Girih.d.ts +181 -0
- package/src/_esm/utils/datastructures/Girih.js +265 -0
- package/src/_esm/utils/datastructures/Girih.js.map +1 -0
- package/src/_esm/utils/datastructures/GirihBowtie.d.ts +37 -0
- package/src/_esm/utils/datastructures/GirihBowtie.js +134 -0
- package/src/_esm/utils/datastructures/GirihBowtie.js.map +1 -0
- package/src/_esm/utils/datastructures/GirihDecagon.d.ts +52 -0
- package/src/_esm/utils/datastructures/GirihDecagon.js +114 -0
- package/src/_esm/utils/datastructures/GirihDecagon.js.map +1 -0
- package/src/_esm/utils/datastructures/GirihHexagon.d.ts +39 -0
- package/src/_esm/utils/datastructures/GirihHexagon.js +182 -0
- package/src/_esm/utils/datastructures/GirihHexagon.js.map +1 -0
- package/src/_esm/utils/datastructures/GirihPenroseRhombus.d.ts +46 -0
- package/src/_esm/utils/datastructures/GirihPenroseRhombus.js +171 -0
- package/src/_esm/utils/datastructures/GirihPenroseRhombus.js.map +1 -0
- package/src/_esm/utils/datastructures/GirihPentagon.d.ts +37 -0
- package/src/_esm/utils/datastructures/GirihPentagon.js +91 -0
- package/src/_esm/utils/datastructures/GirihPentagon.js.map +1 -0
- package/src/_esm/utils/datastructures/GirihRhombus.d.ts +38 -0
- package/src/_esm/utils/datastructures/GirihRhombus.js +137 -0
- package/src/_esm/utils/datastructures/GirihRhombus.js.map +1 -0
- package/src/_esm/utils/datastructures/GirihTile.d.ts +283 -0
- package/src/_esm/utils/datastructures/GirihTile.js +290 -0
- package/src/_esm/utils/datastructures/GirihTile.js.map +1 -0
- package/src/_esm/utils/datastructures/Matrix4x4.d.ts +244 -0
- package/src/_esm/utils/datastructures/Matrix4x4.js +250 -0
- package/src/_esm/utils/datastructures/Matrix4x4.js.map +1 -0
- package/src/_esm/utils/datastructures/VoronoiCell.d.ts +122 -0
- package/src/_esm/utils/datastructures/VoronoiCell.js +182 -0
- package/src/_esm/utils/datastructures/VoronoiCell.js.map +1 -0
- package/src/_esm/utils/datastructures/interfaces.d.ts +13 -0
- package/src/_esm/utils/datastructures/interfaces.js +10 -0
- package/src/_esm/utils/datastructures/interfaces.js.map +1 -0
- package/src/_esm/utils/detectDarkMode.d.ts +10 -0
- package/src/_esm/utils/detectDarkMode.js +41 -0
- package/src/_esm/utils/detectDarkMode.js.map +1 -0
- package/src/_esm/utils/dom/components/ColorGradientPicker.d.ts +246 -0
- package/src/_esm/utils/dom/components/ColorGradientPicker.js +780 -0
- package/src/_esm/utils/dom/components/ColorGradientPicker.js.map +1 -0
- package/src/_esm/utils/dom/components/ColorGradientPickerJSX.d.ts +129 -0
- package/src/_esm/utils/dom/components/ColorGradientPickerJSX.js +582 -0
- package/src/_esm/utils/dom/components/ColorGradientPickerJSX.js.map +1 -0
- package/src/_esm/utils/dom/components/ColorGradientSelector.d.ts +118 -0
- package/src/_esm/utils/dom/components/ColorGradientSelector.js +376 -0
- package/src/_esm/utils/dom/components/ColorGradientSelector.js.map +1 -0
- package/src/_esm/utils/dom/components/Test.d.ts +7 -0
- package/src/_esm/utils/dom/components/Test.js +63 -0
- package/src/_esm/utils/dom/components/Test.js.map +1 -0
- package/src/_esm/utils/dom/getAvailableContainerSpace.d.ts +2 -0
- package/src/_esm/utils/dom/getAvailableContainerSpace.js +29 -0
- package/src/_esm/utils/dom/getAvailableContainerSpace.js.map +1 -0
- package/src/_esm/utils/dom/getFProp.d.ts +5 -0
- package/src/_esm/utils/dom/getFProp.js +12 -0
- package/src/_esm/utils/dom/getFProp.js.map +1 -0
- package/src/_esm/utils/dom/guiSizeToggler.d.ts +18 -0
- package/src/_esm/utils/dom/guiSizeToggler.js +44 -0
- package/src/_esm/utils/dom/guiSizeToggler.js.map +1 -0
- package/src/_esm/utils/findInVertexArray.d.ts +19 -0
- package/src/_esm/utils/findInVertexArray.js +29 -0
- package/src/_esm/utils/findInVertexArray.js.map +1 -0
- package/src/_esm/utils/getFProp.d.ts +5 -0
- package/src/_esm/utils/getFProp.js +8 -0
- package/src/_esm/utils/getFProp.js.map +1 -0
- package/src/_esm/utils/gup.d.ts +14 -0
- package/src/_esm/utils/gup.js +31 -0
- package/src/_esm/utils/gup.js.map +1 -0
- package/src/_esm/utils/helpers/BezierPathInteractionHelper.d.ts +272 -0
- package/src/_esm/utils/helpers/BezierPathInteractionHelper.js +655 -0
- package/src/_esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -0
- package/src/_esm/utils/helpers/CircleHelper.d.ts +73 -0
- package/src/_esm/utils/helpers/CircleHelper.js +92 -0
- package/src/_esm/utils/helpers/CircleHelper.js.map +1 -0
- package/src/_esm/utils/helpers/CircleSectorHelper.d.ts +90 -0
- package/src/_esm/utils/helpers/CircleSectorHelper.js +113 -0
- package/src/_esm/utils/helpers/CircleSectorHelper.js.map +1 -0
- package/src/_esm/utils/helpers/TriangleHelper.d.ts +57 -0
- package/src/_esm/utils/helpers/TriangleHelper.js +82 -0
- package/src/_esm/utils/helpers/TriangleHelper.js.map +1 -0
- package/src/_esm/utils/helpers/VEllipseHelper.d.ts +32 -0
- package/src/_esm/utils/helpers/VEllipseHelper.js +87 -0
- package/src/_esm/utils/helpers/VEllipseHelper.js.map +1 -0
- package/src/_esm/utils/helpers/VEllipseSectorHelper.d.ts +52 -0
- package/src/_esm/utils/helpers/VEllipseSectorHelper.js +134 -0
- package/src/_esm/utils/helpers/VEllipseSectorHelper.js.map +1 -0
- package/src/_esm/utils/io/DndFileHandler.d.ts +63 -0
- package/src/_esm/utils/io/DndFileHandler.js +106 -0
- package/src/_esm/utils/io/DndFileHandler.js.map +1 -0
- package/src/_esm/utils/io/FileDrop.d.ts +110 -0
- package/src/_esm/utils/io/FileDrop.js +175 -0
- package/src/_esm/utils/io/FileDrop.js.map +1 -0
- package/src/_esm/utils/parsers/LinearColorGradientParser.d.ts +78 -0
- package/src/_esm/utils/parsers/LinearColorGradientParser.js +223 -0
- package/src/_esm/utils/parsers/LinearColorGradientParser.js.map +1 -0
- package/src/_esm/utils/parsers/OBJParser.d.ts +25 -0
- package/src/_esm/utils/parsers/OBJParser.js +78 -0
- package/src/_esm/utils/parsers/OBJParser.js.map +1 -0
- package/src/_esm/utils/parsers/STLParser.d.ts +61 -0
- package/src/_esm/utils/parsers/STLParser.js +179 -0
- package/src/_esm/utils/parsers/STLParser.js.map +1 -0
- package/src/_esm/utils/parsers/svg/parseSVGPathData.d.ts +27 -0
- package/src/_esm/utils/parsers/svg/parseSVGPathData.js +486 -0
- package/src/_esm/utils/parsers/svg/parseSVGPathData.js.map +1 -0
- package/src/_esm/utils/parsers/svg/splitSVGPathData.d.ts +20 -0
- package/src/_esm/utils/parsers/svg/splitSVGPathData.js +53 -0
- package/src/_esm/utils/parsers/svg/splitSVGPathData.js.map +1 -0
- package/src/_esm/utils/parsers/svg/types.d.ts +63 -0
- package/src/_esm/utils/parsers/svg/types.js +17 -0
- package/src/_esm/utils/parsers/svg/types.js.map +1 -0
- package/src/cjs/PlotBoilerplate.d.ts +11 -1
- package/src/cjs/PlotBoilerplate.js +23 -7
- package/src/cjs/PlotBoilerplate.js.map +1 -1
- package/src/cjs/VertexListeners.d.ts +2 -1
- package/src/cjs/VertexListeners.js +5 -1
- package/src/cjs/VertexListeners.js.map +1 -1
- package/src/cjs/draw.d.ts +18 -2
- package/src/cjs/draw.js +21 -2
- package/src/cjs/draw.js.map +1 -1
- package/src/cjs/drawgl.d.ts +18 -3
- package/src/cjs/drawgl.js +19 -2
- package/src/cjs/drawgl.js.map +1 -1
- package/src/cjs/drawutilssvg.d.ts +19 -1
- package/src/cjs/drawutilssvg.js +28 -5
- package/src/cjs/drawutilssvg.js.map +1 -1
- package/src/cjs/interfaces/DrawLib.d.ts +18 -1
- package/src/cjs/interfaces/DrawLib.js +2 -0
- package/src/cjs/interfaces/DrawLib.js.map +1 -1
- package/src/cjs/utils/Params.d.ts +3 -2
- package/src/cjs/utils/Params.js +11 -3
- package/src/cjs/utils/Params.js.map +1 -1
- package/src/cjs/utils/WebColors.d.ts +2 -1
- package/src/cjs/utils/WebColors.js +15 -2
- package/src/cjs/utils/WebColors.js.map +1 -1
- package/src/cjs/utils/algorithms/HobbyPath.js +13 -16
- package/src/cjs/utils/algorithms/HobbyPath.js.map +1 -1
- package/src/cjs/utils/helpers/BezierResizeHelper.d.ts +144 -0
- package/src/cjs/utils/helpers/BezierResizeHelper.js +319 -0
- package/src/cjs/utils/helpers/BezierResizeHelper.js.map +1 -0
- package/src/esm/PlotBoilerplate.d.ts +11 -1
- package/src/esm/PlotBoilerplate.js +23 -7
- package/src/esm/PlotBoilerplate.js.map +1 -1
- package/src/esm/VertexListeners.d.ts +2 -1
- package/src/esm/VertexListeners.js +5 -1
- package/src/esm/VertexListeners.js.map +1 -1
- package/src/esm/draw.d.ts +18 -2
- package/src/esm/draw.js +21 -2
- package/src/esm/draw.js.map +1 -1
- package/src/esm/drawgl.d.ts +18 -3
- package/src/esm/drawgl.js +19 -2
- package/src/esm/drawgl.js.map +1 -1
- package/src/esm/drawutilssvg.d.ts +19 -1
- package/src/esm/drawutilssvg.js +28 -5
- package/src/esm/drawutilssvg.js.map +1 -1
- package/src/esm/interfaces/DrawLib.d.ts +18 -1
- package/src/esm/interfaces/DrawLib.js +2 -0
- package/src/esm/interfaces/DrawLib.js.map +1 -1
- package/src/esm/utils/Params.d.ts +3 -2
- package/src/esm/utils/Params.js +11 -3
- package/src/esm/utils/Params.js.map +1 -1
- package/src/esm/utils/WebColors.d.ts +2 -1
- package/src/esm/utils/WebColors.js +15 -2
- package/src/esm/utils/WebColors.js.map +1 -1
- package/src/esm/utils/algorithms/HobbyPath.js +13 -16
- package/src/esm/utils/algorithms/HobbyPath.js.map +1 -1
- package/src/esm/utils/helpers/BezierResizeHelper.d.ts +144 -0
- package/src/esm/utils/helpers/BezierResizeHelper.js +314 -0
- package/src/esm/utils/helpers/BezierResizeHelper.js.map +1 -0
- package/src/ts/PlotBoilerplate.ts +37 -11
- package/src/ts/VertexListeners.ts +5 -1
- package/src/ts/draw.ts +32 -2
- package/src/ts/drawgl.ts +38 -3
- package/src/ts/drawutilssvg.ts +33 -6
- package/src/ts/interfaces/DrawLib.ts +19 -1
- package/src/ts/utils/Params.ts +11 -3
- package/src/ts/utils/WebColors.ts +15 -2
- package/src/ts/utils/algorithms/HobbyPath.ts +248 -272
- package/src/ts/utils/helpers/BezierResizeHelper.ts +390 -0
- /package/src/{cjs → _cjs}/utils/_gup.js_ +0 -0
|
@@ -0,0 +1,1127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @author Ikaros Kappler
|
|
4
|
+
* @date 2013-08-19
|
|
5
|
+
* @modified 2018-08-16 Added closure. Removed the 'IKRS' wrapper.
|
|
6
|
+
* @modified 2018-11-20 Added circular auto-adjustment.
|
|
7
|
+
* @modified 2018-11-25 Added the point constants to the BezierPath class itself.
|
|
8
|
+
* @modified 2018-11-28 Added the locateCurveByStartPoint() function.
|
|
9
|
+
* @modified 2018-12-04 Added the toSVGString() function.
|
|
10
|
+
* @modified 2019-03-23 Added JSDoc tags.
|
|
11
|
+
* @modified 2019-03-23 Changed the fuctions getPoint and getPointAt to match semantics in the Line class.
|
|
12
|
+
* @modified 2019-11-18 Fixed the clone function: adjustCircular attribute was not cloned.
|
|
13
|
+
* @modified 2019-12-02 Removed some excessive comments.
|
|
14
|
+
* @modified 2019-12-04 Fixed the missing obtainHandleLengths behavior in the adjustNeightbourControlPoint function.
|
|
15
|
+
* @modified 2020-02-06 Added function locateCurveByEndPoint( Vertex ).
|
|
16
|
+
* @modified 2020-02-11 Added 'return this' to the scale(Vertex,number) and to the translate(Vertex) function.
|
|
17
|
+
* @modified 2020-03-24 Ported this class from vanilla-JS to Typescript.
|
|
18
|
+
* @modified 2020-06-03 Made the private helper function _locateUIndex to a private function.
|
|
19
|
+
* @modified 2020-06-03 Added the getBounds() function.
|
|
20
|
+
* @modified 2020-07-14 Changed the moveCurvePoint(...,Vertex) to moveCurvePoint(...,XYCoords).
|
|
21
|
+
* @modified 2020-07-24 Added the getClosestT(Vertex) function.
|
|
22
|
+
* @modified 2020-12-29 Constructor is now private (no explicit use intended).
|
|
23
|
+
* @modified 2021-05-25 Added BezierPath.fromReducedList( Array<number> ).
|
|
24
|
+
* @modified 2022-01-31 Added `BezierPath.getEvenDistributionVertices(number)`.
|
|
25
|
+
* @modified 2022-02-02 Added the `destroy` method.
|
|
26
|
+
* @modified 2022-02-02 Cleared the `toSVGString` function (deprecated). Use `drawutilssvg` instead.
|
|
27
|
+
* @modified 2023-10-06 Adding the `BezierPath.toPathPoints()` method.
|
|
28
|
+
* @modified 2023-10-07 Adding the `BezierPath.fromCurve(CubicBezierCurve)` static function.
|
|
29
|
+
* @modified 2025-04-09 Added the `BezierPath.move` method to match the convention – which just calls `translate`.
|
|
30
|
+
* @modified 2025-04-09 Modified the `BezierPath.translate` method: chaning parameter `Vertex` to more generalized `XYCoords`.
|
|
31
|
+
* @modified 2025-04-14 Class `BezierPath` is now implementing interface `Intersectable`.
|
|
32
|
+
* @version 2.7.0
|
|
33
|
+
*
|
|
34
|
+
* @file BezierPath
|
|
35
|
+
* @public
|
|
36
|
+
**/
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.BezierPath = void 0;
|
|
39
|
+
var Bounds_1 = require("./Bounds");
|
|
40
|
+
var CubicBezierCurve_1 = require("./CubicBezierCurve");
|
|
41
|
+
var UIDGenerator_1 = require("./UIDGenerator");
|
|
42
|
+
var Vertex_1 = require("./Vertex");
|
|
43
|
+
/**
|
|
44
|
+
* @classdesc A BezierPath class.
|
|
45
|
+
*
|
|
46
|
+
* This was refactored from an older project.
|
|
47
|
+
*
|
|
48
|
+
* @requires Bounds
|
|
49
|
+
* @requires Vertex
|
|
50
|
+
* @requires CubicBezierCurve
|
|
51
|
+
* @requires XYCoords
|
|
52
|
+
* @requires SVGSerializable
|
|
53
|
+
* @requires UID
|
|
54
|
+
* @requires UIDGenerator
|
|
55
|
+
**/
|
|
56
|
+
var BezierPath = /** @class */ (function () {
|
|
57
|
+
/**
|
|
58
|
+
* The constructor.<br>
|
|
59
|
+
* <br>
|
|
60
|
+
* This constructor expects a sequence of path points and will approximate
|
|
61
|
+
* the location of control points by picking some between the points.<br>
|
|
62
|
+
* You should consider just constructing empty paths and then add more curves later using
|
|
63
|
+
* the addCurve() function.
|
|
64
|
+
*
|
|
65
|
+
* @constructor
|
|
66
|
+
* @name BezierPath
|
|
67
|
+
* @param {Vertex[]} pathPoints - An array of path vertices (no control points).
|
|
68
|
+
**/
|
|
69
|
+
function BezierPath() {
|
|
70
|
+
/**
|
|
71
|
+
* Required to generate proper CSS classes and other class related IDs.
|
|
72
|
+
**/
|
|
73
|
+
this.className = "BezierPath";
|
|
74
|
+
/** @constant {number} */
|
|
75
|
+
this.START_POINT = 0;
|
|
76
|
+
/** @constant {number} */
|
|
77
|
+
this.START_CONTROL_POINT = 1;
|
|
78
|
+
/** @constant {number} */
|
|
79
|
+
this.END_CONTROL_POINT = 2;
|
|
80
|
+
/** @constant {number} */
|
|
81
|
+
this.END_POINT = 3;
|
|
82
|
+
// pathPoints: Array<Vertex> | undefined | null) {
|
|
83
|
+
this.uid = UIDGenerator_1.UIDGenerator.next();
|
|
84
|
+
// if (!pathPoints) {
|
|
85
|
+
// pathPoints = [];
|
|
86
|
+
// }
|
|
87
|
+
this.totalArcLength = 0.0;
|
|
88
|
+
// Set this flag to true if you want the first point and
|
|
89
|
+
// last point of the path to be auto adjusted, too.
|
|
90
|
+
this.adjustCircular = false;
|
|
91
|
+
this.bezierCurves = [];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Add a cubic bezier curve to the end of this path.
|
|
95
|
+
*
|
|
96
|
+
* @method addCurve
|
|
97
|
+
* @param {CubicBezierCurve} curve - The curve to be added to the end of the path.
|
|
98
|
+
* @instance
|
|
99
|
+
* @memberof BezierPath
|
|
100
|
+
* @return {void}
|
|
101
|
+
**/
|
|
102
|
+
BezierPath.prototype.addCurve = function (curve) {
|
|
103
|
+
if (curve == null || typeof curve == "undefined")
|
|
104
|
+
throw "Cannot add null curve to bézier path.";
|
|
105
|
+
this.bezierCurves.push(curve);
|
|
106
|
+
if (this.bezierCurves.length > 1) {
|
|
107
|
+
curve.startPoint = this.bezierCurves[this.bezierCurves.length - 2].endPoint;
|
|
108
|
+
this.adjustSuccessorControlPoint(this.bezierCurves.length - 2, // curveIndex,
|
|
109
|
+
true, // obtainHandleLength,
|
|
110
|
+
true // updateArcLengths
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this.totalArcLength += curve.getLength();
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Locate the curve with the given start point (function returns the index).
|
|
119
|
+
*
|
|
120
|
+
* @method locateCurveByStartPoint
|
|
121
|
+
* @param {Vertex} point - The (curve start-) point to look for.
|
|
122
|
+
* @instance
|
|
123
|
+
* @memberof BezierPath
|
|
124
|
+
* @return {number} The curve index or -1 if curve (start-) point not found
|
|
125
|
+
**/
|
|
126
|
+
BezierPath.prototype.locateCurveByStartPoint = function (point) {
|
|
127
|
+
// for( var i in this.bezierCurves ) {
|
|
128
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
129
|
+
if (this.bezierCurves[i].startPoint.equals(point))
|
|
130
|
+
return i;
|
|
131
|
+
}
|
|
132
|
+
return -1;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Locate the curve with the given end point (function returns the index).
|
|
136
|
+
*
|
|
137
|
+
* @method locateCurveByEndPoint
|
|
138
|
+
* @param {Vertex} point - The (curve end-) point to look for.
|
|
139
|
+
* @instance
|
|
140
|
+
* @memberof BezierPath
|
|
141
|
+
* @return {number} The curve index or -1 if curve (end-) point not found
|
|
142
|
+
**/
|
|
143
|
+
BezierPath.prototype.locateCurveByEndPoint = function (point) {
|
|
144
|
+
// for( var i in this.bezierCurves ) {
|
|
145
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
146
|
+
if (this.bezierCurves[i].endPoint.equals(point))
|
|
147
|
+
return i;
|
|
148
|
+
}
|
|
149
|
+
return -1;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Locate the curve with the given start point (function returns the index).
|
|
153
|
+
*
|
|
154
|
+
* @method locateCurveByStartControlPoint
|
|
155
|
+
* @param {Vertex} point - The (curve endt-) point to look for.
|
|
156
|
+
* @instance
|
|
157
|
+
* @memberof BezierPath
|
|
158
|
+
* @return {number} The curve index or -1 if curve (end-) point not found
|
|
159
|
+
**/
|
|
160
|
+
BezierPath.prototype.locateCurveByStartControlPoint = function (point) {
|
|
161
|
+
// for( var i in this.bezierCurves ) {
|
|
162
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
163
|
+
if (this.bezierCurves[i].startControlPoint.equals(point))
|
|
164
|
+
return i;
|
|
165
|
+
}
|
|
166
|
+
return -1;
|
|
167
|
+
};
|
|
168
|
+
// +---------------------------------------------------------------------------------
|
|
169
|
+
// | Locate the curve with the given end control point.
|
|
170
|
+
// |
|
|
171
|
+
// | @param point:Vertex The point to look for.
|
|
172
|
+
// | @return Number The index or -1 if not found.
|
|
173
|
+
// +-------------------------------
|
|
174
|
+
BezierPath.prototype.locateCurveByEndControlPoint = function (point) {
|
|
175
|
+
// for( var i in this.bezierCurves ) {
|
|
176
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
177
|
+
if (this.bezierCurves[i].endControlPoint.equals(point))
|
|
178
|
+
return i;
|
|
179
|
+
}
|
|
180
|
+
return -1;
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Get the total length of this path.<br>
|
|
184
|
+
* <br>
|
|
185
|
+
* Note that the returned value comes from the curve buffer. Unregistered changes
|
|
186
|
+
* to the curve points will result in invalid path length values.
|
|
187
|
+
*
|
|
188
|
+
* @method getLength
|
|
189
|
+
* @instance
|
|
190
|
+
* @memberof BezierPath
|
|
191
|
+
* @return {number} The (buffered) length of the path.
|
|
192
|
+
**/
|
|
193
|
+
BezierPath.prototype.getLength = function () {
|
|
194
|
+
return this.totalArcLength;
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* This function is internally called whenever the curve or path configuration
|
|
198
|
+
* changed. It updates the attribute that stores the path length information.<br>
|
|
199
|
+
* <br>
|
|
200
|
+
* If you perform any unregistered changes to the curve points you should call
|
|
201
|
+
* this function afterwards to update the curve buffer. Not updating may
|
|
202
|
+
* result in unexpected behavior.
|
|
203
|
+
*
|
|
204
|
+
* @method updateArcLengths
|
|
205
|
+
* @instance
|
|
206
|
+
* @memberof BezierPath
|
|
207
|
+
* @return {void}
|
|
208
|
+
**/
|
|
209
|
+
BezierPath.prototype.updateArcLengths = function () {
|
|
210
|
+
this.totalArcLength = 0.0;
|
|
211
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
212
|
+
this.bezierCurves[i].updateArcLengths();
|
|
213
|
+
this.totalArcLength += this.bezierCurves[i].getLength();
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Get the number of curves in this path.
|
|
218
|
+
*
|
|
219
|
+
* @method getCurveCount
|
|
220
|
+
* @instance
|
|
221
|
+
* @memberof BezierPath
|
|
222
|
+
* @return {number} The number of curves in this path.
|
|
223
|
+
**/
|
|
224
|
+
BezierPath.prototype.getCurveCount = function () {
|
|
225
|
+
return this.bezierCurves.length;
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* Get the cubic bezier curve at the given index.
|
|
229
|
+
*
|
|
230
|
+
* @method getCurveAt
|
|
231
|
+
* @param {number} index - The curve index from 0 to getCurveCount()-1.
|
|
232
|
+
* @instance
|
|
233
|
+
* @memberof BezierPath
|
|
234
|
+
* @return {CubicBezierCurve} The curve at the specified index.
|
|
235
|
+
**/
|
|
236
|
+
BezierPath.prototype.getCurveAt = function (curveIndex) {
|
|
237
|
+
return this.bezierCurves[curveIndex];
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* Move the whole bezier path by the given (x,y)-amount.
|
|
241
|
+
*
|
|
242
|
+
* @method translate
|
|
243
|
+
* @param {XYCoords} amount - The amount to be added (amount.x and amount.y)
|
|
244
|
+
* to each vertex of the curve.
|
|
245
|
+
* @instance
|
|
246
|
+
* @memberof BezierPath
|
|
247
|
+
* @return {BezierPath} this for chaining
|
|
248
|
+
**/
|
|
249
|
+
BezierPath.prototype.translate = function (amount) {
|
|
250
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
251
|
+
var curve = this.bezierCurves[i];
|
|
252
|
+
curve.getStartPoint().add(amount);
|
|
253
|
+
curve.getStartControlPoint().add(amount);
|
|
254
|
+
curve.getEndControlPoint().add(amount);
|
|
255
|
+
}
|
|
256
|
+
// Don't forget to translate the last curve's last point
|
|
257
|
+
var curve = this.bezierCurves[this.bezierCurves.length - 1];
|
|
258
|
+
curve.getEndPoint().add(amount);
|
|
259
|
+
this.updateArcLengths();
|
|
260
|
+
return this;
|
|
261
|
+
};
|
|
262
|
+
/**
|
|
263
|
+
* Move the whole bezier path by the given (x,y)-amount.
|
|
264
|
+
*
|
|
265
|
+
* @method move
|
|
266
|
+
* @param {XYCoords} amount - The amount to be added (amount.x and amount.y)
|
|
267
|
+
* to each vertex of the curve.
|
|
268
|
+
* @instance
|
|
269
|
+
* @memberof BezierPath
|
|
270
|
+
* @return {BezierPath} this for chaining
|
|
271
|
+
**/
|
|
272
|
+
BezierPath.prototype.move = function (amount) {
|
|
273
|
+
return this.translate(amount);
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* Scale the whole bezier path by the given uniform factor.
|
|
277
|
+
*
|
|
278
|
+
* @method scale
|
|
279
|
+
* @param {Vertex} anchor - The scale origin to scale from.
|
|
280
|
+
* @param {number} scaleFactor - The scalar to be multiplied with.
|
|
281
|
+
* @instance
|
|
282
|
+
* @memberof BezierPath
|
|
283
|
+
* @return {BezierPath} this for chaining.
|
|
284
|
+
**/
|
|
285
|
+
BezierPath.prototype.scale = function (anchor, scaleFactor) {
|
|
286
|
+
return this.scaleXY({ x: scaleFactor, y: scaleFactor }, anchor);
|
|
287
|
+
};
|
|
288
|
+
/**
|
|
289
|
+
* Scale the whole bezier path by the given (x,y)-factors.
|
|
290
|
+
*
|
|
291
|
+
* @method scale
|
|
292
|
+
* @param {Vertex} anchor - The scale origin to scale from.
|
|
293
|
+
* @param {number} amount - The scalar to be multiplied with.
|
|
294
|
+
* @instance
|
|
295
|
+
* @memberof BezierPath
|
|
296
|
+
* @return {BezierPath} this for chaining.
|
|
297
|
+
**/
|
|
298
|
+
BezierPath.prototype.scaleXY = function (scaleFactors, anchor) {
|
|
299
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
300
|
+
var curve = this.bezierCurves[i];
|
|
301
|
+
curve.getStartPoint().scaleXY(scaleFactors, anchor);
|
|
302
|
+
curve.getStartControlPoint().scaleXY(scaleFactors, anchor);
|
|
303
|
+
curve.getEndControlPoint().scaleXY(scaleFactors, anchor);
|
|
304
|
+
// Do NOT scale the end point here!
|
|
305
|
+
// Don't forget that the curves are connected and on curve's end point
|
|
306
|
+
// the the successor's start point (same instance)!
|
|
307
|
+
}
|
|
308
|
+
// Finally move the last end point (was not scaled yet)
|
|
309
|
+
if (this.bezierCurves.length > 0 && !this.adjustCircular) {
|
|
310
|
+
this.bezierCurves[this.bezierCurves.length - 1].getEndPoint().scaleXY(scaleFactors, anchor);
|
|
311
|
+
}
|
|
312
|
+
this.updateArcLengths();
|
|
313
|
+
return this;
|
|
314
|
+
};
|
|
315
|
+
/**
|
|
316
|
+
* Rotate the whole bezier path around a point..
|
|
317
|
+
*
|
|
318
|
+
* @method rotate
|
|
319
|
+
* @param {Vertex} angle - The angle to rotate this path by.
|
|
320
|
+
* @param {Vertex} center - The rotation center.
|
|
321
|
+
* @instance
|
|
322
|
+
* @memberof BezierPath
|
|
323
|
+
* @return {void}
|
|
324
|
+
**/
|
|
325
|
+
BezierPath.prototype.rotate = function (angle, center) {
|
|
326
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
327
|
+
var curve = this.bezierCurves[i];
|
|
328
|
+
curve.getStartPoint().rotate(angle, center);
|
|
329
|
+
curve.getStartControlPoint().rotate(angle, center);
|
|
330
|
+
curve.getEndControlPoint().rotate(angle, center);
|
|
331
|
+
// Do NOT rotate the end point here!
|
|
332
|
+
// Don't forget that the curves are connected and on curve's end point
|
|
333
|
+
// the the successor's start point (same instance)!
|
|
334
|
+
}
|
|
335
|
+
// Finally move the last end point (was not scaled yet)
|
|
336
|
+
if (this.bezierCurves.length > 0 && !this.adjustCircular) {
|
|
337
|
+
this.bezierCurves[this.bezierCurves.length - 1].getEndPoint().rotate(angle, center);
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
/**
|
|
341
|
+
* Get the 't' position on this curve with the minimal distance to point p.
|
|
342
|
+
*
|
|
343
|
+
* @param {Vertex} p - The point to find the closest curve point for.
|
|
344
|
+
* @return {number} A value t with 0.0 <= t <= 1.0.
|
|
345
|
+
**/
|
|
346
|
+
BezierPath.prototype.getClosestT = function (p) {
|
|
347
|
+
// Find the spline to extract the value from
|
|
348
|
+
var minIndex = -1;
|
|
349
|
+
var minDist = 0.0;
|
|
350
|
+
var dist = 0.0;
|
|
351
|
+
var curveT = 0.0;
|
|
352
|
+
var uMin = 0.0;
|
|
353
|
+
var u = 0.0;
|
|
354
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
355
|
+
curveT = this.bezierCurves[i].getClosestT(p);
|
|
356
|
+
dist = this.bezierCurves[i].getPointAt(curveT).distance(p);
|
|
357
|
+
if (minIndex == -1 || dist < minDist) {
|
|
358
|
+
minIndex = i;
|
|
359
|
+
minDist = dist;
|
|
360
|
+
uMin = u + curveT * this.bezierCurves[i].getLength();
|
|
361
|
+
}
|
|
362
|
+
u += this.bezierCurves[i].getLength();
|
|
363
|
+
}
|
|
364
|
+
return Math.max(0.0, Math.min(1.0, uMin / this.totalArcLength));
|
|
365
|
+
};
|
|
366
|
+
/**
|
|
367
|
+
* Get the point on the bézier path at the given relative path location.
|
|
368
|
+
*
|
|
369
|
+
* @method getPoint
|
|
370
|
+
* @param {number} u - The relative path position: <pre>0 <= u <= this.getLength()</pre>
|
|
371
|
+
* @instance
|
|
372
|
+
* @memberof BezierPath
|
|
373
|
+
* @return {Vertex} The point at the relative path position.
|
|
374
|
+
**/
|
|
375
|
+
BezierPath.prototype.getPoint = function (u) {
|
|
376
|
+
if (u < 0 || u > this.totalArcLength) {
|
|
377
|
+
console.warn("[BezierPath.getPoint(u)] u is out of bounds: " + u + ".");
|
|
378
|
+
u = Math.min(this.totalArcLength, Math.max(u, 0));
|
|
379
|
+
}
|
|
380
|
+
// Find the spline to extract the value from
|
|
381
|
+
var i = 0;
|
|
382
|
+
var uTemp = 0.0;
|
|
383
|
+
while (i < this.bezierCurves.length && uTemp + this.bezierCurves[i].getLength() < u) {
|
|
384
|
+
uTemp += this.bezierCurves[i].getLength();
|
|
385
|
+
i++;
|
|
386
|
+
}
|
|
387
|
+
// if u == arcLength
|
|
388
|
+
// -> i is max
|
|
389
|
+
if (i >= this.bezierCurves.length)
|
|
390
|
+
return this.bezierCurves[this.bezierCurves.length - 1].getEndPoint().clone();
|
|
391
|
+
var bCurve = this.bezierCurves[i];
|
|
392
|
+
var relativeU = u - uTemp;
|
|
393
|
+
return bCurve.getPoint(relativeU);
|
|
394
|
+
};
|
|
395
|
+
/**
|
|
396
|
+
* Get the point on the bézier path at the given path fraction.
|
|
397
|
+
*
|
|
398
|
+
* @method getPointAt
|
|
399
|
+
* @param {number} t - The absolute path position: <pre>0.0 <= t <= 1.0</pre>
|
|
400
|
+
* @instance
|
|
401
|
+
* @memberof BezierPath
|
|
402
|
+
* @return {Vertex} The point at the absolute path position.
|
|
403
|
+
**/
|
|
404
|
+
BezierPath.prototype.getPointAt = function (t) {
|
|
405
|
+
return this.getPoint(t * this.totalArcLength);
|
|
406
|
+
};
|
|
407
|
+
/**
|
|
408
|
+
* Get the tangent of the bézier path at the given path fraction.<br>
|
|
409
|
+
* <br>
|
|
410
|
+
* Note that the returned vector is not normalized.
|
|
411
|
+
*
|
|
412
|
+
* @method getTangentAt
|
|
413
|
+
* @param {number} t - The absolute path position: <pre>0.0 <= t <= 1.0</pre>
|
|
414
|
+
* @instance
|
|
415
|
+
* @memberof BezierPath
|
|
416
|
+
* @return {Vertex} The tangent vector at the absolute path position.
|
|
417
|
+
**/
|
|
418
|
+
BezierPath.prototype.getTangentAt = function (t) {
|
|
419
|
+
return this.getTangent(t * this.totalArcLength);
|
|
420
|
+
};
|
|
421
|
+
/**
|
|
422
|
+
* Get the tangent of the bézier path at the given path location.<br>
|
|
423
|
+
* <br>
|
|
424
|
+
* Note that the returned vector is not normalized.
|
|
425
|
+
*
|
|
426
|
+
* @method getTangent
|
|
427
|
+
* @param {number} u - The relative path position: <pre>0 <= u <= getLength()</pre>
|
|
428
|
+
* @instance
|
|
429
|
+
* @memberof BezierPath
|
|
430
|
+
* @return {Vertex} The tangent vector at the relative path position.
|
|
431
|
+
**/
|
|
432
|
+
BezierPath.prototype.getTangent = function (u) {
|
|
433
|
+
if (u < 0 || u > this.totalArcLength) {
|
|
434
|
+
console.warn("[BezierPath.getTangent(u)] u is out of bounds: " + u + ".");
|
|
435
|
+
// return undefined;
|
|
436
|
+
u = Math.min(this.totalArcLength, Math.max(0, u));
|
|
437
|
+
}
|
|
438
|
+
// Find the spline to extract the value from
|
|
439
|
+
var i = 0;
|
|
440
|
+
var uTemp = 0.0;
|
|
441
|
+
while (i < this.bezierCurves.length && uTemp + this.bezierCurves[i].getLength() < u) {
|
|
442
|
+
uTemp += this.bezierCurves[i].getLength();
|
|
443
|
+
i++;
|
|
444
|
+
}
|
|
445
|
+
var bCurve = this.bezierCurves[i];
|
|
446
|
+
var relativeU = u - uTemp;
|
|
447
|
+
return bCurve.getTangent(relativeU);
|
|
448
|
+
};
|
|
449
|
+
/**
|
|
450
|
+
* Get the perpendicular of the bézier path at the given absolute path location (fraction).<br>
|
|
451
|
+
* <br>
|
|
452
|
+
* Note that the returned vector is not normalized.
|
|
453
|
+
*
|
|
454
|
+
* @method getPerpendicularAt
|
|
455
|
+
* @param {number} t - The absolute path position: <pre>0.0 <= t <= 1.0</pre>
|
|
456
|
+
* @instance
|
|
457
|
+
* @memberof BezierPath
|
|
458
|
+
* @return {Vertex} The perpendicluar vector at the absolute path position.
|
|
459
|
+
**/
|
|
460
|
+
BezierPath.prototype.getPerpendicularAt = function (t) {
|
|
461
|
+
return this.getPerpendicular(t * this.totalArcLength);
|
|
462
|
+
};
|
|
463
|
+
/**
|
|
464
|
+
* Get the perpendicular of the bézier path at the given relative path location.<br>
|
|
465
|
+
* <br>
|
|
466
|
+
* Note that the returned vector is not normalized.
|
|
467
|
+
*
|
|
468
|
+
* @method getPerpendicular
|
|
469
|
+
* @param {number} u - The relative path position: <pre>0 <= u <= getLength()</pre>
|
|
470
|
+
* @instance
|
|
471
|
+
* @memberof BezierPath
|
|
472
|
+
* @return {Vertex} The perpendicluar vector at the relative path position.
|
|
473
|
+
**/
|
|
474
|
+
BezierPath.prototype.getPerpendicular = function (u) {
|
|
475
|
+
if (u < 0 || u > this.totalArcLength) {
|
|
476
|
+
console.log("[BezierPath.getPerpendicular(u)] u is out of bounds: " + u + ".");
|
|
477
|
+
u = Math.min(this.totalArcLength, Math.max(0, u));
|
|
478
|
+
}
|
|
479
|
+
// Find the spline to extract the value from
|
|
480
|
+
var uResult = BezierPath._locateUIndex(this, u);
|
|
481
|
+
var bCurve = this.bezierCurves[uResult.i];
|
|
482
|
+
var relativeU = u - uResult.uPart;
|
|
483
|
+
return bCurve.getPerpendicular(relativeU);
|
|
484
|
+
};
|
|
485
|
+
//--- BEGIN --- Implement interface `Intersectable`
|
|
486
|
+
/**
|
|
487
|
+
* Get all line intersections with this shape.
|
|
488
|
+
*
|
|
489
|
+
* This method returns all intersections (as vertices) with this shape. The returned array of vertices is in no specific order.
|
|
490
|
+
*
|
|
491
|
+
* @param {VertTuple} line - The line to find intersections with.
|
|
492
|
+
* @param {boolean} inVectorBoundsOnly - If set to true only intersecion points on the passed vector are returned (located strictly between start and end vertex).
|
|
493
|
+
* @returns {Array<Vertex>} - An array of all intersections with the shape's outline.
|
|
494
|
+
*/
|
|
495
|
+
BezierPath.prototype.lineIntersections = function (line, inVectorBoundsOnly) {
|
|
496
|
+
if (inVectorBoundsOnly === void 0) { inVectorBoundsOnly = false; }
|
|
497
|
+
return this.bezierCurves.reduce(function (accu, curCurve) {
|
|
498
|
+
return accu.concat(curCurve.lineIntersections(line, inVectorBoundsOnly));
|
|
499
|
+
}, []);
|
|
500
|
+
};
|
|
501
|
+
/**
|
|
502
|
+
* Get all line intersections of this polygon and their tangents along the shape.
|
|
503
|
+
*
|
|
504
|
+
* This method returns all intersection tangents (as vectors) with this shape. The returned array of vectors is in no specific order.
|
|
505
|
+
*
|
|
506
|
+
* @param line
|
|
507
|
+
* @param lineIntersectionTangents
|
|
508
|
+
* @returns
|
|
509
|
+
*/
|
|
510
|
+
BezierPath.prototype.lineIntersectionTangents = function (line, inVectorBoundsOnly) {
|
|
511
|
+
if (inVectorBoundsOnly === void 0) { inVectorBoundsOnly = false; }
|
|
512
|
+
return this.bezierCurves.reduce(function (accu, curCurve) {
|
|
513
|
+
return accu.concat(curCurve.lineIntersectionTangents(line, inVectorBoundsOnly));
|
|
514
|
+
}, []);
|
|
515
|
+
};
|
|
516
|
+
//--- END --- Implement interface `Intersectable`
|
|
517
|
+
/**
|
|
518
|
+
* This is a helper function to locate the curve index for a given
|
|
519
|
+
* absolute path position u.
|
|
520
|
+
*
|
|
521
|
+
* I decided to put this into privat scope as it is really specific. Maybe
|
|
522
|
+
* put this into a utils wrapper.
|
|
523
|
+
*
|
|
524
|
+
* Returns:
|
|
525
|
+
* - {number} i - the index of the containing curve.
|
|
526
|
+
* - {number} uPart - the absolute curve length sum (length from the beginning to u, should equal u itself).
|
|
527
|
+
* - {number} uBefore - the absolute curve length for all segments _before_ the matched curve (usually uBefore <= uPart).
|
|
528
|
+
**/
|
|
529
|
+
BezierPath._locateUIndex = function (path, u) {
|
|
530
|
+
var i = 0;
|
|
531
|
+
var uTemp = 0.0;
|
|
532
|
+
var uBefore = 0.0;
|
|
533
|
+
while (i < path.bezierCurves.length && uTemp + path.bezierCurves[i].getLength() < u) {
|
|
534
|
+
uTemp += path.bezierCurves[i].getLength();
|
|
535
|
+
if (i + 1 < path.bezierCurves.length)
|
|
536
|
+
uBefore += path.bezierCurves[i].getLength();
|
|
537
|
+
i++;
|
|
538
|
+
}
|
|
539
|
+
return { i: i, uPart: uTemp, uBefore: uBefore };
|
|
540
|
+
};
|
|
541
|
+
/**
|
|
542
|
+
* Get a specific sub path from this path. The start and end position are specified by
|
|
543
|
+
* ratio number in [0..1].
|
|
544
|
+
*
|
|
545
|
+
* 0.0 is at the beginning of the path.
|
|
546
|
+
* 1.0 is at the end of the path.
|
|
547
|
+
*
|
|
548
|
+
* Values below 0 or beyond 1 are cropped down to the [0..1] interval.
|
|
549
|
+
*
|
|
550
|
+
* startT > endT is allowed, the returned sub path will have inverse direction then.
|
|
551
|
+
*
|
|
552
|
+
* @method getSubPathAt
|
|
553
|
+
* @param {number} startT - The start position of the sub path.
|
|
554
|
+
* @param {number} endT - The end position of the sub path.
|
|
555
|
+
* @instance
|
|
556
|
+
* @memberof BezierPath
|
|
557
|
+
* @return {BezierPath} The desired sub path in the bounds [startT..endT].
|
|
558
|
+
**/
|
|
559
|
+
BezierPath.prototype.getSubPathAt = function (startT, endT) {
|
|
560
|
+
startT = Math.max(0, startT);
|
|
561
|
+
endT = Math.min(1.0, endT);
|
|
562
|
+
var startU = startT * this.totalArcLength;
|
|
563
|
+
var endU = endT * this.totalArcLength;
|
|
564
|
+
var uStartResult = BezierPath._locateUIndex(this, startU); // { i:int, uPart:float, uBefore:float }
|
|
565
|
+
var uEndResult = BezierPath._locateUIndex(this, endU); // { i:int, uPart:float, uBefore:float }
|
|
566
|
+
var firstT = (startU - uStartResult.uBefore) / this.bezierCurves[uStartResult.i].getLength();
|
|
567
|
+
if (uStartResult.i == uEndResult.i) {
|
|
568
|
+
// Subpath begins and ends in the same path segment (just get a simple sub curve from that path element).
|
|
569
|
+
var lastT = (endU - uEndResult.uBefore) / this.bezierCurves[uEndResult.i].getLength();
|
|
570
|
+
var firstCurve = this.bezierCurves[uStartResult.i].getSubCurveAt(firstT, lastT);
|
|
571
|
+
return BezierPath.fromArray([firstCurve]);
|
|
572
|
+
}
|
|
573
|
+
else {
|
|
574
|
+
var curves = [];
|
|
575
|
+
if (uStartResult.i > uEndResult.i) {
|
|
576
|
+
// Back to front direction
|
|
577
|
+
var firstCurve = this.bezierCurves[uStartResult.i].getSubCurveAt(firstT, 0.0);
|
|
578
|
+
curves.push(firstCurve);
|
|
579
|
+
for (var i = uStartResult.i - 1; i > uEndResult.i; i--) {
|
|
580
|
+
curves.push(this.bezierCurves[i].clone().reverse());
|
|
581
|
+
}
|
|
582
|
+
var lastT = (endU - uEndResult.uBefore) / this.bezierCurves[uEndResult.i].getLength();
|
|
583
|
+
curves.push(this.bezierCurves[uEndResult.i].getSubCurveAt(1.0, lastT));
|
|
584
|
+
}
|
|
585
|
+
else {
|
|
586
|
+
// Front to back direction
|
|
587
|
+
var firstCurve = this.bezierCurves[uStartResult.i].getSubCurveAt(firstT, 1.0);
|
|
588
|
+
curves.push(firstCurve);
|
|
589
|
+
for (var i = uStartResult.i + 1; i < uEndResult.i && i < this.bezierCurves.length; i++) {
|
|
590
|
+
curves.push(this.bezierCurves[i].clone());
|
|
591
|
+
}
|
|
592
|
+
var lastT = (endU - uEndResult.uBefore) / this.bezierCurves[uEndResult.i].getLength();
|
|
593
|
+
curves.push(this.bezierCurves[uEndResult.i].getSubCurveAt(0, lastT));
|
|
594
|
+
}
|
|
595
|
+
return BezierPath.fromArray(curves);
|
|
596
|
+
}
|
|
597
|
+
};
|
|
598
|
+
/**
|
|
599
|
+
* This function moves the addressed curve point (or control point) with
|
|
600
|
+
* keeping up the path's curve integrity.<br>
|
|
601
|
+
* <br>
|
|
602
|
+
* Thus is done by moving neighbour- and control- points as needed.
|
|
603
|
+
*
|
|
604
|
+
* @method moveCurvePoint
|
|
605
|
+
* @param {number} curveIndex - The curve index to move a point from.
|
|
606
|
+
* @param {number} pointID - One of the curve's four point IDs (START_POINT,
|
|
607
|
+
* START_CONTROL_POINT, END_CONTRO_POINT or END_POINT).
|
|
608
|
+
* @param {XYCoords} moveAmount - The amount to move the addressed vertex by.
|
|
609
|
+
* @instance
|
|
610
|
+
* @memberof BezierPath
|
|
611
|
+
* @return {void}
|
|
612
|
+
**/
|
|
613
|
+
BezierPath.prototype.moveCurvePoint = function (curveIndex, pointID, moveAmount) {
|
|
614
|
+
var bCurve = this.getCurveAt(curveIndex);
|
|
615
|
+
bCurve.moveCurvePoint(pointID, moveAmount, true, // move control point, too
|
|
616
|
+
true // updateArcLengths
|
|
617
|
+
);
|
|
618
|
+
// If inner point and NOT control point
|
|
619
|
+
// --> move neightbour
|
|
620
|
+
if (pointID == this.START_POINT && (curveIndex > 0 || this.adjustCircular)) {
|
|
621
|
+
// Set predecessor's control point!
|
|
622
|
+
var predecessor = this.getCurveAt(curveIndex - 1 < 0 ? this.bezierCurves.length + (curveIndex - 1) : curveIndex - 1);
|
|
623
|
+
predecessor.moveCurvePoint(this.END_CONTROL_POINT, moveAmount, true, // move control point, too
|
|
624
|
+
false // updateArcLengths
|
|
625
|
+
);
|
|
626
|
+
}
|
|
627
|
+
else if (pointID == this.END_POINT && (curveIndex + 1 < this.bezierCurves.length || this.adjustCircular)) {
|
|
628
|
+
// Set successcor
|
|
629
|
+
var successor = this.getCurveAt((curveIndex + 1) % this.bezierCurves.length);
|
|
630
|
+
successor.moveCurvePoint(this.START_CONTROL_POINT, moveAmount, true, // move control point, too
|
|
631
|
+
false // updateArcLengths
|
|
632
|
+
);
|
|
633
|
+
}
|
|
634
|
+
else if (pointID == this.START_CONTROL_POINT && curveIndex > 0) {
|
|
635
|
+
this.adjustPredecessorControlPoint(curveIndex, true, // obtain handle length?
|
|
636
|
+
false // update arc lengths
|
|
637
|
+
);
|
|
638
|
+
}
|
|
639
|
+
else if (pointID == this.END_CONTROL_POINT && curveIndex + 1 < this.getCurveCount()) {
|
|
640
|
+
this.adjustSuccessorControlPoint(curveIndex, true, // obtain handle length?
|
|
641
|
+
false // update arc lengths
|
|
642
|
+
);
|
|
643
|
+
}
|
|
644
|
+
// Don't forget to update the arc lengths!
|
|
645
|
+
// Note: this can be optimized as only two curves have changed their lengths!
|
|
646
|
+
this.updateArcLengths();
|
|
647
|
+
};
|
|
648
|
+
/**
|
|
649
|
+
* This helper function adjusts the given point's predecessor's control point.
|
|
650
|
+
*
|
|
651
|
+
* @method adjustPredecessorControlPoint
|
|
652
|
+
* @param {number} curveIndex - The curve index to move a point from.
|
|
653
|
+
* @param {boolean} obtainHandleLength - Moves the point with keeping the original handle length.
|
|
654
|
+
* @param {boolean} updateArcLength - The amount to move the addressed vertex by.
|
|
655
|
+
* @instance
|
|
656
|
+
* @private
|
|
657
|
+
* @memberof BezierPath
|
|
658
|
+
* @return {void}
|
|
659
|
+
**/
|
|
660
|
+
BezierPath.prototype.adjustPredecessorControlPoint = function (curveIndex, obtainHandleLength, updateArcLengths) {
|
|
661
|
+
if (!this.adjustCircular && curveIndex <= 0)
|
|
662
|
+
return; // false;
|
|
663
|
+
var mainCurve = this.getCurveAt(curveIndex);
|
|
664
|
+
var neighbourCurve = this.getCurveAt(curveIndex - 1 < 0 ? this.getCurveCount() + (curveIndex - 1) : curveIndex - 1);
|
|
665
|
+
BezierPath.adjustNeighbourControlPoint(mainCurve, neighbourCurve, mainCurve.getStartPoint(), // the reference point
|
|
666
|
+
mainCurve.getStartControlPoint(), // the dragged control point
|
|
667
|
+
neighbourCurve.getEndPoint(), // the neighbour's point
|
|
668
|
+
neighbourCurve.getEndControlPoint(), // the neighbour's control point to adjust
|
|
669
|
+
obtainHandleLength, updateArcLengths);
|
|
670
|
+
};
|
|
671
|
+
/**
|
|
672
|
+
* This helper function adjusts the given point's successor's control point.
|
|
673
|
+
*
|
|
674
|
+
* @method adjustSuccessorControlPoint
|
|
675
|
+
* @param {number} curveIndex - The curve index to move a point from.
|
|
676
|
+
* @param {boolean} obtainHandleLength - Moves the point with keeping the original handle length.
|
|
677
|
+
* @param {boolean} updateArcLength - The amount to move the addressed vertex by.
|
|
678
|
+
* @instance
|
|
679
|
+
* @private
|
|
680
|
+
* @memberof BezierPath
|
|
681
|
+
* @return {void}
|
|
682
|
+
**/
|
|
683
|
+
BezierPath.prototype.adjustSuccessorControlPoint = function (curveIndex, obtainHandleLength, updateArcLengths) {
|
|
684
|
+
if (!this.adjustCircular && curveIndex + 1 > this.getCurveCount())
|
|
685
|
+
return; // false;
|
|
686
|
+
var mainCurve = this.getCurveAt(curveIndex);
|
|
687
|
+
var neighbourCurve = this.getCurveAt((curveIndex + 1) % this.getCurveCount());
|
|
688
|
+
/* return */ BezierPath.adjustNeighbourControlPoint(mainCurve, neighbourCurve, mainCurve.getEndPoint(), // the reference point
|
|
689
|
+
mainCurve.getEndControlPoint(), // the dragged control point
|
|
690
|
+
neighbourCurve.getStartPoint(), // the neighbour's point
|
|
691
|
+
neighbourCurve.getStartControlPoint(), // the neighbour's control point to adjust
|
|
692
|
+
obtainHandleLength, updateArcLengths);
|
|
693
|
+
};
|
|
694
|
+
/**
|
|
695
|
+
* This helper function adjusts the given point's successor's control point.
|
|
696
|
+
*
|
|
697
|
+
* @method adjustNeighbourControlPoint
|
|
698
|
+
* @param {CubicBezierCurve} mainCurve
|
|
699
|
+
* @param {CubicBezierCurve} neighbourCurve
|
|
700
|
+
* @param {Vertex} mainPoint
|
|
701
|
+
* @param {Vertex} mainControlPoint
|
|
702
|
+
* @param {Vertex} neighbourPoint
|
|
703
|
+
* @param {Vertex} neighbourControlPoint
|
|
704
|
+
* @param {boolean} obtainHandleLengths
|
|
705
|
+
* @param {boolean} updateArcLengths
|
|
706
|
+
* @instance
|
|
707
|
+
* @private
|
|
708
|
+
* @memberof BezierPath
|
|
709
|
+
* @return {void}
|
|
710
|
+
**/
|
|
711
|
+
BezierPath.adjustNeighbourControlPoint = function (_mainCurve, // TODO: remove param
|
|
712
|
+
neighbourCurve, mainPoint, mainControlPoint, neighbourPoint, neighbourControlPoint, obtainHandleLengths, _updateArcLengths // TODO: remove param
|
|
713
|
+
) {
|
|
714
|
+
// Calculate start handle length
|
|
715
|
+
var mainHandleBounds = new Vertex_1.Vertex(mainControlPoint.x - mainPoint.x, mainControlPoint.y - mainPoint.y);
|
|
716
|
+
var neighbourHandleBounds = new Vertex_1.Vertex(neighbourControlPoint.x - neighbourPoint.x, neighbourControlPoint.y - neighbourPoint.y);
|
|
717
|
+
var mainHandleLength = Math.sqrt(Math.pow(mainHandleBounds.x, 2) + Math.pow(mainHandleBounds.y, 2));
|
|
718
|
+
var neighbourHandleLength = Math.sqrt(Math.pow(neighbourHandleBounds.x, 2) + Math.pow(neighbourHandleBounds.y, 2));
|
|
719
|
+
if (mainHandleLength <= 0.1)
|
|
720
|
+
return; // no secure length available for division? What about zoom? Use EPSILON?
|
|
721
|
+
// Just invert the main handle (keep length or not?
|
|
722
|
+
if (obtainHandleLengths) {
|
|
723
|
+
neighbourControlPoint.set(neighbourPoint.x - mainHandleBounds.x * (neighbourHandleLength / mainHandleLength), neighbourPoint.y - mainHandleBounds.y * (neighbourHandleLength / mainHandleLength));
|
|
724
|
+
}
|
|
725
|
+
else {
|
|
726
|
+
neighbourControlPoint.set(neighbourPoint.x - mainHandleBounds.x, neighbourPoint.y - mainHandleBounds.y);
|
|
727
|
+
}
|
|
728
|
+
neighbourCurve.updateArcLengths();
|
|
729
|
+
};
|
|
730
|
+
//--- BEGIN --- Implement interface `IBounded`
|
|
731
|
+
/**
|
|
732
|
+
* Get the bounds of this Bézier path.
|
|
733
|
+
*
|
|
734
|
+
* Note the the curves' underlyung segment buffers are used to determine the bounds. The more
|
|
735
|
+
* elements the segment buffers have, the more precise the returned bounds will be.
|
|
736
|
+
*
|
|
737
|
+
* @return {Bounds} The bounds of this Bézier path.
|
|
738
|
+
**/
|
|
739
|
+
BezierPath.prototype.getBounds = function () {
|
|
740
|
+
var min = new Vertex_1.Vertex(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);
|
|
741
|
+
var max = new Vertex_1.Vertex(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY);
|
|
742
|
+
var b;
|
|
743
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
744
|
+
b = this.bezierCurves[i].getBounds();
|
|
745
|
+
min.x = Math.min(min.x, b.min.x);
|
|
746
|
+
min.y = Math.min(min.y, b.min.y);
|
|
747
|
+
max.x = Math.max(max.x, b.max.x);
|
|
748
|
+
max.y = Math.max(max.y, b.max.y);
|
|
749
|
+
}
|
|
750
|
+
return new Bounds_1.Bounds(min, max);
|
|
751
|
+
};
|
|
752
|
+
//--- END --- Implement interface `IBounded`
|
|
753
|
+
/**
|
|
754
|
+
* Get n 'equally' distributed vertices along this Bézier path.
|
|
755
|
+
*
|
|
756
|
+
* As the changing curvature of the B slines makes prediction of distances difficult, the
|
|
757
|
+
* returned vertices' distances are only relatively equal:
|
|
758
|
+
* - the distance grows where curvature is large.
|
|
759
|
+
* - the distance shrinks where curvature is small.
|
|
760
|
+
*
|
|
761
|
+
* Only the distance mean of all consecutive is 1/n-th of the total arc length.
|
|
762
|
+
*
|
|
763
|
+
* Usually this approximation is good enough for most use cases.
|
|
764
|
+
*
|
|
765
|
+
* @param {number} pointCount - (must be at least 2) The number of desired points (start and end point included).
|
|
766
|
+
* @return {Array<Vertex>}
|
|
767
|
+
*/
|
|
768
|
+
BezierPath.prototype.getEvenDistributionVertices = function (pointCount) {
|
|
769
|
+
if (pointCount < 2) {
|
|
770
|
+
throw new Error("pointCount must be larger than one; is " + pointCount + ".");
|
|
771
|
+
}
|
|
772
|
+
var result = [];
|
|
773
|
+
if (this.bezierCurves.length === 0) {
|
|
774
|
+
return result;
|
|
775
|
+
}
|
|
776
|
+
// Fetch and add the start point from the source polygon
|
|
777
|
+
var polygonPoint = new Vertex_1.Vertex(this.bezierCurves[0].startPoint);
|
|
778
|
+
result.push(polygonPoint);
|
|
779
|
+
// if (this.bezierCurves.length === 1) {
|
|
780
|
+
// return result;
|
|
781
|
+
// }
|
|
782
|
+
var perimeter = this.totalArcLength;
|
|
783
|
+
var stepSize = perimeter / (pointCount - 1);
|
|
784
|
+
var n = this.bezierCurves.length;
|
|
785
|
+
var curveIndex = 0;
|
|
786
|
+
var segmentLength = this.bezierCurves[0].arcLength;
|
|
787
|
+
var curSegmentU = stepSize;
|
|
788
|
+
var i = 1;
|
|
789
|
+
while (i < pointCount && curveIndex < n) {
|
|
790
|
+
// Check if next eq point is inside this segment
|
|
791
|
+
if (curSegmentU < segmentLength) {
|
|
792
|
+
var newPoint = this.bezierCurves[curveIndex].getPoint(curSegmentU);
|
|
793
|
+
result.push(newPoint);
|
|
794
|
+
curSegmentU += stepSize;
|
|
795
|
+
i++;
|
|
796
|
+
}
|
|
797
|
+
else {
|
|
798
|
+
curveIndex++;
|
|
799
|
+
curSegmentU = curSegmentU - segmentLength;
|
|
800
|
+
segmentLength = curveIndex < n ? this.bezierCurves[curveIndex].arcLength : 0;
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
result.push(new Vertex_1.Vertex(this.bezierCurves[n - 1].endPoint));
|
|
804
|
+
return result;
|
|
805
|
+
};
|
|
806
|
+
/**
|
|
807
|
+
* Clone this BezierPath (deep clone).
|
|
808
|
+
*
|
|
809
|
+
* @method clone
|
|
810
|
+
* @instance
|
|
811
|
+
* @memberof BezierPath
|
|
812
|
+
* @return {BezierPath}
|
|
813
|
+
**/
|
|
814
|
+
BezierPath.prototype.clone = function () {
|
|
815
|
+
var path = new BezierPath(); // undefined);
|
|
816
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
817
|
+
path.bezierCurves.push(this.bezierCurves[i].clone());
|
|
818
|
+
// Connect splines
|
|
819
|
+
if (i > 0)
|
|
820
|
+
path.bezierCurves[i - 1].endPoint = path.bezierCurves[i].startPoint;
|
|
821
|
+
}
|
|
822
|
+
path.updateArcLengths();
|
|
823
|
+
path.adjustCircular = this.adjustCircular;
|
|
824
|
+
return path;
|
|
825
|
+
};
|
|
826
|
+
/**
|
|
827
|
+
* Compare this and the passed Bézier path.
|
|
828
|
+
*
|
|
829
|
+
* @method equals
|
|
830
|
+
* @param {BezierPath} path - The pass to compare with.
|
|
831
|
+
* @instance
|
|
832
|
+
* @memberof BezierPath
|
|
833
|
+
* @return {boolean}
|
|
834
|
+
**/
|
|
835
|
+
BezierPath.prototype.equals = function (path) {
|
|
836
|
+
if (!path)
|
|
837
|
+
return false;
|
|
838
|
+
// Check if path contains the credentials
|
|
839
|
+
if (!path.bezierCurves)
|
|
840
|
+
return false;
|
|
841
|
+
if (typeof path.bezierCurves.length == "undefined")
|
|
842
|
+
return false;
|
|
843
|
+
if (path.bezierCurves.length != this.bezierCurves.length)
|
|
844
|
+
return false;
|
|
845
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
846
|
+
if (!this.bezierCurves[i].equals(path.bezierCurves[i]))
|
|
847
|
+
return false;
|
|
848
|
+
}
|
|
849
|
+
return true;
|
|
850
|
+
};
|
|
851
|
+
/**
|
|
852
|
+
* This function should invalidate any installed listeners and invalidate this object.
|
|
853
|
+
* After calling this function the object might not hold valid data any more and
|
|
854
|
+
* should not be used.
|
|
855
|
+
*
|
|
856
|
+
* @method destroy
|
|
857
|
+
* @instance
|
|
858
|
+
* @memberof BezierPath
|
|
859
|
+
*/
|
|
860
|
+
BezierPath.prototype.destroy = function () {
|
|
861
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
862
|
+
this.bezierCurves[i].destroy();
|
|
863
|
+
}
|
|
864
|
+
this.isDestroyed = true;
|
|
865
|
+
};
|
|
866
|
+
/**
|
|
867
|
+
* Convert this path to an array of path points that can be drawn by the default DrawLib
|
|
868
|
+
* implementations.
|
|
869
|
+
*
|
|
870
|
+
* @method toPathPoints
|
|
871
|
+
* @instance
|
|
872
|
+
* @memberof BezierPath
|
|
873
|
+
* @return {Array<XYCoords>}
|
|
874
|
+
*/
|
|
875
|
+
BezierPath.prototype.toPathPoints = function () {
|
|
876
|
+
if (this.bezierCurves.length === 0) {
|
|
877
|
+
return [];
|
|
878
|
+
}
|
|
879
|
+
if (this.bezierCurves.length === 1) {
|
|
880
|
+
return [
|
|
881
|
+
this.bezierCurves[0].startPoint,
|
|
882
|
+
this.bezierCurves[0].startControlPoint,
|
|
883
|
+
this.bezierCurves[0].endControlPoint,
|
|
884
|
+
this.bezierCurves[0].endPoint
|
|
885
|
+
];
|
|
886
|
+
}
|
|
887
|
+
var arr = [];
|
|
888
|
+
arr.push(this.bezierCurves[0].startPoint);
|
|
889
|
+
arr.push(this.bezierCurves[0].startControlPoint);
|
|
890
|
+
for (var i = 1; i < this.bezierCurves.length; i++) {
|
|
891
|
+
arr.push(this.bezierCurves[i - 1].endControlPoint);
|
|
892
|
+
arr.push(this.bezierCurves[i - 1].endPoint);
|
|
893
|
+
arr.push(this.bezierCurves[i].startPoint);
|
|
894
|
+
arr.push(this.bezierCurves[i].startControlPoint);
|
|
895
|
+
}
|
|
896
|
+
arr.push(this.bezierCurves[0].endControlPoint);
|
|
897
|
+
arr.push(this.bezierCurves[0].endPoint);
|
|
898
|
+
return arr;
|
|
899
|
+
};
|
|
900
|
+
/**
|
|
901
|
+
* Create a JSON string representation of this bézier curve.
|
|
902
|
+
*
|
|
903
|
+
* @method toJSON
|
|
904
|
+
* @param {boolean} prettyFormat - If true then the function will add line breaks.
|
|
905
|
+
* @instance
|
|
906
|
+
* @memberof BezierPath
|
|
907
|
+
* @return {string} The JSON string.
|
|
908
|
+
**/
|
|
909
|
+
BezierPath.prototype.toJSON = function (prettyFormat) {
|
|
910
|
+
var buffer = [];
|
|
911
|
+
buffer.push("["); // array begin
|
|
912
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
913
|
+
if (i > 0)
|
|
914
|
+
buffer.push(",");
|
|
915
|
+
if (prettyFormat)
|
|
916
|
+
buffer.push("\n\t");
|
|
917
|
+
else
|
|
918
|
+
buffer.push(" ");
|
|
919
|
+
buffer.push(this.bezierCurves[i].toJSON(prettyFormat));
|
|
920
|
+
}
|
|
921
|
+
if (this.bezierCurves.length != 0)
|
|
922
|
+
buffer.push(" ");
|
|
923
|
+
buffer.push("]"); // array end
|
|
924
|
+
return buffer.join(""); // Convert to string, with empty separator.
|
|
925
|
+
};
|
|
926
|
+
/**
|
|
927
|
+
* Parse a BezierPath from the given JSON string.
|
|
928
|
+
*
|
|
929
|
+
* @method fromJSON
|
|
930
|
+
* @param {string} jsonString - The string with the JSON data.
|
|
931
|
+
* @throw An error if the string is not JSON or does not contain a bezier path object.
|
|
932
|
+
* @static
|
|
933
|
+
* @memberof BezierPath
|
|
934
|
+
* @return {BezierPath} The parsed bezier path instance.
|
|
935
|
+
**/
|
|
936
|
+
BezierPath.fromJSON = function (jsonString) {
|
|
937
|
+
var obj = JSON.parse(jsonString);
|
|
938
|
+
return BezierPath.fromArray(obj);
|
|
939
|
+
};
|
|
940
|
+
/**
|
|
941
|
+
* Construct a new path with a single curve. Adding more curves is always possible.
|
|
942
|
+
*
|
|
943
|
+
* @method fromCurve
|
|
944
|
+
* @param {CubicBezierCurve} curve - The curve to construct a new path from.
|
|
945
|
+
* @static
|
|
946
|
+
* @memberof BezierPath
|
|
947
|
+
* @return {BezierPath} The constructed bezier path instance.
|
|
948
|
+
*/
|
|
949
|
+
BezierPath.fromCurve = function (curve) {
|
|
950
|
+
var path = new BezierPath(); // []);
|
|
951
|
+
path.addCurve(curve);
|
|
952
|
+
return path;
|
|
953
|
+
};
|
|
954
|
+
/**
|
|
955
|
+
* Create a BezierPath instance from the given array.
|
|
956
|
+
*
|
|
957
|
+
* @method fromArray
|
|
958
|
+
* @param {Vertex[][]} arr - A two-dimensional array containing the bezier path vertices.
|
|
959
|
+
* @throw An error if the array does not contain proper bezier path data.
|
|
960
|
+
* @static
|
|
961
|
+
* @memberof BezierPath
|
|
962
|
+
* @return {BezierPath} The bezier path instance retrieved from the array data.
|
|
963
|
+
**/
|
|
964
|
+
BezierPath.fromArray = function (obj) {
|
|
965
|
+
if (!Array.isArray(obj)) {
|
|
966
|
+
throw "[BezierPath.fromArray] Passed object must be an array.";
|
|
967
|
+
}
|
|
968
|
+
var arr = obj; // FORCE?
|
|
969
|
+
if (arr.length < 1) {
|
|
970
|
+
throw "[BezierPath.fromArray] Passed array must contain at least one bezier curve (has " + arr.length + ").";
|
|
971
|
+
}
|
|
972
|
+
// Create an empty bezier path
|
|
973
|
+
var bPath = new BezierPath(); // undefined);
|
|
974
|
+
var lastCurve = null;
|
|
975
|
+
for (var i = 0; i < arr.length; i++) {
|
|
976
|
+
// Convert object (or array?) to bezier curve
|
|
977
|
+
var bCurve;
|
|
978
|
+
if (CubicBezierCurve_1.CubicBezierCurve.isInstance(arr[i])) {
|
|
979
|
+
bCurve = arr[i].clone();
|
|
980
|
+
}
|
|
981
|
+
else if (0 in arr[i] && 1 in arr[i] && 2 in arr[i] && 3 in arr[i]) {
|
|
982
|
+
if (!arr[i][0] || !arr[i][1] || !arr[i][2] || !arr[i][3])
|
|
983
|
+
throw "Cannot convert path data to BezierPath instance. At least one element is undefined (index=" + i + "): " + arr[i];
|
|
984
|
+
bCurve = CubicBezierCurve_1.CubicBezierCurve.fromArray(arr[i]);
|
|
985
|
+
}
|
|
986
|
+
else {
|
|
987
|
+
bCurve = CubicBezierCurve_1.CubicBezierCurve.fromObject(arr[i]);
|
|
988
|
+
}
|
|
989
|
+
// Set curve start point?
|
|
990
|
+
// (avoid duplicate point instances!)
|
|
991
|
+
if (lastCurve)
|
|
992
|
+
bCurve.startPoint = lastCurve.endPoint;
|
|
993
|
+
// Add to path's internal list
|
|
994
|
+
bPath.bezierCurves.push(bCurve);
|
|
995
|
+
// bPath.totalArcLength += bCurve.getLength();
|
|
996
|
+
lastCurve = bCurve;
|
|
997
|
+
}
|
|
998
|
+
bPath.updateArcLengths();
|
|
999
|
+
// Bezier segments added. Done
|
|
1000
|
+
return bPath;
|
|
1001
|
+
};
|
|
1002
|
+
/**
|
|
1003
|
+
* This function converts the bezier path into a string containing
|
|
1004
|
+
* integer values only.
|
|
1005
|
+
* The points' float values are rounded to 1 digit after the comma.
|
|
1006
|
+
*
|
|
1007
|
+
* The returned string represents a JSON array (with leading '[' and
|
|
1008
|
+
* trailing ']', the separator is ',').
|
|
1009
|
+
*
|
|
1010
|
+
* @method toReducedListRepresentation
|
|
1011
|
+
* @param {number} digits - The number of digits to be used after the comma '.'.
|
|
1012
|
+
* @instance
|
|
1013
|
+
* @memberof BezierPath
|
|
1014
|
+
* @return {string} The reduced list representation of this path.
|
|
1015
|
+
**/
|
|
1016
|
+
BezierPath.prototype.toReducedListRepresentation = function (digits) {
|
|
1017
|
+
if (typeof digits == "undefined")
|
|
1018
|
+
digits = 1;
|
|
1019
|
+
var buffer = [];
|
|
1020
|
+
buffer.push("["); // array begin
|
|
1021
|
+
for (var i = 0; i < this.bezierCurves.length; i++) {
|
|
1022
|
+
var curve = this.bezierCurves[i];
|
|
1023
|
+
buffer.push(curve.getStartPoint().x.toFixed(digits));
|
|
1024
|
+
buffer.push(",");
|
|
1025
|
+
buffer.push(curve.getStartPoint().y.toFixed(digits));
|
|
1026
|
+
buffer.push(",");
|
|
1027
|
+
buffer.push(curve.getStartControlPoint().x.toFixed(digits));
|
|
1028
|
+
buffer.push(",");
|
|
1029
|
+
buffer.push(curve.getStartControlPoint().y.toFixed(digits));
|
|
1030
|
+
buffer.push(",");
|
|
1031
|
+
buffer.push(curve.getEndControlPoint().x.toFixed(digits));
|
|
1032
|
+
buffer.push(",");
|
|
1033
|
+
buffer.push(curve.getEndControlPoint().y.toFixed(digits));
|
|
1034
|
+
buffer.push(",");
|
|
1035
|
+
}
|
|
1036
|
+
if (this.bezierCurves.length != 0) {
|
|
1037
|
+
var curve = this.bezierCurves[this.bezierCurves.length - 1];
|
|
1038
|
+
buffer.push(curve.getEndPoint().x.toFixed(digits));
|
|
1039
|
+
buffer.push(",");
|
|
1040
|
+
buffer.push(curve.getEndPoint().y.toFixed(digits));
|
|
1041
|
+
}
|
|
1042
|
+
buffer.push("]"); // array end
|
|
1043
|
+
return buffer.join(""); // Convert to string, with empty separator.
|
|
1044
|
+
};
|
|
1045
|
+
/**
|
|
1046
|
+
* Parse a BezierPath instance from the reduced list representation.<br>
|
|
1047
|
+
* <br>
|
|
1048
|
+
* The passed string must represent a JSON array containing numbers only.
|
|
1049
|
+
*
|
|
1050
|
+
* @method fromReducedListRepresentation
|
|
1051
|
+
* @param {string} listJSON - The number of digits to be used after the floating point.
|
|
1052
|
+
* @throw An error if the string is malformed.
|
|
1053
|
+
* @instance
|
|
1054
|
+
* @memberof BezierPath
|
|
1055
|
+
* @return {BezierPath} The bezier path instance retrieved from the string.
|
|
1056
|
+
**/
|
|
1057
|
+
BezierPath.fromReducedListRepresentation = function (listJSON, adjustCircular) {
|
|
1058
|
+
// Parse the array
|
|
1059
|
+
var pointArray = JSON.parse(listJSON);
|
|
1060
|
+
if (!pointArray.length) {
|
|
1061
|
+
console.log("Cannot parse bezier path from non-array object nor from empty point list.");
|
|
1062
|
+
throw "Cannot parse bezier path from non-array object nor from empty point list.";
|
|
1063
|
+
}
|
|
1064
|
+
if (pointArray.length < 8) {
|
|
1065
|
+
console.log("Cannot build bezier path. The passed array must contain at least 8 elements (numbers).");
|
|
1066
|
+
throw "Cannot build bezier path. The passed array must contain at least 8 elements (numbers).";
|
|
1067
|
+
}
|
|
1068
|
+
return BezierPath.fromReducedList(pointArray, adjustCircular);
|
|
1069
|
+
};
|
|
1070
|
+
/**
|
|
1071
|
+
* Convert a reduced list representation (array of numeric coordinates) to a BezierPath instance.
|
|
1072
|
+
*
|
|
1073
|
+
* The array's length must be 6*n + 2:
|
|
1074
|
+
* - [sx, sy, scx, scy, ecx, ecy, ... , ex, ey ]
|
|
1075
|
+
* | | | |
|
|
1076
|
+
* +--- sequence of curves --------+ +-end-+
|
|
1077
|
+
*
|
|
1078
|
+
* @param {number[]} pointArray
|
|
1079
|
+
* @returns BezierPath
|
|
1080
|
+
*/
|
|
1081
|
+
BezierPath.fromReducedList = function (pointArray, adjustCircular) {
|
|
1082
|
+
// Convert to object
|
|
1083
|
+
var bezierPath = new BezierPath(); // null); // No points yet
|
|
1084
|
+
var startPoint = new Vertex_1.Vertex();
|
|
1085
|
+
var startControlPoint;
|
|
1086
|
+
var endControlPoint;
|
|
1087
|
+
var endPoint;
|
|
1088
|
+
var i = 0;
|
|
1089
|
+
do {
|
|
1090
|
+
if (i == 0) {
|
|
1091
|
+
// firstStartPoint =
|
|
1092
|
+
startPoint = new Vertex_1.Vertex(pointArray[i], pointArray[i + 1]);
|
|
1093
|
+
}
|
|
1094
|
+
startControlPoint = new Vertex_1.Vertex(pointArray[i + 2], pointArray[i + 3]);
|
|
1095
|
+
endControlPoint = new Vertex_1.Vertex(pointArray[i + 4], pointArray[i + 5]);
|
|
1096
|
+
// if (i + 8 >= pointArray.length) {
|
|
1097
|
+
// endPoint = firstStartPoint;
|
|
1098
|
+
// } else {
|
|
1099
|
+
endPoint = new Vertex_1.Vertex(pointArray[i + 6], pointArray[i + 7]);
|
|
1100
|
+
// }
|
|
1101
|
+
var bCurve = new CubicBezierCurve_1.CubicBezierCurve(startPoint, endPoint, startControlPoint, endControlPoint);
|
|
1102
|
+
bezierPath.bezierCurves.push(bCurve);
|
|
1103
|
+
startPoint = endPoint;
|
|
1104
|
+
i += 6;
|
|
1105
|
+
} while (i + 2 < pointArray.length);
|
|
1106
|
+
bezierPath.adjustCircular = adjustCircular !== null && adjustCircular !== void 0 ? adjustCircular : false;
|
|
1107
|
+
if (adjustCircular) {
|
|
1108
|
+
bezierPath.bezierCurves[bezierPath.bezierCurves.length - 1].endPoint = bezierPath.bezierCurves[0].startPoint;
|
|
1109
|
+
}
|
|
1110
|
+
bezierPath.updateArcLengths();
|
|
1111
|
+
return bezierPath;
|
|
1112
|
+
};
|
|
1113
|
+
// +---------------------------------------------------------------------------------
|
|
1114
|
+
// | These constants equal the values from CubicBezierCurve.
|
|
1115
|
+
// +-------------------------------
|
|
1116
|
+
/** @constant {number} */
|
|
1117
|
+
BezierPath.START_POINT = 0;
|
|
1118
|
+
/** @constant {number} */
|
|
1119
|
+
BezierPath.START_CONTROL_POINT = 1;
|
|
1120
|
+
/** @constant {number} */
|
|
1121
|
+
BezierPath.END_CONTROL_POINT = 2;
|
|
1122
|
+
/** @constant {number} */
|
|
1123
|
+
BezierPath.END_POINT = 3;
|
|
1124
|
+
return BezierPath;
|
|
1125
|
+
}());
|
|
1126
|
+
exports.BezierPath = BezierPath;
|
|
1127
|
+
//# sourceMappingURL=BezierPath.js.map
|