@openglobus/og 0.10.6 → 0.11.1

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 (163) hide show
  1. package/package.json +10 -7
  2. package/src/og/Extent.js +1 -1
  3. package/src/og/LonLat.js +7 -2
  4. package/src/og/Popup.js +2 -1
  5. package/src/og/camera/PlanetCamera.js +4 -2
  6. package/src/og/entity/EntityCollection.js +1 -1
  7. package/src/og/entity/LabelHandler.js +366 -74
  8. package/src/og/entity/Polyline.js +3 -2
  9. package/src/og/layer/KML.js +7 -5
  10. package/src/og/layer/Vector.js +5 -0
  11. package/src/og/layer/index.js +2 -1
  12. package/src/og/math/Vec2.js +448 -448
  13. package/src/og/math/Vec3.js +759 -757
  14. package/src/og/math/Vec4.js +216 -215
  15. package/src/og/scene/Planet.js +14 -4
  16. package/src/og/segment/SegmentLonLat.js +7 -0
  17. package/src/og/terrain/GlobusTerrain.js +4 -0
  18. package/src/og/utils/GeoImageCreator.js +123 -121
  19. package/src/og/utils/Loader.js +81 -80
  20. package/src/og/utils/NormalMapCreator.js +320 -318
  21. package/src/og/utils/VectorTileCreator.js +251 -250
  22. package/src/og/webgl/Framebuffer.js +265 -264
  23. package/src/og/webgl/Handler.js +1022 -1022
  24. package/src/og/webgl/Multisample.js +169 -168
  25. package/src/og/webgl/ProgramController.js +113 -112
  26. package/types/Clock.d.ts +90 -0
  27. package/types/Deferred.d.ts +6 -0
  28. package/types/Events.d.ts +73 -0
  29. package/types/Extent.d.ts +162 -0
  30. package/types/Globe.d.ts +80 -0
  31. package/types/ImageCanvas.d.ts +121 -0
  32. package/types/Lock.d.ts +12 -0
  33. package/types/LonLat.d.ts +108 -0
  34. package/types/Popup.d.ts +38 -0
  35. package/types/QueueArray.d.ts +15 -0
  36. package/types/Rectangle.d.ts +74 -0
  37. package/types/Stack.d.ts +15 -0
  38. package/types/ajax.d.ts +24 -0
  39. package/types/arial.d.ts +48 -0
  40. package/types/astro/astro.d.ts +38 -0
  41. package/types/astro/earth.d.ts +6 -0
  42. package/types/astro/jd.d.ts +254 -0
  43. package/types/bv/Box.d.ts +25 -0
  44. package/types/bv/Sphere.d.ts +32 -0
  45. package/types/bv/index.d.ts +3 -0
  46. package/types/camera/Camera.d.ts +303 -0
  47. package/types/camera/Frustum.d.ts +129 -0
  48. package/types/camera/PlanetCamera.d.ts +222 -0
  49. package/types/camera/index.d.ts +3 -0
  50. package/types/cons.d.ts +40 -0
  51. package/types/control/CompassButton.d.ts +17 -0
  52. package/types/control/Control.d.ts +101 -0
  53. package/types/control/DebugInfo.d.ts +16 -0
  54. package/types/control/EarthCoordinates.d.ts +47 -0
  55. package/types/control/GeoImageDragControl.d.ts +6 -0
  56. package/types/control/KeyboardNavigation.d.ts +22 -0
  57. package/types/control/LayerSwitcher.d.ts +23 -0
  58. package/types/control/Lighting.d.ts +16 -0
  59. package/types/control/ScaleControl.d.ts +22 -0
  60. package/types/control/ShowFps.d.ts +12 -0
  61. package/types/control/SimpleNavigation.d.ts +28 -0
  62. package/types/control/Sun.d.ts +52 -0
  63. package/types/control/ToggleWireframe.d.ts +12 -0
  64. package/types/control/ZoomControl.d.ts +28 -0
  65. package/types/control/index.d.ts +15 -0
  66. package/types/ellipsoid/Ellipsoid.d.ts +142 -0
  67. package/types/ellipsoid/index.d.ts +3 -0
  68. package/types/ellipsoid/wgs84.d.ts +5 -0
  69. package/types/entity/BaseBillboard.d.ts +208 -0
  70. package/types/entity/Billboard.d.ts +94 -0
  71. package/types/entity/BillboardHandler.d.ts +74 -0
  72. package/types/entity/Entity.d.ts +330 -0
  73. package/types/entity/EntityCollection.d.ts +303 -0
  74. package/types/entity/Geometry.d.ts +72 -0
  75. package/types/entity/GeometryHandler.d.ts +76 -0
  76. package/types/entity/Label.d.ts +194 -0
  77. package/types/entity/LabelHandler.d.ts +24 -0
  78. package/types/entity/PointCloud.d.ts +174 -0
  79. package/types/entity/PointCloudHandler.d.ts +38 -0
  80. package/types/entity/Polyline.d.ts +303 -0
  81. package/types/entity/PolylineHandler.d.ts +18 -0
  82. package/types/entity/Ray.d.ts +123 -0
  83. package/types/entity/RayHandler.d.ts +67 -0
  84. package/types/entity/ShapeHandler.d.ts +22 -0
  85. package/types/entity/Strip.d.ts +118 -0
  86. package/types/entity/StripHandler.d.ts +38 -0
  87. package/types/entity/index.d.ts +8 -0
  88. package/types/index.core.d.ts +65 -0
  89. package/types/index.d.ts +45 -0
  90. package/types/index.webgl.d.ts +7 -0
  91. package/types/inherits.d.ts +4 -0
  92. package/types/input/input.d.ts +34 -0
  93. package/types/layer/BaseGeoImage.d.ts +106 -0
  94. package/types/layer/CanvasTiles.d.ts +75 -0
  95. package/types/layer/GeoImage.d.ts +65 -0
  96. package/types/layer/GeoTexture2d.d.ts +8 -0
  97. package/types/layer/GeoVideo.d.ts +80 -0
  98. package/types/layer/KML.d.ts +58 -0
  99. package/types/layer/WMS.d.ts +66 -0
  100. package/types/layer/XYZ.d.ts +126 -0
  101. package/types/layer/index.d.ts +10 -0
  102. package/types/light/LightSource.d.ts +177 -0
  103. package/types/math/Mat3.d.ts +53 -0
  104. package/types/math/Mat4.d.ts +157 -0
  105. package/types/math/Plane.d.ts +17 -0
  106. package/types/math/Vec2.d.ts +308 -0
  107. package/types/math/Vec3.d.ts +459 -0
  108. package/types/math/Vec4.d.ts +161 -0
  109. package/types/math/coder.d.ts +42 -0
  110. package/types/math/index.d.ts +11 -0
  111. package/types/math.d.ts +261 -0
  112. package/types/mercator.d.ts +92 -0
  113. package/types/proj/EPSG3857.d.ts +5 -0
  114. package/types/proj/EPSG4326.d.ts +5 -0
  115. package/types/quadTree/quadTree.d.ts +40 -0
  116. package/types/renderer/RendererEvents.d.ts +230 -0
  117. package/types/res/images.d.ts +3 -0
  118. package/types/scene/Axes.d.ts +11 -0
  119. package/types/scene/BaseNode.d.ts +60 -0
  120. package/types/scene/Planet.d.ts +572 -0
  121. package/types/scene/RenderNode.d.ts +143 -0
  122. package/types/scene/SkyBox.d.ts +10 -0
  123. package/types/scene/index.d.ts +4 -0
  124. package/types/segment/segmentHelper.d.ts +13 -0
  125. package/types/shaders/billboard.d.ts +3 -0
  126. package/types/shaders/depth.d.ts +2 -0
  127. package/types/shaders/drawnode.d.ts +7 -0
  128. package/types/shaders/label.d.ts +4 -0
  129. package/types/shaders/pointCloud.d.ts +2 -0
  130. package/types/shaders/polyline.d.ts +3 -0
  131. package/types/shaders/ray.d.ts +2 -0
  132. package/types/shaders/screenFrame.d.ts +2 -0
  133. package/types/shaders/shape.d.ts +4 -0
  134. package/types/shaders/skybox.d.ts +2 -0
  135. package/types/shaders/toneMapping.d.ts +2 -0
  136. package/types/shapes/BaseShape.d.ts +247 -0
  137. package/types/shapes/Sphere.d.ts +41 -0
  138. package/types/terrain/BilTerrain.d.ts +8 -0
  139. package/types/terrain/EmptyTerrain.d.ts +72 -0
  140. package/types/terrain/Geoid.d.ts +26 -0
  141. package/types/terrain/GlobusTerrain.d.ts +153 -0
  142. package/types/terrain/MapboxTerrain.d.ts +8 -0
  143. package/types/terrain/index.d.ts +5 -0
  144. package/types/utils/FontAtlas.d.ts +14 -0
  145. package/types/utils/GeoImageCreator.d.ts +29 -0
  146. package/types/utils/ImagesCacheManager.d.ts +10 -0
  147. package/types/utils/Loader.d.ts +25 -0
  148. package/types/utils/NormalMapCreator.d.ts +39 -0
  149. package/types/utils/PlainSegmentWorker.d.ts +10 -0
  150. package/types/utils/TerrainWorker.d.ts +9 -0
  151. package/types/utils/TextureAtlas.d.ts +111 -0
  152. package/types/utils/VectorTileCreator.d.ts +16 -0
  153. package/types/utils/colorTable.d.ts +143 -0
  154. package/types/utils/earcut.d.ts +6 -0
  155. package/types/utils/shared.d.ts +230 -0
  156. package/types/webgl/Framebuffer.d.ts +135 -0
  157. package/types/webgl/Handler.d.ts +372 -0
  158. package/types/webgl/Multisample.d.ts +89 -0
  159. package/types/webgl/Program.d.ts +155 -0
  160. package/types/webgl/ProgramController.d.ts +84 -0
  161. package/types/webgl/callbacks.d.ts +1 -0
  162. package/types/webgl/index.d.ts +6 -0
  163. package/types/webgl/types.d.ts +2 -0
