@next2d/webgl 1.14.20

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 (113) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/dist/BezierConverter.d.ts +59 -0
  4. package/dist/BezierConverter.js +106 -0
  5. package/dist/CanvasGradientToWebGL.d.ts +96 -0
  6. package/dist/CanvasGradientToWebGL.js +181 -0
  7. package/dist/CanvasPatternToWebGL.d.ts +39 -0
  8. package/dist/CanvasPatternToWebGL.js +66 -0
  9. package/dist/CanvasToWebGLContext.d.ts +591 -0
  10. package/dist/CanvasToWebGLContext.js +1427 -0
  11. package/dist/CanvasToWebGLContextBlend.d.ts +97 -0
  12. package/dist/CanvasToWebGLContextBlend.js +299 -0
  13. package/dist/CanvasToWebGLContextGrid.d.ts +74 -0
  14. package/dist/CanvasToWebGLContextGrid.js +283 -0
  15. package/dist/CanvasToWebGLContextMask.d.ts +113 -0
  16. package/dist/CanvasToWebGLContextMask.js +436 -0
  17. package/dist/CanvasToWebGLContextPath.d.ts +111 -0
  18. package/dist/CanvasToWebGLContextPath.js +210 -0
  19. package/dist/CanvasToWebGLContextStyle.d.ts +78 -0
  20. package/dist/CanvasToWebGLContextStyle.js +139 -0
  21. package/dist/ColorBufferPool.d.ts +58 -0
  22. package/dist/ColorBufferPool.js +134 -0
  23. package/dist/FrameBufferManager.d.ts +135 -0
  24. package/dist/FrameBufferManager.js +358 -0
  25. package/dist/StencilBufferPool.d.ts +56 -0
  26. package/dist/StencilBufferPool.js +142 -0
  27. package/dist/TextureManager.d.ts +130 -0
  28. package/dist/TextureManager.js +296 -0
  29. package/dist/VertexArrayObjectManager.d.ts +96 -0
  30. package/dist/VertexArrayObjectManager.js +277 -0
  31. package/dist/WebGLFillMeshGenerator.d.ts +31 -0
  32. package/dist/WebGLFillMeshGenerator.js +101 -0
  33. package/dist/WebGLStrokeMeshGenerator.d.ts +183 -0
  34. package/dist/WebGLStrokeMeshGenerator.js +504 -0
  35. package/dist/index.d.ts +6 -0
  36. package/dist/index.js +6 -0
  37. package/dist/interface/AttachmentImpl.d.ts +11 -0
  38. package/dist/interface/AttachmentImpl.js +1 -0
  39. package/dist/interface/BoundsImpl.d.ts +6 -0
  40. package/dist/interface/BoundsImpl.js +1 -0
  41. package/dist/interface/CapsStyleImpl.d.ts +1 -0
  42. package/dist/interface/CapsStyleImpl.js +1 -0
  43. package/dist/interface/ClipObjectImpl.d.ts +14 -0
  44. package/dist/interface/ClipObjectImpl.js +1 -0
  45. package/dist/interface/FillMeshImpl.d.ts +5 -0
  46. package/dist/interface/FillMeshImpl.js +1 -0
  47. package/dist/interface/GradientTypeImpl.d.ts +1 -0
  48. package/dist/interface/GradientTypeImpl.js +1 -0
  49. package/dist/interface/GridImpl.d.ts +6 -0
  50. package/dist/interface/GridImpl.js +1 -0
  51. package/dist/interface/IndexRangeImpl.d.ts +4 -0
  52. package/dist/interface/IndexRangeImpl.js +1 -0
  53. package/dist/interface/InterpolationMethodImpl.d.ts +1 -0
  54. package/dist/interface/InterpolationMethodImpl.js +1 -0
  55. package/dist/interface/JointStyleImpl.d.ts +1 -0
  56. package/dist/interface/JointStyleImpl.js +1 -0
  57. package/dist/interface/SpreadMethodImpl.d.ts +1 -0
  58. package/dist/interface/SpreadMethodImpl.js +1 -0
  59. package/dist/interface/StrokeMethImpl.d.ts +4 -0
  60. package/dist/interface/StrokeMethImpl.js +1 -0
  61. package/dist/interface/UniformDataImpl.d.ts +5 -0
  62. package/dist/interface/UniformDataImpl.js +1 -0
  63. package/dist/interface/VerticesImpl.d.ts +1 -0
  64. package/dist/interface/VerticesImpl.js +1 -0
  65. package/dist/shader/CanvasToWebGLShader.d.ts +85 -0
  66. package/dist/shader/CanvasToWebGLShader.js +192 -0
  67. package/dist/shader/CanvasToWebGLShaderList.d.ts +70 -0
  68. package/dist/shader/CanvasToWebGLShaderList.js +109 -0
  69. package/dist/shader/GradientLUTGenerator.d.ts +36 -0
  70. package/dist/shader/GradientLUTGenerator.js +123 -0
  71. package/dist/shader/WebGLShaderUniform.d.ts +52 -0
  72. package/dist/shader/WebGLShaderUniform.js +165 -0
  73. package/dist/shader/fragment/FragmentShaderLibrary.d.ts +18 -0
  74. package/dist/shader/fragment/FragmentShaderLibrary.js +35 -0
  75. package/dist/shader/fragment/FragmentShaderSource.d.ts +29 -0
  76. package/dist/shader/fragment/FragmentShaderSource.js +99 -0
  77. package/dist/shader/fragment/FragmentShaderSourceBlend.d.ts +67 -0
  78. package/dist/shader/fragment/FragmentShaderSourceBlend.js +319 -0
  79. package/dist/shader/fragment/FragmentShaderSourceGradient.d.ts +44 -0
  80. package/dist/shader/fragment/FragmentShaderSourceGradient.js +114 -0
  81. package/dist/shader/fragment/FragmentShaderSourceGradientLUT.d.ts +14 -0
  82. package/dist/shader/fragment/FragmentShaderSourceGradientLUT.js +58 -0
  83. package/dist/shader/fragment/FragmentShaderSourceTexture.d.ts +12 -0
  84. package/dist/shader/fragment/FragmentShaderSourceTexture.js +36 -0
  85. package/dist/shader/fragment/filter/FragmentShaderSourceBlurFilter.d.ts +12 -0
  86. package/dist/shader/fragment/filter/FragmentShaderSourceBlurFilter.js +42 -0
  87. package/dist/shader/fragment/filter/FragmentShaderSourceColorMatrixFilter.d.ts +11 -0
  88. package/dist/shader/fragment/filter/FragmentShaderSourceColorMatrixFilter.js +35 -0
  89. package/dist/shader/fragment/filter/FragmentShaderSourceConvolutionFilter.d.ts +16 -0
  90. package/dist/shader/fragment/filter/FragmentShaderSourceConvolutionFilter.js +80 -0
  91. package/dist/shader/fragment/filter/FragmentShaderSourceDisplacementMapFilter.d.ts +15 -0
  92. package/dist/shader/fragment/filter/FragmentShaderSourceDisplacementMapFilter.js +106 -0
  93. package/dist/shader/fragment/filter/FragmentShaderSourceFilter.d.ts +112 -0
  94. package/dist/shader/fragment/filter/FragmentShaderSourceFilter.js +275 -0
  95. package/dist/shader/variants/BlendShaderVariantCollection.d.ts +99 -0
  96. package/dist/shader/variants/BlendShaderVariantCollection.js +239 -0
  97. package/dist/shader/variants/FilterShaderVariantCollection.d.ts +150 -0
  98. package/dist/shader/variants/FilterShaderVariantCollection.js +395 -0
  99. package/dist/shader/variants/GradientLUTShaderVariantCollection.d.ts +49 -0
  100. package/dist/shader/variants/GradientLUTShaderVariantCollection.js +107 -0
  101. package/dist/shader/variants/GradientShapeShaderVariantCollection.d.ts +61 -0
  102. package/dist/shader/variants/GradientShapeShaderVariantCollection.js +196 -0
  103. package/dist/shader/variants/ShapeShaderVariantCollection.d.ts +117 -0
  104. package/dist/shader/variants/ShapeShaderVariantCollection.js +427 -0
  105. package/dist/shader/vertex/VertexShaderLibrary.d.ts +18 -0
  106. package/dist/shader/vertex/VertexShaderLibrary.js +75 -0
  107. package/dist/shader/vertex/VertexShaderSource.d.ts +23 -0
  108. package/dist/shader/vertex/VertexShaderSource.js +92 -0
  109. package/dist/shader/vertex/VertexShaderSourceFill.d.ts +45 -0
  110. package/dist/shader/vertex/VertexShaderSourceFill.js +112 -0
  111. package/dist/shader/vertex/VertexShaderSourceStroke.d.ts +27 -0
  112. package/dist/shader/vertex/VertexShaderSourceStroke.js +149 -0
  113. package/package.json +37 -0
