@openglobus/og 0.13.7 → 0.13.10

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 (106) hide show
  1. package/README.md +1 -1
  2. package/css/og.css +388 -129
  3. package/dist/@openglobus/og.css +1 -1
  4. package/dist/@openglobus/og.esm.js +2 -2
  5. package/dist/@openglobus/og.esm.js.map +1 -1
  6. package/dist/@openglobus/og.umd.js +2 -2
  7. package/dist/@openglobus/og.umd.js.map +1 -1
  8. package/package.json +20 -19
  9. package/src/og/Globe.js +15 -16
  10. package/src/og/Object3d.js +417 -0
  11. package/src/og/arial.js +1705 -1703
  12. package/src/og/camera/Camera.js +640 -640
  13. package/src/og/control/EarthCoordinates.js +1 -1
  14. package/src/og/control/GeoImageDragControl.js +102 -75
  15. package/src/og/control/LayerAnimation.js +383 -0
  16. package/src/og/control/LayerSwitcher.js +506 -159
  17. package/src/og/control/Lighting.js +27 -27
  18. package/src/og/control/MouseNavigation.js +460 -460
  19. package/src/og/control/RulerSwitcher.js +69 -0
  20. package/src/og/control/Sun.js +170 -170
  21. package/src/og/control/UIhelpers.js +146 -0
  22. package/src/og/control/ZoomControl.js +0 -2
  23. package/src/og/control/index.js +5 -1
  24. package/src/og/control/ruler/Ruler.js +43 -0
  25. package/src/og/control/ruler/RulerScene.js +374 -0
  26. package/src/og/control/visibleExtent/Segment.js +3 -5
  27. package/src/og/ellipsoid/Ellipsoid.js +19 -0
  28. package/src/og/ellipsoid/wgs84.js +1 -1
  29. package/src/og/entity/Entity.js +1 -1
  30. package/src/og/entity/GeoObject.js +1 -1
  31. package/src/og/entity/LabelHandler.js +6 -2
  32. package/src/og/entity/LabelWorker.js +38 -53
  33. package/src/og/layer/BaseGeoImage.js +347 -312
  34. package/src/og/layer/CanvasTiles.js +312 -290
  35. package/src/og/layer/GeoImage.js +222 -214
  36. package/src/og/layer/GeoVideo.js +291 -291
  37. package/src/og/layer/Layer.js +94 -70
  38. package/src/og/layer/Material.js +109 -109
  39. package/src/og/layer/Vector.js +81 -14
  40. package/src/og/layer/XYZ.js +23 -11
  41. package/src/og/light/LightSource.js +364 -363
  42. package/src/og/math/Vec3.js +1 -1
  43. package/src/og/math.js +6 -6
  44. package/src/og/quadTree/Node.js +8 -6
  45. package/src/og/renderer/Renderer.js +2 -3
  46. package/src/og/res/images.js +0 -2
  47. package/src/og/scene/Planet.js +106 -44
  48. package/src/og/segment/Segment.js +34 -64
  49. package/src/og/segment/Slice.js +1 -1
  50. package/src/og/shaders/drawnode.js +1 -1
  51. package/src/og/shaders/label.js +30 -42
  52. package/src/og/terrain/GlobusTerrain.js +31 -20
  53. package/src/og/terrain/MapboxTerrain.js +1 -1
  54. package/src/og/utils/BaseWorker.js +46 -0
  55. package/src/og/utils/FontAtlas.js +1 -2
  56. package/src/og/utils/GeoImageCreator.js +164 -161
  57. package/src/og/utils/Loader.js +187 -153
  58. package/src/og/utils/NormalMapCreator.js +403 -412
  59. package/src/og/utils/PlainSegmentWorker.js +29 -55
  60. package/src/og/utils/TerrainWorker.js +572 -589
  61. package/src/og/utils/VectorTileCreator.js +1 -1
  62. package/src/og/utils/functionComposition.js +13 -0
  63. package/src/og/webgl/Handler.js +42 -41
  64. package/src/og/webgl/ProgramController.js +143 -143
  65. package/types/Object3d.d.ts +22 -0
  66. package/types/arial.d.ts +1 -0
  67. package/types/camera/PlanetCamera.d.ts +4 -0
  68. package/types/control/GeoImageDragControl.d.ts +2 -0
  69. package/types/control/LayerAnimation.d.ts +73 -0
  70. package/types/control/LayerSwitcher.d.ts +55 -11
  71. package/types/control/MouseNavigation.d.ts +1 -0
  72. package/types/control/MouseWheelZoomControl.d.ts +1 -0
  73. package/types/control/Sun.d.ts +2 -1
  74. package/types/control/TouchNavigation.d.ts +1 -0
  75. package/types/control/UIhelpers.d.ts +13 -0
  76. package/types/control/index.d.ts +3 -1
  77. package/types/control/ruler/Ruler.d.ts +13 -0
  78. package/types/control/ruler/RulerScene.d.ts +48 -0
  79. package/types/ellipsoid/Ellipsoid.d.ts +8 -0
  80. package/types/entity/LabelHandler.d.ts +2 -0
  81. package/types/entity/LabelWorker.d.ts +5 -7
  82. package/types/layer/BaseGeoImage.d.ts +9 -1
  83. package/types/layer/CanvasTiles.d.ts +5 -1
  84. package/types/layer/GeoImage.d.ts +1 -0
  85. package/types/layer/GeoTexture2d.d.ts +1 -0
  86. package/types/layer/Layer.d.ts +28 -32
  87. package/types/layer/Vector.d.ts +9 -0
  88. package/types/layer/WMS.d.ts +1 -0
  89. package/types/layer/XYZ.d.ts +8 -5
  90. package/types/math.d.ts +2 -2
  91. package/types/quadTree/EntityCollectionNode.d.ts +7 -0
  92. package/types/quadTree/Node.d.ts +1 -2
  93. package/types/renderer/Renderer.d.ts +1 -1
  94. package/types/renderer/RendererEvents.d.ts +16 -0
  95. package/types/res/images.d.ts +0 -1
  96. package/types/scene/Planet.d.ts +21 -6
  97. package/types/segment/SegmentLonLat.d.ts +2 -0
  98. package/types/terrain/BilTerrain.d.ts +6 -0
  99. package/types/terrain/GlobusTerrain.d.ts +7 -0
  100. package/types/terrain/MapboxTerrain.d.ts +8 -0
  101. package/types/utils/BaseWorker.d.ts +14 -0
  102. package/types/utils/Loader.d.ts +4 -1
  103. package/types/utils/PlainSegmentWorker.d.ts +4 -6
  104. package/types/utils/TerrainWorker.d.ts +4 -6
  105. package/types/utils/functionComposition.d.ts +5 -0
  106. package/types/webgl/Handler.d.ts +4 -1