@@ -20,319 +20,320 @@ import { ImageCanvas } from '../ImageCanvas.js';
20
20
  * @param {String} [options.depthComponent="DEPTH_COMPONENT16"] - Specifies depth buffer size.
21
21
  * @param {Boolean} [options.useDepth] - Using depth buffer during the rendering.
22
22
  */
23
- const Framebuffer = function (handler, options = {}) {
23
+ export class Framebuffer {
24
+
25
+ constructor(handler, options = {}) {
24
26
 
25
- /**
26
- * WebGL handler.
27
- * @public
28
- * @type {og.webgl.Handler}
29
- */
30
- this.handler = handler;
27
+ /**
28
+ * WebGL handler.
29
+ * @public
30
+ * @type {og.webgl.Handler}
31
+ */
32
+ this.handler = handler;
31
33
 
32
- /**
33
- * Framebuffer object.
34
- * @private
35
- * @type {Object}
36
- */
37
- this._fbo = null;
34
+ /**
35
+ * Framebuffer object.
36
+ * @private
37
+ * @type {Object}
38
+ */
39
+ this._fbo = null;
38
40
 
39
- this._isBare = options.isBare || false;
41
+ this._isBare = options.isBare || false;
40
42
 
41
- /**
42
- * Renderbuffer object.
43
- * @private
44
- * @type {Object}
45
- */
46
- this._depthRenderbuffer = null;
43
+ /**
44
+ * Renderbuffer object.
45
+ * @private
46
+ * @type {Object}
47
+ */
48
+ this._depthRenderbuffer = null;
47
49
 
48
- this._filter = options.filter || "NEAREST";
50
+ this._filter = options.filter || "NEAREST";
49
51
 
50
- this._internalFormatArr = options.internalFormat instanceof Array ? options.internalFormat : [options.internalFormat || "RGBA"];
52
+ this._internalFormatArr = options.internalFormat instanceof Array ? options.internalFormat : [options.internalFormat || "RGBA"];
51
53
 
52
- this._formatArr = options.format instanceof Array ? options.format : [options.format || "RGBA"];
54
+ this._formatArr = options.format instanceof Array ? options.format : [options.format || "RGBA"];
53
55
 
54
- this._typeArr = options.type instanceof Array ? options.type : [options.type || "UNSIGNED_BYTE"];
56
+ this._typeArr = options.type instanceof Array ? options.type : [options.type || "UNSIGNED_BYTE"];
55
57
 
56
- this._attachmentArr = options.attachment instanceof Array ?
57
- options.attachment.map((a, i) => {
58
- let res = a.toUpperCase();
59
- if (res === "COLOR_ATTACHMENT") {
60
- return `${res}${i.toString()}`;
61
- }
62
- return res;
63
- }) : [options.attachment || "COLOR_ATTACHMENT0"];
58
+ this._attachmentArr = options.attachment instanceof Array ?
59
+ options.attachment.map((a, i) => {
60
+ let res = a.toUpperCase();
61
+ if (res === "COLOR_ATTACHMENT") {
62
+ return `${res}${i.toString()}`;
63
+ }
64
+ return res;
65
+ }) : [options.attachment || "COLOR_ATTACHMENT0"];
64
66
 
65
- /**
66
- * Framebuffer width.
67
- * @private
68
- * @type {number}
69
- */
70
- this._width = options.width || handler.canvas.width;
67
+ /**
68
+ * Framebuffer width.
69
+ * @private
70
+ * @type {number}
71
+ */
72
+ this._width = options.width || handler.canvas.width;
71
73
 
72
- /**
73
- * Framebuffer width.
74
- * @private
75
- * @type {number}
76
- */
77
- this._height = options.height || handler.canvas.height;
74
+ /**
75
+ * Framebuffer width.
76
+ * @private
77
+ * @type {number}
78
+ */
79
+ this._height = options.height || handler.canvas.height;
78
80
 
79
- this._depthComponent = options.depthComponent != undefined ? options.depthComponent : "DEPTH_COMPONENT16";
81
+ this._depthComponent = options.depthComponent != undefined ? options.depthComponent : "DEPTH_COMPONENT16";
80
82
 
81
- this._useDepth = options.useDepth != undefined ? options.useDepth : true;
83
+ this._useDepth = options.useDepth != undefined ? options.useDepth : true;
82
84
 
83
- /**
84
- * Framebuffer activity.
85
- * @private
86
- * @type {boolean}
87
- */
88
- this._active = false;
85
+ /**
86
+ * Framebuffer activity.
87
+ * @private
88
+ * @type {boolean}
89
+ */
90
+ this._active = false;
89
91
 
90
- this._size = options.size || 1;
92
+ this._size = options.size || 1;
91
93
 
92
- /**
93
- * Framebuffer texture.
94
- * @public
95
- * @type {number}
96
- */
97
- this.textures = options.textures || new Array(this._size);
98
- };
94
+ /**
95
+ * Framebuffer texture.
96
+ * @public
97
+ * @type {number}
98
+ */
99
+ this.textures = options.textures || new Array(this._size);
100
+ };
99
101
 
100
- Framebuffer.blit = function (sourceFramebuffer, destFramebuffer, glAttachment, glMask, glFilter) {
102
+ static blit(sourceFramebuffer, destFramebuffer, glAttachment, glMask, glFilter) {
101
103
 
102
- let gl = sourceFramebuffer.handler.gl;
104
+ let gl = sourceFramebuffer.handler.gl;
103
105
 
104
- gl.bindFramebuffer(gl.READ_FRAMEBUFFER, sourceFramebuffer._fbo);
105
- gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer._fbo);
106
- gl.readBuffer(glAttachment);
106
+ gl.bindFramebuffer(gl.READ_FRAMEBUFFER, sourceFramebuffer._fbo);
107
+ gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer._fbo);
108
+ gl.readBuffer(glAttachment);
107
109
 
108
- gl.clearBufferfv(gl.COLOR, 0, [0.0, 0.0, 0.0, 1.0]);
110
+ gl.clearBufferfv(gl.COLOR, 0, [0.0, 0.0, 0.0, 1.0]);
109
111
 
110
- gl.blitFramebuffer(
111
- 0, 0, sourceFramebuffer._width, sourceFramebuffer._height,
112
- 0, 0, destFramebuffer._width, destFramebuffer._height,
113
- glMask, glFilter
114
- );
112
+ gl.blitFramebuffer(
113
+ 0, 0, sourceFramebuffer._width, sourceFramebuffer._height,
114
+ 0, 0, destFramebuffer._width, destFramebuffer._height,
115
+ glMask, glFilter
116
+ );
115
117
 
116
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
117
- gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);
118
- gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);
119
- };
118
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
119
+ gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);
120
+ gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);
121
+ };
120
122
 
