@openglobus/og 0.17.1 → 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.
Files changed (490) hide show
  1. package/README.md +75 -46
  2. package/dist/@openglobus/og.esm.js +1 -20
  3. package/dist/@openglobus/og.esm.js.map +1 -1
  4. package/dist/@openglobus/og.umd.js +1 -20
  5. package/dist/@openglobus/og.umd.js.map +1 -1
  6. package/dist/@openglobus/res/fonts/Karla-Bold.json +5252 -0
  7. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.cfg +920 -0
  8. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
  9. package/dist/@openglobus/res/fonts/Karla-Light.json +5252 -0
  10. package/dist/@openglobus/res/fonts/Karla-Light.ttf.cfg +830 -0
  11. package/dist/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
  12. package/dist/@openglobus/res/fonts/Karla-Medium.json +5252 -0
  13. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.cfg +1196 -0
  14. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
  15. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.json +3332 -0
  16. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +1370 -0
  17. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
  18. package/dist/@openglobus/res/fonts/Roboto-Regular.json +37147 -0
  19. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +1340 -0
  20. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
  21. package/dist/@openglobus/res/fonts/arial.json +4321 -0
  22. package/dist/@openglobus/res/fonts/arial.ttf.cfg +1570 -0
  23. package/dist/@openglobus/res/fonts/arial.ttf.png +0 -0
  24. package/dist/@openglobus/res/night-4326.png +0 -0
  25. package/dist/@openglobus/res/night.png +0 -0
  26. package/dist/@openglobus/res/spec.png +0 -0
  27. package/package.json +25 -23
  28. package/src/{og/Clock.js → Clock.ts} +100 -78
  29. package/src/Deferred.ts +17 -0
  30. package/src/Events.ts +200 -0
  31. package/src/{og/Extent.js → Extent.ts} +324 -352
  32. package/src/Globe.ts +363 -0
  33. package/src/{og/ImageCanvas.js → ImageCanvas.ts} +244 -236
  34. package/src/Lock.ts +41 -0
  35. package/src/{og/LonLat.js → LonLat.ts} +50 -47
  36. package/src/{og/Object3d.js → Object3d.ts} +89 -55
  37. package/src/Popup.ts +228 -0
  38. package/src/{og/QueueArray.js → QueueArray.ts} +76 -75
  39. package/src/{og/Rectangle.js → Rectangle.ts} +115 -111
  40. package/src/Stack.ts +58 -0
  41. package/src/{og/astro/astro.js → astro/astro.ts} +49 -51
  42. package/src/{og/astro/earth.js → astro/earth.ts} +8 -9
  43. package/src/{og/astro/jd.js → astro/jd.ts} +92 -111
  44. package/src/{og/astro/orbit.js → astro/orbit.ts} +35 -37
  45. package/src/{og/astro/rotation.js → astro/rotation.ts} +4 -6
  46. package/src/{og/bv/Box.js → bv/Box.ts} +21 -17
  47. package/src/{og/bv/Sphere.js → bv/Sphere.ts} +21 -19
  48. package/src/bv/index.ts +4 -0
  49. package/src/{og/camera/Camera.js → camera/Camera.ts} +254 -197
  50. package/src/{og/camera/Frustum.js → camera/Frustum.ts} +137 -111
  51. package/src/{og/camera/PlanetCamera.js → camera/PlanetCamera.ts} +248 -185
  52. package/src/camera/index.ts +4 -0
  53. package/src/{og/cons.js → cons.ts} +14 -18
  54. package/src/{og/control/Atmosphere.js → control/Atmosphere.ts} +50 -50
  55. package/src/{og/control/CompassButton.js → control/CompassButton.ts} +27 -30
  56. package/src/{og/control/Control.js → control/Control.ts} +76 -70
  57. package/src/{og/control/DebugInfo.js → control/DebugInfo.ts} +130 -62
  58. package/src/{og/control/DrawingSwitcher.js → control/DrawingSwitcher.ts} +16 -22
  59. package/src/control/EarthCoordinates.ts +222 -0
  60. package/src/control/EarthNavigation.ts +293 -0
  61. package/src/{og/control/GeoImageDragControl.js → control/GeoImageDragControl.ts} +37 -29
  62. package/src/control/KeyboardNavigation.ts +168 -0
  63. package/src/{og/control/LayerAnimation.js → control/LayerAnimation.ts} +74 -90
  64. package/src/control/LayerSwitcher.ts +76 -0
  65. package/src/{og/control/Lighting.js → control/Lighting.ts} +158 -120
  66. package/src/control/MouseNavigation.ts +468 -0
  67. package/src/control/MouseWheelZoomControl.ts +269 -0
  68. package/src/{og/control/RulerSwitcher.js → control/RulerSwitcher.ts} +18 -20
  69. package/src/control/ScaleControl.ts +131 -0
  70. package/src/control/SegmentBoundVisualization.ts +50 -0
  71. package/src/control/ShowFps.ts +28 -0
  72. package/src/control/SimpleNavigation.ts +118 -0
  73. package/src/{og/control/SimpleSkyBackground.js → control/SimpleSkyBackground.ts} +36 -38
  74. package/src/{og/control/Sun.js → control/Sun.ts} +56 -64
  75. package/src/control/ToggleWireframe.ts +35 -0
  76. package/src/control/TouchNavigation.ts +368 -0
  77. package/src/control/ZoomControl.ts +111 -0
  78. package/src/control/drawing/DrawingControl.ts +45 -0
  79. package/src/{og/control/drawing/LineStringDrawingScene.js → control/drawing/LineStringDrawingScene.ts} +28 -35
  80. package/src/{og/control/drawing/PolygonDrawingScene.js → control/drawing/PolygonDrawingScene.ts} +148 -201
  81. package/src/{og/control/elevationProfile/ElevationProfile.js → control/elevationProfile/ElevationProfile.ts} +70 -36
  82. package/src/control/heightRuler/HeightRuler.ts +16 -0
  83. package/src/{og/control/heightRuler/HeightRulerScene.js → control/heightRuler/HeightRulerScene.ts} +92 -87
  84. package/src/{og/control/heightRuler/HeightRulerSwitcher.js → control/heightRuler/HeightRulerSwitcher.ts} +3 -3
  85. package/src/control/index.ts +45 -0
  86. package/src/control/ruler/Ruler.ts +35 -0
  87. package/src/{og/control/ruler/RulerScene.js → control/ruler/RulerScene.ts} +163 -121
  88. package/src/{og/control/selection/Selection.js → control/selection/Selection.ts} +23 -21
  89. package/src/{og/control/selection/SelectionScene.js → control/selection/SelectionScene.ts} +64 -50
  90. package/src/{og/control/timeline/TimelineControl.js → control/timeline/TimelineControl.ts} +37 -28
  91. package/src/{og/control/timeline/TimelineModel.js → control/timeline/TimelineModel.ts} +50 -35
  92. package/src/{og/control/timeline/TimelineView.js → control/timeline/TimelineView.ts} +162 -113
  93. package/src/{og/control/timeline/timelineUtils.js → control/timeline/timelineUtils.ts} +11 -10
  94. package/src/{og/control → control}/visibleExtent/Segment.js +5 -5
  95. package/src/{og/control → control}/visibleExtent/VisibleExtent.js +8 -15
  96. package/src/{og/control/visibleExtent/drawnode.js → control/visibleExtent/drawnode.ts} +1 -3
  97. package/src/{og/ellipsoid/Ellipsoid.js → ellipsoid/Ellipsoid.ts} +113 -59
  98. package/src/ellipsoid/index.ts +4 -0
  99. package/src/{og/ellipsoid/wgs84.js → ellipsoid/wgs84.ts} +1 -3
  100. package/src/{og/entity/BaseBillboard.js → entity/BaseBillboard.ts} +128 -102
  101. package/src/entity/BaseBillboardHandler.ts +772 -0
  102. package/src/{og/entity/Billboard.js → entity/Billboard.ts} +77 -47
  103. package/src/entity/BillboardHandler.ts +135 -0
  104. package/src/{og/entity/Entity.js → entity/Entity.ts} +285 -226
  105. package/src/{og/entity/EntityCollection.js → entity/EntityCollection.ts} +340 -247
  106. package/src/{og/entity/GeoObject.js → entity/GeoObject.ts} +122 -67
  107. package/src/{og/entity/GeoObjectHandler.js → entity/GeoObjectHandler.ts} +273 -198
  108. package/src/entity/Geometry.ts +486 -0
  109. package/src/{og/entity/GeometryHandler.js → entity/GeometryHandler.ts} +383 -541
  110. package/src/{og/entity/Label.js → entity/Label.ts} +131 -83
  111. package/src/{og/entity/LabelHandler.js → entity/LabelHandler.ts} +289 -255
  112. package/src/{og/entity/LabelWorker.js → entity/LabelWorker.ts} +26 -36
  113. package/src/{og/entity/PointCloud.js → entity/PointCloud.ts} +200 -164
  114. package/src/entity/PointCloudHandler.ts +125 -0
  115. package/src/{og/entity/Polyline.js → entity/Polyline.ts} +517 -539
  116. package/src/{og/entity/PolylineHandler.js → entity/PolylineHandler.ts} +29 -31
  117. package/src/{og/entity/Ray.js → entity/Ray.ts} +89 -60
  118. package/src/{og/entity/RayHandler.js → entity/RayHandler.ts} +201 -306
  119. package/src/{og/entity/Strip.js → entity/Strip.ts} +143 -100
  120. package/src/{og/entity/StripHandler.js → entity/StripHandler.ts} +76 -72
  121. package/src/entity/index.ts +12 -0
  122. package/src/index.ts +173 -0
  123. package/src/input/KeyboardHandler.ts +196 -0
  124. package/src/{og/input/MouseHandler.js → input/MouseHandler.ts} +46 -35
  125. package/src/input/TouchHandler.ts +54 -0
  126. package/src/{og/input/input.js → input/input.ts} +1 -3
  127. package/src/{og/layer/BaseGeoImage.js → layer/BaseGeoImage.ts} +174 -107
  128. package/src/{og/layer/CanvasTiles.js → layer/CanvasTiles.ts} +139 -105
  129. package/src/{og/layer/GeoImage.js → layer/GeoImage.ts} +62 -52
  130. package/src/layer/GeoTexture2d.ts +56 -0
  131. package/src/{og/layer/GeoVideo.js → layer/GeoVideo.ts} +53 -53
  132. package/src/{og/layer/KML.js → layer/KML.ts} +63 -74
  133. package/src/{og/layer/Layer.js → layer/Layer.ts} +399 -223
  134. package/src/{og/layer/Material.js → layer/Material.ts} +40 -35
  135. package/src/{og/layer/Vector.js → layer/Vector.ts} +319 -267
  136. package/src/{og/layer/WMS.js → layer/WMS.ts} +76 -64
  137. package/src/{og/layer/XYZ.js → layer/XYZ.ts} +123 -98
  138. package/src/layer/index.ts +12 -0
  139. package/src/{og/light/LightSource.js → light/LightSource.ts} +132 -93
  140. package/src/{og/math/Line2.js → math/Line2.ts} +11 -8
  141. package/src/{og/math/Line3.js → math/Line3.ts} +49 -27
  142. package/src/{og/math/Mat3.js → math/Mat3.ts} +43 -27
  143. package/src/{og/math/Mat4.js → math/Mat4.ts} +110 -77
  144. package/src/{og/math/Plane.js → math/Plane.ts} +28 -23
  145. package/src/{og/math/Quat.js → math/Quat.ts} +238 -222
  146. package/src/{og/math/Ray.js → math/Ray.ts} +59 -63
  147. package/src/{og/math/Vec2.js → math/Vec2.ts} +85 -76
  148. package/src/{og/math/Vec3.js → math/Vec3.ts} +141 -140
  149. package/src/{og/math/Vec4.js → math/Vec4.ts} +64 -53
  150. package/src/{og/math/coder.js → math/coder.ts} +30 -27
  151. package/src/math/index.ts +26 -0
  152. package/src/{og/math.js → math.ts} +46 -49
  153. package/src/{og/mercator.js → mercator.ts} +143 -149
  154. package/src/{og/proj/EPSG3857.js → proj/EPSG3857.ts} +1 -3
  155. package/src/{og/proj/EPSG4326.js → proj/EPSG4326.ts} +11 -13
  156. package/src/{og/proj/Proj.js → proj/Proj.ts} +27 -23
  157. package/src/{og/quadTree/EPSG4326QuadTreeStrategy.js → quadTree/EPSG4326QuadTreeStrategy.ts} +10 -13
  158. package/src/{og/quadTree/EarthQuadTreeStrategy.js → quadTree/EarthQuadTreeStrategy.ts} +11 -13
  159. package/src/quadTree/EntityCollectionNode.ts +395 -0
  160. package/src/{og/quadTree/MarsQuadTreeStrategy.js → quadTree/MarsQuadTreeStrategy.ts} +10 -13
  161. package/src/{og/quadTree/Node.js → quadTree/Node.ts} +283 -191
  162. package/src/{og/quadTree/QuadTreeStrategy.js → quadTree/QuadTreeStrategy.ts} +35 -29
  163. package/src/quadTree/Wgs84QuadTreeStrategy.ts +22 -0
  164. package/src/quadTree/index.ts +14 -0
  165. package/src/{og/quadTree/quadTree.js → quadTree/quadTree.ts} +75 -77
  166. package/src/{og/renderer/Renderer.js → renderer/Renderer.ts} +454 -298
  167. package/src/{og/renderer/RendererEvents.js → renderer/RendererEvents.ts} +347 -270
  168. package/src/{og/scene/Axes.js → scene/Axes.ts} +26 -22
  169. package/src/{og/scene/BaseNode.js → scene/BaseNode.ts} +53 -47
  170. package/src/{og/scene/Planet.js → scene/Planet.ts} +777 -595
  171. package/src/{og/scene/RenderNode.js → scene/RenderNode.ts} +105 -91
  172. package/src/{og/scene/SkyBox.js → scene/SkyBox.ts} +29 -25
  173. package/src/scene/index.ts +6 -0
  174. package/src/{og/segment/Segment.js → segment/Segment.ts} +497 -371
  175. package/src/{og/segment/SegmentLonLat.js → segment/SegmentLonLat.ts} +81 -87
  176. package/src/{og/segment/SegmentLonLatWgs84.js → segment/SegmentLonLatWgs84.ts} +9 -16
  177. package/src/{og/segment/Slice.js → segment/Slice.ts} +15 -9
  178. package/src/{og/segment/segmentHelper.js → segment/segmentHelper.ts} +57 -49
  179. package/src/{og/shaders/atmos.js → shaders/atmos.ts} +4 -6
  180. package/src/{og/shaders/billboard.js → shaders/billboard.ts} +3 -5
  181. package/src/{og/shaders/bloom.js → shaders/bloom.ts} +2 -4
  182. package/src/{og/shaders/blur.js → shaders/blur.ts} +4 -7
  183. package/src/{og/shaders/depth.js → shaders/depth.ts} +1 -3
  184. package/src/{og/shaders/drawnode.js → shaders/drawnode.ts} +19 -21
  185. package/src/{og/shaders/geoObject.js → shaders/geoObject.ts} +17 -19
  186. package/src/{og/shaders/label.js → shaders/label.ts} +4 -6
  187. package/src/{og/shaders/lumFilter.js → shaders/lumFilter.ts} +2 -4
  188. package/src/{og/shaders/pickingMask.js → shaders/pickingMask.ts} +2 -4
  189. package/src/{og/shaders/pointCloud.js → shaders/pointCloud.ts} +7 -10
  190. package/src/{og/shaders/polyline.js → shaders/polyline.ts} +3 -200
  191. package/src/{og/shaders/ray.js → shaders/ray.ts} +2 -4
  192. package/src/{og/shaders/screenFrame.js → shaders/screenFrame.ts} +2 -4
  193. package/src/{og/shaders/skybox.js → shaders/skybox.ts} +7 -9
  194. package/src/{og/shaders/toneMapping.js → shaders/toneMapping.ts} +2 -4
  195. package/src/{og/shaders/utils.js → shaders/utils.ts} +0 -2
  196. package/src/{og/terrain/BilTerrain.js → terrain/BilTerrain.ts} +38 -32
  197. package/src/terrain/EmptyTerrain.ts +230 -0
  198. package/src/{og/terrain/Geoid.js → terrain/Geoid.ts} +67 -41
  199. package/src/{og/terrain/GlobusTerrain.js → terrain/GlobusTerrain.ts} +159 -153
  200. package/src/{og/terrain/MapboxTerrain.js → terrain/MapboxTerrain.ts} +58 -61
  201. package/src/terrain/index.ts +6 -0
  202. package/src/ui/Button.ts +121 -0
  203. package/src/ui/ButtonGroup.ts +63 -0
  204. package/src/ui/Dialog.ts +244 -0
  205. package/src/ui/Slider.ts +188 -0
  206. package/src/ui/ToggleButton.ts +68 -0
  207. package/src/{og/ui/View.js → ui/View.ts} +66 -59
  208. package/src/utils/BaseWorker.ts +60 -0
  209. package/src/utils/FontAtlas.ts +356 -0
  210. package/src/{og/utils/GeoImageCreator.js → utils/GeoImageCreator.ts} +45 -29
  211. package/src/{og/utils/ImagesCacheManager.js → utils/ImagesCacheManager.ts} +85 -70
  212. package/src/utils/Loader.ts +247 -0
  213. package/src/{og/utils/NormalMapCreator.js → utils/NormalMapCreator.ts} +114 -77
  214. package/src/{og/utils/PlainSegmentWorker.js → utils/PlainSegmentWorker.ts} +41 -24
  215. package/src/{og/utils/TerrainWorker.js → utils/TerrainWorker.ts} +51 -36
  216. package/src/utils/TextureAtlas.ts +322 -0
  217. package/src/{og/utils/VectorTileCreator.js → utils/VectorTileCreator.ts} +67 -52
  218. package/src/{og/utils/colorTable.js → utils/colorTable.ts} +142 -144
  219. package/src/{og/utils/earcut.js → utils/earcut.ts} +664 -661
  220. package/src/{og/utils/objParser.js → utils/objParser.ts} +66 -37
  221. package/src/{og/utils/shared.js → utils/shared.ts} +267 -206
  222. package/src/utils/units.ts +78 -0
  223. package/src/webgl/BaseFramebuffer.ts +125 -0
  224. package/src/webgl/Framebuffer.ts +206 -0
  225. package/src/webgl/Handler.ts +1414 -0
  226. package/src/webgl/Multisample.ts +153 -0
  227. package/src/webgl/Program.ts +451 -0
  228. package/src/{og/webgl/ProgramController.js → webgl/ProgramController.ts} +44 -43
  229. package/src/webgl/index.ts +13 -0
  230. package/src/{og/webgl/types.js → webgl/types.ts} +29 -31
  231. package/src/webgl/variableHandlers.ts +114 -0
  232. package/src/og/Deferred.js +0 -11
  233. package/src/og/Events.js +0 -185
  234. package/src/og/Globe.js +0 -342
  235. package/src/og/Lock.js +0 -44
  236. package/src/og/Popup.js +0 -187
  237. package/src/og/Stack.js +0 -49
  238. package/src/og/bv/index.js +0 -4
  239. package/src/og/camera/index.js +0 -4
  240. package/src/og/control/EarthCoordinates.js +0 -214
  241. package/src/og/control/EarthNavigation.js +0 -258
  242. package/src/og/control/KeyboardNavigation.js +0 -149
  243. package/src/og/control/LayerSwitcher.js +0 -424
  244. package/src/og/control/MouseNavigation.js +0 -436
  245. package/src/og/control/MouseWheelZoomControl.js +0 -253
  246. package/src/og/control/ScaleControl.js +0 -119
  247. package/src/og/control/SegmentBoundVisualization.js +0 -54
  248. package/src/og/control/ShowFps.js +0 -40
  249. package/src/og/control/SimpleNavigation.js +0 -123
  250. package/src/og/control/ToggleWireframe.js +0 -35
  251. package/src/og/control/TouchNavigation.js +0 -350
  252. package/src/og/control/ZoomControl.js +0 -115
  253. package/src/og/control/drawing/DrawingControl.js +0 -51
  254. package/src/og/control/heightRuler/HeightRuler.js +0 -12
  255. package/src/og/control/index.js +0 -56
  256. package/src/og/control/ruler/Ruler.js +0 -39
  257. package/src/og/ellipsoid/index.js +0 -4
  258. package/src/og/entity/BillboardHandler.js +0 -883
  259. package/src/og/entity/Geometry.js +0 -320
  260. package/src/og/entity/PointCloudHandler.js +0 -122
  261. package/src/og/entity/index.js +0 -9
  262. package/src/og/index.js +0 -112
  263. package/src/og/input/KeyboardHandler.js +0 -128
  264. package/src/og/input/TouchHandler.js +0 -59
  265. package/src/og/layer/GeoTexture2d.js +0 -50
  266. package/src/og/layer/index.js +0 -11
  267. package/src/og/math/index.js +0 -23
  268. package/src/og/quadTree/EntityCollectionNode.js +0 -391
  269. package/src/og/quadTree/Wgs84QuadTreeStrategy.js +0 -27
  270. package/src/og/quadTree/index.js +0 -14
  271. package/src/og/res/images.js +0 -8
  272. package/src/og/scene/index.js +0 -5
  273. package/src/og/terrain/EmptyTerrain.js +0 -174
  274. package/src/og/terrain/index.js +0 -6
  275. package/src/og/ui/Button.js +0 -107
  276. package/src/og/ui/ButtonGroup.js +0 -57
  277. package/src/og/ui/Dialog.js +0 -239
  278. package/src/og/ui/Slider.js +0 -170
  279. package/src/og/ui/ToggleButton.js +0 -51
  280. package/src/og/ui/UIhelpers.js +0 -155
  281. package/src/og/utils/BaseWorker.js +0 -46
  282. package/src/og/utils/FontAtlas.js +0 -218
  283. package/src/og/utils/Loader.js +0 -188
  284. package/src/og/utils/TextureAtlas.js +0 -291
  285. package/src/og/utils/functionComposition.js +0 -13
  286. package/src/og/utils/units.js +0 -78
  287. package/src/og/webgl/Framebuffer.js +0 -311
  288. package/src/og/webgl/Handler.js +0 -1168
  289. package/src/og/webgl/Multisample.js +0 -275
  290. package/src/og/webgl/Program.js +0 -407
  291. package/src/og/webgl/callbacks.js +0 -98
  292. package/src/og/webgl/index.js +0 -13
  293. package/src/og.jsdoc +0 -3
  294. package/types/Clock.d.ts +0 -99
  295. package/types/Deferred.d.ts +0 -6
  296. package/types/Events.d.ts +0 -78
  297. package/types/Extent.d.ts +0 -166
  298. package/types/Globe.d.ts +0 -108
  299. package/types/ImageCanvas.d.ts +0 -128
  300. package/types/Lock.d.ts +0 -12
  301. package/types/LonLat.d.ts +0 -127
  302. package/types/Object3d.d.ts +0 -35
  303. package/types/Popup.d.ts +0 -29
  304. package/types/QueueArray.d.ts +0 -19
  305. package/types/Rectangle.d.ts +0 -80
  306. package/types/Stack.d.ts +0 -19
  307. package/types/arial.d.ts +0 -49
  308. package/types/astro/astro.d.ts +0 -38
  309. package/types/astro/earth.d.ts +0 -7
  310. package/types/astro/jd.d.ts +0 -254
  311. package/types/bv/Box.d.ts +0 -30
  312. package/types/bv/Sphere.d.ts +0 -38
  313. package/types/bv/index.d.ts +0 -3
  314. package/types/camera/Camera.d.ts +0 -314
  315. package/types/camera/Frustum.d.ts +0 -133
  316. package/types/camera/PlanetCamera.d.ts +0 -219
  317. package/types/camera/index.d.ts +0 -3
  318. package/types/cons.d.ts +0 -40
  319. package/types/control/Atmosphere.d.ts +0 -15
  320. package/types/control/CompassButton.d.ts +0 -16
  321. package/types/control/Control.d.ts +0 -104
  322. package/types/control/DebugInfo.d.ts +0 -19
  323. package/types/control/DrawingSwitcher.d.ts +0 -13
  324. package/types/control/EarthCoordinates.d.ts +0 -44
  325. package/types/control/EarthNavigation.d.ts +0 -43
  326. package/types/control/GeoImageDragControl.d.ts +0 -14
  327. package/types/control/KeyboardNavigation.d.ts +0 -24
  328. package/types/control/LayerAnimation.d.ts +0 -73
  329. package/types/control/LayerSwitcher.d.ts +0 -64
  330. package/types/control/Lighting.d.ts +0 -41
  331. package/types/control/MouseNavigation.d.ts +0 -49
  332. package/types/control/MouseWheelZoomControl.d.ts +0 -46
  333. package/types/control/ScaleControl.d.ts +0 -23
  334. package/types/control/ShowFps.d.ts +0 -11
  335. package/types/control/SimpleNavigation.d.ts +0 -26
  336. package/types/control/SimpleSkyBackground.d.ts +0 -15
  337. package/types/control/Sun.d.ts +0 -53
  338. package/types/control/ToggleWireframe.d.ts +0 -12
  339. package/types/control/TouchNavigation.d.ts +0 -54
  340. package/types/control/ZoomControl.d.ts +0 -26
  341. package/types/control/drawing/DrawingControl.d.ts +0 -14
  342. package/types/control/drawing/LineStringDrawingScene.d.ts +0 -5
  343. package/types/control/drawing/PolygonDrawingScene.d.ts +0 -99
  344. package/types/control/heightRuler/HeightRuler.d.ts +0 -6
  345. package/types/control/heightRuler/HeightRulerScene.d.ts +0 -23
  346. package/types/control/index.d.ts +0 -27
  347. package/types/control/ruler/Ruler.d.ts +0 -13
  348. package/types/control/ruler/RulerScene.d.ts +0 -51
  349. package/types/control/selection/Selection.d.ts +0 -49
  350. package/types/control/selection/SelectionScene.d.ts +0 -32
  351. package/types/control/timeline/TimelineControl.d.ts +0 -10
  352. package/types/control/timeline/TimelineModel.d.ts +0 -33
  353. package/types/control/timeline/TimelineView.d.ts +0 -57
  354. package/types/control/timeline/timelineUtils.d.ts +0 -9
  355. package/types/ellipsoid/Ellipsoid.d.ts +0 -170
  356. package/types/ellipsoid/index.d.ts +0 -3
  357. package/types/ellipsoid/wgs84.d.ts +0 -6
  358. package/types/entity/BaseBillboard.d.ts +0 -215
  359. package/types/entity/Billboard.d.ts +0 -94
  360. package/types/entity/BillboardHandler.d.ts +0 -75
  361. package/types/entity/Entity.d.ts +0 -340
  362. package/types/entity/EntityCollection.d.ts +0 -303
  363. package/types/entity/GeoObject.d.ts +0 -117
  364. package/types/entity/GeoObjectHandler.d.ts +0 -41
  365. package/types/entity/Geometry.d.ts +0 -79
  366. package/types/entity/GeometryHandler.d.ts +0 -76
  367. package/types/entity/Label.d.ts +0 -190
  368. package/types/entity/LabelHandler.d.ts +0 -31
  369. package/types/entity/LabelWorker.d.ts +0 -9
  370. package/types/entity/PointCloud.d.ts +0 -174
  371. package/types/entity/PointCloudHandler.d.ts +0 -38
  372. package/types/entity/Polyline.d.ts +0 -307
  373. package/types/entity/PolylineHandler.d.ts +0 -18
  374. package/types/entity/Ray.d.ts +0 -122
  375. package/types/entity/RayHandler.d.ts +0 -63
  376. package/types/entity/Strip.d.ts +0 -119
  377. package/types/entity/StripHandler.d.ts +0 -38
  378. package/types/entity/index.d.ts +0 -8
  379. package/types/index.d.ts +0 -53
  380. package/types/input/KeyboardHandler.d.ts +0 -10
  381. package/types/input/MouseHandler.d.ts +0 -5
  382. package/types/input/TouchHandler.d.ts +0 -5
  383. package/types/input/input.d.ts +0 -42
  384. package/types/layer/BaseGeoImage.d.ts +0 -116
  385. package/types/layer/CanvasTiles.d.ts +0 -73
  386. package/types/layer/GeoImage.d.ts +0 -51
  387. package/types/layer/GeoTexture2d.d.ts +0 -7
  388. package/types/layer/GeoVideo.d.ts +0 -47
  389. package/types/layer/KML.d.ts +0 -93
  390. package/types/layer/Layer.d.ts +0 -320
  391. package/types/layer/Material.d.ts +0 -45
  392. package/types/layer/Vector.d.ts +0 -211
  393. package/types/layer/WMS.d.ts +0 -66
  394. package/types/layer/XYZ.d.ts +0 -122
  395. package/types/layer/index.d.ts +0 -10
  396. package/types/light/LightSource.d.ts +0 -178
  397. package/types/math/Line2.d.ts +0 -11
  398. package/types/math/Line3.d.ts +0 -10
  399. package/types/math/Mat3.d.ts +0 -65
  400. package/types/math/Mat4.d.ts +0 -176
  401. package/types/math/Plane.d.ts +0 -18
  402. package/types/math/Quat.d.ts +0 -379
  403. package/types/math/Ray.d.ts +0 -82
  404. package/types/math/Vec2.d.ts +0 -309
  405. package/types/math/Vec3.d.ts +0 -472
  406. package/types/math/Vec4.d.ts +0 -161
  407. package/types/math/coder.d.ts +0 -43
  408. package/types/math/index.d.ts +0 -11
  409. package/types/math.d.ts +0 -268
  410. package/types/mercator.d.ts +0 -92
  411. package/types/proj/EPSG3857.d.ts +0 -6
  412. package/types/proj/EPSG4326.d.ts +0 -6
  413. package/types/proj/Proj.d.ts +0 -42
  414. package/types/quadTree/EPSG4326QuadTreeStrategy.d.ts +0 -3
  415. package/types/quadTree/EarthQuadTreeStrategy.d.ts +0 -3
  416. package/types/quadTree/EntityCollectionNode.d.ts +0 -41
  417. package/types/quadTree/MarsQuadTreeStrategy.d.ts +0 -3
  418. package/types/quadTree/Node.d.ts +0 -58
  419. package/types/quadTree/QuadTreeStrategy.d.ts +0 -21
  420. package/types/quadTree/Wgs84QuadTreeStrategy.d.ts +0 -3
  421. package/types/quadTree/index.d.ts +0 -12
  422. package/types/quadTree/quadTree.d.ts +0 -40
  423. package/types/renderer/Renderer.d.ts +0 -291
  424. package/types/renderer/RendererEvents.d.ts +0 -255
  425. package/types/res/images.d.ts +0 -2
  426. package/types/scene/Axes.d.ts +0 -10
  427. package/types/scene/BaseNode.d.ts +0 -60
  428. package/types/scene/Planet.d.ts +0 -595
  429. package/types/scene/RenderNode.d.ts +0 -152
  430. package/types/scene/SkyBox.d.ts +0 -9
  431. package/types/scene/index.d.ts +0 -4
  432. package/types/segment/Segment.d.ts +0 -273
  433. package/types/segment/SegmentLonLat.d.ts +0 -22
  434. package/types/segment/SegmentLonLatWgs84.d.ts +0 -4
  435. package/types/segment/Slice.d.ts +0 -10
  436. package/types/segment/segmentHelper.d.ts +0 -13
  437. package/types/shaders/atmos.d.ts +0 -4
  438. package/types/shaders/billboard.d.ts +0 -3
  439. package/types/shaders/depth.d.ts +0 -2
  440. package/types/shaders/drawnode.d.ts +0 -8
  441. package/types/shaders/geoObject.d.ts +0 -3
  442. package/types/shaders/label.d.ts +0 -4
  443. package/types/shaders/pickingMask.d.ts +0 -2
  444. package/types/shaders/pointCloud.d.ts +0 -2
  445. package/types/shaders/polyline.d.ts +0 -3
  446. package/types/shaders/ray.d.ts +0 -2
  447. package/types/shaders/screenFrame.d.ts +0 -2
  448. package/types/shaders/skybox.d.ts +0 -2
  449. package/types/shaders/toneMapping.d.ts +0 -2
  450. package/types/shaders/utils.d.ts +0 -1
  451. package/types/terrain/BilTerrain.d.ts +0 -14
  452. package/types/terrain/EmptyTerrain.d.ts +0 -87
  453. package/types/terrain/Geoid.d.ts +0 -17
  454. package/types/terrain/GlobusTerrain.d.ts +0 -122
  455. package/types/terrain/MapboxTerrain.d.ts +0 -14
  456. package/types/terrain/index.d.ts +0 -5
  457. package/types/ui/Button.d.ts +0 -21
  458. package/types/ui/ButtonGroup.d.ts +0 -12
  459. package/types/ui/Dialog.d.ts +0 -41
  460. package/types/ui/Slider.d.ts +0 -33
  461. package/types/ui/ToggleButton.d.ts +0 -10
  462. package/types/ui/UIhelpers.d.ts +0 -13
  463. package/types/ui/View.d.ts +0 -33
  464. package/types/ui/icons.d.ts +0 -1
  465. package/types/utils/BaseWorker.d.ts +0 -14
  466. package/types/utils/FontAtlas.d.ts +0 -16
  467. package/types/utils/GeoImageCreator.d.ts +0 -30
  468. package/types/utils/ImagesCacheManager.d.ts +0 -10
  469. package/types/utils/Loader.d.ts +0 -31
  470. package/types/utils/NormalMapCreator.d.ts +0 -39
  471. package/types/utils/PlainSegmentWorker.d.ts +0 -8
  472. package/types/utils/TerrainWorker.d.ts +0 -7
  473. package/types/utils/TextureAtlas.d.ts +0 -113
  474. package/types/utils/VectorTileCreator.d.ts +0 -14
  475. package/types/utils/colorTable.d.ts +0 -143
  476. package/types/utils/earcut.d.ts +0 -6
  477. package/types/utils/functionComposition.d.ts +0 -5
  478. package/types/utils/objParser.d.ts +0 -8
  479. package/types/utils/shared.d.ts +0 -241
  480. package/types/utils/units.d.ts +0 -20
  481. package/types/webgl/Framebuffer.d.ts +0 -134
  482. package/types/webgl/Handler.d.ts +0 -403
  483. package/types/webgl/Multisample.d.ts +0 -91
  484. package/types/webgl/Program.d.ts +0 -163
  485. package/types/webgl/ProgramController.d.ts +0 -89
  486. package/types/webgl/callbacks.d.ts +0 -1
  487. package/types/webgl/index.d.ts +0 -6
  488. package/types/webgl/types.d.ts +0 -2
  489. /package/{src/og → dist/@openglobus/res/fonts}/arial.js +0 -0
  490. /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