@@ -1,215 +1,223 @@
1
- /**
2
- * @module og/layer/GeoImage
3
- */
4
-
5
- "use strict";
6
-
7
- import { BaseGeoImage } from "./BaseGeoImage.js";
8
-
9
- /**
10
- * Used to load and display a single image over specific corner coordinates on the globe, implements og.layer.BaseGeoImage interface.
11
- * @class
12
- * @extends {BaseGeoImage}
13
- */
14
- class GeoImage extends BaseGeoImage {
15
- constructor(name, options) {
16
- super(name, options);
17
-
18
- /**
19
- * Image object.
20
- * @private
21
- * @type {Image}
22
- */
23
- this._image = options.image || null;
24
-
25
- /**
26
- * Image source url path.
27
- * @private
28
- * @type {String}
29
- */
30
- this._src = options.src || null;
31
- }
32
-
33
- get instanceName() {
34
- return "GeoImage";
35
- }
36
-
37
- /**
38
- * Sets image source url path.
39
- * @public
40
- * @param {String} srs - Image url path.
41
- */
42
- setSrc(src) {
43
- this._planet && this._planet._geoImageCreator.remove(this);
44
- this._src = src;
45
- this._sourceReady = false;
46
- }
47
-
48
- /**
49
- * Sets image object.
50
- * @public
51
- * @param {Image} image - Image object.
52
- */
53
- setImage(image) {
54
- this._planet && this._planet._geoImageCreator.remove(this);
55
- this._image = image;
56
- this._src = image.src;
57
- this._sourceReady = false;
58
- }
59
-
60
- /**
61
- * Creates source gl texture.
62
- * @virtual
63
- * @protected
64
- */
65
- _createSourceTexture() {
66
- if (!this._sourceCreated) {
67
- this._sourceTexture = this._planet.renderer.handler.createTexture_n(this._image);
68
- this._sourceCreated = true;
69
- }
70
- }
71
-
72
- /**
73
- * @private
74
- * @param {Image} img
75
- */
76
- _onLoad(img) {
77
- this._frameWidth = img.width;
78
- this._frameHeight = img.height;
79
- this._sourceReady = true;
80
- this._planet._geoImageCreator.add(this);
81
- }
82
-
83
- /**
84
- * Loads planet segment material. In this case - GeoImage source image.
85
- * @virtual
86
- * @public
87
- * @param {Material} material - GeoImage planet material.
88
- */
89
- loadMaterial(material) {
90
- material.isLoading = true;
91
- this._creationProceeding = true;
92
- if (!this._sourceReady && this._src) {
93
- if (this._image) {
94
- if (this._image.complete) {
95
- this._onLoad(this._image);
96
- } else if (this._image.src) {
97
- let that = this;
98
- this._image.addEventListener("load", function (e) {
99
- that._onLoad(this);
100
- });
101
- }
102
- } else {
103
- let that = this;
104
- this._image = new Image();
105
- this._image.addEventListener("load", function (e) {
106
- that._onLoad(this);
107
- });
108
- this._image.src = this._src;
109
- }
110
- } else {
111
- this._planet._geoImageCreator.add(this);
112
- }
113
- }
114
-
115
- /**
116
- * @virtual
117
- * @param {Material} material - GeoImage material.
118
- */
119
- abortMaterialLoading(material) {
120
- this._image && (this._image.src = "");
121
- this._creationProceeding = false;
122
- material.isLoading = false;
123
- material.isReady = false;
124
- }
125
-
126
- _renderingProjType1() {
127
- var p = this._planet,
128
- h = p.renderer.handler,
129
- gl = h.gl,
130
- creator = p._geoImageCreator;
131
-
132
- this._refreshFrame && this._createFrame();
133
- this._createSourceTexture();
134
-
135
- var f = creator._framebuffer;
136
- f.setSize(this._frameWidth, this._frameHeight);
137
- f.activate();
138
-
139
- h.programs.geoImageTransform.activate();
140
- var sh = h.programs.geoImageTransform._program;
141
- var sha = sh.attributes,
142
- shu = sh.uniforms;
143
-
144
- gl.disable(gl.CULL_FACE);
145
-
146
- f.bindOutputTexture(this._materialTexture);
147
- gl.clearColor(0.0, 0.0, 0.0, 0.0);
148
- gl.clear(gl.COLOR_BUFFER_BIT);
149
- gl.bindBuffer(gl.ARRAY_BUFFER, creator._texCoordsBuffer);
150
-
151
- gl.vertexAttribPointer(sha.texCoords, 2, gl.UNSIGNED_SHORT, true, 0, 0);
152
-
153
- gl.bindBuffer(gl.ARRAY_BUFFER, this._gridBuffer);
154
- gl.vertexAttribPointer(sha.corners, this._gridBuffer.itemSize, gl.FLOAT, false, 0, 0);
155
- gl.uniform4fv(shu.extentParams, this._extentMercParams);
156
- gl.activeTexture(gl.TEXTURE0);
157
- gl.bindTexture(gl.TEXTURE_2D, this._sourceTexture);
158
- gl.uniform1i(shu.sourceTexture, 0);
159
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, creator._indexBuffer);
160
- gl.drawElements(gl.TRIANGLE_STRIP, creator._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
161
- f.deactivate();
162
-
163
- gl.enable(gl.CULL_FACE);
164
-
165
- this._ready = true;
166
-
167
- this._creationProceeding = false;
168
- }
169
-
170
- _renderingProjType0() {
171
- var p = this._planet,
172
- h = p.renderer.handler,
173
- gl = h.gl,
174
- creator = p._geoImageCreator;
175
-
176
- this._refreshFrame && this._createFrame();
177
- this._createSourceTexture();
178
-
179
- var f = creator._framebuffer;
180
- f.setSize(this._frameWidth, this._frameHeight);
181
- f.activate();
182
-
183
- h.programs.geoImageTransform.activate();
184
- var sh = h.programs.geoImageTransform._program;
185
- var sha = sh.attributes,
186
- shu = sh.uniforms;
187
-
188
- gl.disable(gl.CULL_FACE);
189
-
190
- f.bindOutputTexture(this._materialTexture);
191
- gl.clearColor(0.0, 0.0, 0.0, 0.0);
192
- gl.clear(gl.COLOR_BUFFER_BIT);
193
- gl.bindBuffer(gl.ARRAY_BUFFER, creator._texCoordsBuffer);
194
-
195
- gl.vertexAttribPointer(sha.texCoords, 2, gl.UNSIGNED_SHORT, true, 0, 0);
196
-
197
- gl.bindBuffer(gl.ARRAY_BUFFER, this._gridBuffer);
198
- gl.vertexAttribPointer(sha.corners, this._gridBuffer.itemSize, gl.FLOAT, false, 0, 0);
199
- gl.uniform4fv(shu.extentParams, this._extentWgs84Params);
200
- gl.activeTexture(gl.TEXTURE0);
201
- gl.bindTexture(gl.TEXTURE_2D, this._sourceTexture);
202
- gl.uniform1i(shu.sourceTexture, 0);
203
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, creator._indexBuffer);
204
- gl.drawElements(gl.TRIANGLE_STRIP, creator._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
205
- f.deactivate();
206
-
207
- gl.enable(gl.CULL_FACE);
208
-
209
- this._ready = true;
210
-
211
- this._creationProceeding = false;
212
- }
213
- }
214
-
1
+ /**
2
+ * @module og/layer/GeoImage
3
+ */
4
+
5
+ "use strict";
6
+
7
+ import { BaseGeoImage } from "./BaseGeoImage.js";
8
+ import { nextHighestPowerOfTwo } from "../math.js";
9
+
10
+ /**
11
+ * Used to load and display a single image over specific corner coordinates on the globe, implements og.layer.BaseGeoImage interface.
12
+ * @class
13
+ * @extends {BaseGeoImage}
14
+ */
15
+ class GeoImage extends BaseGeoImage {
16
+ constructor(name, options) {
17
+ super(name, options);
18
+
19
+ /**
20
+ * Image object.
21
+ * @private
22
+ * @type {Image}
23
+ */
24
+ this._image = options.image || null;
25
+
26
+ /**
27
+ * Image source url path.
28
+ * @private
29
+ * @type {String}
30
+ */
31
+ this._src = options.src || null;
32
+ }
33
+
34
+ get instanceName() {
35
+ return "GeoImage";
36
+ }
37
+
38
+ abortLoading() {
39
+ this._image.src = "";
40
+ }
41
+
42
+ /**
43
+ * Sets image source url path.
44
+ * @public
45
+ * @param {String} srs - Image url path.
46
+ */
47
+ setSrc(src) {
48
+ this._planet && this._planet._geoImageCreator.remove(this);
49
+ this._src = src;
50
+ this._sourceReady = false;
51
+ }
52
+
53
+ /**
54
+ * Sets image object.
55
+ * @public
56
+ * @param {Image} image - Image object.
57
+ */
58
+ setImage(image) {
59
+ this._planet && this._planet._geoImageCreator.remove(this);
60
+ this._image = image;
61
+ this._src = image.src;
62
+ this._sourceReady = false;
63
+ }
64
+
65
+ /**
66
+ * Creates source gl texture.
67
+ * @virtual
68
+ * @protected
69
+ */
70
+ _createSourceTexture() {
71
+ if (!this._sourceCreated) {
72
+ this._sourceTexture = this._planet.renderer.handler.createTexture_l(this._image);
73
+ this._sourceCreated = true;
74
+ }
75
+ }
76
+
77
+ /**
78
+ * @private
79
+ * @param {Image} img
80
+ */
81
+ _onLoad(img) {
82
+ this._frameWidth = nextHighestPowerOfTwo(img.width * 2, 4096);
83
+ this._frameHeight = nextHighestPowerOfTwo(img.height * 3, 4096);
84
+ this._sourceReady = true;
85
+ this._planet._geoImageCreator.add(this);
86
+ }
87
+
88
+ /**
89
+ * Loads planet segment material. In this case - GeoImage source image.
90
+ * @virtual
91
+ * @public
92
+ * @param {Material} material - GeoImage planet material.
93
+ */
94
+ loadMaterial(material) {
95
+ material.isLoading = true;
96
+ this._creationProceeding = true;
97
+ if (!this._sourceReady && this._src) {
98
+ if (this._image) {
99
+ if (this._image.complete) {
100
+ this._onLoad(this._image);
101
+ } else if (this._image.src) {
102
+ let that = this;
103
+ this._image.addEventListener("load", function (e) {
104
+ that._onLoad(this);
105
+ });
106
+ }
107
+ } else {
108
+ let that = this;
109
+ this._image = new Image();
110
+ this._image.addEventListener("load", function (e) {
111
+ that._onLoad(this);
112
+ });
113
+ this._image.src = this._src;
114
+ }
115
+ } else {
116
+ this._planet._geoImageCreator.add(this);
117
+ }
118
+ }
119
+
120
+ /**
121
+ * @virtual
122
+ * @param {Material} material - GeoImage material.
123
+ */
124
+ abortMaterialLoading(material) {
125
+ this._image && (this._image.src = "");
126
+ this._creationProceeding = false;
127
+ material.isLoading = false;
128
+ material.isReady = false;
129
+ }
130
+
131
+ _renderingProjType1() {
132
+ var p = this._planet,
133
+ h = p.renderer.handler,
134
+ gl = h.gl,
135
+ creator = p._geoImageCreator;
136
+
137
+ this._refreshFrame && this._createFrame();
138
+ this._createSourceTexture();
139
+
140
+ var f = creator._framebuffer;
141
+ f.setSize(this._frameWidth, this._frameHeight);
142
+ f.activate();
143
+
144
+ h.programs.geoImageTransform.activate();
145
+ var sh = h.programs.geoImageTransform._program;
146
+ var sha = sh.attributes,
147
+ shu = sh.uniforms;
148
+
149
+ gl.disable(gl.CULL_FACE);
150
+
151
+ f.bindOutputTexture(this._materialTexture);
152
+ gl.clearColor(0.0, 0.0, 0.0, 0.0);
153
+ gl.clear(gl.COLOR_BUFFER_BIT);
154
+
155
+ gl.uniform1i(shu.isFullExtent, this._isFullExtent);
156
+
157
+ gl.bindBuffer(gl.ARRAY_BUFFER, creator._texCoordsBuffer);
158
+
159
+ gl.vertexAttribPointer(sha.texCoords, 2, gl.UNSIGNED_SHORT, true, 0, 0);
160
+
161
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._gridBuffer);
162
+ gl.vertexAttribPointer(sha.corners, this._gridBuffer.itemSize, gl.FLOAT, false, 0, 0);
163
+ gl.uniform4fv(shu.extentParams, this._extentMercParams);
164
+ gl.activeTexture(gl.TEXTURE0);
165
+ gl.bindTexture(gl.TEXTURE_2D, this._sourceTexture);
166
+ gl.uniform1i(shu.sourceTexture, 0);
167
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, creator._indexBuffer);
168
+ gl.drawElements(gl.TRIANGLE_STRIP, creator._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
169
+ f.deactivate();
170
+
171
+ gl.enable(gl.CULL_FACE);
172
+
173
+ this._ready = true;
174
+
175
+ this._creationProceeding = false;
176
+ }
177
+
178
+ _renderingProjType0() {
179
+ var p = this._planet,
180
+ h = p.renderer.handler,
181
+ gl = h.gl,
182
+ creator = p._geoImageCreator;
183
+
184
+ this._refreshFrame && this._createFrame();
185
+ this._createSourceTexture();
186
+
187
+ var f = creator._framebuffer;
188
+ f.setSize(this._frameWidth, this._frameHeight);
189
+ f.activate();
190
+
191
+ h.programs.geoImageTransform.activate();
192
+ var sh = h.programs.geoImageTransform._program;
193
+ var sha = sh.attributes,
194
+ shu = sh.uniforms;
195
+
196
+ gl.disable(gl.CULL_FACE);
197
+
198
+ f.bindOutputTexture(this._materialTexture);
199
+ gl.clearColor(0.0, 0.0, 0.0, 0.0);
200
+ gl.clear(gl.COLOR_BUFFER_BIT);
201
+ gl.bindBuffer(gl.ARRAY_BUFFER, creator._texCoordsBuffer);
202
+
203
+ gl.vertexAttribPointer(sha.texCoords, 2, gl.UNSIGNED_SHORT, true, 0, 0);
204
+
205
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._gridBuffer);
206
+ gl.vertexAttribPointer(sha.corners, this._gridBuffer.itemSize, gl.FLOAT, false, 0, 0);
207
+ gl.uniform4fv(shu.extentParams, this._extentWgs84Params);
208
+ gl.activeTexture(gl.TEXTURE0);
209
+ gl.bindTexture(gl.TEXTURE_2D, this._sourceTexture);
210
+ gl.uniform1i(shu.sourceTexture, 0);
211
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, creator._indexBuffer);
212
+ gl.drawElements(gl.TRIANGLE_STRIP, creator._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
213
+ f.deactivate();
214
+
215
+ gl.enable(gl.CULL_FACE);
216
+
217
+ this._ready = true;
218
+
219
+ this._creationProceeding = false;
220
+ }
221
+ }
222
+
215
223
  export { GeoImage };