121
- Framebuffer.prototype.destroy = function () {
122
- var gl = this.handler.gl;
123
+ destroy() {
124
+ var gl = this.handler.gl;
123
125
 
124
- for (var i = 0; i < this.textures.length; i++) {
125
- gl.deleteTexture(this.textures[i]);
126
- }
127
- this.textures = new Array(this._size);
126
+ for (var i = 0; i < this.textures.length; i++) {
127
+ gl.deleteTexture(this.textures[i]);
128
+ }
129
+ this.textures = new Array(this._size);
128
130
 
129
- gl.deleteFramebuffer(this._fbo);
130
- gl.deleteRenderbuffer(this._depthRenderbuffer);
131
+ gl.deleteFramebuffer(this._fbo);
132
+ gl.deleteRenderbuffer(this._depthRenderbuffer);
131
133
 
132
- this._depthRenderbuffer = null;
133
- this._fbo = null;
134
+ this._depthRenderbuffer = null;
135
+ this._fbo = null;
134
136
 
135
- this._active = false;
136
- };
137
+ this._active = false;
138
+ };
137
139
 
138
- /**
139
- * Framebuffer initialization.
140
- * @private
141
- */
142
- Framebuffer.prototype.init = function () {
143
- var gl = this.handler.gl;
140
+ /**
141
+ * Framebuffer initialization.
142
+ * @private
143
+ */
144
+ init() {
145
+ var gl = this.handler.gl;
144
146
 
145
- this._fbo = gl.createFramebuffer();
147
+ this._fbo = gl.createFramebuffer();
146
148
 
147
- gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
149
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
148
150
 
149
- if (!this._isBare) {
150
- let attachmentArr = [];
151
- for (var i = 0; i < this.textures.length; i++) {
151
+ if (!this._isBare) {
152
+ let attachmentArr = [];
153
+ for (var i = 0; i < this.textures.length; i++) {
152
154
 
153
- let ti = this.textures[i] ||
154
- this.handler.createEmptyTexture2DExt(
155
- this._width,
156
- this._height,
157
- this._filter,
158
- this._internalFormatArr[i],
159
- this._formatArr[i],
160
- this._typeArr[i]
161
- );
155
+ let ti = this.textures[i] ||
156
+ this.handler.createEmptyTexture2DExt(
157
+ this._width,
158
+ this._height,
159
+ this._filter,
160
+ this._internalFormatArr[i],
161
+ this._formatArr[i],
162
+ this._typeArr[i]
163
+ );
162
164
 
163
- let att_i = gl[this._attachmentArr[i]];
165
+ let att_i = gl[this._attachmentArr[i]];
164
166
 
165
- this.bindOutputTexture(ti, att_i);
167
+ this.bindOutputTexture(ti, att_i);
166
168
 
167
- this.textures[i] = ti;
169
+ this.textures[i] = ti;
168
170
 
169
- if (this._attachmentArr[i] != "DEPTH_ATTACHMENT") {
170
- attachmentArr.push(att_i);
171
+ if (this._attachmentArr[i] != "DEPTH_ATTACHMENT") {
172
+ attachmentArr.push(att_i);
173
+ }
171
174
  }
175
+ gl.drawBuffers && gl.drawBuffers(attachmentArr);
172
176
  }
173
- gl.drawBuffers && gl.drawBuffers(attachmentArr);
174
- }
175
177
 
176
- if (this._useDepth) {
177
- this._depthRenderbuffer = gl.createRenderbuffer();
178
- gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderbuffer);
179
- gl.renderbufferStorage(gl.RENDERBUFFER, gl[this._depthComponent], this._width, this._height);
180
- gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._depthRenderbuffer);
181
- gl.bindRenderbuffer(gl.RENDERBUFFER, null);
182
- }
178
+ if (this._useDepth) {
179
+ this._depthRenderbuffer = gl.createRenderbuffer();
180
+ gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderbuffer);
181
+ gl.renderbufferStorage(gl.RENDERBUFFER, gl[this._depthComponent], this._width, this._height);
182
+ gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._depthRenderbuffer);
183
+ gl.bindRenderbuffer(gl.RENDERBUFFER, null);
184
+ }
183
185
 
