@openglobus/og 0.17.2 → 0.18.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/README.md +75 -46
- package/dist/@openglobus/og.esm.js +1 -20
- package/dist/@openglobus/og.esm.js.map +1 -1
- package/dist/@openglobus/og.umd.js +1 -20
- package/dist/@openglobus/og.umd.js.map +1 -1
- package/dist/@openglobus/res/fonts/Karla-Bold.json +5252 -0
- package/dist/@openglobus/res/fonts/Karla-Bold.ttf.cfg +920 -0
- package/dist/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/Karla-Light.json +5252 -0
- package/dist/@openglobus/res/fonts/Karla-Light.ttf.cfg +830 -0
- package/dist/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/Karla-Medium.json +5252 -0
- package/dist/@openglobus/res/fonts/Karla-Medium.ttf.cfg +1196 -0
- package/dist/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.json +3332 -0
- package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +1370 -0
- package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/Roboto-Regular.json +37147 -0
- package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +1340 -0
- package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
- package/dist/@openglobus/res/fonts/arial.json +4321 -0
- package/dist/@openglobus/res/fonts/arial.ttf.cfg +1570 -0
- package/dist/@openglobus/res/fonts/arial.ttf.png +0 -0
- package/dist/@openglobus/res/night-4326.png +0 -0
- package/dist/@openglobus/res/night.png +0 -0
- package/dist/@openglobus/res/spec.png +0 -0
- package/package.json +25 -23
- package/src/{og/Clock.js → Clock.ts} +100 -78
- package/src/Deferred.ts +17 -0
- package/src/Events.ts +200 -0
- package/src/{og/Extent.js → Extent.ts} +324 -352
- package/src/Globe.ts +363 -0
- package/src/{og/ImageCanvas.js → ImageCanvas.ts} +244 -236
- package/src/Lock.ts +41 -0
- package/src/{og/LonLat.js → LonLat.ts} +50 -47
- package/src/{og/Object3d.js → Object3d.ts} +89 -55
- package/src/Popup.ts +228 -0
- package/src/{og/QueueArray.js → QueueArray.ts} +76 -75
- package/src/{og/Rectangle.js → Rectangle.ts} +115 -111
- package/src/Stack.ts +58 -0
- package/src/{og/astro/astro.js → astro/astro.ts} +49 -51
- package/src/{og/astro/earth.js → astro/earth.ts} +8 -9
- package/src/{og/astro/jd.js → astro/jd.ts} +92 -111
- package/src/{og/astro/orbit.js → astro/orbit.ts} +35 -37
- package/src/{og/astro/rotation.js → astro/rotation.ts} +4 -6
- package/src/{og/bv/Box.js → bv/Box.ts} +21 -17
- package/src/{og/bv/Sphere.js → bv/Sphere.ts} +21 -19
- package/src/bv/index.ts +4 -0
- package/src/{og/camera/Camera.js → camera/Camera.ts} +254 -197
- package/src/{og/camera/Frustum.js → camera/Frustum.ts} +137 -111
- package/src/{og/camera/PlanetCamera.js → camera/PlanetCamera.ts} +246 -182
- package/src/camera/index.ts +4 -0
- package/src/{og/cons.js → cons.ts} +14 -18
- package/src/{og/control/Atmosphere.js → control/Atmosphere.ts} +50 -50
- package/src/{og/control/CompassButton.js → control/CompassButton.ts} +27 -30
- package/src/{og/control/Control.js → control/Control.ts} +76 -70
- package/src/{og/control/DebugInfo.js → control/DebugInfo.ts} +130 -62
- package/src/{og/control/DrawingSwitcher.js → control/DrawingSwitcher.ts} +16 -22
- package/src/control/EarthCoordinates.ts +222 -0
- package/src/control/EarthNavigation.ts +293 -0
- package/src/{og/control/GeoImageDragControl.js → control/GeoImageDragControl.ts} +37 -29
- package/src/control/KeyboardNavigation.ts +168 -0
- package/src/{og/control/LayerAnimation.js → control/LayerAnimation.ts} +74 -90
- package/src/control/LayerSwitcher.ts +76 -0
- package/src/{og/control/Lighting.js → control/Lighting.ts} +158 -120
- package/src/control/MouseNavigation.ts +468 -0
- package/src/control/MouseWheelZoomControl.ts +269 -0
- package/src/{og/control/RulerSwitcher.js → control/RulerSwitcher.ts} +18 -20
- package/src/control/ScaleControl.ts +131 -0
- package/src/control/SegmentBoundVisualization.ts +50 -0
- package/src/control/ShowFps.ts +28 -0
- package/src/control/SimpleNavigation.ts +118 -0
- package/src/{og/control/SimpleSkyBackground.js → control/SimpleSkyBackground.ts} +36 -38
- package/src/{og/control/Sun.js → control/Sun.ts} +56 -64
- package/src/control/ToggleWireframe.ts +35 -0
- package/src/control/TouchNavigation.ts +368 -0
- package/src/control/ZoomControl.ts +111 -0
- package/src/control/drawing/DrawingControl.ts +45 -0
- package/src/{og/control/drawing/LineStringDrawingScene.js → control/drawing/LineStringDrawingScene.ts} +28 -35
- package/src/{og/control/drawing/PolygonDrawingScene.js → control/drawing/PolygonDrawingScene.ts} +148 -201
- package/src/{og/control/elevationProfile/ElevationProfile.js → control/elevationProfile/ElevationProfile.ts} +70 -36
- package/src/control/heightRuler/HeightRuler.ts +16 -0
- package/src/{og/control/heightRuler/HeightRulerScene.js → control/heightRuler/HeightRulerScene.ts} +92 -87
- package/src/{og/control/heightRuler/HeightRulerSwitcher.js → control/heightRuler/HeightRulerSwitcher.ts} +3 -3
- package/src/control/index.ts +45 -0
- package/src/control/ruler/Ruler.ts +35 -0
- package/src/{og/control/ruler/RulerScene.js → control/ruler/RulerScene.ts} +163 -121
- package/src/{og/control/selection/Selection.js → control/selection/Selection.ts} +23 -21
- package/src/{og/control/selection/SelectionScene.js → control/selection/SelectionScene.ts} +64 -50
- package/src/{og/control/timeline/TimelineControl.js → control/timeline/TimelineControl.ts} +37 -28
- package/src/{og/control/timeline/TimelineModel.js → control/timeline/TimelineModel.ts} +50 -35
- package/src/{og/control/timeline/TimelineView.js → control/timeline/TimelineView.ts} +162 -113
- package/src/{og/control/timeline/timelineUtils.js → control/timeline/timelineUtils.ts} +11 -10
- package/src/{og/control → control}/visibleExtent/Segment.js +5 -5
- package/src/{og/control → control}/visibleExtent/VisibleExtent.js +8 -15
- package/src/{og/control/visibleExtent/drawnode.js → control/visibleExtent/drawnode.ts} +1 -3
- package/src/{og/ellipsoid/Ellipsoid.js → ellipsoid/Ellipsoid.ts} +113 -59
- package/src/ellipsoid/index.ts +4 -0
- package/src/{og/ellipsoid/wgs84.js → ellipsoid/wgs84.ts} +1 -3
- package/src/{og/entity/BaseBillboard.js → entity/BaseBillboard.ts} +128 -102
- package/src/entity/BaseBillboardHandler.ts +772 -0
- package/src/{og/entity/Billboard.js → entity/Billboard.ts} +77 -47
- package/src/entity/BillboardHandler.ts +135 -0
- package/src/{og/entity/Entity.js → entity/Entity.ts} +285 -226
- package/src/{og/entity/EntityCollection.js → entity/EntityCollection.ts} +340 -247
- package/src/{og/entity/GeoObject.js → entity/GeoObject.ts} +122 -67
- package/src/{og/entity/GeoObjectHandler.js → entity/GeoObjectHandler.ts} +273 -198
- package/src/entity/Geometry.ts +486 -0
- package/src/{og/entity/GeometryHandler.js → entity/GeometryHandler.ts} +383 -541
- package/src/{og/entity/Label.js → entity/Label.ts} +131 -83
- package/src/{og/entity/LabelHandler.js → entity/LabelHandler.ts} +289 -255
- package/src/{og/entity/LabelWorker.js → entity/LabelWorker.ts} +26 -36
- package/src/{og/entity/PointCloud.js → entity/PointCloud.ts} +200 -164
- package/src/entity/PointCloudHandler.ts +125 -0
- package/src/{og/entity/Polyline.js → entity/Polyline.ts} +517 -539
- package/src/{og/entity/PolylineHandler.js → entity/PolylineHandler.ts} +29 -31
- package/src/{og/entity/Ray.js → entity/Ray.ts} +89 -60
- package/src/{og/entity/RayHandler.js → entity/RayHandler.ts} +201 -306
- package/src/{og/entity/Strip.js → entity/Strip.ts} +143 -100
- package/src/{og/entity/StripHandler.js → entity/StripHandler.ts} +76 -72
- package/src/entity/index.ts +12 -0
- package/src/index.ts +173 -0
- package/src/input/KeyboardHandler.ts +196 -0
- package/src/{og/input/MouseHandler.js → input/MouseHandler.ts} +46 -35
- package/src/input/TouchHandler.ts +54 -0
- package/src/{og/input/input.js → input/input.ts} +1 -3
- package/src/{og/layer/BaseGeoImage.js → layer/BaseGeoImage.ts} +174 -107
- package/src/{og/layer/CanvasTiles.js → layer/CanvasTiles.ts} +139 -105
- package/src/{og/layer/GeoImage.js → layer/GeoImage.ts} +62 -52
- package/src/layer/GeoTexture2d.ts +56 -0
- package/src/{og/layer/GeoVideo.js → layer/GeoVideo.ts} +53 -53
- package/src/{og/layer/KML.js → layer/KML.ts} +63 -74
- package/src/{og/layer/Layer.js → layer/Layer.ts} +399 -223
- package/src/{og/layer/Material.js → layer/Material.ts} +40 -35
- package/src/{og/layer/Vector.js → layer/Vector.ts} +319 -267
- package/src/{og/layer/WMS.js → layer/WMS.ts} +76 -64
- package/src/{og/layer/XYZ.js → layer/XYZ.ts} +123 -98
- package/src/layer/index.ts +12 -0
- package/src/{og/light/LightSource.js → light/LightSource.ts} +132 -93
- package/src/{og/math/Line2.js → math/Line2.ts} +11 -8
- package/src/{og/math/Line3.js → math/Line3.ts} +49 -27
- package/src/{og/math/Mat3.js → math/Mat3.ts} +43 -27
- package/src/{og/math/Mat4.js → math/Mat4.ts} +110 -77
- package/src/{og/math/Plane.js → math/Plane.ts} +28 -23
- package/src/{og/math/Quat.js → math/Quat.ts} +238 -222
- package/src/{og/math/Ray.js → math/Ray.ts} +59 -63
- package/src/{og/math/Vec2.js → math/Vec2.ts} +85 -76
- package/src/{og/math/Vec3.js → math/Vec3.ts} +141 -140
- package/src/{og/math/Vec4.js → math/Vec4.ts} +64 -53
- package/src/{og/math/coder.js → math/coder.ts} +30 -27
- package/src/math/index.ts +26 -0
- package/src/{og/math.js → math.ts} +46 -49
- package/src/{og/mercator.js → mercator.ts} +143 -149
- package/src/{og/proj/EPSG3857.js → proj/EPSG3857.ts} +1 -3
- package/src/{og/proj/EPSG4326.js → proj/EPSG4326.ts} +11 -13
- package/src/{og/proj/Proj.js → proj/Proj.ts} +27 -23
- package/src/{og/quadTree/EPSG4326QuadTreeStrategy.js → quadTree/EPSG4326QuadTreeStrategy.ts} +10 -13
- package/src/{og/quadTree/EarthQuadTreeStrategy.js → quadTree/EarthQuadTreeStrategy.ts} +11 -13
- package/src/quadTree/EntityCollectionNode.ts +395 -0
- package/src/{og/quadTree/MarsQuadTreeStrategy.js → quadTree/MarsQuadTreeStrategy.ts} +10 -13
- package/src/{og/quadTree/Node.js → quadTree/Node.ts} +283 -191
- package/src/{og/quadTree/QuadTreeStrategy.js → quadTree/QuadTreeStrategy.ts} +35 -29
- package/src/quadTree/Wgs84QuadTreeStrategy.ts +22 -0
- package/src/quadTree/index.ts +14 -0
- package/src/{og/quadTree/quadTree.js → quadTree/quadTree.ts} +75 -77
- package/src/{og/renderer/Renderer.js → renderer/Renderer.ts} +454 -298
- package/src/{og/renderer/RendererEvents.js → renderer/RendererEvents.ts} +347 -256
- package/src/{og/scene/Axes.js → scene/Axes.ts} +26 -22
- package/src/{og/scene/BaseNode.js → scene/BaseNode.ts} +53 -47
- package/src/{og/scene/Planet.js → scene/Planet.ts} +776 -592
- package/src/{og/scene/RenderNode.js → scene/RenderNode.ts} +105 -91
- package/src/{og/scene/SkyBox.js → scene/SkyBox.ts} +29 -25
- package/src/scene/index.ts +6 -0
- package/src/{og/segment/Segment.js → segment/Segment.ts} +497 -371
- package/src/{og/segment/SegmentLonLat.js → segment/SegmentLonLat.ts} +81 -87
- package/src/{og/segment/SegmentLonLatWgs84.js → segment/SegmentLonLatWgs84.ts} +9 -16
- package/src/{og/segment/Slice.js → segment/Slice.ts} +15 -9
- package/src/{og/segment/segmentHelper.js → segment/segmentHelper.ts} +57 -49
- package/src/{og/shaders/atmos.js → shaders/atmos.ts} +4 -6
- package/src/{og/shaders/billboard.js → shaders/billboard.ts} +3 -5
- package/src/{og/shaders/bloom.js → shaders/bloom.ts} +2 -4
- package/src/{og/shaders/blur.js → shaders/blur.ts} +4 -7
- package/src/{og/shaders/depth.js → shaders/depth.ts} +1 -3
- package/src/{og/shaders/drawnode.js → shaders/drawnode.ts} +19 -21
- package/src/{og/shaders/geoObject.js → shaders/geoObject.ts} +17 -19
- package/src/{og/shaders/label.js → shaders/label.ts} +4 -6
- package/src/{og/shaders/lumFilter.js → shaders/lumFilter.ts} +2 -4
- package/src/{og/shaders/pickingMask.js → shaders/pickingMask.ts} +2 -4
- package/src/{og/shaders/pointCloud.js → shaders/pointCloud.ts} +7 -10
- package/src/{og/shaders/polyline.js → shaders/polyline.ts} +3 -200
- package/src/{og/shaders/ray.js → shaders/ray.ts} +2 -4
- package/src/{og/shaders/screenFrame.js → shaders/screenFrame.ts} +2 -4
- package/src/{og/shaders/skybox.js → shaders/skybox.ts} +7 -9
- package/src/{og/shaders/toneMapping.js → shaders/toneMapping.ts} +2 -4
- package/src/{og/shaders/utils.js → shaders/utils.ts} +0 -2
- package/src/{og/terrain/BilTerrain.js → terrain/BilTerrain.ts} +38 -32
- package/src/terrain/EmptyTerrain.ts +230 -0
- package/src/{og/terrain/Geoid.js → terrain/Geoid.ts} +67 -41
- package/src/{og/terrain/GlobusTerrain.js → terrain/GlobusTerrain.ts} +159 -153
- package/src/{og/terrain/MapboxTerrain.js → terrain/MapboxTerrain.ts} +58 -61
- package/src/terrain/index.ts +6 -0
- package/src/ui/Button.ts +121 -0
- package/src/ui/ButtonGroup.ts +63 -0
- package/src/ui/Dialog.ts +244 -0
- package/src/ui/Slider.ts +188 -0
- package/src/ui/ToggleButton.ts +68 -0
- package/src/{og/ui/View.js → ui/View.ts} +66 -59
- package/src/utils/BaseWorker.ts +60 -0
- package/src/utils/FontAtlas.ts +356 -0
- package/src/{og/utils/GeoImageCreator.js → utils/GeoImageCreator.ts} +45 -29
- package/src/{og/utils/ImagesCacheManager.js → utils/ImagesCacheManager.ts} +85 -70
- package/src/utils/Loader.ts +247 -0
- package/src/{og/utils/NormalMapCreator.js → utils/NormalMapCreator.ts} +114 -77
- package/src/{og/utils/PlainSegmentWorker.js → utils/PlainSegmentWorker.ts} +41 -24
- package/src/{og/utils/TerrainWorker.js → utils/TerrainWorker.ts} +51 -36
- package/src/utils/TextureAtlas.ts +322 -0
- package/src/{og/utils/VectorTileCreator.js → utils/VectorTileCreator.ts} +67 -52
- package/src/{og/utils/colorTable.js → utils/colorTable.ts} +142 -144
- package/src/{og/utils/earcut.js → utils/earcut.ts} +664 -661
- package/src/{og/utils/objParser.js → utils/objParser.ts} +66 -37
- package/src/{og/utils/shared.js → utils/shared.ts} +267 -206
- package/src/utils/units.ts +78 -0
- package/src/webgl/BaseFramebuffer.ts +125 -0
- package/src/webgl/Framebuffer.ts +206 -0
- package/src/webgl/Handler.ts +1414 -0
- package/src/webgl/Multisample.ts +153 -0
- package/src/webgl/Program.ts +451 -0
- package/src/{og/webgl/ProgramController.js → webgl/ProgramController.ts} +44 -43
- package/src/webgl/index.ts +13 -0
- package/src/{og/webgl/types.js → webgl/types.ts} +29 -31
- package/src/webgl/variableHandlers.ts +114 -0
- package/src/og/Deferred.js +0 -11
- package/src/og/Events.js +0 -185
- package/src/og/Globe.js +0 -342
- package/src/og/Lock.js +0 -44
- package/src/og/Popup.js +0 -187
- package/src/og/Stack.js +0 -49
- package/src/og/bv/index.js +0 -4
- package/src/og/camera/index.js +0 -4
- package/src/og/control/EarthCoordinates.js +0 -214
- package/src/og/control/EarthNavigation.js +0 -258
- package/src/og/control/KeyboardNavigation.js +0 -172
- package/src/og/control/LayerSwitcher.js +0 -424
- package/src/og/control/MouseNavigation.js +0 -436
- package/src/og/control/MouseWheelZoomControl.js +0 -253
- package/src/og/control/ScaleControl.js +0 -119
- package/src/og/control/SegmentBoundVisualization.js +0 -54
- package/src/og/control/ShowFps.js +0 -40
- package/src/og/control/SimpleNavigation.js +0 -123
- package/src/og/control/ToggleWireframe.js +0 -35
- package/src/og/control/TouchNavigation.js +0 -350
- package/src/og/control/ZoomControl.js +0 -115
- package/src/og/control/drawing/DrawingControl.js +0 -51
- package/src/og/control/heightRuler/HeightRuler.js +0 -12
- package/src/og/control/index.js +0 -56
- package/src/og/control/ruler/Ruler.js +0 -39
- package/src/og/ellipsoid/index.js +0 -4
- package/src/og/entity/BillboardHandler.js +0 -883
- package/src/og/entity/Geometry.js +0 -320
- package/src/og/entity/PointCloudHandler.js +0 -122
- package/src/og/entity/index.js +0 -9
- package/src/og/index.js +0 -112
- package/src/og/input/KeyboardHandler.js +0 -195
- package/src/og/input/TouchHandler.js +0 -59
- package/src/og/layer/GeoTexture2d.js +0 -50
- package/src/og/layer/index.js +0 -11
- package/src/og/math/index.js +0 -23
- package/src/og/quadTree/EntityCollectionNode.js +0 -391
- package/src/og/quadTree/Wgs84QuadTreeStrategy.js +0 -27
- package/src/og/quadTree/index.js +0 -14
- package/src/og/res/images.js +0 -8
- package/src/og/scene/index.js +0 -5
- package/src/og/terrain/EmptyTerrain.js +0 -174
- package/src/og/terrain/index.js +0 -6
- package/src/og/ui/Button.js +0 -107
- package/src/og/ui/ButtonGroup.js +0 -57
- package/src/og/ui/Dialog.js +0 -239
- package/src/og/ui/Slider.js +0 -170
- package/src/og/ui/ToggleButton.js +0 -51
- package/src/og/ui/UIhelpers.js +0 -155
- package/src/og/utils/BaseWorker.js +0 -46
- package/src/og/utils/FontAtlas.js +0 -218
- package/src/og/utils/Loader.js +0 -188
- package/src/og/utils/TextureAtlas.js +0 -291
- package/src/og/utils/functionComposition.js +0 -13
- package/src/og/utils/units.js +0 -78
- package/src/og/webgl/Framebuffer.js +0 -311
- package/src/og/webgl/Handler.js +0 -1170
- package/src/og/webgl/Multisample.js +0 -275
- package/src/og/webgl/Program.js +0 -407
- package/src/og/webgl/callbacks.js +0 -98
- package/src/og/webgl/index.js +0 -13
- package/src/og.jsdoc +0 -3
- package/types/Clock.d.ts +0 -99
- package/types/Deferred.d.ts +0 -6
- package/types/Events.d.ts +0 -78
- package/types/Extent.d.ts +0 -166
- package/types/Globe.d.ts +0 -108
- package/types/ImageCanvas.d.ts +0 -128
- package/types/Lock.d.ts +0 -12
- package/types/LonLat.d.ts +0 -127
- package/types/Object3d.d.ts +0 -35
- package/types/Popup.d.ts +0 -29
- package/types/QueueArray.d.ts +0 -19
- package/types/Rectangle.d.ts +0 -80
- package/types/Stack.d.ts +0 -19
- package/types/arial.d.ts +0 -49
- package/types/astro/astro.d.ts +0 -38
- package/types/astro/earth.d.ts +0 -7
- package/types/astro/jd.d.ts +0 -254
- package/types/bv/Box.d.ts +0 -30
- package/types/bv/Sphere.d.ts +0 -38
- package/types/bv/index.d.ts +0 -3
- package/types/camera/Camera.d.ts +0 -314
- package/types/camera/Frustum.d.ts +0 -133
- package/types/camera/PlanetCamera.d.ts +0 -219
- package/types/camera/index.d.ts +0 -3
- package/types/cons.d.ts +0 -40
- package/types/control/Atmosphere.d.ts +0 -15
- package/types/control/CompassButton.d.ts +0 -16
- package/types/control/Control.d.ts +0 -104
- package/types/control/DebugInfo.d.ts +0 -19
- package/types/control/DrawingSwitcher.d.ts +0 -13
- package/types/control/EarthCoordinates.d.ts +0 -44
- package/types/control/EarthNavigation.d.ts +0 -43
- package/types/control/GeoImageDragControl.d.ts +0 -14
- package/types/control/KeyboardNavigation.d.ts +0 -24
- package/types/control/LayerAnimation.d.ts +0 -73
- package/types/control/LayerSwitcher.d.ts +0 -64
- package/types/control/Lighting.d.ts +0 -41
- package/types/control/MouseNavigation.d.ts +0 -49
- package/types/control/MouseWheelZoomControl.d.ts +0 -46
- package/types/control/ScaleControl.d.ts +0 -23
- package/types/control/ShowFps.d.ts +0 -11
- package/types/control/SimpleNavigation.d.ts +0 -26
- package/types/control/SimpleSkyBackground.d.ts +0 -15
- package/types/control/Sun.d.ts +0 -53
- package/types/control/ToggleWireframe.d.ts +0 -12
- package/types/control/TouchNavigation.d.ts +0 -54
- package/types/control/ZoomControl.d.ts +0 -26
- package/types/control/drawing/DrawingControl.d.ts +0 -14
- package/types/control/drawing/LineStringDrawingScene.d.ts +0 -5
- package/types/control/drawing/PolygonDrawingScene.d.ts +0 -99
- package/types/control/heightRuler/HeightRuler.d.ts +0 -6
- package/types/control/heightRuler/HeightRulerScene.d.ts +0 -23
- package/types/control/index.d.ts +0 -27
- package/types/control/ruler/Ruler.d.ts +0 -13
- package/types/control/ruler/RulerScene.d.ts +0 -51
- package/types/control/selection/Selection.d.ts +0 -49
- package/types/control/selection/SelectionScene.d.ts +0 -32
- package/types/control/timeline/TimelineControl.d.ts +0 -10
- package/types/control/timeline/TimelineModel.d.ts +0 -33
- package/types/control/timeline/TimelineView.d.ts +0 -57
- package/types/control/timeline/timelineUtils.d.ts +0 -9
- package/types/ellipsoid/Ellipsoid.d.ts +0 -170
- package/types/ellipsoid/index.d.ts +0 -3
- package/types/ellipsoid/wgs84.d.ts +0 -6
- package/types/entity/BaseBillboard.d.ts +0 -215
- package/types/entity/Billboard.d.ts +0 -94
- package/types/entity/BillboardHandler.d.ts +0 -75
- package/types/entity/Entity.d.ts +0 -340
- package/types/entity/EntityCollection.d.ts +0 -303
- package/types/entity/GeoObject.d.ts +0 -117
- package/types/entity/GeoObjectHandler.d.ts +0 -41
- package/types/entity/Geometry.d.ts +0 -79
- package/types/entity/GeometryHandler.d.ts +0 -76
- package/types/entity/Label.d.ts +0 -190
- package/types/entity/LabelHandler.d.ts +0 -31
- package/types/entity/LabelWorker.d.ts +0 -9
- package/types/entity/PointCloud.d.ts +0 -174
- package/types/entity/PointCloudHandler.d.ts +0 -38
- package/types/entity/Polyline.d.ts +0 -307
- package/types/entity/PolylineHandler.d.ts +0 -18
- package/types/entity/Ray.d.ts +0 -122
- package/types/entity/RayHandler.d.ts +0 -63
- package/types/entity/Strip.d.ts +0 -119
- package/types/entity/StripHandler.d.ts +0 -38
- package/types/entity/index.d.ts +0 -8
- package/types/index.d.ts +0 -53
- package/types/input/KeyboardHandler.d.ts +0 -17
- package/types/input/MouseHandler.d.ts +0 -5
- package/types/input/TouchHandler.d.ts +0 -5
- package/types/input/input.d.ts +0 -42
- package/types/layer/BaseGeoImage.d.ts +0 -116
- package/types/layer/CanvasTiles.d.ts +0 -73
- package/types/layer/GeoImage.d.ts +0 -51
- package/types/layer/GeoTexture2d.d.ts +0 -7
- package/types/layer/GeoVideo.d.ts +0 -47
- package/types/layer/KML.d.ts +0 -93
- package/types/layer/Layer.d.ts +0 -320
- package/types/layer/Material.d.ts +0 -45
- package/types/layer/Vector.d.ts +0 -211
- package/types/layer/WMS.d.ts +0 -66
- package/types/layer/XYZ.d.ts +0 -122
- package/types/layer/index.d.ts +0 -10
- package/types/light/LightSource.d.ts +0 -178
- package/types/math/Line2.d.ts +0 -11
- package/types/math/Line3.d.ts +0 -10
- package/types/math/Mat3.d.ts +0 -65
- package/types/math/Mat4.d.ts +0 -176
- package/types/math/Plane.d.ts +0 -18
- package/types/math/Quat.d.ts +0 -379
- package/types/math/Ray.d.ts +0 -82
- package/types/math/Vec2.d.ts +0 -309
- package/types/math/Vec3.d.ts +0 -472
- package/types/math/Vec4.d.ts +0 -161
- package/types/math/coder.d.ts +0 -43
- package/types/math/index.d.ts +0 -11
- package/types/math.d.ts +0 -268
- package/types/mercator.d.ts +0 -92
- package/types/proj/EPSG3857.d.ts +0 -6
- package/types/proj/EPSG4326.d.ts +0 -6
- package/types/proj/Proj.d.ts +0 -42
- package/types/quadTree/EPSG4326QuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/EarthQuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/EntityCollectionNode.d.ts +0 -41
- package/types/quadTree/MarsQuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/Node.d.ts +0 -58
- package/types/quadTree/QuadTreeStrategy.d.ts +0 -21
- package/types/quadTree/Wgs84QuadTreeStrategy.d.ts +0 -3
- package/types/quadTree/index.d.ts +0 -12
- package/types/quadTree/quadTree.d.ts +0 -40
- package/types/renderer/Renderer.d.ts +0 -291
- package/types/renderer/RendererEvents.d.ts +0 -241
- package/types/res/images.d.ts +0 -2
- package/types/scene/Axes.d.ts +0 -10
- package/types/scene/BaseNode.d.ts +0 -60
- package/types/scene/Planet.d.ts +0 -594
- package/types/scene/RenderNode.d.ts +0 -152
- package/types/scene/SkyBox.d.ts +0 -9
- package/types/scene/index.d.ts +0 -4
- package/types/segment/Segment.d.ts +0 -273
- package/types/segment/SegmentLonLat.d.ts +0 -22
- package/types/segment/SegmentLonLatWgs84.d.ts +0 -4
- package/types/segment/Slice.d.ts +0 -10
- package/types/segment/segmentHelper.d.ts +0 -13
- package/types/shaders/atmos.d.ts +0 -4
- package/types/shaders/billboard.d.ts +0 -3
- package/types/shaders/depth.d.ts +0 -2
- package/types/shaders/drawnode.d.ts +0 -8
- package/types/shaders/geoObject.d.ts +0 -3
- package/types/shaders/label.d.ts +0 -4
- package/types/shaders/pickingMask.d.ts +0 -2
- package/types/shaders/pointCloud.d.ts +0 -2
- package/types/shaders/polyline.d.ts +0 -3
- package/types/shaders/ray.d.ts +0 -2
- package/types/shaders/screenFrame.d.ts +0 -2
- package/types/shaders/skybox.d.ts +0 -2
- package/types/shaders/toneMapping.d.ts +0 -2
- package/types/shaders/utils.d.ts +0 -1
- package/types/terrain/BilTerrain.d.ts +0 -14
- package/types/terrain/EmptyTerrain.d.ts +0 -87
- package/types/terrain/Geoid.d.ts +0 -17
- package/types/terrain/GlobusTerrain.d.ts +0 -122
- package/types/terrain/MapboxTerrain.d.ts +0 -14
- package/types/terrain/index.d.ts +0 -5
- package/types/ui/Button.d.ts +0 -21
- package/types/ui/ButtonGroup.d.ts +0 -12
- package/types/ui/Dialog.d.ts +0 -41
- package/types/ui/Slider.d.ts +0 -33
- package/types/ui/ToggleButton.d.ts +0 -10
- package/types/ui/UIhelpers.d.ts +0 -13
- package/types/ui/View.d.ts +0 -33
- package/types/ui/icons.d.ts +0 -1
- package/types/utils/BaseWorker.d.ts +0 -14
- package/types/utils/FontAtlas.d.ts +0 -16
- package/types/utils/GeoImageCreator.d.ts +0 -30
- package/types/utils/ImagesCacheManager.d.ts +0 -10
- package/types/utils/Loader.d.ts +0 -31
- package/types/utils/NormalMapCreator.d.ts +0 -39
- package/types/utils/PlainSegmentWorker.d.ts +0 -8
- package/types/utils/TerrainWorker.d.ts +0 -7
- package/types/utils/TextureAtlas.d.ts +0 -113
- package/types/utils/VectorTileCreator.d.ts +0 -14
- package/types/utils/colorTable.d.ts +0 -143
- package/types/utils/earcut.d.ts +0 -6
- package/types/utils/functionComposition.d.ts +0 -5
- package/types/utils/objParser.d.ts +0 -8
- package/types/utils/shared.d.ts +0 -241
- package/types/utils/units.d.ts +0 -20
- package/types/webgl/Framebuffer.d.ts +0 -134
- package/types/webgl/Handler.d.ts +0 -403
- package/types/webgl/Multisample.d.ts +0 -91
- package/types/webgl/Program.d.ts +0 -163
- package/types/webgl/ProgramController.d.ts +0 -89
- package/types/webgl/callbacks.d.ts +0 -1
- package/types/webgl/index.d.ts +0 -6
- package/types/webgl/types.d.ts +0 -2
- /package/{src/og → dist/@openglobus/res/fonts}/arial.js +0 -0
- /package/src/{og/ui/icons.js → ui/icons.ts} +0 -0
|
@@ -2,20 +2,19 @@
|
|
|
2
2
|
* @module og/utils/shared
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export function getDefault(param, def) {
|
|
5
|
+
import {Extent} from "../Extent";
|
|
6
|
+
import {LonLat} from "../LonLat";
|
|
7
|
+
import {Vec2} from "../math/Vec2";
|
|
8
|
+
import {NumberArray2} from "../math/Vec2";
|
|
9
|
+
import {NumberArray3, Vec3} from "../math/Vec3";
|
|
10
|
+
import {NumberArray4, Vec4} from "../math/Vec4";
|
|
11
|
+
import {colorTable} from "./colorTable";
|
|
12
|
+
|
|
13
|
+
export function getDefault(param?: any, def?: any): boolean {
|
|
15
14
|
return param != undefined ? param : def;
|
|
16
15
|
}
|
|
17
16
|
|
|
18
|
-
export function isEmpty(v) {
|
|
17
|
+
export function isEmpty(v: any): boolean {
|
|
19
18
|
return v == null;
|
|
20
19
|
}
|
|
21
20
|
|
|
@@ -25,25 +24,25 @@ export function isEmpty(v) {
|
|
|
25
24
|
* @param {Object} obj - Object pointer.
|
|
26
25
|
* @returns {boolean} Returns true if object is undefined.
|
|
27
26
|
*/
|
|
28
|
-
export function isUndef(obj) {
|
|
27
|
+
export function isUndef(obj?: any): boolean {
|
|
29
28
|
return obj === void 0;
|
|
30
29
|
}
|
|
31
30
|
|
|
32
|
-
export function isUndefExt(obj, defVal) {
|
|
31
|
+
export function isUndefExt(obj: any, defVal: any): any {
|
|
33
32
|
return isUndef(obj) ? defVal : obj;
|
|
34
33
|
}
|
|
35
34
|
|
|
36
|
-
let _stampCounter = 0;
|
|
35
|
+
let _stampCounter: number = 0;
|
|
37
36
|
|
|
38
|
-
export function stamp(obj) {
|
|
39
|
-
|
|
37
|
+
export function stamp(obj: any): number {
|
|
38
|
+
let stamp = obj._openglobus_id;
|
|
40
39
|
if (!stamp) {
|
|
41
40
|
stamp = obj._openglobus_id = ++_stampCounter;
|
|
42
41
|
}
|
|
43
42
|
return stamp;
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
export function isString(s) {
|
|
45
|
+
export function isString(s: any): boolean {
|
|
47
46
|
return typeof s === "string" || s instanceof String;
|
|
48
47
|
}
|
|
49
48
|
|
|
@@ -51,31 +50,35 @@ export function isString(s) {
|
|
|
51
50
|
* Convert html color string to the RGBA number vector.
|
|
52
51
|
* @param {string} htmlColor - HTML string("#C6C6C6" or "#EF5" or "rgb(8,8,8)" or "rgba(8,8,8)") color.
|
|
53
52
|
* @param {number} [opacity] - Opacity for the output vector.
|
|
54
|
-
* @returns {
|
|
53
|
+
* @returns {Vec4} -
|
|
55
54
|
*/
|
|
56
|
-
export function htmlColorToRgba(htmlColor, opacity) {
|
|
57
|
-
|
|
55
|
+
export function htmlColorToRgba(htmlColor: string, opacity?: number): Vec4 {
|
|
56
|
+
let hColor: any | undefined = colorTable[htmlColor];
|
|
58
57
|
if (hColor) {
|
|
59
58
|
htmlColor = hColor;
|
|
60
59
|
}
|
|
61
60
|
|
|
62
61
|
if (htmlColor[0] === "#") {
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
let shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
|
|
63
|
+
let hex = htmlColor.replace(shorthandRegex, function (m, r, g, b) {
|
|
65
64
|
return r + r + g + g + b + b;
|
|
66
65
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
66
|
+
let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
67
|
+
if (result) {
|
|
68
|
+
return new Vec4(
|
|
69
|
+
parseInt(result[1], 16) / 255,
|
|
70
|
+
parseInt(result[2], 16) / 255,
|
|
71
|
+
parseInt(result[3], 16) / 255,
|
|
72
|
+
isEmpty(opacity) ? 1.0 : opacity
|
|
73
|
+
);
|
|
74
|
+
} else {
|
|
75
|
+
return new Vec4();
|
|
76
|
+
}
|
|
74
77
|
} else {
|
|
75
78
|
if (isEmpty(opacity)) {
|
|
76
79
|
opacity = 1.0;
|
|
77
80
|
}
|
|
78
|
-
|
|
81
|
+
let m = htmlColor.split(",");
|
|
79
82
|
return new Vec4(
|
|
80
83
|
parseInt(m[0].split("(")[1]) / 255,
|
|
81
84
|
parseInt(m[1]) / 255,
|
|
@@ -85,7 +88,7 @@ export function htmlColorToRgba(htmlColor, opacity) {
|
|
|
85
88
|
}
|
|
86
89
|
}
|
|
87
90
|
|
|
88
|
-
export function htmlColorToFloat32Array(htmlColor, opacity) {
|
|
91
|
+
export function htmlColorToFloat32Array(htmlColor: string, opacity?: number): Float32Array {
|
|
89
92
|
let c = htmlColorToRgba(htmlColor, opacity);
|
|
90
93
|
return new Float32Array([c.x, c.y, c.z, c.w]);
|
|
91
94
|
}
|
|
@@ -93,28 +96,31 @@ export function htmlColorToFloat32Array(htmlColor, opacity) {
|
|
|
93
96
|
/**
|
|
94
97
|
* Convert html color string to the RGB number vector.
|
|
95
98
|
* @param {string} htmlColor - HTML string("#C6C6C6" or "#EF5" or "rgb(8,8,8)" or "rgba(8,8,8)") color.
|
|
96
|
-
* @param {number} [opacity] - Opacity for the output vector.
|
|
97
99
|
* @returns {Vec3} -
|
|
98
100
|
*/
|
|
99
|
-
export function htmlColorToRgb(htmlColor) {
|
|
100
|
-
|
|
101
|
+
export function htmlColorToRgb(htmlColor: string): Vec3 {
|
|
102
|
+
let hColor: any | undefined = colorTable[htmlColor];
|
|
101
103
|
if (hColor) {
|
|
102
104
|
htmlColor = hColor;
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
if (htmlColor[0] === "#") {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
+
let shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
|
|
109
|
+
let hex = htmlColor.replace(shorthandRegex, function (m, r, g, b) {
|
|
108
110
|
return r + r + g + g + b + b;
|
|
109
111
|
});
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
113
|
+
if (result) {
|
|
114
|
+
return new Vec3(
|
|
115
|
+
parseInt(result[1], 16) / 255,
|
|
116
|
+
parseInt(result[2], 16) / 255,
|
|
117
|
+
parseInt(result[3], 16) / 255
|
|
118
|
+
);
|
|
119
|
+
} else {
|
|
120
|
+
return new Vec3();
|
|
121
|
+
}
|
|
116
122
|
} else {
|
|
117
|
-
|
|
123
|
+
let m = htmlColor.split(",");
|
|
118
124
|
return new Vec3(
|
|
119
125
|
parseInt(m[0].split("(")[1]) / 255,
|
|
120
126
|
parseInt(m[1]) / 255,
|
|
@@ -135,32 +141,32 @@ export function htmlColorToRgb(htmlColor) {
|
|
|
135
141
|
* "y": 15,
|
|
136
142
|
* "z": 8
|
|
137
143
|
* }
|
|
138
|
-
* og.utils.stringTemplate("http://earth3.openglobus.org/{z}/{y}/{x}.ddm",
|
|
144
|
+
* og.utils.stringTemplate("http://earth3.openglobus.org/{z}/{y}/{x}.ddm", substrings);
|
|
139
145
|
* //returns http://earth3.openglobus.org/8/15/12.ddm
|
|
140
146
|
*/
|
|
141
|
-
export function stringTemplate(template, params) {
|
|
147
|
+
export function stringTemplate(template: string, params?: any): string {
|
|
142
148
|
return template.replace(/{[^{}]+}/g, function (key) {
|
|
143
149
|
return params[key.replace(/[{}]+/g, "")] || "";
|
|
144
150
|
});
|
|
145
151
|
}
|
|
146
152
|
|
|
147
|
-
export function getHTML(template, params) {
|
|
153
|
+
export function getHTML(template: string, params?: any): string {
|
|
148
154
|
return stringTemplate(template, params);
|
|
149
155
|
}
|
|
150
156
|
|
|
151
|
-
export function parseHTML(htmlStr) {
|
|
152
|
-
|
|
157
|
+
export function parseHTML(htmlStr: string): HTMLElement[] {
|
|
158
|
+
let p = document.createElement("div");
|
|
153
159
|
p.innerHTML = htmlStr;
|
|
154
|
-
|
|
160
|
+
let domArr: HTMLElement[] = [];
|
|
155
161
|
for (let i = 0; i < p.childNodes.length; i++) {
|
|
156
|
-
domArr.push(p.childNodes[i]);
|
|
162
|
+
domArr.push(p.childNodes[i] as HTMLElement);
|
|
157
163
|
p.removeChild(p.childNodes[i]);
|
|
158
164
|
}
|
|
159
165
|
return domArr;
|
|
160
166
|
}
|
|
161
167
|
|
|
162
|
-
export function print2d(id, text, x, y) {
|
|
163
|
-
|
|
168
|
+
export function print2d(id: string, text: string, x: number, y: number) {
|
|
169
|
+
let el = document.getElementById(id);
|
|
164
170
|
if (!el) {
|
|
165
171
|
el = document.createElement("div");
|
|
166
172
|
el.id = id;
|
|
@@ -168,20 +174,22 @@ export function print2d(id, text, x, y) {
|
|
|
168
174
|
document.body.appendChild(el);
|
|
169
175
|
}
|
|
170
176
|
el.innerHTML = text;
|
|
171
|
-
el.style.left = x
|
|
172
|
-
el.style.top = y
|
|
177
|
+
el.style.left = `${x}px`;
|
|
178
|
+
el.style.top = `${y}px`;
|
|
173
179
|
}
|
|
174
180
|
|
|
175
|
-
export function defaultString(str, def) {
|
|
181
|
+
export function defaultString(str?: string, def: string = ""): string {
|
|
176
182
|
return str ? str.trim().toLowerCase() : def;
|
|
177
183
|
}
|
|
178
184
|
|
|
179
|
-
export function createVector3(v, def) {
|
|
185
|
+
export function createVector3(v?: Vec3 | Vec2 | NumberArray3 | NumberArray2 | null, def?: Vec3): Vec3 {
|
|
180
186
|
if (v) {
|
|
181
187
|
if (v instanceof Vec3) {
|
|
182
188
|
return v.clone();
|
|
183
189
|
} else if (v instanceof Array) {
|
|
184
190
|
return Vec3.fromVec(v);
|
|
191
|
+
} else if (v instanceof Vec2) {
|
|
192
|
+
return new Vec3(v.x, v.y, 0.0);
|
|
185
193
|
}
|
|
186
194
|
} else if (def) {
|
|
187
195
|
return def;
|
|
@@ -189,7 +197,7 @@ export function createVector3(v, def) {
|
|
|
189
197
|
return new Vec3();
|
|
190
198
|
}
|
|
191
199
|
|
|
192
|
-
export function createVector4(v, def) {
|
|
200
|
+
export function createVector4(v?: Vec4 | NumberArray4 | null, def?: Vec4): Vec4 {
|
|
193
201
|
if (v) {
|
|
194
202
|
if (v instanceof Vec4) {
|
|
195
203
|
return v.clone();
|
|
@@ -202,10 +210,10 @@ export function createVector4(v, def) {
|
|
|
202
210
|
return new Vec4();
|
|
203
211
|
}
|
|
204
212
|
|
|
205
|
-
export function createColorRGBA(c, def) {
|
|
213
|
+
export function createColorRGBA(c?: string | NumberArray4 | Vec4 | null, def?: Vec4): Vec4 {
|
|
206
214
|
if (c) {
|
|
207
215
|
if (isString(c)) {
|
|
208
|
-
return htmlColorToRgba(c);
|
|
216
|
+
return htmlColorToRgba(c as string);
|
|
209
217
|
} else if (c instanceof Array) {
|
|
210
218
|
return Vec4.fromVec(c);
|
|
211
219
|
} else if (c instanceof Vec4) {
|
|
@@ -217,14 +225,14 @@ export function createColorRGBA(c, def) {
|
|
|
217
225
|
return new Vec4(1.0, 1.0, 1.0, 1.0);
|
|
218
226
|
}
|
|
219
227
|
|
|
220
|
-
export function createColorRGB(c, def) {
|
|
228
|
+
export function createColorRGB(c?: string | NumberArray3 | Vec3 | null, def?: Vec3): Vec3 {
|
|
221
229
|
if (c) {
|
|
222
230
|
if (isString(c)) {
|
|
223
|
-
return htmlColorToRgb(c);
|
|
231
|
+
return htmlColorToRgb(c as string);
|
|
224
232
|
} else if (c instanceof Array) {
|
|
225
233
|
return Vec3.fromVec(c);
|
|
226
234
|
} else if (c instanceof Vec3) {
|
|
227
|
-
return c.clone();
|
|
235
|
+
return (c as Vec3).clone();
|
|
228
236
|
}
|
|
229
237
|
} else if (def) {
|
|
230
238
|
return def;
|
|
@@ -232,7 +240,7 @@ export function createColorRGB(c, def) {
|
|
|
232
240
|
return new Vec3(1.0, 1.0, 1.0);
|
|
233
241
|
}
|
|
234
242
|
|
|
235
|
-
export function createExtent(e, def) {
|
|
243
|
+
export function createExtent(e?: Extent | [[number, number], [number, number]] | null, def?: Extent): Extent {
|
|
236
244
|
if (e) {
|
|
237
245
|
if (e instanceof Array) {
|
|
238
246
|
return new Extent(createLonLat(e[0]), createLonLat(e[1]));
|
|
@@ -245,7 +253,7 @@ export function createExtent(e, def) {
|
|
|
245
253
|
return new Extent();
|
|
246
254
|
}
|
|
247
255
|
|
|
248
|
-
export function createLonLat(l, def
|
|
256
|
+
export function createLonLat(l?: LonLat | NumberArray2 | NumberArray3, def?: LonLat): LonLat {
|
|
249
257
|
if (l) {
|
|
250
258
|
if (l instanceof Array) {
|
|
251
259
|
return new LonLat(l[0], l[1], l[2]);
|
|
@@ -258,7 +266,7 @@ export function createLonLat(l, def = null) {
|
|
|
258
266
|
return new LonLat();
|
|
259
267
|
}
|
|
260
268
|
|
|
261
|
-
export function binarySearchFast(arr, x) {
|
|
269
|
+
export function binarySearchFast(arr: number[] | TypedArray, x: number) {
|
|
262
270
|
let start = 0,
|
|
263
271
|
end = arr.length - 1;
|
|
264
272
|
while (start <= end) {
|
|
@@ -276,11 +284,11 @@ export function binarySearchFast(arr, x) {
|
|
|
276
284
|
|
|
277
285
|
/**
|
|
278
286
|
* Finds an item in a sorted array.
|
|
279
|
-
* @param {
|
|
280
|
-
* @param {
|
|
281
|
-
* @param {
|
|
287
|
+
* @param {any[]} ar The sorted array to search.
|
|
288
|
+
* @param {any} el The item to find in the array.
|
|
289
|
+
* @param {Function} compare_fn comparator The function to use to compare the item to
|
|
282
290
|
* elements in the array.
|
|
283
|
-
* @returns {
|
|
291
|
+
* @returns {number} a negative number if 'a' is less than 'b'; 0 if 'a' is equal to 'b'; 'a' positive number of 'a' is greater than 'b'.
|
|
284
292
|
*
|
|
285
293
|
* @example
|
|
286
294
|
* // Create a comparator function to search through an array of numbers.
|
|
@@ -290,12 +298,12 @@ export function binarySearchFast(arr, x) {
|
|
|
290
298
|
* var numbers = [0, 2, 4, 6, 8];
|
|
291
299
|
* var index = og.utils.binarySearch(numbers, 6, comparator); // 3
|
|
292
300
|
*/
|
|
293
|
-
export function binarySearch(ar, el, compare_fn) {
|
|
294
|
-
|
|
295
|
-
|
|
301
|
+
export function binarySearch(ar: any[], el: any, compare_fn: Function): number {
|
|
302
|
+
let m = 0;
|
|
303
|
+
let n = ar.length - 1;
|
|
296
304
|
while (m <= n) {
|
|
297
|
-
|
|
298
|
-
|
|
305
|
+
let k = (n + m) >> 1;
|
|
306
|
+
let cmp = compare_fn(el, ar[k], k);
|
|
299
307
|
if (cmp > 0) {
|
|
300
308
|
m = k + 1;
|
|
301
309
|
} else if (cmp < 0) {
|
|
@@ -309,14 +317,14 @@ export function binarySearch(ar, el, compare_fn) {
|
|
|
309
317
|
|
|
310
318
|
/**
|
|
311
319
|
* Binary insertion that uses binarySearch algorithm.
|
|
312
|
-
* @param {
|
|
313
|
-
* @param {
|
|
314
|
-
* @param {
|
|
320
|
+
* @param {any[]} ar - The sorted array to insert.
|
|
321
|
+
* @param {any} el - The item to insert.
|
|
322
|
+
* @param {Function} compare_fn - comparator The function to use to compare the item to
|
|
315
323
|
* elements in the array.
|
|
316
|
-
* @returns {
|
|
324
|
+
* @returns {number} Array index position in which item inserted in.
|
|
317
325
|
*/
|
|
318
|
-
export function binaryInsert(ar, el, compare_fn) {
|
|
319
|
-
|
|
326
|
+
export function binaryInsert(ar: any[], el: any, compare_fn: Function): number {
|
|
327
|
+
let i = binarySearch(ar, el, compare_fn);
|
|
320
328
|
if (i < 0) {
|
|
321
329
|
i = ~i;
|
|
322
330
|
}
|
|
@@ -327,39 +335,39 @@ export function binaryInsert(ar, el, compare_fn) {
|
|
|
327
335
|
/**
|
|
328
336
|
* Returns two segment lines intersection coordinate.
|
|
329
337
|
* @static
|
|
330
|
-
* @param {
|
|
331
|
-
* @param {
|
|
332
|
-
* @param {
|
|
333
|
-
* @param {
|
|
338
|
+
* @param {Vec2} start1 - First line first coordinate.
|
|
339
|
+
* @param {Vec2} end1 - First line second coordinate.
|
|
340
|
+
* @param {Vec2} start2 - Second line first coordinate.
|
|
341
|
+
* @param {Vec2} end2 - Second line second coordinate.
|
|
334
342
|
* @param {boolean} [isSegment] - Lines are segments.
|
|
335
|
-
* @return {
|
|
343
|
+
* @return {Vec2} - Intersection coordinate.
|
|
336
344
|
*/
|
|
337
|
-
export function getLinesIntersection2v(start1, end1, start2, end2, isSegment) {
|
|
338
|
-
|
|
339
|
-
|
|
345
|
+
export function getLinesIntersection2v(start1: Vec2, end1: Vec2, start2: Vec2, end2: Vec2, isSegment: boolean): Vec2 | undefined {
|
|
346
|
+
let dir1 = end1.sub(start1);
|
|
347
|
+
let dir2 = end2.sub(start2);
|
|
340
348
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
349
|
+
let a1 = -dir1.y;
|
|
350
|
+
let b1 = +dir1.x;
|
|
351
|
+
let d1 = -(a1 * start1.x + b1 * start1.y);
|
|
344
352
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
353
|
+
let a2 = -dir2.y;
|
|
354
|
+
let b2 = +dir2.x;
|
|
355
|
+
let d2 = -(a2 * start2.x + b2 * start2.y);
|
|
348
356
|
|
|
349
|
-
|
|
350
|
-
|
|
357
|
+
let seg1_line2_start = a2 * start1.x + b2 * start1.y + d2;
|
|
358
|
+
let seg1_line2_end = a2 * end1.x + b2 * end1.y + d2;
|
|
351
359
|
|
|
352
|
-
|
|
353
|
-
|
|
360
|
+
let seg2_line1_start = a1 * start2.x + b1 * start2.y + d1;
|
|
361
|
+
let seg2_line1_end = a1 * end2.x + b1 * end2.y + d1;
|
|
354
362
|
|
|
355
363
|
if (
|
|
356
364
|
isSegment &&
|
|
357
365
|
(seg1_line2_start * seg1_line2_end > 0 || seg2_line1_start * seg2_line1_end > 0)
|
|
358
366
|
) {
|
|
359
|
-
return
|
|
367
|
+
return undefined;
|
|
360
368
|
}
|
|
361
369
|
|
|
362
|
-
|
|
370
|
+
let u = seg1_line2_start / (seg1_line2_start - seg1_line2_end);
|
|
363
371
|
|
|
364
372
|
return new Vec2(start1.x + u * dir1.x, start1.y + u * dir1.y);
|
|
365
373
|
}
|
|
@@ -367,39 +375,39 @@ export function getLinesIntersection2v(start1, end1, start2, end2, isSegment) {
|
|
|
367
375
|
/**
|
|
368
376
|
* Returns two segment lines intersection coordinate.
|
|
369
377
|
* @static
|
|
370
|
-
* @param {
|
|
371
|
-
* @param {
|
|
372
|
-
* @param {
|
|
373
|
-
* @param {
|
|
374
|
-
* @param {boolean} [isSegment] - Lines are segments.
|
|
375
|
-
* @return {
|
|
378
|
+
* @param {Vec2} start1 - First line first coordinate.
|
|
379
|
+
* @param {Vec2} end1 - First line second coordinate.
|
|
380
|
+
* @param {Vec2} start2 - Second line first coordinate.
|
|
381
|
+
* @param {Vec2} end2 - Second line second coordinate.
|
|
382
|
+
* @param {boolean} [isSegment=false] - Lines are segments.
|
|
383
|
+
* @return {Vec2} - Intersection coordinate.
|
|
376
384
|
*/
|
|
377
|
-
export function getLinesIntersectionLonLat(start1, end1, start2, end2, isSegment) {
|
|
378
|
-
|
|
379
|
-
|
|
385
|
+
export function getLinesIntersectionLonLat(start1: LonLat, end1: LonLat, start2: LonLat, end2: LonLat, isSegment: boolean = false): LonLat | undefined {
|
|
386
|
+
let dir1 = new LonLat(end1.lon - start1.lon, end1.lat - start1.lat);
|
|
387
|
+
let dir2 = new LonLat(end2.lon - start2.lon, end2.lat - start2.lat);
|
|
380
388
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
389
|
+
let a1 = -dir1.lat;
|
|
390
|
+
let b1 = +dir1.lon;
|
|
391
|
+
let d1 = -(a1 * start1.lon + b1 * start1.lat);
|
|
384
392
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
393
|
+
let a2 = -dir2.lat;
|
|
394
|
+
let b2 = +dir2.lon;
|
|
395
|
+
let d2 = -(a2 * start2.lon + b2 * start2.lat);
|
|
388
396
|
|
|
389
|
-
|
|
390
|
-
|
|
397
|
+
let seg1_line2_start = a2 * start1.lon + b2 * start1.lat + d2;
|
|
398
|
+
let seg1_line2_end = a2 * end1.lon + b2 * end1.lat + d2;
|
|
391
399
|
|
|
392
|
-
|
|
393
|
-
|
|
400
|
+
let seg2_line1_start = a1 * start2.lon + b1 * start2.lat + d1;
|
|
401
|
+
let seg2_line1_end = a1 * end2.lon + b1 * end2.lat + d1;
|
|
394
402
|
|
|
395
403
|
if (
|
|
396
404
|
isSegment &&
|
|
397
405
|
(seg1_line2_start * seg1_line2_end > 0 || seg2_line1_start * seg2_line1_end > 0)
|
|
398
406
|
) {
|
|
399
|
-
return
|
|
407
|
+
return undefined;
|
|
400
408
|
}
|
|
401
409
|
|
|
402
|
-
|
|
410
|
+
let u = seg1_line2_start / (seg1_line2_start - seg1_line2_end);
|
|
403
411
|
|
|
404
412
|
return new LonLat(start1.lon + u * dir1.lon, start1.lat + u * dir1.lat);
|
|
405
413
|
}
|
|
@@ -410,9 +418,9 @@ export function getLinesIntersectionLonLat(start1, end1, start2, end2, isSegment
|
|
|
410
418
|
* @param {Object} xml - Xml object
|
|
411
419
|
* @return {Object} - Json converted object.
|
|
412
420
|
*/
|
|
413
|
-
export function xmlToJson(xml) {
|
|
421
|
+
export function xmlToJson(xml: any): any {
|
|
414
422
|
// Create the return object
|
|
415
|
-
|
|
423
|
+
let obj: any = {};
|
|
416
424
|
|
|
417
425
|
if (xml.nodeType === 1) {
|
|
418
426
|
// element
|
|
@@ -420,7 +428,7 @@ export function xmlToJson(xml) {
|
|
|
420
428
|
if (xml.attributes.length > 0) {
|
|
421
429
|
obj["@attributes"] = {};
|
|
422
430
|
for (let j = 0; j < xml.attributes.length; j++) {
|
|
423
|
-
|
|
431
|
+
let attribute = xml.attributes.item(j);
|
|
424
432
|
obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
|
|
425
433
|
}
|
|
426
434
|
}
|
|
@@ -432,13 +440,13 @@ export function xmlToJson(xml) {
|
|
|
432
440
|
// do children
|
|
433
441
|
if (xml.hasChildNodes()) {
|
|
434
442
|
for (let i = 0; i < xml.childNodes.length; i++) {
|
|
435
|
-
|
|
436
|
-
|
|
443
|
+
let item = xml.childNodes.item(i);
|
|
444
|
+
let nodeName = item.nodeName;
|
|
437
445
|
if (typeof obj[nodeName] === "undefined") {
|
|
438
446
|
obj[nodeName] = xmlToJson(item);
|
|
439
447
|
} else {
|
|
440
448
|
if (typeof obj[nodeName].push === "undefined") {
|
|
441
|
-
|
|
449
|
+
let old = obj[nodeName];
|
|
442
450
|
obj[nodeName] = [];
|
|
443
451
|
obj[nodeName].push(old);
|
|
444
452
|
}
|
|
@@ -450,31 +458,31 @@ export function xmlToJson(xml) {
|
|
|
450
458
|
}
|
|
451
459
|
|
|
452
460
|
export const castType = {
|
|
453
|
-
string: function (v) {
|
|
461
|
+
string: function (v: any) {
|
|
454
462
|
return isEmpty(v) ? v : v.toString();
|
|
455
463
|
},
|
|
456
464
|
|
|
457
|
-
date: function (v) {
|
|
465
|
+
date: function (v: any) {
|
|
458
466
|
return isEmpty(v) ? v : new Date(v * 1000);
|
|
459
467
|
},
|
|
460
468
|
|
|
461
|
-
datetime: function (v) {
|
|
469
|
+
datetime: function (v: any) {
|
|
462
470
|
return isEmpty(v) ? v : new Date(v * 1000);
|
|
463
471
|
},
|
|
464
472
|
|
|
465
|
-
time: function (v) {
|
|
473
|
+
time: function (v: any) {
|
|
466
474
|
return isEmpty(v) ? v : parseInt(v);
|
|
467
475
|
},
|
|
468
476
|
|
|
469
|
-
integer: function (v) {
|
|
477
|
+
integer: function (v: any) {
|
|
470
478
|
return isEmpty(v) ? v : parseInt(v);
|
|
471
479
|
},
|
|
472
480
|
|
|
473
|
-
float: function (v) {
|
|
481
|
+
float: function (v: any) {
|
|
474
482
|
return isEmpty(v) ? v : parseFloat(v);
|
|
475
483
|
},
|
|
476
484
|
|
|
477
|
-
boolean: function (str) {
|
|
485
|
+
boolean: function (str: any) {
|
|
478
486
|
if (str === null) {
|
|
479
487
|
return str;
|
|
480
488
|
}
|
|
@@ -503,28 +511,31 @@ export const castType = {
|
|
|
503
511
|
}
|
|
504
512
|
};
|
|
505
513
|
|
|
506
|
-
export function base64toBlob(base64Data, contentType) {
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
514
|
+
export function base64toBlob(base64Data: string, contentType: string = ""): Blob {
|
|
515
|
+
|
|
516
|
+
let sliceSize = 1024;
|
|
517
|
+
let byteCharacters = atob(base64Data);
|
|
518
|
+
let bytesLength = byteCharacters.length;
|
|
519
|
+
let slicesCount = Math.ceil(bytesLength / sliceSize);
|
|
520
|
+
let byteArrays = new Array(slicesCount);
|
|
513
521
|
|
|
514
522
|
for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
|
|
515
|
-
var begin = sliceIndex * sliceSize;
|
|
516
|
-
var end = Math.min(begin + sliceSize, bytesLength);
|
|
517
523
|
|
|
518
|
-
|
|
524
|
+
let begin = sliceIndex * sliceSize;
|
|
525
|
+
let end = Math.min(begin + sliceSize, bytesLength);
|
|
526
|
+
let bytes = new Array(end - begin);
|
|
527
|
+
|
|
519
528
|
for (let offset = begin, i = 0; offset < end; ++i, ++offset) {
|
|
520
529
|
bytes[i] = byteCharacters[offset].charCodeAt(0);
|
|
521
530
|
}
|
|
531
|
+
|
|
522
532
|
byteArrays[sliceIndex] = new Uint8Array(bytes);
|
|
523
533
|
}
|
|
524
|
-
return new Blob(byteArrays, {
|
|
534
|
+
return new Blob(byteArrays, {type: contentType});
|
|
525
535
|
}
|
|
526
536
|
|
|
527
|
-
export function base64StringToBlog(string) {
|
|
537
|
+
export function base64StringToBlog(string: string): Blob {
|
|
538
|
+
|
|
528
539
|
let block = string.split(";");
|
|
529
540
|
let contentType = block[0].split(":")[1];
|
|
530
541
|
let data = block[1].split(",")[1];
|
|
@@ -567,22 +578,21 @@ export function base64StringToBlog(string) {
|
|
|
567
578
|
* @param {Number} limit
|
|
568
579
|
* @param {boolean} [skip]
|
|
569
580
|
*/
|
|
570
|
-
export function throttle(func, limit, skip) {
|
|
571
|
-
let lastFunc;
|
|
572
|
-
let lastRan;
|
|
581
|
+
export function throttle(func: Function, limit: number, skip: boolean) {
|
|
582
|
+
let lastFunc: any;
|
|
583
|
+
let lastRan: number = 0;
|
|
573
584
|
return function () {
|
|
574
|
-
const context = this;
|
|
575
585
|
const args = arguments;
|
|
576
586
|
if (!lastRan) {
|
|
577
|
-
func.apply(
|
|
587
|
+
func.apply(null, args);
|
|
578
588
|
lastRan = Date.now();
|
|
579
589
|
} else {
|
|
580
590
|
if (skip) {
|
|
581
591
|
clearTimeout(lastFunc);
|
|
582
592
|
}
|
|
583
|
-
lastFunc = setTimeout(
|
|
593
|
+
lastFunc = setTimeout(() => {
|
|
584
594
|
if (Date.now() - lastRan >= limit) {
|
|
585
|
-
func.apply(
|
|
595
|
+
func.apply(null, args);
|
|
586
596
|
lastRan = Date.now();
|
|
587
597
|
}
|
|
588
598
|
}, limit - (Date.now() - lastRan));
|
|
@@ -618,7 +628,9 @@ export function throttle(func, limit, skip) {
|
|
|
618
628
|
* @param {Number} [y1=0.0] -
|
|
619
629
|
* @param {Number} [y2=1.0] -
|
|
620
630
|
*/
|
|
621
|
-
export function blerp(
|
|
631
|
+
export function blerp(
|
|
632
|
+
x: number, y: number, fQ11: number, fQ21: number, fQ12: number, fQ22: number,
|
|
633
|
+
x1: number = 0.0, x2: number = 1.0, y1: number = 0.0, y2: number = 1.0): number {
|
|
622
634
|
return (
|
|
623
635
|
(fQ11 * (x2 - x) * (y2 - y) +
|
|
624
636
|
fQ21 * (x - x1) * (y2 - y) +
|
|
@@ -628,13 +640,13 @@ export function blerp(x, y, fQ11, fQ21, fQ12, fQ22, x1 = 0.0, x2 = 1.0, y1 = 0.0
|
|
|
628
640
|
);
|
|
629
641
|
}
|
|
630
642
|
|
|
631
|
-
export function blerp2(x, y, fQ11, fQ21, fQ12, fQ22) {
|
|
643
|
+
export function blerp2(x: number, y: number, fQ11: number, fQ21: number, fQ12: number, fQ22: number): number {
|
|
632
644
|
return (
|
|
633
645
|
fQ11 * (1.0 - x) * (1.0 - y) + fQ21 * x * (1.0 - y) + fQ12 * (1.0 - x) * y + fQ22 * x * y
|
|
634
646
|
);
|
|
635
647
|
}
|
|
636
648
|
|
|
637
|
-
export function extractElevationTiles(rgbaData, outCurrenElevations, outChildrenElevations) {
|
|
649
|
+
export function extractElevationTiles(rgbaData: number[] | TypedArray, outCurrenElevations: number[] | TypedArray, outChildrenElevations: number[][][] | TypedArray[][]) {
|
|
638
650
|
let destSize = Math.sqrt(outCurrenElevations.length) - 1;
|
|
639
651
|
let destSizeOne = destSize + 1;
|
|
640
652
|
let sourceSize = Math.sqrt(rgbaData.length / 4);
|
|
@@ -730,13 +742,24 @@ export function extractElevationTiles(rgbaData, outCurrenElevations, outChildren
|
|
|
730
742
|
}
|
|
731
743
|
}
|
|
732
744
|
|
|
745
|
+
export type TypedArray =
|
|
746
|
+
| Int8Array
|
|
747
|
+
| Uint8Array
|
|
748
|
+
| Uint8ClampedArray
|
|
749
|
+
| Int16Array
|
|
750
|
+
| Uint16Array
|
|
751
|
+
| Int32Array
|
|
752
|
+
| Uint32Array
|
|
753
|
+
| Float32Array
|
|
754
|
+
| Float64Array;
|
|
755
|
+
|
|
733
756
|
/**
|
|
734
757
|
* Concatenates two the same type arrays
|
|
735
758
|
* @param {TypedArray} a
|
|
736
|
-
* @param {TypedArray} b
|
|
759
|
+
* @param {TypedArray | number[]} b
|
|
737
760
|
*/
|
|
738
|
-
export function concatTypedArrays(a, b) {
|
|
739
|
-
|
|
761
|
+
export function concatTypedArrays(a: TypedArray, b: TypedArray | number[]): TypedArray {
|
|
762
|
+
let c = new (a as any).constructor(a.length + b.length); //hacky
|
|
740
763
|
c.set(a, 0);
|
|
741
764
|
c.set(b, a.length);
|
|
742
765
|
return c;
|
|
@@ -744,12 +767,13 @@ export function concatTypedArrays(a, b) {
|
|
|
744
767
|
|
|
745
768
|
/**
|
|
746
769
|
* Concatenates two the same arrays
|
|
747
|
-
* @param {TypedArray |
|
|
748
|
-
* @param {TypedArray |
|
|
770
|
+
* @param {TypedArray | number[]} [a=[]] - First array
|
|
771
|
+
* @param {TypedArray | number[]} [b=[]] - Second array
|
|
772
|
+
* @return {TypedArray | number[]} -
|
|
749
773
|
*/
|
|
750
|
-
export function concatArrays(a = [], b) {
|
|
774
|
+
export function concatArrays(a: TypedArray | number[] = [], b: TypedArray | number[] = []): TypedArray | number[] {
|
|
751
775
|
if (ArrayBuffer.isView(a)) {
|
|
752
|
-
return concatTypedArrays(a, b);
|
|
776
|
+
return concatTypedArrays(a as TypedArray, b as TypedArray);
|
|
753
777
|
} else {
|
|
754
778
|
for (let i = 0; i < b.length; i++) {
|
|
755
779
|
a.push(b[i]);
|
|
@@ -760,13 +784,13 @@ export function concatArrays(a = [], b) {
|
|
|
760
784
|
|
|
761
785
|
/**
|
|
762
786
|
* Convert simple array to typed
|
|
763
|
-
* @param arr {
|
|
764
|
-
* @param ctor {
|
|
787
|
+
* @param arr {number[]}
|
|
788
|
+
* @param ctor {Float32Array}
|
|
765
789
|
* @returns {TypedArray}
|
|
766
790
|
*/
|
|
767
|
-
export function makeArrayTyped(arr, ctor = Float32Array) {
|
|
791
|
+
export function makeArrayTyped(arr: TypedArray | number[], ctor: Function = Float32Array) {
|
|
768
792
|
if (!ArrayBuffer.isView(arr)) {
|
|
769
|
-
const typedArr = new ctor(arr.length);
|
|
793
|
+
const typedArr = new (ctor as any)(arr.length); //hacky
|
|
770
794
|
typedArr.set(arr, 0);
|
|
771
795
|
return typedArr;
|
|
772
796
|
} else {
|
|
@@ -776,10 +800,10 @@ export function makeArrayTyped(arr, ctor = Float32Array) {
|
|
|
776
800
|
|
|
777
801
|
/**
|
|
778
802
|
* Convert typed array to array
|
|
779
|
-
* @param arr {TypedArray}
|
|
780
|
-
* @returns {
|
|
803
|
+
* @param arr {TypedArray | number[]}
|
|
804
|
+
* @returns {number[]}
|
|
781
805
|
*/
|
|
782
|
-
export function makeArray(arr) {
|
|
806
|
+
export function makeArray(arr: TypedArray | number[]): number[] {
|
|
783
807
|
if (ArrayBuffer.isView(arr)) {
|
|
784
808
|
return Array.from(arr);
|
|
785
809
|
} else {
|
|
@@ -792,16 +816,16 @@ export function makeArray(arr) {
|
|
|
792
816
|
* @param {TypedArray | Array} arr
|
|
793
817
|
* @param {Number} starting
|
|
794
818
|
* @param {Number} deleteCount
|
|
795
|
-
* @param {
|
|
819
|
+
* @param {{ result: number[] }} [out]
|
|
796
820
|
*/
|
|
797
821
|
|
|
798
|
-
export function spliceArray(arr, starting, deleteCount, out) {
|
|
822
|
+
export function spliceArray(arr: TypedArray | number[], starting: number, deleteCount: number, out?: { result: number[] } | { result: TypedArray }): TypedArray | number[] {
|
|
799
823
|
if (ArrayBuffer.isView(arr)) {
|
|
800
824
|
if (starting < 0) {
|
|
801
825
|
deleteCount = Math.abs(starting);
|
|
802
826
|
starting += arr.length;
|
|
803
827
|
}
|
|
804
|
-
return spliceTypedArray(arr, starting, deleteCount, out);
|
|
828
|
+
return spliceTypedArray(arr, starting, deleteCount, out as { result: TypedArray });
|
|
805
829
|
} else {
|
|
806
830
|
let res;
|
|
807
831
|
if (starting < 0) {
|
|
@@ -816,57 +840,91 @@ export function spliceArray(arr, starting, deleteCount, out) {
|
|
|
816
840
|
}
|
|
817
841
|
}
|
|
818
842
|
|
|
819
|
-
window.spliceArray = spliceArray;
|
|
820
|
-
|
|
821
843
|
/**
|
|
822
844
|
*
|
|
823
845
|
* @param {TypedArray} arr
|
|
824
846
|
* @param {Number} starting
|
|
825
847
|
* @param {Number} deleteCount
|
|
826
|
-
* @param {
|
|
848
|
+
* @param {{ result: TypedArray }} [out]
|
|
827
849
|
*/
|
|
828
|
-
export function spliceTypedArray(arr, starting, deleteCount, out) {
|
|
850
|
+
export function spliceTypedArray<T extends TypedArray>(arr: T, starting: number, deleteCount: number, out?: { result: T }): T {
|
|
829
851
|
if (arr.length === 0) {
|
|
830
852
|
return arr;
|
|
831
853
|
}
|
|
832
854
|
const newSize = arr.length - deleteCount;
|
|
833
|
-
const splicedArray = new arr.constructor(newSize);
|
|
855
|
+
const splicedArray = new (arr as any).constructor(newSize); //hacky
|
|
834
856
|
splicedArray.set(arr.subarray(0, starting));
|
|
835
857
|
splicedArray.set(arr.subarray(starting + deleteCount), starting);
|
|
836
858
|
if (out) {
|
|
837
|
-
out.result = arr.subarray(starting, starting + deleteCount);
|
|
859
|
+
out.result = arr.subarray(starting, starting + deleteCount) as T;
|
|
838
860
|
}
|
|
839
861
|
return splicedArray;
|
|
840
862
|
}
|
|
841
863
|
|
|
842
864
|
/**
|
|
843
|
-
* Returns triangle coordinate array from inside of the source triangle array.
|
|
865
|
+
* Returns 64-bit triangle coordinate array from inside of the source triangle array.
|
|
844
866
|
* @static
|
|
845
|
-
* @param {
|
|
867
|
+
* @param {TypedArray | number[]} sourceArr - Source array
|
|
846
868
|
* @param {number} gridSize - Source array square matrix size
|
|
847
869
|
* @param {number} i0 - First row index source array matrix
|
|
848
870
|
* @param {number} j0 - First column index
|
|
849
871
|
* @param {number} size - Square matrix result size.
|
|
850
|
-
* @return{
|
|
872
|
+
* @return {Float64Array} Triangle coordinates array from the source array.
|
|
851
873
|
* @TODO: optimization
|
|
852
874
|
*/
|
|
853
|
-
export function
|
|
875
|
+
export function getMatrixSubArray64(sourceArr: TypedArray | number[], gridSize: number, i0: number, j0: number, size: number): Float64Array {
|
|
876
|
+
|
|
854
877
|
const size_1 = size + 1;
|
|
855
878
|
const i0size = i0 + size_1;
|
|
856
879
|
const j0size = j0 + size_1;
|
|
857
880
|
|
|
858
|
-
|
|
881
|
+
let res = new Float64Array(size_1 * size_1 * 3);
|
|
882
|
+
let vInd = 0;
|
|
859
883
|
|
|
860
|
-
var vInd = 0;
|
|
861
884
|
for (let i = i0; i < i0size; i++) {
|
|
862
885
|
for (let j = j0; j < j0size; j++) {
|
|
863
|
-
|
|
886
|
+
|
|
887
|
+
let ind = 3 * (i * (gridSize + 1) + j);
|
|
864
888
|
|
|
865
889
|
res[vInd++] = sourceArr[ind];
|
|
866
890
|
res[vInd++] = sourceArr[ind + 1];
|
|
867
891
|
res[vInd++] = sourceArr[ind + 2];
|
|
868
892
|
}
|
|
869
893
|
}
|
|
894
|
+
|
|
895
|
+
return res;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
/**
|
|
899
|
+
* Returns 32-bit triangle coordinate array from inside of the source triangle array.
|
|
900
|
+
* @static
|
|
901
|
+
* @param {TypedArray | number[]} sourceArr - Source array
|
|
902
|
+
* @param {number} gridSize - Source array square matrix size
|
|
903
|
+
* @param {number} i0 - First row index source array matrix
|
|
904
|
+
* @param {number} j0 - First column index
|
|
905
|
+
* @param {number} size - Square matrix result size.
|
|
906
|
+
* @return {Float32Array} Triangle coordinates array from the source array.
|
|
907
|
+
*/
|
|
908
|
+
export function getMatrixSubArray32(sourceArr: TypedArray | number[], gridSize: number, i0: number, j0: number, size: number): Float32Array {
|
|
909
|
+
|
|
910
|
+
const size_1 = size + 1;
|
|
911
|
+
const i0size = i0 + size_1;
|
|
912
|
+
const j0size = j0 + size_1;
|
|
913
|
+
|
|
914
|
+
let res = new Float32Array(size_1 * size_1 * 3);
|
|
915
|
+
let vInd = 0;
|
|
916
|
+
|
|
917
|
+
for (let i = i0; i < i0size; i++) {
|
|
918
|
+
for (let j = j0; j < j0size; j++) {
|
|
919
|
+
|
|
920
|
+
let ind = 3 * (i * (gridSize + 1) + j);
|
|
921
|
+
|
|
922
|
+
res[vInd++] = sourceArr[ind];
|
|
923
|
+
res[vInd++] = sourceArr[ind + 1];
|
|
924
|
+
res[vInd++] = sourceArr[ind + 2];
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
|
|
870
928
|
return res;
|
|
871
929
|
}
|
|
872
930
|
|
|
@@ -883,25 +941,28 @@ export function getMatrixSubArray(sourceArr, gridSize, i0, j0, size) {
|
|
|
883
941
|
* @TODO: optimization
|
|
884
942
|
*/
|
|
885
943
|
export function getMatrixSubArrayBoundsExt(
|
|
886
|
-
sourceArr,
|
|
887
|
-
sourceArrHigh,
|
|
888
|
-
sourceArrLow,
|
|
889
|
-
noDataVertices,
|
|
890
|
-
gridSize,
|
|
891
|
-
i0,
|
|
892
|
-
j0,
|
|
893
|
-
size,
|
|
894
|
-
outArr,
|
|
895
|
-
outArrHigh,
|
|
896
|
-
outArrLow,
|
|
897
|
-
outBounds,
|
|
898
|
-
outNoDataVertices
|
|
944
|
+
sourceArr: TypedArray | number[],
|
|
945
|
+
sourceArrHigh: TypedArray | number[],
|
|
946
|
+
sourceArrLow: TypedArray | number[],
|
|
947
|
+
noDataVertices: TypedArray | number[] | undefined,
|
|
948
|
+
gridSize: number,
|
|
949
|
+
i0: number,
|
|
950
|
+
j0: number,
|
|
951
|
+
size: number,
|
|
952
|
+
outArr: TypedArray | number[],
|
|
953
|
+
outArrHigh: TypedArray | number[],
|
|
954
|
+
outArrLow: TypedArray | number[],
|
|
955
|
+
outBounds: any,
|
|
956
|
+
outNoDataVertices: TypedArray | number[]
|
|
899
957
|
) {
|
|
900
958
|
const i0size = i0 + size + 1;
|
|
901
959
|
const j0size = j0 + size + 1;
|
|
960
|
+
|
|
902
961
|
gridSize += 1;
|
|
903
|
-
|
|
962
|
+
|
|
963
|
+
let vInd = 0,
|
|
904
964
|
nInd = 0;
|
|
965
|
+
|
|
905
966
|
for (let i = i0; i < i0size; i++) {
|
|
906
967
|
for (let j = j0; j < j0size; j++) {
|
|
907
968
|
let indBy3 = i * gridSize + j,
|
|
@@ -939,7 +1000,7 @@ export function getMatrixSubArrayBoundsExt(
|
|
|
939
1000
|
}
|
|
940
1001
|
}
|
|
941
1002
|
|
|
942
|
-
export function cloneArray(items) {
|
|
1003
|
+
export function cloneArray(items: any[]): any[] {
|
|
943
1004
|
return items.map((item) => (Array.isArray(item) ? cloneArray(item) : item));
|
|
944
1005
|
}
|
|
945
1006
|
|
|
@@ -949,8 +1010,8 @@ export function cloneArray(items) {
|
|
|
949
1010
|
* @param {string} url - link to image.
|
|
950
1011
|
* @returns {Promise<Image>} Returns promise.
|
|
951
1012
|
*/
|
|
952
|
-
export async function loadImage(url) {
|
|
953
|
-
return new Promise(resolve => {
|
|
1013
|
+
export async function loadImage(url: string): Promise<HTMLImageElement> {
|
|
1014
|
+
return new Promise<HTMLImageElement>(resolve => {
|
|
954
1015
|
const image = new Image();
|
|
955
1016
|
image.addEventListener('load', () => {
|
|
956
1017
|
resolve(image);
|
|
@@ -966,11 +1027,11 @@ export async function loadImage(url) {
|
|
|
966
1027
|
* @param {HTMLImageElement} image
|
|
967
1028
|
* @returns {boolean} Returns true is the image is loaded
|
|
968
1029
|
*/
|
|
969
|
-
export function isImageLoaded(image) {
|
|
1030
|
+
export function isImageLoaded(image: HTMLImageElement): boolean {
|
|
970
1031
|
return image.complete && image.naturalHeight !== 0;
|
|
971
1032
|
}
|
|
972
1033
|
|
|
973
|
-
export function distanceFormat(v) {
|
|
1034
|
+
export function distanceFormat(v: number): string {
|
|
974
1035
|
if (v > 1000) {
|
|
975
1036
|
return `${(v / 1000).toFixed(1)} km`;
|
|
976
1037
|
} else if (v > 9) {
|
|
@@ -980,7 +1041,7 @@ export function distanceFormat(v) {
|
|
|
980
1041
|
}
|
|
981
1042
|
}
|
|
982
1043
|
|
|
983
|
-
export function getUrlParam(paramName) {
|
|
1044
|
+
export function getUrlParam(paramName: string): number | undefined {
|
|
984
1045
|
let urlParams = new URLSearchParams(location.search);
|
|
985
1046
|
let param = urlParams.get(paramName);
|
|
986
1047
|
if (param) {
|