@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
@@ -1,17 +1,33 @@
1
- "use strict";
2
-
3
1
  // import { QueueArray } from '../QueueArray.js';
4
- import { EPSG4326 } from "../proj/EPSG4326.js";
5
- import { BaseWorker } from "./BaseWorker.js";
2
+ import {EPSG4326} from "../proj/EPSG4326";
3
+ import {BaseWorker} from "./BaseWorker";
4
+ import {Segment} from "../segment/Segment";
5
+ import {Geoid} from "../terrain/Geoid";
6
+
7
+ export interface IPlainSegmentWorkerData {
8
+ plainVertices: Float64Array | null;
9
+ plainVerticesHigh: Float32Array | null;
10
+ plainVerticesLow: Float32Array | null;
11
+ plainNormals: Float32Array | null;
12
+ plainRadius: number;
13
+
14
+ normalMapNormals: Float32Array | null;
15
+ normalMapVertices: Float64Array | null;
16
+ normalMapVerticesHigh: Float32Array | null;
17
+ normalMapVerticesLow: Float32Array | null;
18
+ }
19
+
20
+ type MessageEventExt = MessageEvent & {
21
+ data: IPlainSegmentWorkerData
22
+ }
6
23
 
7
- class PlainSegmentWorker extends BaseWorker {
8
- constructor(numWorkers = 2) {
9
- super(numWorkers, _programm);
10
- this._segments = new Map();
24
+ class PlainSegmentWorker extends BaseWorker<Segment> {
25
+ constructor(numWorkers: number = 2) {
26
+ super(numWorkers, PLAIN_SEGMENT_PROGRAM);
11
27
  }
12
28
 
13
- _onMessage(e) {
14
- this._segments.get(e.data.id)._plainSegmentWorkerCallback(e.data);
29
+ protected override _onMessage(e: MessageEventExt) {
30
+ this._source.get(e.data.id)!._plainSegmentWorkerCallback(e.data);
15
31
 
16
32
  e.data.plainVertices = null;
17
33
  e.data.plainVerticesHigh = null;
@@ -22,16 +38,14 @@ class PlainSegmentWorker extends BaseWorker {
22
38
  e.data.normalMapVerticesHigh = null;
23
39
  e.data.normalMapVerticesLow = null;
24
40
 
25
- this._segments.delete(e.data.id)
41
+ this._source.delete(e.data.id)
26
42
  }
27
43
 
28
- setGeoid(geoid) {
29
-
30
- let model = null;
44
+ public setGeoid(geoid: Geoid) {
31
45
 
32
46
  if (geoid.model) {
33
47
  let m = geoid.model;
34
- model = {
48
+ let model = {
35
49
  scale: m.scale,
36
50
  offset: m.offset,
37
51
  width: m.width,
@@ -62,30 +76,33 @@ class PlainSegmentWorker extends BaseWorker {
62
76
  }
63
77
  }
64
78
 
65
- make(segment) {
79
+ public override make(segment: Segment) {
66
80
  if (segment.initialized) {
67
81
  if (this._workerQueue.length) {
68
- let w = this._workerQueue.pop();
82
+ let w = this._workerQueue.pop()!;
69
83
 
70
- this._segments.set(this._id, segment);
84
+ this._source.set(this._sourceId, segment);
71
85
 
72
86
  let params = new Float64Array([
73
- this._id++,
87
+ this._sourceId,
74
88
  segment._projection.id === EPSG4326.id ? 1.0 : 0.0,
75
- segment.planet.terrain.gridSizeByZoom[segment.tileZoom],
76
- segment.planet.terrain.plainGridSize,
89
+ segment.planet.terrain!.gridSizeByZoom[segment.tileZoom],
90
+ segment.planet.terrain!.plainGridSize,
77
91
  segment._extent.southWest.lon,
78
92
  segment._extent.southWest.lat,
79
93
  segment._extent.northEast.lon,
80
94
  segment._extent.northEast.lat,
95
+ // @ts-ignore
81
96
  segment.planet.ellipsoid._e2,
82
- segment.planet.ellipsoid._a,
97
+ segment.planet.ellipsoid.equatorialSize,
83
98
  segment.planet.ellipsoid._invRadii2.x,
84
99
  segment.planet.ellipsoid._invRadii2.y,
85
100
  segment.planet.ellipsoid._invRadii2.z,
86
101
  segment.planet._heightFactor
87
102
  ]);
88
103
 
104
+ this._sourceId++;
105
+
89
106
  w.postMessage({
90
107
  params: params
91
108
  }, [
@@ -100,7 +117,7 @@ class PlainSegmentWorker extends BaseWorker {
100
117
  }
101
118
  }
102
119
 
103
- const _programm = `
120
+ const PLAIN_SEGMENT_PROGRAM = `
104
121
  'use strict';
105
122
 
106
123
  let model = null;
@@ -395,4 +412,4 @@ const _programm = `
395
412
  }
396
413
  }`;
397
414
 
398
- export { PlainSegmentWorker };
415
+ export {PlainSegmentWorker};
@@ -1,18 +1,39 @@
1
- 'use strict';
2
-
3
1
  // import { QueueArray } from '../QueueArray.js';
4
2
 
5
- import { BaseWorker } from "./BaseWorker.js";
3
+ import {BaseWorker} from "./BaseWorker";
4
+ import {Segment} from "../segment/Segment";
5
+ import {NumberArray6} from "../bv/Sphere";
6
+
7
+ interface TerrainInfo {
8
+ segment: Segment;
9
+ elevations: Float32Array;
10
+ }
11
+
12
+ export interface ITerrainWorkerData {
13
+ id: number;
14
+ normalMapNormals: Float32Array | null;
15
+ normalMapVertices: Float64Array | null;
16
+ normalMapVerticesHigh: Float32Array | null;
17
+ normalMapVerticesLow: Float32Array | null;
18
+ terrainVertices: Float64Array | null;
19
+ terrainVerticesHigh: Float32Array | null;
20
+ terrainVerticesLow: Float32Array | null;
21
+ noDataVertices: Uint8Array | null;
22
+ bounds: NumberArray6;
23
+ }
24
+
25
+ type MessageEventExt = MessageEvent & {
26
+ data: ITerrainWorkerData
27
+ }
6
28
 
7
- class TerrainWorker extends BaseWorker {
8
- constructor(numWorkers = 2) {
9
- super(numWorkers, _programm);
10
- this._segments = new Map();
29
+ class TerrainWorker extends BaseWorker<TerrainInfo> {
30
+ constructor(numWorkers: number = 2) {
31
+ super(numWorkers, TERRAIN_PROGRAM);
11
32
  }
12
33
 
13
- _onMessage(e) {
14
- this._segments.get(e.data.id)._terrainWorkerCallback(e.data);
15
- this._segments.delete(e.data.id);
34
+ protected override _onMessage(e: MessageEventExt) {
35
+ this._source.get(e.data.id)!.segment._terrainWorkerCallback(e.data);
36
+ this._source.delete(e.data.id);
16
37
 
17
38
  e.data.normalMapNormals = null;
18
39
  e.data.normalMapVertices = null;
@@ -23,45 +44,39 @@ class TerrainWorker extends BaseWorker {
23
44
  e.data.terrainVerticesLow = null;
24
45
  }
25
46
 
26
- check() {
27
- if (this._pendingQueue.length) {
28
- var p = this._pendingQueue.pop();
29
- this.make(p.segment, p.elevations);
30
- }
31
- }
32
-
33
- make(segment, elevations) {
34
- if (segment.plainReady && segment.terrainIsLoading) {
35
-
36
- var _elevations = new Float32Array(elevations.length);
37
- _elevations.set(elevations);
47
+ public override make(info: TerrainInfo) {
48
+ if (info.segment.plainReady && info.segment.terrainIsLoading) {
38
49
 
39
50
  if (this._workerQueue.length) {
40
51
 
41
- var w = this._workerQueue.pop();
52
+ const w = this._workerQueue.pop()!;
53
+
54
+ this._source.set(this._sourceId, info);
42
55
 
43
- this._segments.set(this._id, segment);
56
+ let segment = info.segment;
44
57
 
45
58
  w.postMessage({
46
- 'elevations': _elevations,
59
+ 'elevations': info.elevations,
47
60
  'this_plainVertices': segment.plainVertices,
48
61
  'this_plainNormals': segment.plainNormals,
49
62
  'this_normalMapVertices': segment.normalMapVertices,
50
63
  'this_normalMapNormals': segment.normalMapNormals,
51
64
  'heightFactor': segment.planet._heightFactor,
52
- 'gridSize': segment.planet.terrain.gridSizeByZoom[segment.tileZoom],
53
- 'noDataValues': segment.planet.terrain.noDataValues,
54
- 'id': this._id++
65
+ 'gridSize': segment.planet.terrain!.gridSizeByZoom[segment.tileZoom],
66
+ 'noDataValues': segment.planet.terrain!.noDataValues,
67
+ 'id': this._sourceId
55
68
  }, [
56
- _elevations.buffer,
57
- segment.plainVertices.buffer,
58
- segment.plainNormals.buffer,
59
- segment.normalMapVertices.buffer,
60
- segment.normalMapNormals.buffer
69
+ info.elevations.buffer,
70
+ segment.plainVertices!.buffer,
71
+ segment.plainNormals!.buffer,
72
+ segment.normalMapVertices!.buffer,
73
+ segment.normalMapNormals!.buffer
61
74
  ]);
62
75
 
76
+ this._sourceId++;
77
+
63
78
  } else {
64
- this._pendingQueue.push({ segment: segment, elevations: _elevations });
79
+ this._pendingQueue.push(info);
65
80
  }
66
81
  } else {
67
82
  this.check();
@@ -69,7 +84,7 @@ class TerrainWorker extends BaseWorker {
69
84
  }
70
85
  }
71
86
 
72
- const _programm =
87
+ const TERRAIN_PROGRAM =
73
88
  `'use strict';
74
89
  //
75
90
  //Terrain worker
@@ -570,4 +585,4 @@ const _programm =
570
585
  ]);
571
586
  }`;
572
587
 
573
- export { TerrainWorker };
588
+ export {TerrainWorker};
@@ -0,0 +1,322 @@
1
+ import {ImageCanvas} from "../ImageCanvas";
2
+ import {Rectangle} from "../Rectangle";
3
+ import {ImagesCacheManager, HTMLImageElementExt, ImagesCacheManagerCallback} from "./ImagesCacheManager";
4
+ import {Handler, WebGLTextureExt} from "../webgl/Handler";
5
+
6
+ /**
7
+ * Texture atlas stores images in one texture. Each image has its own
8
+ * atlas texture coordinates.
9
+ * @class
10
+ * @param {number} [width=1024] - Texture atlas width, if it hasn't 1024 default.
11
+ * @param {number} [height=1024] - Texture atlas height, if it hasn't 1024 default.
12
+ */
13
+ class TextureAtlas {
14
+ /**
15
+ * Atlas nodes where input images store. It can be accessed by image.__nodeIndex.
16
+ * @public
17
+ * @type {Map<number, TextureAtlasNode>}
18
+ */
19
+ public nodes: Map<number, TextureAtlasNode>;
20
+
21
+ /**
22
+ * Created gl texture.
23
+ * @public
24
+ */
25
+ public texture: WebGLTextureExt | null;
26
+
27
+ /**
28
+ * Atlas canvas.
29
+ * @public
30
+ * @type {ImageCanvas}
31
+ */
32
+ public canvas: ImageCanvas;
33
+
34
+ public borderSize: number;
35
+
36
+ protected _handler: Handler | null;
37
+ protected _images: HTMLImageElementExt[];
38
+ protected _btree: TextureAtlasNode | null;
39
+ protected _imagesCacheManager: ImagesCacheManager;
40
+
41
+ constructor(width: number = 1024, height: number = 1024) {
42
+
43
+ this.nodes = new Map<number, TextureAtlasNode>();
44
+
45
+ this.texture = null;
46
+
47
+ this.canvas = new ImageCanvas(width, height);
48
+
49
+ this.clearCanvas();
50
+
51
+ this._handler = null;
52
+
53
+ this._images = [];
54
+
55
+ this._btree = null;
56
+
57
+ this._imagesCacheManager = new ImagesCacheManager();
58
+
59
+ this.borderSize = 4;
60
+ }
61
+
62
+ /**
63
+ * Returns atlas javascript image object.
64
+ * @public
65
+ * @returns {HTMLImageElement} -
66
+ */
67
+ public getImage() {
68
+ return this.canvas.getImage();
69
+ }
70
+
71
+ /**
72
+ * Returns canvas object.
73
+ * @public
74
+ * @returns {HTMLCanvasElement} -
75
+ */
76
+ public getCanvas(): HTMLCanvasElement {
77
+ return this.canvas.getCanvas();
78
+ }
79
+
80
+ /**
81
+ * Clear atlas with black.
82
+ * @public
83
+ */
84
+ public clearCanvas() {
85
+ this.canvas.fillEmpty();
86
+ }
87
+
88
+ /**
89
+ * Sets openglobus gl handler that creates gl texture.
90
+ * @public
91
+ * @param {Handler} handler - WebGL handler.
92
+ */
93
+ public assignHandler(handler: Handler) {
94
+ this._handler = handler;
95
+ this.createTexture();
96
+ }
97
+
98
+ /**
99
+ * Returns image diagonal size.
100
+ * @param {HTMLImageElementExt} image - Image object.
101
+ * @returns {number} -
102
+ */
103
+ public getDiagonal(image: HTMLImageElementExt): number {
104
+ let w = image.atlasWidth || image.width,
105
+ h = image.atlasHeight || image.height;
106
+ return Math.sqrt(w * w + h * h);
107
+ }
108
+
109
+ /**
110
+ * Adds image to the atlas and returns created node with texture coordinates of the stored image.
111
+ * @public
112
+ * @param {HTMLImageElementExt} image - Input javascript image object.
113
+ * @param {boolean} [fastInsert] - If it's true atlas doesn't restore all images again
114
+ * and store image in the current atlas scheme.
115
+ * @returns {TextureAtlasNode | undefined} -
116
+ */
117
+ public addImage(image: HTMLImageElementExt, fastInsert: boolean = false): TextureAtlasNode | undefined {
118
+ if (!(image.width && image.height)) {
119
+ return;
120
+ }
121
+
122
+ this._images.push(image);
123
+
124
+ this._makeAtlas(fastInsert);
125
+
126
+ if (image.__nodeIndex != undefined) {
127
+ return this.get(image.__nodeIndex);
128
+ }
129
+ }
130
+
131
+ protected _completeNode(nodes: Map<number, TextureAtlasNode>, node?: TextureAtlasNode | null) {
132
+ if (node) {
133
+
134
+ let w = this.canvas.getWidth(),
135
+ h = this.canvas.getHeight();
136
+
137
+ let im = node.image!;
138
+ let r = node.rect;
139
+ let bs = Math.round(this.borderSize * 0.5);
140
+ this.canvas.drawImage(im, r.left + bs, r.top + bs, im.atlasWidth || 0, im.atlasHeight || 0);
141
+
142
+ let tc = node.texCoords;
143
+
144
+ tc[0] = (r.left + bs) / w;
145
+ tc[1] = (r.top + bs) / h;
146
+
147
+ tc[2] = (r.left + bs) / w;
148
+ tc[3] = (r.bottom - bs) / h;
149
+
150
+ tc[4] = (r.right - bs) / w;
151
+ tc[5] = (r.bottom - bs) / h;
152
+
153
+ tc[6] = (r.right - bs) / w;
154
+ tc[7] = (r.bottom - bs) / h;
155
+
156
+ tc[8] = (r.right - bs) / w;
157
+ tc[9] = (r.top + bs) / h;
158
+
159
+ tc[10] = (r.left + bs) / w;
160
+ tc[11] = (r.top + bs) / h;
161
+
162
+ nodes.set(im.__nodeIndex!, node);
163
+ }
164
+ }
165
+
166
+ /**
167
+ * Main atlas making function.
168
+ * @protected
169
+ * @param {boolean} [fastInsert] - If it's true atlas doesn't restore all images again
170
+ * and store image in the current atlas scheme.
171
+ */
172
+ protected _makeAtlas(fastInsert: boolean = false) {
173
+ if (fastInsert && this._btree) {
174
+ let im = this._images[this._images.length - 1];
175
+ this._completeNode(this.nodes, this._btree.insert(im));
176
+ } else {
177
+ let im = this._images.slice(0);
178
+
179
+ im.sort(function (b: HTMLImageElementExt, a: HTMLImageElementExt) {
180
+ return (
181
+ (a.atlasWidth || a.width) - (b.atlasWidth || b.width) ||
182
+ (a.atlasHeight || a.height) - (b.atlasHeight || b.height)
183
+ );
184
+ });
185
+
186
+ this._btree = new TextureAtlasNode(
187
+ new Rectangle(0, 0, this.canvas.getWidth(), this.canvas.getHeight())
188
+ );
189
+ this._btree.atlas = this;
190
+
191
+ this.clearCanvas();
192
+
193
+ let newNodes = new Map<number, TextureAtlasNode>();
194
+ for (let i = 0; i < im.length; i++) {
195
+ this._completeNode(newNodes, this._btree.insert(im[i]));
196
+ }
197
+ //@ts-ignore
198
+ this.nodes = null;
199
+ this.nodes = newNodes;
200
+ }
201
+ }
202
+
203
+ public get(key: number): TextureAtlasNode | undefined {
204
+ return this.nodes.get(key);
205
+ }
206
+
207
+ public set(key: number, value: TextureAtlasNode) {
208
+ this.nodes.set(key, value);
209
+ }
210
+
211
+ /**
212
+ * Creates atlas gl texture.
213
+ * @public
214
+ */
215
+ public createTexture(img?: HTMLImageElement | null, internalFormat?: number) {
216
+ if (this._handler) {
217
+ this._handler.gl!.deleteTexture(this.texture!);
218
+ if (img) {
219
+ this.canvas.resize(img.width, img.height);
220
+ this.canvas.drawImage(img, 0, 0, img.width, img.height);
221
+ }
222
+ this.texture = this._handler.createTexture_l(this.canvas.getCanvas(), internalFormat)!;
223
+ }
224
+ }
225
+
226
+ /**
227
+ * Asynchronous function that loads and creates image to the image cache, and call success callback when it's done.
228
+ * @public
229
+ * @param {string} src - Image object src string.
230
+ * @param {ImagesCacheManagerCallback} success - The callback that handles the image loads done.
231
+ */
232
+ public loadImage(src: string, success: ImagesCacheManagerCallback) {
233
+ this._imagesCacheManager.load(src, success);
234
+ }
235
+
236
+ public getImageTexCoordinates(img: HTMLImageElementExt): number[] | undefined {
237
+ if (img.__nodeIndex != null) {
238
+ let n = this.get(img.__nodeIndex);
239
+ if (n) {
240
+ return n.texCoords;
241
+ }
242
+ }
243
+ }
244
+ }
245
+
246
+ /**
247
+ * Atlas binary tree node.
248
+ * @class
249
+ * @param {Rectangle} rect - Node image rectangle.
250
+ * @param {number[]} texCoords - Node image rectangle.
251
+ */
252
+ class TextureAtlasNode {
253
+ public childNodes: TextureAtlasNode[] | null;
254
+ public image: HTMLImageElementExt | null;
255
+ public rect: Rectangle;
256
+ public texCoords: number[];
257
+ public atlas: TextureAtlas | null;
258
+
259
+ constructor(rect?: Rectangle, texCoords?: number[]) {
260
+ this.childNodes = null;
261
+ this.image = null;
262
+ this.rect = rect || new Rectangle();
263
+ this.texCoords = texCoords || [];
264
+ this.atlas = null;
265
+ }
266
+
267
+ public insert(img: HTMLImageElementExt): TextureAtlasNode | undefined {
268
+ if (this.childNodes) {
269
+ let newNode = this.childNodes[0].insert(img);
270
+
271
+ if (newNode) {
272
+ return newNode;
273
+ }
274
+
275
+ return this.childNodes[1].insert(img);
276
+ } else {
277
+ if (this.image != null) {
278
+ return;
279
+ }
280
+
281
+ let rc = this.rect;
282
+ const w = (img.atlasWidth || img.width) + this.atlas!.borderSize;
283
+ const h = (img.atlasHeight || img.height) + this.atlas!.borderSize;
284
+
285
+ if (w > rc.getWidth() || h > rc.getHeight()) {
286
+ return;
287
+ }
288
+
289
+ if (rc.fit(w, h)) {
290
+ this.image = img;
291
+ return this;
292
+ }
293
+
294
+ this.childNodes = new Array(2);
295
+ this.childNodes[0] = new TextureAtlasNode();
296
+ this.childNodes[0].atlas = this.atlas;
297
+ this.childNodes[1] = new TextureAtlasNode();
298
+ this.childNodes[1].atlas = this.atlas;
299
+
300
+ const dw = rc.getWidth() - w;
301
+ const dh = rc.getHeight() - h;
302
+
303
+ if (dw > dh) {
304
+ // this.childNodes[0].rect = new Rectangle(rc.left, rc.top, rc.left + w, rc.bottom);
305
+ // this.childNodes[1].rect = new Rectangle(rc.left + w, rc.top, rc.right, rc.bottom);
306
+ this.childNodes[0].rect.set(rc.left, rc.top, rc.left + w, rc.bottom);
307
+ this.childNodes[1].rect.set(rc.left + w, rc.top, rc.right, rc.bottom);
308
+
309
+ } else {
310
+ // this.childNodes[0].rect = new Rectangle(rc.left, rc.top, rc.right, rc.top + h);
311
+ // this.childNodes[1].rect = new Rectangle(rc.left, rc.top + h, rc.right, rc.bottom);
312
+ this.childNodes[0].rect.set(rc.left, rc.top, rc.right, rc.top + h);
313
+ this.childNodes[1].rect.set(rc.left, rc.top + h, rc.right, rc.bottom);
314
+
315
+ }
316
+
317
+ return this.childNodes[0].insert(img);
318
+ }
319
+ }
320
+ }
321
+
322
+ export {TextureAtlas, TextureAtlasNode};