184
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
186
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
185
187
 
186
- return this;
187
- };
188
+ return this;
189
+ };
188
190
 
189
- /**
190
- * Bind buffer texture.
191
- * @public
192
- * @param{Object} texture - Output texture.
193
- * @param {Number} [attachmentIndex=0] - color attachment index.
194
- */
195
- Framebuffer.prototype.bindOutputTexture = function (texture, glAttachment) {
196
- var gl = this.handler.gl;
197
- gl.bindTexture(gl.TEXTURE_2D, texture);
198
- gl.framebufferTexture2D(gl.FRAMEBUFFER, glAttachment || gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
199
- gl.bindTexture(gl.TEXTURE_2D, null);
200
- };
191
+ /**
192
+ * Bind buffer texture.
193
+ * @public
194
+ * @param{Object} texture - Output texture.
195
+ * @param {Number} [attachmentIndex=0] - color attachment index.
196
+ */
197
+ bindOutputTexture(texture, glAttachment) {
198
+ var gl = this.handler.gl;
199
+ gl.bindTexture(gl.TEXTURE_2D, texture);
200
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, glAttachment || gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
201
+ gl.bindTexture(gl.TEXTURE_2D, null);
202
+ };
201
203
 
202
- /**
203
- * Sets framebuffer viewport size.
204
- * @public
205
- * @param {number} width - Framebuffer width.
206
- * @param {number} height - Framebuffer height.
207
- */
208
- Framebuffer.prototype.setSize = function (width, height, forceDestroy) {
209
- this._width = width;
210
- this._height = height;
204
+ /**
205
+ * Sets framebuffer viewport size.
206
+ * @public
207
+ * @param {number} width - Framebuffer width.
208
+ * @param {number} height - Framebuffer height.
209
+ */
210
+ setSize(width, height, forceDestroy) {
211
+ this._width = width;
212
+ this._height = height;
211
213
 
212
- if (this._active) {
213
- this.handler.gl.viewport(0, 0, this._width, this._height);
214
- }
214
+ if (this._active) {
215
+ this.handler.gl.viewport(0, 0, this._width, this._height);
216
+ }
215
217
 
216
- if (this._useDepth || forceDestroy) {
217
- this.destroy();
218
- this.init();
219
- }
220
- };
218
+ if (this._useDepth || forceDestroy) {
219
+ this.destroy();
220
+ this.init();
221
+ }
222
+ };
221
223
 
222
- /**
223
- * Returns framebuffer completed.
224
- * @public
225
- * @returns {boolean} -
226
- */
227
- Framebuffer.prototype.isComplete = function () {
228
- var gl = this.handler.gl;
229
- if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) {
230
- return true;
231
- }
232
- return false;
233
- };
224
+ /**
225
+ * Returns framebuffer completed.
226
+ * @public
227
+ * @returns {boolean} -
228
+ */
229
+ isComplete() {
230
+ var gl = this.handler.gl;
231
+ if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) {
232
+ return true;
233
+ }
234
+ return false;
235
+ };
234
236
 
