@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Next2D
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ @next2d/webgl
2
+ =============
3
+
4
+ ## Installation
5
+
6
+ ```
7
+ npm install @next2d/webgl
8
+ ```
9
+
10
+ ## License
11
+ This project is licensed under the [MIT License](https://opensource.org/licenses/MIT) - see the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @class
3
+ */
4
+ export declare class BezierConverter {
5
+ readonly _$bezierConverterBuffer: Float32Array;
6
+ /**
7
+ * @constructor
8
+ * @public
9
+ */
10
+ constructor();
11
+ /**
12
+ * @param {number} from_x
13
+ * @param {number} from_y
14
+ * @param {number} cx1
15
+ * @param {number} cy1
16
+ * @param {number} cx2
17
+ * @param {number} cy2
18
+ * @param {number} x
19
+ * @param {number} y
20
+ * @return {void}
21
+ * @method
22
+ * @public
23
+ */
24
+ cubicToQuad(from_x: number, from_y: number, cx1: number, cy1: number, cx2: number, cy2: number, x: number, y: number): void;
25
+ /**
26
+ * @description 3次ベジェを、2つの3次ベジェに分割する
27
+ * @param {number} p0
28
+ * @param {number} p1
29
+ * @param {number} p2
30
+ * @param {number} p3
31
+ * @param {number} p4
32
+ * @param {number} p5
33
+ * @param {number} p6
34
+ * @param {number} p7
35
+ * @param {number} offset1
36
+ * @param {number} offset2
37
+ * @return void
38
+ * @method
39
+ * @private
40
+ */
41
+ _$split2Cubic(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, offset1: number, offset2: number): void;
42
+ /**
43
+ * @description 3次ベジェを、2つの2次ベジェに変換する
44
+ *
45
+ * @param {number} p0
46
+ * @param {number} p1
47
+ * @param {number} p2
48
+ * @param {number} p3
49
+ * @param {number} p4
50
+ * @param {number} p5
51
+ * @param {number} p6
52
+ * @param {number} p7
53
+ * @param {number} offset
54
+ * @return {void}
55
+ * @method
56
+ * @private
57
+ */
58
+ _$split2Quad(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, offset: number): void;
59
+ }
@@ -0,0 +1,106 @@
1
+ import { $Float32Array } from "@next2d/share";
2
+ /**
3
+ * @class
4
+ */
5
+ export class BezierConverter {
6
+ /**
7
+ * @constructor
8
+ * @public
9
+ */
10
+ constructor() {
11
+ this._$bezierConverterBuffer = new $Float32Array(32);
12
+ }
13
+ /**
14
+ * @param {number} from_x
15
+ * @param {number} from_y
16
+ * @param {number} cx1
17
+ * @param {number} cy1
18
+ * @param {number} cx2
19
+ * @param {number} cy2
20
+ * @param {number} x
21
+ * @param {number} y
22
+ * @return {void}
23
+ * @method
24
+ * @public
25
+ */
26
+ cubicToQuad(from_x, from_y, cx1, cy1, cx2, cy2, x, y) {
27
+ this._$split2Cubic(from_x, from_y, cx1, cy1, cx2, cy2, x, y, 0, 16);
28
+ this._$split2Cubic(this._$bezierConverterBuffer[0], this._$bezierConverterBuffer[1], this._$bezierConverterBuffer[2], this._$bezierConverterBuffer[3], this._$bezierConverterBuffer[4], this._$bezierConverterBuffer[5], this._$bezierConverterBuffer[6], this._$bezierConverterBuffer[7], 0, 8);
29
+ this._$split2Cubic(this._$bezierConverterBuffer[16], this._$bezierConverterBuffer[17], this._$bezierConverterBuffer[18], this._$bezierConverterBuffer[19], this._$bezierConverterBuffer[20], this._$bezierConverterBuffer[21], this._$bezierConverterBuffer[22], this._$bezierConverterBuffer[23], 16, 24);
30
+ this._$split2Quad(this._$bezierConverterBuffer[0], this._$bezierConverterBuffer[1], this._$bezierConverterBuffer[2], this._$bezierConverterBuffer[3], this._$bezierConverterBuffer[4], this._$bezierConverterBuffer[5], this._$bezierConverterBuffer[6], this._$bezierConverterBuffer[7], 0);
31
+ this._$split2Quad(this._$bezierConverterBuffer[8], this._$bezierConverterBuffer[9], this._$bezierConverterBuffer[10], this._$bezierConverterBuffer[11], this._$bezierConverterBuffer[12], this._$bezierConverterBuffer[13], this._$bezierConverterBuffer[14], this._$bezierConverterBuffer[15], 8);
32
+ this._$split2Quad(this._$bezierConverterBuffer[16], this._$bezierConverterBuffer[17], this._$bezierConverterBuffer[18], this._$bezierConverterBuffer[19], this._$bezierConverterBuffer[20], this._$bezierConverterBuffer[21], this._$bezierConverterBuffer[22], this._$bezierConverterBuffer[23], 16);
33
+ this._$split2Quad(this._$bezierConverterBuffer[24], this._$bezierConverterBuffer[25], this._$bezierConverterBuffer[26], this._$bezierConverterBuffer[27], this._$bezierConverterBuffer[28], this._$bezierConverterBuffer[29], this._$bezierConverterBuffer[30], this._$bezierConverterBuffer[31], 24);
34
+ }
35
+ /**
36
+ * @description 3次ベジェを、2つの3次ベジェに分割する
37
+ * @param {number} p0
38
+ * @param {number} p1
39
+ * @param {number} p2
40
+ * @param {number} p3
41
+ * @param {number} p4
42
+ * @param {number} p5
43
+ * @param {number} p6
44
+ * @param {number} p7
45
+ * @param {number} offset1
46
+ * @param {number} offset2
47
+ * @return void
48
+ * @method
49
+ * @private
50
+ */
51
+ _$split2Cubic(p0, p1, p2, p3, p4, p5, p6, p7, offset1, offset2) {
52
+ const mx = (p0 + 3 * (p2 + p4) + p6) * 0.125;
53
+ const my = (p1 + 3 * (p3 + p5) + p7) * 0.125;
54
+ const dx = (p6 + p4 - p2 - p0) * 0.125;
55
+ const dy = (p7 + p5 - p3 - p1) * 0.125;
56
+ this._$bezierConverterBuffer[offset1] = p0;
57
+ this._$bezierConverterBuffer[offset1 + 1] = p1;
58
+ this._$bezierConverterBuffer[offset1 + 2] = (p0 + p2) * 0.5;
59
+ this._$bezierConverterBuffer[offset1 + 3] = (p1 + p3) * 0.5;
60
+ this._$bezierConverterBuffer[offset1 + 4] = mx - dx;
61
+ this._$bezierConverterBuffer[offset1 + 5] = my - dy;
62
+ this._$bezierConverterBuffer[offset1 + 6] = mx;
63
+ this._$bezierConverterBuffer[offset1 + 7] = my;
64
+ this._$bezierConverterBuffer[offset2] = mx;
65
+ this._$bezierConverterBuffer[offset2 + 1] = my;
66
+ this._$bezierConverterBuffer[offset2 + 2] = mx + dx;
67
+ this._$bezierConverterBuffer[offset2 + 3] = my + dy;
68
+ this._$bezierConverterBuffer[offset2 + 4] = (p4 + p6) * 0.5;
69
+ this._$bezierConverterBuffer[offset2 + 5] = (p5 + p7) * 0.5;
70
+ this._$bezierConverterBuffer[offset2 + 6] = p6;
71
+ this._$bezierConverterBuffer[offset2 + 7] = p7;
72
+ }
73
+ /**
74
+ * @description 3次ベジェを、2つの2次ベジェに変換する
75
+ *
76
+ * @param {number} p0
77
+ * @param {number} p1
78
+ * @param {number} p2
79
+ * @param {number} p3
80
+ * @param {number} p4
81
+ * @param {number} p5
82
+ * @param {number} p6
83
+ * @param {number} p7
84
+ * @param {number} offset
85
+ * @return {void}
86
+ * @method
87
+ * @private
88
+ */
89
+ _$split2Quad(p0, p1, p2, p3, p4, p5, p6, p7, offset) {
90
+ const mx = (p0 + 3 * (p2 + p4) + p6) * 0.125;
91
+ const my = (p1 + 3 * (p3 + p5) + p7) * 0.125;
92
+ // 2次ベジェの始点の値は不要なので含めない
93
+ // this.result[offset - 2] = p0;
94
+ // this.result[offset - 1] = p1;
95
+ this._$bezierConverterBuffer[offset] = p0 * 0.25 + p2 * 0.75;
96
+ this._$bezierConverterBuffer[offset + 1] = p1 * 0.25 + p3 * 0.75;
97
+ this._$bezierConverterBuffer[offset + 2] = mx;
98
+ this._$bezierConverterBuffer[offset + 3] = my;
99
+ // this.result[offset + 2] = mx;
100
+ // this.result[offset + 3] = my;
101
+ this._$bezierConverterBuffer[offset + 4] = p4 * 0.75 + p6 * 0.25;
102
+ this._$bezierConverterBuffer[offset + 5] = p5 * 0.75 + p7 * 0.25;
103
+ this._$bezierConverterBuffer[offset + 6] = p6;
104
+ this._$bezierConverterBuffer[offset + 7] = p7;
105
+ }
106
+ }
@@ -0,0 +1,96 @@
1
+ import type { InterpolationMethodImpl } from "./interface/InterpolationMethodImpl";
2
+ import type { SpreadMethodImpl } from "./interface/SpreadMethodImpl";
3
+ import type { GradientTypeImpl } from "./interface/GradientTypeImpl";
4
+ /**
5
+ * @class
6
+ */
7
+ export declare class CanvasGradientToWebGL {
8
+ private _$rgb;
9
+ private _$mode;
10
+ private _$type;
11
+ private _$focalPointRatio;
12
+ private readonly _$points;
13
+ private readonly _$stops;
14
+ /**
15
+ * @constructor
16
+ * @public
17
+ */
18
+ constructor();
19
+ /**
20
+ * @return {void}
21
+ * @method
22
+ * @public
23
+ */
24
+ dispose(): void;
25
+ /**
26
+ * @member {string}
27
+ * @readonly
28
+ * @public
29
+ */
30
+ get mode(): SpreadMethodImpl;
31
+ /**
32
+ * @member {string}
33
+ * @readonly
34
+ * @public
35
+ */
36
+ get type(): GradientTypeImpl;
37
+ /**
38
+ * @member {string}
39
+ * @readonly
40
+ * @public
41
+ */
42
+ get rgb(): InterpolationMethodImpl;
43
+ /**
44
+ * @member {Float32Array}
45
+ * @readonly
46
+ * @public
47
+ */
48
+ get points(): Float32Array;
49
+ /**
50
+ * @member {number}
51
+ * @readonly
52
+ * @public
53
+ */
54
+ get focalPointRatio(): number;
55
+ /**
56
+ * @member {array}
57
+ * @readonly
58
+ * @public
59
+ */
60
+ get stops(): any[];
61
+ /**
62
+ * @param {number} x0
63
+ * @param {number} y0
64
+ * @param {number} x1
65
+ * @param {number} y1
66
+ * @param {string} [rgb=InterpolationMethod.RGB]
67
+ * @param {string} [mode=SpreadMethod.PAD]
68
+ * @return {CanvasGradientToWebGL}
69
+ * @method
70
+ * @public
71
+ */
72
+ linear(x0: number, y0: number, x1: number, y1: number, rgb?: InterpolationMethodImpl, mode?: SpreadMethodImpl): CanvasGradientToWebGL;
73
+ /**
74
+ * @param {number} x0
75
+ * @param {number} y0
76
+ * @param {number} r0
77
+ * @param {number} x1
78
+ * @param {number} y1
79
+ * @param {number} r1
80
+ * @param {string} [rgb=InterpolationMethod.RGB]
81
+ * @param {string} [mode=SpreadMethod.PAD]
82
+ * @param {number} [focal_point_ratio=0]
83
+ * @return {CanvasGradientToWebGL}
84
+ * @method
85
+ * @public
86
+ */
87
+ radial(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number, rgb?: InterpolationMethodImpl, mode?: SpreadMethodImpl, focal_point_ratio?: number): CanvasGradientToWebGL;
88
+ /**
89
+ * @param {number} offset
90
+ * @param {Float32Array} color
91
+ * @return {void}
92
+ * @method
93
+ * @public
94
+ */
95
+ addColorStop(offset: number, color: Float32Array): void;
96
+ }
@@ -0,0 +1,181 @@
1
+ import { $getFloat32Array6, $getArray, $clamp, $poolFloat32Array4, $poolFloat32Array6 } from "@next2d/share";
2
+ /**
3
+ * @class
4
+ */
5
+ export class CanvasGradientToWebGL {
6
+ /**
7
+ * @constructor
8
+ * @public
9
+ */
10
+ constructor() {
11
+ /**
12
+ * @type {string}
13
+ * @default InterpolationMethod.RGB
14
+ * @private
15
+ */
16
+ this._$rgb = "rgb";
17
+ /**
18
+ * @type {string}
19
+ * @default SpreadMethod.PAD
20
+ * @private
21
+ */
22
+ this._$mode = "pad";
23
+ /**
24
+ * @type {string}
25
+ * @default GradientType.LINEAR
26
+ * @private
27
+ */
28
+ this._$type = "linear";
29
+ /**
30
+ * @type {number}
31
+ * @default 0
32
+ * @private
33
+ */
34
+ this._$focalPointRatio = 0;
35
+ /**
36
+ * @type {Float32Array}
37
+ * @private
38
+ */
39
+ this._$points = $getFloat32Array6();
40
+ /**
41
+ * @type {array}
42
+ * @private
43
+ */
44
+ this._$stops = $getArray();
45
+ }
46
+ /**
47
+ * @return {void}
48
+ * @method
49
+ * @public
50
+ */
51
+ dispose() {
52
+ const stops = this._$stops;
53
+ for (let idx = 0; idx < stops.length; ++idx) {
54
+ $poolFloat32Array4(stops[idx][1]);
55
+ }
56
+ $poolFloat32Array6(this._$points);
57
+ }
58
+ /**
59
+ * @member {string}
60
+ * @readonly
61
+ * @public
62
+ */
63
+ get mode() {
64
+ return this._$mode;
65
+ }
66
+ /**
67
+ * @member {string}
68
+ * @readonly
69
+ * @public
70
+ */
71
+ get type() {
72
+ return this._$type;
73
+ }
74
+ /**
75
+ * @member {string}
76
+ * @readonly
77
+ * @public
78
+ */
79
+ get rgb() {
80
+ return this._$rgb;
81
+ }
82
+ /**
83
+ * @member {Float32Array}
84
+ * @readonly
85
+ * @public
86
+ */
87
+ get points() {
88
+ return this._$points;
89
+ }
90
+ /**
91
+ * @member {number}
92
+ * @readonly
93
+ * @public
94
+ */
95
+ get focalPointRatio() {
96
+ return this._$focalPointRatio;
97
+ }
98
+ /**
99
+ * @member {array}
100
+ * @readonly
101
+ * @public
102
+ */
103
+ get stops() {
104
+ // sort
105
+ this._$stops.sort((a, b) => {
106
+ switch (true) {
107
+ case a[0] > b[0]:
108
+ return 1;
109
+ case b[0] > a[0]:
110
+ return -1;
111
+ default:
112
+ return 0;
113
+ }
114
+ });
115
+ return this._$stops;
116
+ }
117
+ /**
118
+ * @param {number} x0
119
+ * @param {number} y0
120
+ * @param {number} x1
121
+ * @param {number} y1
122
+ * @param {string} [rgb=InterpolationMethod.RGB]
123
+ * @param {string} [mode=SpreadMethod.PAD]
124
+ * @return {CanvasGradientToWebGL}
125
+ * @method
126
+ * @public
127
+ */
128
+ linear(x0, y0, x1, y1, rgb = "rgb", mode = "pad") {
129
+ this._$type = "linear";
130
+ this._$points[0] = x0;
131
+ this._$points[1] = y0;
132
+ this._$points[2] = x1;
133
+ this._$points[3] = y1;
134
+ this._$rgb = rgb;
135
+ this._$mode = mode;
136
+ if (this._$stops.length) {
137
+ this._$stops.length = 0;
138
+ }
139
+ return this;
140
+ }
141
+ /**
142
+ * @param {number} x0
143
+ * @param {number} y0
144
+ * @param {number} r0
145
+ * @param {number} x1
146
+ * @param {number} y1
147
+ * @param {number} r1
148
+ * @param {string} [rgb=InterpolationMethod.RGB]
149
+ * @param {string} [mode=SpreadMethod.PAD]
150
+ * @param {number} [focal_point_ratio=0]
151
+ * @return {CanvasGradientToWebGL}
152
+ * @method
153
+ * @public
154
+ */
155
+ radial(x0, y0, r0, x1, y1, r1, rgb = "rgb", mode = "pad", focal_point_ratio = 0) {
156
+ this._$type = "radial";
157
+ this._$points[0] = x0;
158
+ this._$points[1] = y0;
159
+ this._$points[2] = r0;
160
+ this._$points[3] = x1;
161
+ this._$points[4] = y1;
162
+ this._$points[5] = r1;
163
+ this._$rgb = rgb;
164
+ this._$mode = mode;
165
+ this._$focalPointRatio = $clamp(focal_point_ratio, -0.975, 0.975, 0);
166
+ if (this._$stops.length) {
167
+ this._$stops.length = 0;
168
+ }
169
+ return this;
170
+ }
171
+ /**
172
+ * @param {number} offset
173
+ * @param {Float32Array} color
174
+ * @return {void}
175
+ * @method
176
+ * @public
177
+ */
178
+ addColorStop(offset, color) {
179
+ this._$stops.push($getArray(offset, color));
180
+ }
181
+ }
@@ -0,0 +1,39 @@
1
+ import type { CanvasToWebGLContext } from "./CanvasToWebGLContext";
2
+ /**
3
+ * @class
4
+ */
5
+ export declare class CanvasPatternToWebGL {
6
+ private readonly _$context;
7
+ private readonly _$texture;
8
+ private readonly _$repeat;
9
+ private readonly _$colorTransform;
10
+ /**
11
+ * @constructor
12
+ * @public
13
+ */
14
+ constructor(context: CanvasToWebGLContext, texture: WebGLTexture, repeat: boolean, color_transform: Float32Array);
15
+ /**
16
+ * @return {void}
17
+ * @method
18
+ * @private
19
+ */
20
+ dispose(): void;
21
+ /**
22
+ * @member {WebGLTexture}
23
+ * @readonly
24
+ * @public
25
+ */
26
+ get texture(): WebGLTexture;
27
+ /**
28
+ * @member {boolean}
29
+ * @readonly
30
+ * @public
31
+ */
32
+ get repeat(): boolean;
33
+ /**
34
+ * @member {Float32Array}
35
+ * @readonly
36
+ * @public
37
+ */
38
+ get colorTransform(): Float32Array;
39
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @class
3
+ */
4
+ export class CanvasPatternToWebGL {
5
+ /**
6
+ * @constructor
7
+ * @public
8
+ */
9
+ constructor(context, texture, repeat, color_transform) {
10
+ /**
11
+ * @type {CanvasToWebGLContext}
12
+ * @private
13
+ */
14
+ this._$context = context;
15
+ /**
16
+ * @type {WebGLTexture}
17
+ * @private
18
+ */
19
+ this._$texture = texture;
20
+ /**
21
+ * @type {string}
22
+ * @private
23
+ */
24
+ this._$repeat = repeat;
25
+ /**
26
+ * @type {Float32Array}
27
+ * @private
28
+ */
29
+ this._$colorTransform = color_transform;
30
+ }
31
+ /**
32
+ * @return {void}
33
+ * @method
34
+ * @private
35
+ */
36
+ dispose() {
37
+ this
38
+ ._$context
39
+ .frameBuffer
40
+ .releaseTexture(this._$texture);
41
+ }
42
+ /**
43
+ * @member {WebGLTexture}
44
+ * @readonly
45
+ * @public
46
+ */
47
+ get texture() {
48
+ return this._$texture;
49
+ }
50
+ /**
51
+ * @member {boolean}
52
+ * @readonly
53
+ * @public
54
+ */
55
+ get repeat() {
56
+ return this._$repeat;
57
+ }
58
+ /**
59
+ * @member {Float32Array}
60
+ * @readonly
61
+ * @public
62
+ */
63
+ get colorTransform() {
64
+ return this._$colorTransform;
65
+ }
66
+ }