@@ -0,0 +1,277 @@
1
+ import { WebGLFillMeshGenerator } from "./WebGLFillMeshGenerator";
2
+ import { WebGLStrokeMeshGenerator } from "./WebGLStrokeMeshGenerator";
3
+ import { $upperPowerOfTwo } from "@next2d/share";
4
+ /**
5
+ * @class
6
+ */
7
+ export class VertexArrayObjectManager {
8
+ /**
9
+ * @param {WebGL2RenderingContext} gl
10
+ * @constructor
11
+ * @public
12
+ */
13
+ constructor(gl) {
14
+ /**
15
+ * @type {WebGL2RenderingContext}
16
+ * @private
17
+ */
18
+ this._$gl = gl;
19
+ /**
20
+ * @type {array}
21
+ * @private
22
+ */
23
+ this._$fillVertexArrayPool = [];
24
+ /**
25
+ * @type {array}
26
+ * @private
27
+ */
28
+ this._$strokeVertexArrayPool = [];
29
+ /**
30
+ * @type {WebGLVertexArrayObject}
31
+ * @default null
32
+ * @private
33
+ */
34
+ this._$boundVertexArray = null;
35
+ /**
36
+ * @type {number}
37
+ * @default 0
38
+ * @private
39
+ */
40
+ this._$fillAttrib_vertex = 0;
41
+ /**
42
+ * @type {number}
43
+ * @default 0
44
+ * @private
45
+ */
46
+ this._$fillAttrib_bezier = 1;
47
+ /**
48
+ * @type {number}
49
+ * @default 0
50
+ * @private
51
+ */
52
+ this._$strokeAttrib_vertex = 0;
53
+ /**
54
+ * @type {number}
55
+ * @default 0
56
+ * @private
57
+ */
58
+ this._$strokeAttrib_option1 = 1;
59
+ /**
60
+ * @type {number}
61
+ * @default 0
62
+ * @private
63
+ */
64
+ this._$strokeAttrib_option2 = 2;
65
+ /**
66
+ * @type {number}
67
+ * @default 0
68
+ * @private
69
+ */
70
+ this._$strokeAttrib_type = 3;
71
+ /**
72
+ * @type {Float32Array}
73
+ * @default 0
74
+ * @private
75
+ */
76
+ this._$vertexBufferData = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]);
77
+ /**
78
+ * @type {WebGLVertexArrayObject}
79
+ * @private
80
+ */
81
+ this._$commonVertexArray = this._$getVertexArray(0, 1);
82
+ }
83
+ /**
84
+ * @param {number} begin
85
+ * @param {number} end
86
+ * @return {WebGLVertexArrayObject}
87
+ * @method
88
+ * @private
89
+ */
90
+ _$getVertexArray(begin, end) {
91
+ const vertexArray = this._$gl.createVertexArray();
92
+ if (!vertexArray) {
93
+ throw new Error("the WebGLVertexArrayObject is null.");
94
+ }
95
+ this.bind(vertexArray);
96
+ const vertexBuffer = this._$gl.createBuffer();
97
+ this._$gl.bindBuffer(this._$gl.ARRAY_BUFFER, vertexBuffer);
98
+ this._$vertexBufferData[0] = begin;
99
+ this._$vertexBufferData[2] = begin;
100
+ this._$vertexBufferData[4] = end;
101
+ this._$vertexBufferData[6] = end;
102
+ this._$gl.bufferData(this._$gl.ARRAY_BUFFER, this._$vertexBufferData, this._$gl.STATIC_DRAW);
103
+ this._$gl.enableVertexAttribArray(0);
104
+ this._$gl.vertexAttribPointer(0, 2, this._$gl.FLOAT, false, 0, 0);
105
+ return vertexArray;
106
+ }
107
+ /**
108
+ * @return {WebGLVertexArrayObject}
109
+ * @method
110
+ * @private
111
+ */
112
+ _$getFillVertexArray() {
113
+ if (this._$fillVertexArrayPool.length) {
114
+ const vertexArray = this._$fillVertexArrayPool.pop();
115
+ if (vertexArray) {
116
+ return vertexArray;
117
+ }
118
+ }
119
+ const vertexArray = this._$gl.createVertexArray();
120
+ if (!vertexArray) {
121
+ throw new Error("the WebGLVertexArrayObject is null.");
122
+ }
123
+ this.bind(vertexArray);
124
+ const vertexBuffer = this._$gl.createBuffer();
125
+ if (!vertexBuffer) {
126
+ throw new Error("the WebGLBuffer is null.");
127
+ }
128
+ vertexArray.vertexBuffer = vertexBuffer;
129
+ vertexArray.vertexLength = 0;
130
+ this._$gl.bindBuffer(this._$gl.ARRAY_BUFFER, vertexBuffer);
131
+ this._$gl.enableVertexAttribArray(0);
132
+ this._$gl.enableVertexAttribArray(1);
133
+ this._$gl.vertexAttribPointer(this._$fillAttrib_vertex, 2, this._$gl.FLOAT, false, 16, 0);
134
+ this._$gl.vertexAttribPointer(this._$fillAttrib_bezier, 2, this._$gl.FLOAT, false, 16, 8);
135
+ return vertexArray;
136
+ }
137
+ /**
138
+ * @return {WebGLVertexArrayObject}
139
+ * @method
140
+ * @private
141
+ */
142
+ _$getStrokeVertexArray() {
143
+ if (this._$strokeVertexArrayPool.length) {
144
+ const vertexArray = this._$strokeVertexArrayPool.pop();
145
+ if (vertexArray) {
146
+ return vertexArray;
147
+ }
148
+ }
149
+ const vertexArray = this._$gl.createVertexArray();
150
+ if (!vertexArray) {
151
+ throw new Error("the WebGLVertexArrayObject is null.");
152
+ }
153
+ this.bind(vertexArray);
154
+ const vertexBuffer = this._$gl.createBuffer();
155
+ if (!vertexBuffer) {
156
+ throw new Error("the WebGLBuffer is null.");
157
+ }
158
+ vertexArray.vertexBuffer = vertexBuffer;
159
+ vertexArray.vertexLength = 0;
160
+ this._$gl.bindBuffer(this._$gl.ARRAY_BUFFER, vertexBuffer);
161
+ const indexBuffer = this._$gl.createBuffer();
162
+ if (!indexBuffer) {
163
+ throw new Error("the WebGLBuffer is null.");
164
+ }
165
+ vertexArray.indexBuffer = indexBuffer;
166
+ vertexArray.indexLength = 0;
167
+ this._$gl.bindBuffer(this._$gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
168
+ this._$gl.enableVertexAttribArray(0);
169
+ this._$gl.enableVertexAttribArray(1);
170
+ this._$gl.enableVertexAttribArray(2);
171
+ this._$gl.enableVertexAttribArray(3);
172
+ this._$gl.vertexAttribPointer(this._$strokeAttrib_vertex, 2, this._$gl.FLOAT, false, 28, 0);
173
+ this._$gl.vertexAttribPointer(this._$strokeAttrib_option1, 2, this._$gl.FLOAT, false, 28, 8);
174
+ this._$gl.vertexAttribPointer(this._$strokeAttrib_option2, 2, this._$gl.FLOAT, false, 28, 16);
175
+ this._$gl.vertexAttribPointer(this._$strokeAttrib_type, 1, this._$gl.FLOAT, false, 28, 24);
176
+ return vertexArray;
177
+ }
178
+ /**
179
+ * @param {array} vertices
180
+ * @return {WebGLVertexArrayObject}
181
+ * @method
182
+ * @public
183
+ */
184
+ createFill(vertices) {
185
+ const mesh = WebGLFillMeshGenerator.generate(vertices);
186
+ const vertexBufferData = mesh.vertexBufferData;
187
+ const vertexArray = this._$getFillVertexArray();
188
+ vertexArray.indexRanges = mesh.indexRanges;
189
+ this.bind(vertexArray);
190
+ this._$gl.bindBuffer(this._$gl.ARRAY_BUFFER, vertexArray.vertexBuffer);
191
+ if (vertexArray.vertexLength < vertexBufferData.length) {
192
+ vertexArray.vertexLength = $upperPowerOfTwo(vertexBufferData.length);
193
+ this._$gl.bufferData(this._$gl.ARRAY_BUFFER, vertexArray.vertexLength * 4, this._$gl.DYNAMIC_DRAW);
194
+ }
195
+ this._$gl.bufferSubData(this._$gl.ARRAY_BUFFER, 0, vertexBufferData);
196
+ return vertexArray;
197
+ }
198
+ /**
199
+ * @param {array} vertices
200
+ * @param {string} lineCap
201
+ * @param {string} lineJoin
202
+ * @return {WebGLVertexArrayObject}
203
+ * @method
204
+ * @public
205
+ */
206
+ createStroke(vertices, lineCap, lineJoin) {
207
+ const mesh = WebGLStrokeMeshGenerator.generate(vertices, lineCap, lineJoin);
208
+ const vertexBufferData = mesh.vertexBufferData;
209
+ const indexBufferData = mesh.indexBufferData;
210
+ const vertexArray = this._$getStrokeVertexArray();
211
+ vertexArray.indexCount = indexBufferData.length;
212
+ this.bind(vertexArray);
213
+ this._$gl.bindBuffer(this._$gl.ARRAY_BUFFER, vertexArray.vertexBuffer);
214
+ this._$gl.bindBuffer(this._$gl.ELEMENT_ARRAY_BUFFER, vertexArray.indexBuffer);
215
+ if (vertexArray.vertexLength < vertexBufferData.length) {
216
+ vertexArray.vertexLength = $upperPowerOfTwo(vertexBufferData.length);
217
+ this._$gl.bufferData(this._$gl.ARRAY_BUFFER, vertexArray.vertexLength * 4, this._$gl.DYNAMIC_DRAW);
218
+ }
219
+ if (vertexArray.indexLength < indexBufferData.length) {
220
+ vertexArray.indexLength = $upperPowerOfTwo(indexBufferData.length);
221
+ this._$gl.bufferData(this._$gl.ELEMENT_ARRAY_BUFFER, vertexArray.indexLength * 2, this._$gl.DYNAMIC_DRAW);
222
+ }
223
+ this._$gl.bufferSubData(this._$gl.ARRAY_BUFFER, 0, vertexBufferData);
224
+ this._$gl.bufferSubData(this._$gl.ELEMENT_ARRAY_BUFFER, 0, indexBufferData);
225
+ return vertexArray;
226
+ }
227
+ /**
228
+ * @param {WebGLVertexArrayObject} vertex_array
229
+ * @return {void}
230
+ * @method
231
+ * @public
232
+ */
233
+ releaseFill(vertex_array) {
234
+ this._$fillVertexArrayPool.push(vertex_array);
235
+ }
236
+ /**
237
+ * @param {WebGLVertexArrayObject} vertex_array
238
+ * @return {void}
239
+ * @method
240
+ * @public
241
+ */
242
+ releaseStroke(vertex_array) {
243
+ this._$strokeVertexArrayPool.push(vertex_array);
244
+ }
245
+ /**
246
+ * @param {WebGLVertexArrayObject} [vertex_array = null]
247
+ * @return {void}
248
+ * @method
249
+ * @public
250
+ */
251
+ bind(vertex_array = null) {
252
+ if (vertex_array === this._$boundVertexArray) {
253
+ return;
254
+ }
255
+ this._$boundVertexArray = vertex_array;
256
+ this._$gl.bindVertexArray(vertex_array);
257
+ }
258
+ /**
259
+ * @return {void}
260
+ * @method
261
+ * @public
262
+ */
263
+ bindCommonVertexArray() {
264
+ this.bind(this._$commonVertexArray);
265
+ }
266
+ /**
267
+ * @param {number} begin
268
+ * @param {number} end
269
+ * @return {void}
270
+ * @method
271
+ * @public
272
+ */
273
+ bindGradientVertexArray(begin, end) {
274
+ const vertexArray = this._$getVertexArray(begin, end);
275
+ this.bind(vertexArray);
276
+ }
277
+ }
@@ -0,0 +1,31 @@
1
+ import type { FillMeshImpl } from "./interface/FillMeshImpl";
2
+ import type { IndexRangeImpl } from "./interface/IndexRangeImpl";
3
+ /**
4
+ * @class
5
+ */
6
+ export declare class WebGLFillMeshGenerator {
7
+ private static _$vertexBufferData;
8
+ private static _$indexRanges;
9
+ private static _$indexRangePool;
10
+ private static _$currentIndex;
11
+ /**
12
+ * @member {array}
13
+ * @static
14
+ */
15
+ static get indexRangePool(): IndexRangeImpl[];
16
+ /**
17
+ * @param {array} vertices
18
+ * @return {FillMeshImpl}
19
+ * @method
20
+ * @static
21
+ */
22
+ static generate(vertices: any[]): FillMeshImpl;
23
+ /**
24
+ * @param {array} vertex
25
+ * @return {void}
26
+ * @method
27
+ * @static
28
+ * @private
29
+ */
30
+ static _$generateMesh(vertex: any[]): void;
31
+ }
@@ -0,0 +1,101 @@
1
+ import { $Float32Array, $getArray } from "@next2d/share";
2
+ /**
3
+ * @class
4
+ */
5
+ export class WebGLFillMeshGenerator {
6
+ /**
7
+ * @member {array}
8
+ * @static
9
+ */
10
+ static get indexRangePool() {
11
+ return this._$indexRangePool;
12
+ }
13
+ /**
14
+ * @param {array} vertices
15
+ * @return {FillMeshImpl}
16
+ * @method
17
+ * @static
18
+ */
19
+ static generate(vertices) {
20
+ let vertexBufferLen = 0;
21
+ for (let idx = 0; idx < vertices.length; ++idx) {
22
+ vertexBufferLen += (vertices[idx].length / 3 - 2) * 12;
23
+ }
24
+ this._$vertexBufferData = new $Float32Array(vertexBufferLen);
25
+ this._$indexRanges = $getArray();
26
+ this._$currentIndex = 0;
27
+ for (let idx = 0; idx < vertices.length; ++idx) {
28
+ const first = this._$currentIndex;
29
+ this._$generateMesh(vertices[idx]);
30
+ const count = this._$currentIndex - first;
31
+ const indexRange = this._$indexRangePool.pop() || { "first": 0, "count": 0 };
32
+ indexRange.first = first;
33
+ indexRange.count = count;
34
+ this._$indexRanges.push(indexRange);
35
+ }
36
+ return {
37
+ "vertexBufferData": this._$vertexBufferData,
38
+ "indexRanges": this._$indexRanges
39
+ };
40
+ }
41
+ /**
42
+ * @param {array} vertex
43
+ * @return {void}
44
+ * @method
45
+ * @static
46
+ * @private
47
+ */
48
+ static _$generateMesh(vertex) {
49
+ const vbd = this._$vertexBufferData;
50
+ let currentIndex = this._$currentIndex;
51
+ const length = vertex.length - 5;
52
+ for (let v = 3; v < length; v += 3) {
53
+ let i = currentIndex * 4;
54
+ if (vertex[v + 2]) {
55
+ vbd[i++] = vertex[v - 3];
56
+ vbd[i++] = vertex[v - 2];
57
+ vbd[i++] = 0;
58
+ vbd[i++] = 0;
59
+ vbd[i++] = vertex[v];
60
+ vbd[i++] = vertex[v + 1];
61
+ vbd[i++] = 0.5;
62
+ vbd[i++] = 0;
63
+ vbd[i++] = vertex[v + 3];
64
+ vbd[i++] = vertex[v + 4];
65
+ vbd[i++] = 1;
66
+ vbd[i++] = 1;
67
+ }
68
+ else if (vertex[v + 5]) {
69
+ vbd[i++] = vertex[0];
70
+ vbd[i++] = vertex[1];
71
+ vbd[i++] = 0.5;
72
+ vbd[i++] = 0.5;
73
+ vbd[i++] = vertex[v];
74
+ vbd[i++] = vertex[v + 1];
75
+ vbd[i++] = 0.5;
76
+ vbd[i++] = 0.5;
77
+ vbd[i++] = vertex[v + 6];
78
+ vbd[i++] = vertex[v + 7];
79
+ vbd[i++] = 0.5;
80
+ vbd[i++] = 0.5;
81
+ }
82
+ else {
83
+ vbd[i++] = vertex[0];
84
+ vbd[i++] = vertex[1];
85
+ vbd[i++] = 0.5;
86
+ vbd[i++] = 0.5;
87
+ vbd[i++] = vertex[v];
88
+ vbd[i++] = vertex[v + 1];
89
+ vbd[i++] = 0.5;
90
+ vbd[i++] = 0.5;
91
+ vbd[i++] = vertex[v + 3];
92
+ vbd[i++] = vertex[v + 4];
93
+ vbd[i++] = 0.5;
94
+ vbd[i++] = 0.5;
95
+ }
96
+ currentIndex += 3;
97
+ }
98
+ this._$currentIndex = currentIndex;
99
+ }
100
+ }
101
+ WebGLFillMeshGenerator._$indexRangePool = $getArray();
@@ -0,0 +1,183 @@
1
+ import type { StrokeMethImpl } from "./interface/StrokeMethImpl";
2
+ import type { JointStyleImpl } from "./interface/JointStyleImpl";
3
+ import type { CapsStyleImpl } from "./interface/CapsStyleImpl";
4
+ /**
5
+ * @class
6
+ */
7
+ export declare class WebGLStrokeMeshGenerator {
8
+ private static _$vertexBufferData;
9
+ private static _$vertexBufferPos;
10
+ private static _$indexBufferData;
11
+ private static _$indexBufferPos;
12
+ private static _$lineCap;
13
+ private static _$lineJoin;
14
+ /**
15
+ * @param {array} vertices
16
+ * @param {string} line_cap
17
+ * @param {string} line_join
18
+ * @return {object}
19
+ * @method
20
+ * @static
21
+ */
22
+ static generate(vertices: any[], line_cap: CapsStyleImpl, line_join: JointStyleImpl): StrokeMethImpl;
23
+ /**
24
+ * @param {number} delta_length
25
+ * @return {void}
26
+ * @method
27
+ * @static
28
+ * @private
29
+ */
30
+ static _$expandVertexBufferIfNeeded(delta_length: number): void;
31
+ /**
32
+ * @param {number} delta_length
33
+ * @return {void}
34
+ * @method
35
+ * @static
36
+ * @private
37
+ */
38
+ static _$expandIndexBufferIfNeeded(delta_length: number): void;
39
+ /**
40
+ * @param {Float32Array} vertex
41
+ * @return {void}
42
+ * @method
43
+ * @static
44
+ * @private
45
+ */
46
+ static _$generateLineSegment(vertex: any[]): void;
47
+ /**
48
+ * @param {number} x1 線分の始点のx座標
49
+ * @param {number} y1 線分の始点のy座標
50
+ * @param {number} cx 線分の制御点のx座標
51
+ * @param {number} cy 線分の制御点のy座標
52
+ * @param {number} x2 線分の終点のx座標
53
+ * @param {number} y2 線分の終点のy座標
54
+ * @return {void}
55
+ * @method
56
+ * @static
57
+ * @private
58
+ */
59
+ static _$addQuadSegmentMesh(x1: number, y1: number, cx: number, cy: number, x2: number, y2: number): void;
60
+ /**
61
+ * @param {number} x1 線分の始点のx座標
62
+ * @param {number} y1 線分の始点のy座標
63
+ * @param {number} x2 線分の終点のx座標
64
+ * @param {number} y2 線分の終点のy座標
65
+ * @param {number} [type = 1]
66
+ * @return {void}
67
+ * @method
68
+ * @static
69
+ * @private
70
+ */
71
+ static _$addLineSegmentMesh(x1: number, y1: number, x2: number, y2: number, type?: number): void;
72
+ /**
73
+ * @param {number} vertex_begin_offset 結合対象の頂点の範囲(開始)
74
+ * @param {number} vertex_end_offset 結合対象の頂点の範囲(終了)
75
+ * @return {void}
76
+ * @method
77
+ * @static
78
+ * @private
79
+ */
80
+ static _$generateLineJoin(vertex_begin_offset: number, vertex_end_offset: number): void;
81
+ /**
82
+ * @param {number} x1
83
+ * @param {number} y1
84
+ * @param {number} x2
85
+ * @param {number} y2
86
+ * @return {number}
87
+ * @method
88
+ * @static
89
+ */
90
+ static _$cross: (x1: number, y1: number, x2: number, y2: number) => number;
91
+ /**
92
+ * @param {number} x1 線分Aの始点のx座標
93
+ * @param {number} y1 線分Aの始点のy座標
94
+ * @param {number} x2 結合点のx座標
95
+ * @param {number} y2 結合点のy座標
96
+ * @param {number} type 線分タイプ
97
+ * @param {number} x3 線分Bの終点のx座標
98
+ * @param {number} y3 線分Bの終点のy座標
99
+ * @param {number} index_offset2 線分Aの凸側の頂点インデックス
100
+ * @param {number} index_offset3 線分Aの凹側の頂点インデックス
101
+ * @param {number} index_offset4 線分Bの凸側の頂点インデックス
102
+ * @param {number} index_offset5 線分Bの凹側の頂点インデックス
103
+ * @return {void}
104
+ * @method
105
+ * @static
106
+ * @private
107
+ */
108
+ static _$addLineJoinMesh(x1: number, y1: number, x2: number, y2: number, type: number, x3: number, y3: number, index_offset2: number, index_offset3: number, index_offset4?: number, index_offset5?: number): void;
109
+ /**
110
+ * @param {number} x 結合点のx座標
111
+ * @param {number} y 結合点のy座標
112
+ * @return {void}
113
+ * @method
114
+ * @static
115
+ * @private
116
+ */
117
+ static _$addRoundJoinMesh(x: number, y: number): void;
118
+ /**
119
+ * @param {number} x 結合点のx座標
120
+ * @param {number} y 結合点のy座標
121
+ * @param {number} ax 線分Aの始点のx座標
122
+ * @param {number} ay 線分Aの始点のy座標
123
+ * @param {number} bx 線分Bの終点のx座標
124
+ * @param {number} by 線分Bの終点のy座標
125
+ * @param {number} index1
126
+ * @param {number} index4
127
+ * @param {number} index5
128
+ * @param {number} index8
129
+ * @return {void}
130
+ * @method
131
+ * @static
132
+ * @private
133
+ */
134
+ static _$addMiterJoinMesh(x: number, y: number, ax: number, ay: number, bx: number, by: number, index1: number, index4: number, index5: number, index8: number): void;
135
+ /**
136
+ * @param {number} x 結合点のx座標
137
+ * @param {number} y 結合点のy座標
138
+ * @param {number} index1
139
+ * @param {number} index2
140
+ * @param {number} index3
141
+ * @param {number} index4
142
+ * @return {void}
143
+ * @method
144
+ * @static
145
+ * @private
146
+ */
147
+ static _$addBevelJoinMesh(x: number, y: number, index1: number, index2: number, index3: number, index4: number): void;
148
+ /**
149
+ * @param {number} vertex_begin_offset 結合対象の頂点の範囲(開始)
150
+ * @param {number} vertex_end_offset 結合対象の頂点の範囲(終了)
151
+ * @return {void}
152
+ * @method
153
+ * @static
154
+ * @private
155
+ */
156
+ static _$generateLineCap(vertex_begin_offset: number, vertex_end_offset: number): void;
157
+ /**
158
+ * @param {number} x1 線端のx座標
159
+ * @param {number} y1 線端のy座標
160
+ * @param {number} x2 もう一方の端点のx座標
161
+ * @param {number} y2 もう一方の端点のy座標
162
+ * @param {number} index1 端点から反時計回り側の頂点インデックス
163
+ * @param {number} index2 端点から時計回り側の頂点インデックス
164
+ * @return {void}
165
+ * @method
166
+ * @static
167
+ * @private
168
+ */
169
+ static _$addLineCapMesh(x1: number, y1: number, x2: number, y2: number, index1: number, index2: number): void;
170
+ /**
171
+ * @param {number} x1 線端のx座標
172
+ * @param {number} y1 線端のy座標
173
+ * @param {number} x2 もう一方の端点のx座標
174
+ * @param {number} y2 もう一方の端点のy座標
175
+ * @param {number} index1 端点から反時計回り側の頂点インデックス
176
+ * @param {number} index2 端点から時計回り側の頂点インデックス
177
+ * @return {void}
178
+ * @method
179
+ * @static
180
+ * @private
181
+ */
182
+ static _$addSquareCapMesh(x1: number, y1: number, x2: number, y2: number, index1: number, index2: number): void;
183
+ }