235
- /**
236
- * Gets pixel RBGA color from framebuffer by coordinates.
237
- * @public
238
- * @param {Uint8Array} res - Normalized x - coordinate.
239
- * @param {number} nx - Normalized x - coordinate.
240
- * @param {number} ny - Normalized y - coordinate.
241
- * @param {number} [w=1] - Normalized width.
242
- * @param {number} [h=1] - Normalized height.
243
- * @param {Number} [attachmentIndex=0] - color attachment index.
244
- */
245
- Framebuffer.prototype.readPixels = function (res, nx, ny, index = 0, w = 1, h = 1) {
246
- var gl = this.handler.gl;
247
- gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
248
- gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + index || 0);
249
- gl.readPixels(nx * this._width, ny * this._height, w, h, gl.RGBA, gl[this._typeArr[index]], res);
250
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
251
- };
237
+ /**
238
+ * Gets pixel RBGA color from framebuffer by coordinates.
239
+ * @public
240
+ * @param {Uint8Array} res - Normalized x - coordinate.
241
+ * @param {number} nx - Normalized x - coordinate.
242
+ * @param {number} ny - Normalized y - coordinate.
243
+ * @param {number} [w=1] - Normalized width.
244
+ * @param {number} [h=1] - Normalized height.
245
+ * @param {Number} [attachmentIndex=0] - color attachment index.
246
+ */
247
+ readPixels(res, nx, ny, index = 0, w = 1, h = 1) {
248
+ var gl = this.handler.gl;
249
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
250
+ gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + index || 0);
251
+ gl.readPixels(nx * this._width, ny * this._height, w, h, gl.RGBA, gl[this._typeArr[index]], res);
252
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
253
+ };
252
254
 