- "use strict";
6
-
7
- import { Extent } from "../Extent.js";
8
- import { LonLat } from "../LonLat.js";
9
- import { Vec2 } from "../math/Vec2.js";
10
- import { Vec3 } from "../math/Vec3.js";
11
- import { Vec4 } from "../math/Vec4.js";
12
- import { colorTable } from "./colorTable.js";
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
- var stamp = obj._openglobus_id;
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 {math.Vec4} -
53
+ * @returns {Vec4} -
55
54
  */
56
- export function htmlColorToRgba(htmlColor, opacity) {
57
- var hColor = colorTable[htmlColor];
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
- var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
64
- var hex = htmlColor.replace(shorthandRegex, function (m, r, g, b) {
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
- var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
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
- );
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
- var m = htmlColor.split(",");
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
- var hColor = colorTable[htmlColor];
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
- var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
107
- var hex = htmlColor.replace(shorthandRegex, function (m, r, g, b) {
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
- var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
111
- return new Vec3(
112
- parseInt(result[1], 16) / 255,
113
- parseInt(result[2], 16) / 255,
114
- parseInt(result[3], 16) / 255
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
- var m = htmlColor.split(",");
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", substrins);
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
- var p = document.createElement("div");
157
+ export function parseHTML(htmlStr: string): HTMLElement[] {
158
+ let p = document.createElement("div");
153
159
  p.innerHTML = htmlStr;
154
- var domArr = [];
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
- var el = document.getElementById(id);
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 = null) {
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 {Array} ar The sorted array to search.
280
- * @param {Object} el The item to find in the array.
281
- * @param {utils.binarySearch~compare_fn} compare_fn comparator The function to use to compare the item to
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 {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.
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
- var m = 0;
295
- var n = ar.length - 1;
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
- var k = (n + m) >> 1;
298
- var cmp = compare_fn(el, ar[k], k);
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 {Array} ar - The sorted array to insert.
313
- * @param {Object} el - The item to insert.
314
- * @param {utils.binarySearch~compare_fn} compare_fn - comparator The function to use to compare the item to
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 {Number} Array index position in which item inserted in.
324
+ * @returns {number} Array index position in which item inserted in.
317
325
  */
318
- export function binaryInsert(ar, el, compare_fn) {
319
- var i = binarySearch(ar, el, compare_fn);
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 {math.Vec2} start1 - First line first coordinate.
331
- * @param {math.Vec2} end1 - First line second coordinate.
332
- * @param {math.Vec2} start2 - Second line first coordinate.
333
- * @param {math.Vec2} end2 - Second line second coordinate.
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 {math.Vec2} - Intersection coordinate.
343
+ * @return {Vec2} - Intersection coordinate.
336
344
  */
337
- export function getLinesIntersection2v(start1, end1, start2, end2, isSegment) {
338
- var dir1 = end1.sub(start1);
339
- var dir2 = end2.sub(start2);
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
- var a1 = -dir1.y;
342
- var b1 = +dir1.x;
343
- var d1 = -(a1 * start1.x + b1 * start1.y);
349
+ let a1 = -dir1.y;
350
+ let b1 = +dir1.x;
351
+ let d1 = -(a1 * start1.x + b1 * start1.y);
344
352
 
345
- var a2 = -dir2.y;
346
- var b2 = +dir2.x;
347
- var d2 = -(a2 * start2.x + b2 * start2.y);
353
+ let a2 = -dir2.y;
354
+ let b2 = +dir2.x;
355
+ let d2 = -(a2 * start2.x + b2 * start2.y);
348
356
 
349
- var seg1_line2_start = a2 * start1.x + b2 * start1.y + d2;
350
- var seg1_line2_end = a2 * end1.x + b2 * end1.y + d2;
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
- var seg2_line1_start = a1 * start2.x + b1 * start2.y + d1;
353
- var seg2_line1_end = a1 * end2.x + b1 * end2.y + d1;
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 null;
367
+ return undefined;
360
368
  }
361
369
 
362
- var u = seg1_line2_start / (seg1_line2_start - seg1_line2_end);
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 {math.Vec2} start1 - First line first coordinate.
371
- * @param {math.Vec2} end1 - First line second coordinate.
372
- * @param {math.Vec2} start2 - Second line first coordinate.
373
- * @param {math.Vec2} end2 - Second line second coordinate.
374
- * @param {boolean} [isSegment] - Lines are segments.
375
- * @return {math.Vec2} - Intersection coordinate.
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
- var dir1 = new LonLat(end1.lon - start1.lon, end1.lat - start1.lat);
379
- var dir2 = new LonLat(end2.lon - start2.lon, end2.lat - start2.lat);
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
- var a1 = -dir1.lat;
382
- var b1 = +dir1.lon;
383
- var d1 = -(a1 * start1.lon + b1 * start1.lat);
389
+ let a1 = -dir1.lat;
390
+ let b1 = +dir1.lon;
391
+ let d1 = -(a1 * start1.lon + b1 * start1.lat);
384
392
 
385
- var a2 = -dir2.lat;
386
- var b2 = +dir2.lon;
387
- var d2 = -(a2 * start2.lon + b2 * start2.lat);
393
+ let a2 = -dir2.lat;
394
+ let b2 = +dir2.lon;
395
+ let d2 = -(a2 * start2.lon + b2 * start2.lat);
388
396
 
389
- var seg1_line2_start = a2 * start1.lon + b2 * start1.lat + d2;
390
- var seg1_line2_end = a2 * end1.lon + b2 * end1.lat + d2;
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
- var seg2_line1_start = a1 * start2.lon + b1 * start2.lat + d1;
393
- var seg2_line1_end = a1 * end2.lon + b1 * end2.lat + d1;
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 null;
407
+ return undefined;
400
408
  }
401
409
 
402
- var u = seg1_line2_start / (seg1_line2_start - seg1_line2_end);
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
- var obj = {};
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
- var attribute = xml.attributes.item(j);
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
- var item = xml.childNodes.item(i);
436
- var nodeName = item.nodeName;
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
- var old = obj[nodeName];
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
- contentType = contentType || "";
508
- var sliceSize = 1024;
509
- var byteCharacters = atob(base64Data);
510
- var bytesLength = byteCharacters.length;
511
- var slicesCount = Math.ceil(bytesLength / sliceSize);
512
- var byteArrays = new Array(slicesCount);
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
- var bytes = new Array(end - begin);
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, { type: contentType });
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(context, args);
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(function () {
593
+ lastFunc = setTimeout(() => {
584
594
  if (Date.now() - lastRan >= limit) {
585
- func.apply(context, args);
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(x, y, fQ11, fQ21, fQ12, fQ22, x1 = 0.0, x2 = 1.0, y1 = 0.0, y2 = 1.0) {
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
- var c = new a.constructor(a.length + b.length);
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 | Array} a
748
- * @param {TypedArray | Array} b
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 {Array}
764
- * @param ctor {Float32ArrayConstructor}
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 {Array}
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 {Object} outArr
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 {Array} outArr
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 {Array.<number>} sourceArr - Source array
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{Array.<number>} Triangle coordinates array from the source array.
872
+ * @return {Float64Array} Triangle coordinates array from the source array.
851
873
  * @TODO: optimization
852
874
  */
853
- export function getMatrixSubArray(sourceArr, gridSize, i0, j0, size) {
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
- var res = new Float64Array(size_1 * size_1 * 3);
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
- var ind = 3 * (i * (gridSize + 1) + j);
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
- var vInd = 0,
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) {