253
- /**
254
- * Reads all pixels(RGBA colors) from framebuffer.
255
- * @public
256
- * @param {Uint8Array} res - Result array.
257
- * @param {Number} [attachmentIndex=0] - color attachment index.
258
- */
259
- Framebuffer.prototype.readAllPixels = function (res, attachmentIndex = 0) {
260
- var gl = this.handler.gl;
261
- gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
262
- gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + attachmentIndex);
263
- gl.readPixels(0, 0, this._width, this._height, gl.RGBA, gl[this._typeArr[attachmentIndex]], res);
264
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
265
- };
255
+ /**
256
+ * Reads all pixels(RGBA colors) from framebuffer.
257
+ * @public
258
+ * @param {Uint8Array} res - Result array.
259
+ * @param {Number} [attachmentIndex=0] - color attachment index.
260
+ */
261
+ readAllPixels(res, attachmentIndex = 0) {
262
+ var gl = this.handler.gl;
263
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
264
+ gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + attachmentIndex);
265
+ gl.readPixels(0, 0, this._width, this._height, gl.RGBA, gl[this._typeArr[attachmentIndex]], res);
266
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
267
+ };
266
268
 
267
- /**
268
- * Activate framebuffer frame to draw.
269
- * @public
270
- * @returns {og.webgl.Framebuffer} Returns Current framebuffer.
271
- */
272
- Framebuffer.prototype.activate = function () {
273
- var gl = this.handler.gl;
274
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
275
- gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
276
- gl.viewport(0, 0, this._width, this._height);
277
- this._active = true;
278
- var c = this.handler.framebufferStack.current().data;
279
- c && (c._active = false);
280
- this.handler.framebufferStack.push(this);
281
- return this;
282
- };
269
+ /**
270
+ * Activate framebuffer frame to draw.
271
+ * @public
272
+ * @returns {og.webgl.Framebuffer} Returns Current framebuffer.
273
+ */
274
+ activate() {
275
+ var gl = this.handler.gl;
276
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
277
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
278
+ gl.viewport(0, 0, this._width, this._height);
279
+ this._active = true;
280
+ var c = this.handler.framebufferStack.current().data;
281
+ c && (c._active = false);
282
+ this.handler.framebufferStack.push(this);
283
+ return this;
284
+ };
283
285
 
284
- /**
285
- * Deactivate framebuffer frame.
286
- * @public
287
- */
288
- Framebuffer.prototype.deactivate = function () {
289
- var h = this.handler,
290
- gl = h.gl;
291
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
292
- this._active = false;
293
-
294
- var f = this.handler.framebufferStack.popPrev();
295
-
296
- if (f) {
297
- gl.bindFramebuffer(gl.FRAMEBUFFER, f._fbo);
298
- gl.viewport(0, 0, f._width, f._height);
299
- } else {
300
- gl.viewport(0, 0, h.canvas.width, h.canvas.height);
301
- }
302
- };
286
+ /**
287
+ * Deactivate framebuffer frame.
288
+ * @public
289
+ */
290
+ deactivate() {
291
+ var h = this.handler,
292
+ gl = h.gl;
293
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
294
+ this._active = false;
295
+
296
+ var f = this.handler.framebufferStack.popPrev();
297
+
298
+ if (f) {
299
+ gl.bindFramebuffer(gl.FRAMEBUFFER, f._fbo);
300
+ gl.viewport(0, 0, f._width, f._height);
301
+ } else {
302
+ gl.viewport(0, 0, h.canvas.width, h.canvas.height);
303
+ }
304
+ };
303
305
 
304
- /**
305
- * Gets JavaScript image object that framebuffer has drawn.
306
- * @public
307
- * @returns {Object} -
308
- */
309
- Framebuffer.prototype.getImage = function () {
310
- var data = new Uint8Array(4 * this._width * this._height);
311
- this.readAllPixels(data);
312
- var imageCanvas = new ImageCanvas(this._width, this._height);
313
- imageCanvas.setData(data);
314
- return imageCanvas.getImage();
315
- };
306
+ /**
307
+ * Gets JavaScript image object that framebuffer has drawn.
308
+ * @public
309
+ * @returns {Object} -
310
+ */
311
+ getImage() {
312
+ var data = new Uint8Array(4 * this._width * this._height);
313
+ this.readAllPixels(data);
314
+ var imageCanvas = new ImageCanvas(this._width, this._height);
315
+ imageCanvas.setData(data);
316
+ return imageCanvas.getImage();
317
+ };
316
318
 
317
- /**
318
- * Open dialog window with framebuffer image.
319
- * @public
320
- */
321
- Framebuffer.prototype.openImage = function () {
322
- var img = this.getImage();
323
- var dataUrl = img.src;
324
- var windowContent = '<!DOCTYPE html>';
325
- windowContent += '<html>';
326
- windowContent += '<head><title>Print</title></head>';
327
- windowContent += '<body>';
328
- windowContent += '<img src="' + dataUrl + '">';
329
- windowContent += '</body>';
330
- windowContent += '</html>';
331
- var printWin = window.open('', '', 'width=' + img.width + 'px ,height=' + img.height + 'px');
332
- printWin.document.open();
333
- printWin.document.write(windowContent);
334
- printWin.document.close();
335
- printWin.focus();
336
- };
337
-
338
- export { Framebuffer };
319
+ /**
320
+ * Open dialog window with framebuffer image.
321
+ * @public
322
+ */
323
+ openImage() {
324
+ var img = this.getImage();
325
+ var dataUrl = img.src;
326
+ var windowContent = '<!DOCTYPE html>';
327
+ windowContent += '<html>';
328
+ windowContent += '<head><title>Print</title></head>';
329
+ windowContent += '<body>';
330
+ windowContent += '<img src="' + dataUrl + '">';
331
+ windowContent += '</body>';
332
+ windowContent += '</html>';
333
+ var printWin = window.open('', '', 'width=' + img.width + 'px ,height=' + img.height + 'px');
334
+ printWin.document.open();
335
+ printWin.document.write(windowContent);
336
+ printWin.document.close();
337
+ printWin.focus();
338
+ };
339
+ }