@wcardinal/wcardinal-ui 0.391.0 → 0.392.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/wcardinal/ui/util/dynamic-sdf-font-generator.js +7 -7
- package/dist/wcardinal/ui/util/dynamic-sdf-font-generator.js.map +1 -1
- package/dist/wcardinal-ui-theme-dark-en-us.js +1 -1
- package/dist/wcardinal-ui-theme-dark-en-us.min.js +1 -1
- package/dist/wcardinal-ui-theme-dark-ja-jp.js +1 -1
- package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +1 -1
- package/dist/wcardinal-ui-theme-dark.js +1 -1
- package/dist/wcardinal-ui-theme-dark.min.js +1 -1
- package/dist/wcardinal-ui-theme-white-en-us.js +1 -1
- package/dist/wcardinal-ui-theme-white-en-us.min.js +1 -1
- package/dist/wcardinal-ui-theme-white-ja-jp.js +1 -1
- package/dist/wcardinal-ui-theme-white-ja-jp.min.js +1 -1
- package/dist/wcardinal-ui-theme-white.js +1 -1
- package/dist/wcardinal-ui-theme-white.min.js +1 -1
- package/dist/wcardinal-ui.cjs.js +8 -8
- package/dist/wcardinal-ui.js +8 -8
- package/dist/wcardinal-ui.min.js +2 -2
- package/dist/wcardinal-ui.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
var VERTEX_SHADER = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nvarying mediump vec2 vTextureCoord;\nvoid main(void) {\n\tgl_Position = vec4(aVertexPosition, 0.0, 1.0);\n\tvTextureCoord = aTextureCoord;\n}\n";
|
|
6
|
-
var FRAGMENT_SHADER = "\nprecision mediump float;\n\nvarying mediump vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec2 uSize;\n\nfloat norm(vec2 v) {\n\treturn dot(v, v);\n}\n\nfloat norm(vec2 p, vec2 dp) {\n\tvec2 xy = p + dp;\n\tvec2 uvi = vec2(1.0) / uSize;\n\tvec2 uv = xy * uvi;\n\tvec4 t0 = vec4(texture2D(uSampler, uv).a);\n\tvec4 t1 = vec4(\n\t\ttexture2D(uSampler, uv + vec2(-uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , -uvi.y)).a,\n\t\ttexture2D(uSampler, uv + vec2(+uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , +uvi.y)).a\n\t);\n\tvec4 t2 = vec4(0.5);\n\tvec4 t3 = min(t1,t0);\n\tvec4 t4 = max(t1,t0);\n\n\tvec4 w0 = (t2 - t0) / (t1 - t0);\n\tvec4 s0 = vec4(\n\t\tt3.x < 0.5 && 0.5 <= t4.x,\n\t\tt3.y < 0.5 && 0.5 <= t4.y,\n\t\tt3.z < 0.5 && 0.5 <= t4.z,\n\t\tt3.w < 0.5 && 0.5 <= t4.w\n\t);\n\tvec4 l0 = vec4(\n\t\tnorm(dp + vec2(-w0.x, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , -w0.y)),\n\t\tnorm(dp + vec2(+w0.z, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , +w0.w))\n\t);\n\tvec4 c0 = vec4(100.0);\n\tvec4 r0 = mix(c0, l0, s0);\n\n\tvec4 w1 = w0 * vec4(0.5);\n\tvec4 s1 = vec4(\n\t\t0.5 < s0.x && 0.5 < s0.y,\n\t\t0.5 < s0.y && 0.5 < s0.z,\n\t\t0.5 < s0.z && 0.5 < s0.w,\n\t\t0.5 < s0.w && 0.5 < s0.x\n\t);\n\tvec4 l1 = vec4(\n\t\tnorm(dp + vec2(-w1.x, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, +w1.w)),\n\t\tnorm(dp + vec2(-w1.x, +w1.w))\n\t);\n\tvec4 r1 = mix(c0, l1, s1);\n\tvec4 r2 = min(r0, r1);\n\tvec2 r3 = min(r2.xy, r2.zw);\n\treturn min(r3.x, r3.y);\n}\n\nfloat
|
|
6
|
+
var FRAGMENT_SHADER = "\nprecision mediump float;\n\nvarying mediump vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec2 uSize;\n\nfloat norm(vec2 v) {\n\treturn dot(v, v);\n}\n\nfloat norm(vec2 p, vec2 dp) {\n\tvec2 xy = p + dp;\n\tvec2 uvi = vec2(1.0) / uSize;\n\tvec2 uv = xy * uvi;\n\tvec4 t0 = vec4(texture2D(uSampler, uv).a);\n\tvec4 t1 = vec4(\n\t\ttexture2D(uSampler, uv + vec2(-uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , -uvi.y)).a,\n\t\ttexture2D(uSampler, uv + vec2(+uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , +uvi.y)).a\n\t);\n\tvec4 t2 = vec4(0.5);\n\tvec4 t3 = min(t1,t0);\n\tvec4 t4 = max(t1,t0);\n\n\tvec4 w0 = (t2 - t0) / (t1 - t0);\n\tvec4 s0 = vec4(\n\t\tt3.x < 0.5 && 0.5 <= t4.x,\n\t\tt3.y < 0.5 && 0.5 <= t4.y,\n\t\tt3.z < 0.5 && 0.5 <= t4.z,\n\t\tt3.w < 0.5 && 0.5 <= t4.w\n\t);\n\tvec4 l0 = vec4(\n\t\tnorm(dp + vec2(-w0.x, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , -w0.y)),\n\t\tnorm(dp + vec2(+w0.z, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , +w0.w))\n\t);\n\tvec4 c0 = vec4(100.0);\n\tvec4 r0 = mix(c0, l0, s0);\n\n\tvec4 w1 = w0 * vec4(0.5);\n\tvec4 s1 = vec4(\n\t\t0.5 < s0.x && 0.5 < s0.y,\n\t\t0.5 < s0.y && 0.5 < s0.z,\n\t\t0.5 < s0.z && 0.5 < s0.w,\n\t\t0.5 < s0.w && 0.5 < s0.x\n\t);\n\tvec4 l1 = vec4(\n\t\tnorm(dp + vec2(-w1.x, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, +w1.w)),\n\t\tnorm(dp + vec2(-w1.x, +w1.w))\n\t);\n\tvec4 r1 = mix(c0, l1, s1);\n\tvec4 r2 = min(r0, r1);\n\tvec2 r3 = min(r2.xy, r2.zw);\n\treturn min(r3.x, r3.y);\n}\n\nfloat normY(vec2 p, float dx) {\n\tfloat result = 100.0;\n\tfor (float dy=-6.0; dy < 6.5; dy += 1.0) {\n\t\tresult = min(result, norm(p, vec2(dx, dy)));\n\t}\n\treturn result;\n}\n\nfloat normX(vec2 p) {\n\tfloat result = 100.0;\n\tfor (float dx=-6.0; dx < 6.5; dx += 1.0) {\n\t\tresult = min(result, normY(p, dx));\n\t}\n\treturn result;\n}\n\nvoid main(void) {\n\tfloat t = texture2D(uSampler, vTextureCoord).a;\n\tfloat d = min( 6.0, sqrt(normX( vTextureCoord * uSize )) ) / 12.0;\n\td = clamp( mix( 0.5 - d, 0.5 + d, step( 0.5, t ) ), 0.0, 1.0 ) * 255.0;\n\tfloat r = floor(d);\n\td = (d - r) * 255.0;\n\tfloat g = floor(d);\n\tgl_FragColor = vec4(r * 0.00392156862745098, g * 0.00392156862745098, d - g, 1.0);\n}\n";
|
|
7
7
|
var DynamicSDFFontGenerator = /** @class */ (function () {
|
|
8
8
|
function DynamicSDFFontGenerator() {
|
|
9
9
|
var _this = this;
|
|
10
10
|
this._gl = null;
|
|
11
11
|
this._texture = null;
|
|
12
12
|
this._shaderProgram = null;
|
|
13
|
-
this._vertexPositionAttribute =
|
|
14
|
-
this._textureCoordAttribute =
|
|
15
|
-
this._samplerUniform =
|
|
16
|
-
this._sizeUniform =
|
|
13
|
+
this._vertexPositionAttribute = 0;
|
|
14
|
+
this._textureCoordAttribute = 1;
|
|
15
|
+
this._samplerUniform = null;
|
|
16
|
+
this._sizeUniform = null;
|
|
17
17
|
this._vb = null;
|
|
18
18
|
this._uvb = null;
|
|
19
19
|
var canvas = (this._canvas = document.createElement("canvas"));
|
|
@@ -87,6 +87,8 @@ var DynamicSDFFontGenerator = /** @class */ (function () {
|
|
|
87
87
|
if (shaderProgram != null) {
|
|
88
88
|
gl.attachShader(shaderProgram, vertexShader);
|
|
89
89
|
gl.attachShader(shaderProgram, fragmentShader);
|
|
90
|
+
gl.bindAttribLocation(shaderProgram, 0, "aVertexPosition");
|
|
91
|
+
gl.bindAttribLocation(shaderProgram, 1, "aTextureCoord");
|
|
90
92
|
gl.linkProgram(shaderProgram);
|
|
91
93
|
if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
|
|
92
94
|
console &&
|
|
@@ -99,8 +101,6 @@ var DynamicSDFFontGenerator = /** @class */ (function () {
|
|
|
99
101
|
gl.deleteShader(vertexShader);
|
|
100
102
|
gl.deleteShader(fragmentShader);
|
|
101
103
|
gl.useProgram(shaderProgram);
|
|
102
|
-
this._vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition");
|
|
103
|
-
this._textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord");
|
|
104
104
|
this._samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler");
|
|
105
105
|
this._sizeUniform = gl.getUniformLocation(shaderProgram, "uSize");
|
|
106
106
|
gl.useProgram(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-sdf-font-generator.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-sdf-font-generator.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nconst VERTEX_SHADER = `\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nvarying mediump vec2 vTextureCoord;\nvoid main(void) {\n\tgl_Position = vec4(aVertexPosition, 0.0, 1.0);\n\tvTextureCoord = aTextureCoord;\n}\n`;\n\nconst FRAGMENT_SHADER = `\nprecision mediump float;\n\nvarying mediump vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec2 uSize;\n\nfloat norm(vec2 v) {\n\treturn dot(v, v);\n}\n\nfloat norm(vec2 p, vec2 dp) {\n\tvec2 xy = p + dp;\n\tvec2 uvi = vec2(1.0) / uSize;\n\tvec2 uv = xy * uvi;\n\tvec4 t0 = vec4(texture2D(uSampler, uv).a);\n\tvec4 t1 = vec4(\n\t\ttexture2D(uSampler, uv + vec2(-uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , -uvi.y)).a,\n\t\ttexture2D(uSampler, uv + vec2(+uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , +uvi.y)).a\n\t);\n\tvec4 t2 = vec4(0.5);\n\tvec4 t3 = min(t1,t0);\n\tvec4 t4 = max(t1,t0);\n\n\tvec4 w0 = (t2 - t0) / (t1 - t0);\n\tvec4 s0 = vec4(\n\t\tt3.x < 0.5 && 0.5 <= t4.x,\n\t\tt3.y < 0.5 && 0.5 <= t4.y,\n\t\tt3.z < 0.5 && 0.5 <= t4.z,\n\t\tt3.w < 0.5 && 0.5 <= t4.w\n\t);\n\tvec4 l0 = vec4(\n\t\tnorm(dp + vec2(-w0.x, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , -w0.y)),\n\t\tnorm(dp + vec2(+w0.z, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , +w0.w))\n\t);\n\tvec4 c0 = vec4(100.0);\n\tvec4 r0 = mix(c0, l0, s0);\n\n\tvec4 w1 = w0 * vec4(0.5);\n\tvec4 s1 = vec4(\n\t\t0.5 < s0.x && 0.5 < s0.y,\n\t\t0.5 < s0.y && 0.5 < s0.z,\n\t\t0.5 < s0.z && 0.5 < s0.w,\n\t\t0.5 < s0.w && 0.5 < s0.x\n\t);\n\tvec4 l1 = vec4(\n\t\tnorm(dp + vec2(-w1.x, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, +w1.w)),\n\t\tnorm(dp + vec2(-w1.x, +w1.w))\n\t);\n\tvec4 r1 = mix(c0, l1, s1);\n\tvec4 r2 = min(r0, r1);\n\tvec2 r3 = min(r2.xy, r2.zw);\n\treturn min(r3.x, r3.y);\n}\n\nfloat distY(vec2 p, float dx) {\n\treturn min(\n\t\tnorm(p, vec2(dx, 0.0)),\n\t\tmin(\n\t\t\tmin(\n\t\t\t\tmin(\n\t\t\t\t\tmin(\n\t\t\t\t\t\tnorm(p, vec2(dx, -6.0)),\n\t\t\t\t\t\tnorm(p, vec2(dx, -5.0))\n\t\t\t\t\t),\n\t\t\t\t\tmin(\n\t\t\t\t\t\tnorm(p, vec2(dx, -4.0)),\n\t\t\t\t\t\tnorm(p, vec2(dx, -3.0))\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tmin(\n\t\t\t\t\tnorm(p, vec2(dx, -2.0)),\n\t\t\t\t\tnorm(p, vec2(dx, -1.0))\n\t\t\t\t)\n\t\t\t),\n\t\t\tmin(\n\t\t\t\tmin(\n\t\t\t\t\tmin(\n\t\t\t\t\t\tnorm(p, vec2(dx, +1.0)),\n\t\t\t\t\t\tnorm(p, vec2(dx, +2.0))\n\t\t\t\t\t),\n\t\t\t\t\tmin(\n\t\t\t\t\t\tnorm(p, vec2(dx, +3.0)),\n\t\t\t\t\t\tnorm(p, vec2(dx, +4.0))\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tmin(\n\t\t\t\t\tnorm(p, vec2(dx, +5.0)),\n\t\t\t\t\tnorm(p, vec2(dx, +6.0))\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t);\n}\n\nfloat distX(vec2 p) {\n\treturn min(\n\t\tdistY(p, 0.0),\n\t\tmin(\n\t\t\tmin(\n\t\t\t\tmin(\n\t\t\t\t\tmin(\n\t\t\t\t\t\tdistY(p, -6.0),\n\t\t\t\t\t\tdistY(p, -5.0)\n\t\t\t\t\t),\n\t\t\t\t\tmin(\n\t\t\t\t\t\tdistY(p, -4.0),\n\t\t\t\t\t\tdistY(p, -3.0)\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tmin(\n\t\t\t\t\tdistY(p, -2.0),\n\t\t\t\t\tdistY(p, -1.0)\n\t\t\t\t)\n\t\t\t),\n\t\t\tmin(\n\t\t\t\tmin(\n\t\t\t\t\tmin(\n\t\t\t\t\t\tdistY(p, +1.0),\n\t\t\t\t\t\tdistY(p, +2.0)\n\t\t\t\t\t),\n\t\t\t\t\tmin(\n\t\t\t\t\t\tdistY(p, +3.0),\n\t\t\t\t\t\tdistY(p, +4.0)\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tmin(\n\t\t\t\t\tdistY(p, +5.0),\n\t\t\t\t\tdistY(p, +6.0)\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t);\n}\n\nfloat dist(vec2 p) {\n\treturn sqrt(distX(p));\n}\n\nvoid main(void) {\n\tfloat t = texture2D(uSampler, vTextureCoord).a;\n\tfloat d = min( 6.0, dist( vTextureCoord * uSize ) ) / 12.0;\n\td = clamp( mix( 0.5 - d, 0.5 + d, step( 0.5, t ) ), 0.0, 1.0 ) * 255.0;\n\tfloat r = floor(d);\n\td = (d - r) * 255.0;\n\tfloat g = floor(d);\n\tgl_FragColor = vec4(r * 0.00392156862745098, g * 0.00392156862745098, d - g, 1.0);\n}\n`;\n\nexport class DynamicSDFFontGenerator {\n\tprotected static _INSTANCE: DynamicSDFFontGenerator | null = null;\n\n\tprotected _canvas: HTMLCanvasElement | null;\n\tprotected _onLostBound: EventListener;\n\tprotected _onRestoreBound: EventListener;\n\tprotected _onUnloadBound: EventListener;\n\tprotected _gl: WebGLRenderingContext | null;\n\tprotected _texture: WebGLTexture | null;\n\tprotected _shaderProgram: WebGLProgram | null;\n\tprotected _vertexPositionAttribute: number;\n\tprotected _textureCoordAttribute: number;\n\tprotected _samplerUniform: WebGLUniformLocation | null;\n\tprotected _sizeUniform: WebGLUniformLocation | null;\n\tprotected _vb: WebGLBuffer | null;\n\tprotected _uvb: WebGLBuffer | null;\n\n\tconstructor() {\n\t\tthis._gl = null;\n\t\tthis._texture = null;\n\t\tthis._shaderProgram = null;\n\t\tthis._vertexPositionAttribute = NaN;\n\t\tthis._textureCoordAttribute = NaN;\n\t\tthis._samplerUniform = NaN;\n\t\tthis._sizeUniform = NaN;\n\t\tthis._vb = null;\n\t\tthis._uvb = null;\n\n\t\tconst canvas = (this._canvas = document.createElement(\"canvas\"));\n\t\tcanvas.width = 64;\n\t\tcanvas.height = 64;\n\t\tthis._onLostBound = (e: Event): void => {\n\t\t\te.preventDefault();\n\t\t};\n\t\tthis._onRestoreBound = (): void => {\n\t\t\tthis.restore();\n\t\t};\n\t\tthis._onUnloadBound = (): void => {\n\t\t\tthis.destroy();\n\t\t};\n\t\tcanvas.addEventListener(\"webglcontextlost\", this._onLostBound, false);\n\t\tcanvas.addEventListener(\"webglcontextrestored\", this._onRestoreBound, false);\n\t\twindow.addEventListener(\"unload\", this._onUnloadBound, false);\n\t}\n\n\tinit(): this {\n\t\tconst canvas = this._canvas;\n\t\tif (canvas != null && (this._gl == null || this._gl.isContextLost())) {\n\t\t\tconst config: WebGLContextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tantialias: false,\n\t\t\t\tdepth: false,\n\t\t\t\tstencil: false,\n\t\t\t\tpremultipliedAlpha: false\n\t\t\t};\n\t\t\tconst gl =\n\t\t\t\tcanvas.getContext(\"webgl\", config) ||\n\t\t\t\t(canvas.getContext(\"experimental-webgl\", config) as WebGLRenderingContext | null);\n\t\t\tthis._gl = gl;\n\t\t\tif (gl != null) {\n\t\t\t\tgl.clearColor(1.0, 1.0, 1.0, 0.0);\n\t\t\t\tthis.makeVertexBuffer();\n\t\t\t\tthis.makeUvBuffer();\n\t\t\t\tthis.makeShaders();\n\t\t\t\tthis._texture = null;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\trestore(): void {\n\t\tthis.init();\n\t}\n\n\tgetCanvas(): HTMLCanvasElement | null {\n\t\treturn this._canvas;\n\t}\n\n\tgetShader(gl: WebGLRenderingContext, code: string, type: boolean): WebGLShader | null {\n\t\tconst shader = type\n\t\t\t? gl.createShader(gl.FRAGMENT_SHADER)\n\t\t\t: gl.createShader(gl.VERTEX_SHADER);\n\t\tif (shader != null) {\n\t\t\tgl.shaderSource(shader, code);\n\t\t\tgl.compileShader(shader);\n\t\t\tif (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n\t\t\t\tconsole &&\n\t\t\t\t\tconsole.error(`Failed to compile the shader: ${gl.getShaderInfoLog(shader)}`);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\treturn shader;\n\t}\n\n\tmakeShaders(): WebGLShader | null {\n\t\tconst gl = this._gl;\n\t\tif (gl != null && gl.isContextLost() !== true) {\n\t\t\tconst vertexShader = this.getShader(gl, VERTEX_SHADER, false);\n\t\t\tif (vertexShader != null) {\n\t\t\t\tconst fragmentShader = this.getShader(gl, FRAGMENT_SHADER, true);\n\t\t\t\tif (fragmentShader != null) {\n\t\t\t\t\tconst shaderProgram = (this._shaderProgram = gl.createProgram());\n\t\t\t\t\tif (shaderProgram != null) {\n\t\t\t\t\t\tgl.attachShader(shaderProgram, vertexShader);\n\t\t\t\t\t\tgl.attachShader(shaderProgram, fragmentShader);\n\t\t\t\t\t\tgl.linkProgram(shaderProgram);\n\t\t\t\t\t\tif (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {\n\t\t\t\t\t\t\tconsole &&\n\t\t\t\t\t\t\t\tconsole.error(`Failed to link the program: ${gl.getError()}`);\n\t\t\t\t\t\t\tgl.deleteShader(vertexShader);\n\t\t\t\t\t\t\tgl.deleteShader(fragmentShader);\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tgl.deleteShader(vertexShader);\n\t\t\t\t\t\t\tgl.deleteShader(fragmentShader);\n\n\t\t\t\t\t\t\tgl.useProgram(shaderProgram);\n\t\t\t\t\t\t\tthis._vertexPositionAttribute = gl.getAttribLocation(\n\t\t\t\t\t\t\t\tshaderProgram,\n\t\t\t\t\t\t\t\t\"aVertexPosition\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis._textureCoordAttribute = gl.getAttribLocation(\n\t\t\t\t\t\t\t\tshaderProgram,\n\t\t\t\t\t\t\t\t\"aTextureCoord\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis._samplerUniform = gl.getUniformLocation(shaderProgram, \"uSampler\");\n\t\t\t\t\t\t\tthis._sizeUniform = gl.getUniformLocation(shaderProgram, \"uSize\");\n\t\t\t\t\t\t\tgl.useProgram(null);\n\t\t\t\t\t\t\treturn shaderProgram;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgl.deleteShader(vertexShader);\n\t\t\t\t\t\tgl.deleteShader(fragmentShader);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tgl.deleteShader(vertexShader);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tdestroyShaders(): void {\n\t\tconst gl = this._gl;\n\t\tif (gl != null && gl.isContextLost() !== true) {\n\t\t\tconst shaderProgram = this._shaderProgram;\n\t\t\tif (shaderProgram != null) {\n\t\t\t\tthis._shaderProgram = null;\n\t\t\t\tgl.useProgram(null);\n\t\t\t\tgl.deleteProgram(shaderProgram);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateTexture(\n\t\tsource:\n\t\t\t| ImageBitmap\n\t\t\t| ImageData\n\t\t\t| HTMLImageElement\n\t\t\t| HTMLCanvasElement\n\t\t\t| HTMLVideoElement\n\t\t\t| OffscreenCanvas\n\t): WebGLTexture | null {\n\t\tconst gl = this._gl;\n\t\tconst canvas = this._canvas;\n\t\tif (gl != null && gl.isContextLost() !== true && canvas != null) {\n\t\t\tconst width = source.width;\n\t\t\tconst height = source.height;\n\t\t\tif (canvas.width !== width || canvas.height !== height) {\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\t\t\t\tgl.viewport(0, 0, width, height);\n\t\t\t}\n\n\t\t\tlet texture = this._texture;\n\t\t\tif (texture == null) {\n\t\t\t\ttexture = this._texture = gl.createTexture();\n\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, texture);\n\t\t\t\tgl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);\n\t\t\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n\t\t\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\t\t\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\t\t\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, null);\n\t\t\t} else {\n\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, texture);\n\t\t\t\tgl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);\n\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, null);\n\t\t\t}\n\t\t\treturn texture;\n\t\t}\n\t\treturn null;\n\t}\n\n\tdestroyTexture(): void {\n\t\tconst gl = this._gl;\n\t\tconst texture = this._texture;\n\t\tif (gl != null && gl.isContextLost() !== true && texture != null) {\n\t\t\tthis._texture = null;\n\t\t\tgl.bindTexture(gl.TEXTURE_2D, null);\n\t\t\tgl.deleteTexture(texture);\n\t\t}\n\t}\n\n\tmakeVertexBuffer(): WebGLBuffer | null {\n\t\tconst gl = this._gl;\n\t\tif (gl != null && gl.isContextLost() !== true) {\n\t\t\tconst vb = (this._vb = gl.createBuffer());\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vb);\n\n\t\t\tconst vertices = [-1.0, +1.0, +1.0, +1.0, -1.0, -1.0, +1.0, -1.0];\n\n\t\t\tgl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);\n\t\t\treturn vb;\n\t\t}\n\t\treturn null;\n\t}\n\n\tdestroyVertexBuffer(): void {\n\t\tconst gl = this._gl;\n\t\tconst vb = this._vb;\n\t\tif (gl != null && gl.isContextLost() !== true && vb != null) {\n\t\t\tthis._vb = null;\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\t\tgl.deleteBuffer(vb);\n\t\t}\n\t}\n\n\tmakeUvBuffer(): WebGLBuffer | null {\n\t\tconst gl = this._gl;\n\t\tif (gl != null && gl.isContextLost() !== true) {\n\t\t\tconst uvb = (this._uvb = gl.createBuffer());\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, uvb);\n\n\t\t\tconst uvs = [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0];\n\n\t\t\tgl.bufferData(gl.ARRAY_BUFFER, new Float32Array(uvs), gl.STATIC_DRAW);\n\t\t\treturn uvb;\n\t\t}\n\t\treturn null;\n\t}\n\n\tdestroyUvBuffer(): void {\n\t\tconst gl = this._gl;\n\t\tconst uvb = this._uvb;\n\t\tif (gl != null && gl.isContextLost() !== true && uvb != null) {\n\t\t\tthis._uvb = null;\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\t\tgl.deleteBuffer(uvb);\n\t\t}\n\t}\n\n\trender(): void {\n\t\tconst gl = this._gl;\n\t\tconst canvas = this._canvas;\n\t\tconst shaderProgram = this._shaderProgram;\n\t\tconst vb = this._vb;\n\t\tconst uvb = this._uvb;\n\t\tconst texture = this._texture;\n\t\tif (\n\t\t\tgl != null &&\n\t\t\tgl.isContextLost() !== true &&\n\t\t\tcanvas != null &&\n\t\t\tshaderProgram != null &&\n\t\t\tvb != null &&\n\t\t\tuvb != null &&\n\t\t\ttexture != null\n\t\t) {\n\t\t\tgl.clear(gl.COLOR_BUFFER_BIT);\n\n\t\t\tgl.useProgram(shaderProgram);\n\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vb);\n\t\t\tconst vertexPositionAttribute = this._vertexPositionAttribute;\n\t\t\tgl.enableVertexAttribArray(vertexPositionAttribute);\n\t\t\tgl.vertexAttribPointer(vertexPositionAttribute, 2, gl.FLOAT, false, 0, 0);\n\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, uvb);\n\t\t\tconst textureCoordAttribute = this._textureCoordAttribute;\n\t\t\tgl.enableVertexAttribArray(textureCoordAttribute);\n\t\t\tgl.vertexAttribPointer(textureCoordAttribute, 2, gl.FLOAT, false, 0, 0);\n\n\t\t\tgl.activeTexture(gl.TEXTURE0);\n\t\t\tgl.bindTexture(gl.TEXTURE_2D, texture);\n\t\t\tgl.uniform1i(this._samplerUniform, 0);\n\t\t\tgl.uniform2f(this._sizeUniform, canvas.width, canvas.height);\n\n\t\t\tgl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n\n\t\t\tgl.bindTexture(gl.TEXTURE_2D, null);\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\t\tgl.useProgram(null);\n\t\t}\n\t}\n\n\tread(copyCanvas: HTMLCanvasElement): void {\n\t\tconst gl = this._gl;\n\t\tconst canvas = this._canvas;\n\t\tif (gl != null && gl.isContextLost() !== true && canvas != null) {\n\t\t\tconst width = canvas.width;\n\t\t\tconst height = canvas.height;\n\t\t\tcopyCanvas.width = width;\n\t\t\tcopyCanvas.height = height;\n\t\t\tconst copyContext = copyCanvas.getContext(\"2d\");\n\t\t\tif (copyContext != null) {\n\t\t\t\tcopyContext.drawImage(canvas, 0, 0);\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy(): void {\n\t\tthis.destroyVertexBuffer();\n\t\tthis.destroyUvBuffer();\n\t\tthis.destroyShaders();\n\n\t\tconst canvas = this._canvas;\n\t\tif (canvas != null) {\n\t\t\tthis._canvas = null;\n\t\t\tcanvas.removeEventListener(\"webglcontextlost\", this._onLostBound, false);\n\t\t\tcanvas.removeEventListener(\"webglcontextrestored\", this._onRestoreBound, false);\n\t\t\twindow.removeEventListener(\"unload\", this._onUnloadBound, false);\n\t\t}\n\n\t\tconst gl = this._gl;\n\t\tif (gl != null) {\n\t\t\tthis._gl = null;\n\t\t\tconst WebGLLoseContext = gl.getExtension(\"WEBGL_lose_context\");\n\t\t\tif (WebGLLoseContext != null) {\n\t\t\t\tWebGLLoseContext.loseContext();\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic getInstance(): DynamicSDFFontGenerator {\n\t\tif (DynamicSDFFontGenerator._INSTANCE == null) {\n\t\t\tDynamicSDFFontGenerator._INSTANCE = new DynamicSDFFontGenerator();\n\t\t}\n\t\treturn DynamicSDFFontGenerator._INSTANCE;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dynamic-sdf-font-generator.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-sdf-font-generator.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nconst VERTEX_SHADER = `\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nvarying mediump vec2 vTextureCoord;\nvoid main(void) {\n\tgl_Position = vec4(aVertexPosition, 0.0, 1.0);\n\tvTextureCoord = aTextureCoord;\n}\n`;\n\nconst FRAGMENT_SHADER = `\nprecision mediump float;\n\nvarying mediump vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec2 uSize;\n\nfloat norm(vec2 v) {\n\treturn dot(v, v);\n}\n\nfloat norm(vec2 p, vec2 dp) {\n\tvec2 xy = p + dp;\n\tvec2 uvi = vec2(1.0) / uSize;\n\tvec2 uv = xy * uvi;\n\tvec4 t0 = vec4(texture2D(uSampler, uv).a);\n\tvec4 t1 = vec4(\n\t\ttexture2D(uSampler, uv + vec2(-uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , -uvi.y)).a,\n\t\ttexture2D(uSampler, uv + vec2(+uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , +uvi.y)).a\n\t);\n\tvec4 t2 = vec4(0.5);\n\tvec4 t3 = min(t1,t0);\n\tvec4 t4 = max(t1,t0);\n\n\tvec4 w0 = (t2 - t0) / (t1 - t0);\n\tvec4 s0 = vec4(\n\t\tt3.x < 0.5 && 0.5 <= t4.x,\n\t\tt3.y < 0.5 && 0.5 <= t4.y,\n\t\tt3.z < 0.5 && 0.5 <= t4.z,\n\t\tt3.w < 0.5 && 0.5 <= t4.w\n\t);\n\tvec4 l0 = vec4(\n\t\tnorm(dp + vec2(-w0.x, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , -w0.y)),\n\t\tnorm(dp + vec2(+w0.z, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , +w0.w))\n\t);\n\tvec4 c0 = vec4(100.0);\n\tvec4 r0 = mix(c0, l0, s0);\n\n\tvec4 w1 = w0 * vec4(0.5);\n\tvec4 s1 = vec4(\n\t\t0.5 < s0.x && 0.5 < s0.y,\n\t\t0.5 < s0.y && 0.5 < s0.z,\n\t\t0.5 < s0.z && 0.5 < s0.w,\n\t\t0.5 < s0.w && 0.5 < s0.x\n\t);\n\tvec4 l1 = vec4(\n\t\tnorm(dp + vec2(-w1.x, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, +w1.w)),\n\t\tnorm(dp + vec2(-w1.x, +w1.w))\n\t);\n\tvec4 r1 = mix(c0, l1, s1);\n\tvec4 r2 = min(r0, r1);\n\tvec2 r3 = min(r2.xy, r2.zw);\n\treturn min(r3.x, r3.y);\n}\n\nfloat normY(vec2 p, float dx) {\n\tfloat result = 100.0;\n\tfor (float dy=-6.0; dy < 6.5; dy += 1.0) {\n\t\tresult = min(result, norm(p, vec2(dx, dy)));\n\t}\n\treturn result;\n}\n\nfloat normX(vec2 p) {\n\tfloat result = 100.0;\n\tfor (float dx=-6.0; dx < 6.5; dx += 1.0) {\n\t\tresult = min(result, normY(p, dx));\n\t}\n\treturn result;\n}\n\nvoid main(void) {\n\tfloat t = texture2D(uSampler, vTextureCoord).a;\n\tfloat d = min( 6.0, sqrt(normX( vTextureCoord * uSize )) ) / 12.0;\n\td = clamp( mix( 0.5 - d, 0.5 + d, step( 0.5, t ) ), 0.0, 1.0 ) * 255.0;\n\tfloat r = floor(d);\n\td = (d - r) * 255.0;\n\tfloat g = floor(d);\n\tgl_FragColor = vec4(r * 0.00392156862745098, g * 0.00392156862745098, d - g, 1.0);\n}\n`;\n\nexport class DynamicSDFFontGenerator {\n\tprotected static _INSTANCE: DynamicSDFFontGenerator | null = null;\n\n\tprotected _canvas: HTMLCanvasElement | null;\n\tprotected _onLostBound: EventListener;\n\tprotected _onRestoreBound: EventListener;\n\tprotected _onUnloadBound: EventListener;\n\tprotected _gl: WebGLRenderingContext | null;\n\tprotected _texture: WebGLTexture | null;\n\tprotected _shaderProgram: WebGLProgram | null;\n\tprotected _vertexPositionAttribute: number;\n\tprotected _textureCoordAttribute: number;\n\tprotected _samplerUniform: WebGLUniformLocation | null;\n\tprotected _sizeUniform: WebGLUniformLocation | null;\n\tprotected _vb: WebGLBuffer | null;\n\tprotected _uvb: WebGLBuffer | null;\n\n\tconstructor() {\n\t\tthis._gl = null;\n\t\tthis._texture = null;\n\t\tthis._shaderProgram = null;\n\t\tthis._vertexPositionAttribute = 0;\n\t\tthis._textureCoordAttribute = 1;\n\t\tthis._samplerUniform = null;\n\t\tthis._sizeUniform = null;\n\t\tthis._vb = null;\n\t\tthis._uvb = null;\n\n\t\tconst canvas = (this._canvas = document.createElement(\"canvas\"));\n\t\tcanvas.width = 64;\n\t\tcanvas.height = 64;\n\t\tthis._onLostBound = (e: Event): void => {\n\t\t\te.preventDefault();\n\t\t};\n\t\tthis._onRestoreBound = (): void => {\n\t\t\tthis.restore();\n\t\t};\n\t\tthis._onUnloadBound = (): void => {\n\t\t\tthis.destroy();\n\t\t};\n\t\tcanvas.addEventListener(\"webglcontextlost\", this._onLostBound, false);\n\t\tcanvas.addEventListener(\"webglcontextrestored\", this._onRestoreBound, false);\n\t\twindow.addEventListener(\"unload\", this._onUnloadBound, false);\n\t}\n\n\tinit(): this {\n\t\tconst canvas = this._canvas;\n\t\tif (canvas != null && (this._gl == null || this._gl.isContextLost())) {\n\t\t\tconst config: WebGLContextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tantialias: false,\n\t\t\t\tdepth: false,\n\t\t\t\tstencil: false,\n\t\t\t\tpremultipliedAlpha: false\n\t\t\t};\n\t\t\tconst gl =\n\t\t\t\tcanvas.getContext(\"webgl\", config) ||\n\t\t\t\t(canvas.getContext(\"experimental-webgl\", config) as WebGLRenderingContext | null);\n\t\t\tthis._gl = gl;\n\t\t\tif (gl != null) {\n\t\t\t\tgl.clearColor(1.0, 1.0, 1.0, 0.0);\n\t\t\t\tthis.makeVertexBuffer();\n\t\t\t\tthis.makeUvBuffer();\n\t\t\t\tthis.makeShaders();\n\t\t\t\tthis._texture = null;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\trestore(): void {\n\t\tthis.init();\n\t}\n\n\tgetCanvas(): HTMLCanvasElement | null {\n\t\treturn this._canvas;\n\t}\n\n\tgetShader(gl: WebGLRenderingContext, code: string, type: boolean): WebGLShader | null {\n\t\tconst shader = type\n\t\t\t? gl.createShader(gl.FRAGMENT_SHADER)\n\t\t\t: gl.createShader(gl.VERTEX_SHADER);\n\t\tif (shader != null) {\n\t\t\tgl.shaderSource(shader, code);\n\t\t\tgl.compileShader(shader);\n\t\t\tif (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n\t\t\t\tconsole &&\n\t\t\t\t\tconsole.error(`Failed to compile the shader: ${gl.getShaderInfoLog(shader)}`);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\treturn shader;\n\t}\n\n\tmakeShaders(): WebGLShader | null {\n\t\tconst gl = this._gl;\n\t\tif (gl != null && gl.isContextLost() !== true) {\n\t\t\tconst vertexShader = this.getShader(gl, VERTEX_SHADER, false);\n\t\t\tif (vertexShader != null) {\n\t\t\t\tconst fragmentShader = this.getShader(gl, FRAGMENT_SHADER, true);\n\t\t\t\tif (fragmentShader != null) {\n\t\t\t\t\tconst shaderProgram = (this._shaderProgram = gl.createProgram());\n\t\t\t\t\tif (shaderProgram != null) {\n\t\t\t\t\t\tgl.attachShader(shaderProgram, vertexShader);\n\t\t\t\t\t\tgl.attachShader(shaderProgram, fragmentShader);\n\t\t\t\t\t\tgl.bindAttribLocation(shaderProgram, 0, \"aVertexPosition\");\n\t\t\t\t\t\tgl.bindAttribLocation(shaderProgram, 1, \"aTextureCoord\");\n\t\t\t\t\t\tgl.linkProgram(shaderProgram);\n\t\t\t\t\t\tif (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {\n\t\t\t\t\t\t\tconsole &&\n\t\t\t\t\t\t\t\tconsole.error(`Failed to link the program: ${gl.getError()}`);\n\t\t\t\t\t\t\tgl.deleteShader(vertexShader);\n\t\t\t\t\t\t\tgl.deleteShader(fragmentShader);\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tgl.deleteShader(vertexShader);\n\t\t\t\t\t\t\tgl.deleteShader(fragmentShader);\n\n\t\t\t\t\t\t\tgl.useProgram(shaderProgram);\n\t\t\t\t\t\t\tthis._samplerUniform = gl.getUniformLocation(shaderProgram, \"uSampler\");\n\t\t\t\t\t\t\tthis._sizeUniform = gl.getUniformLocation(shaderProgram, \"uSize\");\n\t\t\t\t\t\t\tgl.useProgram(null);\n\t\t\t\t\t\t\treturn shaderProgram;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgl.deleteShader(vertexShader);\n\t\t\t\t\t\tgl.deleteShader(fragmentShader);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tgl.deleteShader(vertexShader);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tdestroyShaders(): void {\n\t\tconst gl = this._gl;\n\t\tif (gl != null && gl.isContextLost() !== true) {\n\t\t\tconst shaderProgram = this._shaderProgram;\n\t\t\tif (shaderProgram != null) {\n\t\t\t\tthis._shaderProgram = null;\n\t\t\t\tgl.useProgram(null);\n\t\t\t\tgl.deleteProgram(shaderProgram);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateTexture(\n\t\tsource:\n\t\t\t| ImageBitmap\n\t\t\t| ImageData\n\t\t\t| HTMLImageElement\n\t\t\t| HTMLCanvasElement\n\t\t\t| HTMLVideoElement\n\t\t\t| OffscreenCanvas\n\t): WebGLTexture | null {\n\t\tconst gl = this._gl;\n\t\tconst canvas = this._canvas;\n\t\tif (gl != null && gl.isContextLost() !== true && canvas != null) {\n\t\t\tconst width = source.width;\n\t\t\tconst height = source.height;\n\t\t\tif (canvas.width !== width || canvas.height !== height) {\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\t\t\t\tgl.viewport(0, 0, width, height);\n\t\t\t}\n\n\t\t\tlet texture = this._texture;\n\t\t\tif (texture == null) {\n\t\t\t\ttexture = this._texture = gl.createTexture();\n\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, texture);\n\t\t\t\tgl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);\n\t\t\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n\t\t\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\t\t\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\t\t\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, null);\n\t\t\t} else {\n\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, texture);\n\t\t\t\tgl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);\n\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, null);\n\t\t\t}\n\t\t\treturn texture;\n\t\t}\n\t\treturn null;\n\t}\n\n\tdestroyTexture(): void {\n\t\tconst gl = this._gl;\n\t\tconst texture = this._texture;\n\t\tif (gl != null && gl.isContextLost() !== true && texture != null) {\n\t\t\tthis._texture = null;\n\t\t\tgl.bindTexture(gl.TEXTURE_2D, null);\n\t\t\tgl.deleteTexture(texture);\n\t\t}\n\t}\n\n\tmakeVertexBuffer(): WebGLBuffer | null {\n\t\tconst gl = this._gl;\n\t\tif (gl != null && gl.isContextLost() !== true) {\n\t\t\tconst vb = (this._vb = gl.createBuffer());\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vb);\n\n\t\t\tconst vertices = [-1.0, +1.0, +1.0, +1.0, -1.0, -1.0, +1.0, -1.0];\n\n\t\t\tgl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);\n\t\t\treturn vb;\n\t\t}\n\t\treturn null;\n\t}\n\n\tdestroyVertexBuffer(): void {\n\t\tconst gl = this._gl;\n\t\tconst vb = this._vb;\n\t\tif (gl != null && gl.isContextLost() !== true && vb != null) {\n\t\t\tthis._vb = null;\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\t\tgl.deleteBuffer(vb);\n\t\t}\n\t}\n\n\tmakeUvBuffer(): WebGLBuffer | null {\n\t\tconst gl = this._gl;\n\t\tif (gl != null && gl.isContextLost() !== true) {\n\t\t\tconst uvb = (this._uvb = gl.createBuffer());\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, uvb);\n\n\t\t\tconst uvs = [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0];\n\n\t\t\tgl.bufferData(gl.ARRAY_BUFFER, new Float32Array(uvs), gl.STATIC_DRAW);\n\t\t\treturn uvb;\n\t\t}\n\t\treturn null;\n\t}\n\n\tdestroyUvBuffer(): void {\n\t\tconst gl = this._gl;\n\t\tconst uvb = this._uvb;\n\t\tif (gl != null && gl.isContextLost() !== true && uvb != null) {\n\t\t\tthis._uvb = null;\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\t\tgl.deleteBuffer(uvb);\n\t\t}\n\t}\n\n\trender(): void {\n\t\tconst gl = this._gl;\n\t\tconst canvas = this._canvas;\n\t\tconst shaderProgram = this._shaderProgram;\n\t\tconst vb = this._vb;\n\t\tconst uvb = this._uvb;\n\t\tconst texture = this._texture;\n\t\tif (\n\t\t\tgl != null &&\n\t\t\tgl.isContextLost() !== true &&\n\t\t\tcanvas != null &&\n\t\t\tshaderProgram != null &&\n\t\t\tvb != null &&\n\t\t\tuvb != null &&\n\t\t\ttexture != null\n\t\t) {\n\t\t\tgl.clear(gl.COLOR_BUFFER_BIT);\n\n\t\t\tgl.useProgram(shaderProgram);\n\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vb);\n\t\t\tconst vertexPositionAttribute = this._vertexPositionAttribute;\n\t\t\tgl.enableVertexAttribArray(vertexPositionAttribute);\n\t\t\tgl.vertexAttribPointer(vertexPositionAttribute, 2, gl.FLOAT, false, 0, 0);\n\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, uvb);\n\t\t\tconst textureCoordAttribute = this._textureCoordAttribute;\n\t\t\tgl.enableVertexAttribArray(textureCoordAttribute);\n\t\t\tgl.vertexAttribPointer(textureCoordAttribute, 2, gl.FLOAT, false, 0, 0);\n\n\t\t\tgl.activeTexture(gl.TEXTURE0);\n\t\t\tgl.bindTexture(gl.TEXTURE_2D, texture);\n\t\t\tgl.uniform1i(this._samplerUniform, 0);\n\t\t\tgl.uniform2f(this._sizeUniform, canvas.width, canvas.height);\n\n\t\t\tgl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n\n\t\t\tgl.bindTexture(gl.TEXTURE_2D, null);\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\t\tgl.useProgram(null);\n\t\t}\n\t}\n\n\tread(copyCanvas: HTMLCanvasElement): void {\n\t\tconst gl = this._gl;\n\t\tconst canvas = this._canvas;\n\t\tif (gl != null && gl.isContextLost() !== true && canvas != null) {\n\t\t\tconst width = canvas.width;\n\t\t\tconst height = canvas.height;\n\t\t\tcopyCanvas.width = width;\n\t\t\tcopyCanvas.height = height;\n\t\t\tconst copyContext = copyCanvas.getContext(\"2d\");\n\t\t\tif (copyContext != null) {\n\t\t\t\tcopyContext.drawImage(canvas, 0, 0);\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy(): void {\n\t\tthis.destroyVertexBuffer();\n\t\tthis.destroyUvBuffer();\n\t\tthis.destroyShaders();\n\n\t\tconst canvas = this._canvas;\n\t\tif (canvas != null) {\n\t\t\tthis._canvas = null;\n\t\t\tcanvas.removeEventListener(\"webglcontextlost\", this._onLostBound, false);\n\t\t\tcanvas.removeEventListener(\"webglcontextrestored\", this._onRestoreBound, false);\n\t\t\twindow.removeEventListener(\"unload\", this._onUnloadBound, false);\n\t\t}\n\n\t\tconst gl = this._gl;\n\t\tif (gl != null) {\n\t\t\tthis._gl = null;\n\t\t\tconst WebGLLoseContext = gl.getExtension(\"WEBGL_lose_context\");\n\t\t\tif (WebGLLoseContext != null) {\n\t\t\t\tWebGLLoseContext.loseContext();\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic getInstance(): DynamicSDFFontGenerator {\n\t\tif (DynamicSDFFontGenerator._INSTANCE == null) {\n\t\t\tDynamicSDFFontGenerator._INSTANCE = new DynamicSDFFontGenerator();\n\t\t}\n\t\treturn DynamicSDFFontGenerator._INSTANCE;\n\t}\n}\n"]}
|
package/dist/wcardinal-ui.cjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Winter Cardinal UI v0.
|
|
2
|
+
Winter Cardinal UI v0.392.0
|
|
3
3
|
Copyright (C) 2019 Toshiba Corporation
|
|
4
4
|
SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
|
|
@@ -20758,17 +20758,17 @@ var DynamicFontAtlasCharacterType = {
|
|
|
20758
20758
|
* SPDX-License-Identifier: Apache-2.0
|
|
20759
20759
|
*/
|
|
20760
20760
|
var VERTEX_SHADER$2 = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nvarying mediump vec2 vTextureCoord;\nvoid main(void) {\n\tgl_Position = vec4(aVertexPosition, 0.0, 1.0);\n\tvTextureCoord = aTextureCoord;\n}\n";
|
|
20761
|
-
var FRAGMENT_SHADER$2 = "\nprecision mediump float;\n\nvarying mediump vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec2 uSize;\n\nfloat norm(vec2 v) {\n\treturn dot(v, v);\n}\n\nfloat norm(vec2 p, vec2 dp) {\n\tvec2 xy = p + dp;\n\tvec2 uvi = vec2(1.0) / uSize;\n\tvec2 uv = xy * uvi;\n\tvec4 t0 = vec4(texture2D(uSampler, uv).a);\n\tvec4 t1 = vec4(\n\t\ttexture2D(uSampler, uv + vec2(-uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , -uvi.y)).a,\n\t\ttexture2D(uSampler, uv + vec2(+uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , +uvi.y)).a\n\t);\n\tvec4 t2 = vec4(0.5);\n\tvec4 t3 = min(t1,t0);\n\tvec4 t4 = max(t1,t0);\n\n\tvec4 w0 = (t2 - t0) / (t1 - t0);\n\tvec4 s0 = vec4(\n\t\tt3.x < 0.5 && 0.5 <= t4.x,\n\t\tt3.y < 0.5 && 0.5 <= t4.y,\n\t\tt3.z < 0.5 && 0.5 <= t4.z,\n\t\tt3.w < 0.5 && 0.5 <= t4.w\n\t);\n\tvec4 l0 = vec4(\n\t\tnorm(dp + vec2(-w0.x, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , -w0.y)),\n\t\tnorm(dp + vec2(+w0.z, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , +w0.w))\n\t);\n\tvec4 c0 = vec4(100.0);\n\tvec4 r0 = mix(c0, l0, s0);\n\n\tvec4 w1 = w0 * vec4(0.5);\n\tvec4 s1 = vec4(\n\t\t0.5 < s0.x && 0.5 < s0.y,\n\t\t0.5 < s0.y && 0.5 < s0.z,\n\t\t0.5 < s0.z && 0.5 < s0.w,\n\t\t0.5 < s0.w && 0.5 < s0.x\n\t);\n\tvec4 l1 = vec4(\n\t\tnorm(dp + vec2(-w1.x, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, +w1.w)),\n\t\tnorm(dp + vec2(-w1.x, +w1.w))\n\t);\n\tvec4 r1 = mix(c0, l1, s1);\n\tvec4 r2 = min(r0, r1);\n\tvec2 r3 = min(r2.xy, r2.zw);\n\treturn min(r3.x, r3.y);\n}\n\nfloat
|
|
20761
|
+
var FRAGMENT_SHADER$2 = "\nprecision mediump float;\n\nvarying mediump vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec2 uSize;\n\nfloat norm(vec2 v) {\n\treturn dot(v, v);\n}\n\nfloat norm(vec2 p, vec2 dp) {\n\tvec2 xy = p + dp;\n\tvec2 uvi = vec2(1.0) / uSize;\n\tvec2 uv = xy * uvi;\n\tvec4 t0 = vec4(texture2D(uSampler, uv).a);\n\tvec4 t1 = vec4(\n\t\ttexture2D(uSampler, uv + vec2(-uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , -uvi.y)).a,\n\t\ttexture2D(uSampler, uv + vec2(+uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , +uvi.y)).a\n\t);\n\tvec4 t2 = vec4(0.5);\n\tvec4 t3 = min(t1,t0);\n\tvec4 t4 = max(t1,t0);\n\n\tvec4 w0 = (t2 - t0) / (t1 - t0);\n\tvec4 s0 = vec4(\n\t\tt3.x < 0.5 && 0.5 <= t4.x,\n\t\tt3.y < 0.5 && 0.5 <= t4.y,\n\t\tt3.z < 0.5 && 0.5 <= t4.z,\n\t\tt3.w < 0.5 && 0.5 <= t4.w\n\t);\n\tvec4 l0 = vec4(\n\t\tnorm(dp + vec2(-w0.x, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , -w0.y)),\n\t\tnorm(dp + vec2(+w0.z, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , +w0.w))\n\t);\n\tvec4 c0 = vec4(100.0);\n\tvec4 r0 = mix(c0, l0, s0);\n\n\tvec4 w1 = w0 * vec4(0.5);\n\tvec4 s1 = vec4(\n\t\t0.5 < s0.x && 0.5 < s0.y,\n\t\t0.5 < s0.y && 0.5 < s0.z,\n\t\t0.5 < s0.z && 0.5 < s0.w,\n\t\t0.5 < s0.w && 0.5 < s0.x\n\t);\n\tvec4 l1 = vec4(\n\t\tnorm(dp + vec2(-w1.x, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, +w1.w)),\n\t\tnorm(dp + vec2(-w1.x, +w1.w))\n\t);\n\tvec4 r1 = mix(c0, l1, s1);\n\tvec4 r2 = min(r0, r1);\n\tvec2 r3 = min(r2.xy, r2.zw);\n\treturn min(r3.x, r3.y);\n}\n\nfloat normY(vec2 p, float dx) {\n\tfloat result = 100.0;\n\tfor (float dy=-6.0; dy < 6.5; dy += 1.0) {\n\t\tresult = min(result, norm(p, vec2(dx, dy)));\n\t}\n\treturn result;\n}\n\nfloat normX(vec2 p) {\n\tfloat result = 100.0;\n\tfor (float dx=-6.0; dx < 6.5; dx += 1.0) {\n\t\tresult = min(result, normY(p, dx));\n\t}\n\treturn result;\n}\n\nvoid main(void) {\n\tfloat t = texture2D(uSampler, vTextureCoord).a;\n\tfloat d = min( 6.0, sqrt(normX( vTextureCoord * uSize )) ) / 12.0;\n\td = clamp( mix( 0.5 - d, 0.5 + d, step( 0.5, t ) ), 0.0, 1.0 ) * 255.0;\n\tfloat r = floor(d);\n\td = (d - r) * 255.0;\n\tfloat g = floor(d);\n\tgl_FragColor = vec4(r * 0.00392156862745098, g * 0.00392156862745098, d - g, 1.0);\n}\n";
|
|
20762
20762
|
var DynamicSDFFontGenerator = /** @class */ (function () {
|
|
20763
20763
|
function DynamicSDFFontGenerator() {
|
|
20764
20764
|
var _this = this;
|
|
20765
20765
|
this._gl = null;
|
|
20766
20766
|
this._texture = null;
|
|
20767
20767
|
this._shaderProgram = null;
|
|
20768
|
-
this._vertexPositionAttribute =
|
|
20769
|
-
this._textureCoordAttribute =
|
|
20770
|
-
this._samplerUniform =
|
|
20771
|
-
this._sizeUniform =
|
|
20768
|
+
this._vertexPositionAttribute = 0;
|
|
20769
|
+
this._textureCoordAttribute = 1;
|
|
20770
|
+
this._samplerUniform = null;
|
|
20771
|
+
this._sizeUniform = null;
|
|
20772
20772
|
this._vb = null;
|
|
20773
20773
|
this._uvb = null;
|
|
20774
20774
|
var canvas = (this._canvas = document.createElement("canvas"));
|
|
@@ -20842,6 +20842,8 @@ var DynamicSDFFontGenerator = /** @class */ (function () {
|
|
|
20842
20842
|
if (shaderProgram != null) {
|
|
20843
20843
|
gl.attachShader(shaderProgram, vertexShader);
|
|
20844
20844
|
gl.attachShader(shaderProgram, fragmentShader);
|
|
20845
|
+
gl.bindAttribLocation(shaderProgram, 0, "aVertexPosition");
|
|
20846
|
+
gl.bindAttribLocation(shaderProgram, 1, "aTextureCoord");
|
|
20845
20847
|
gl.linkProgram(shaderProgram);
|
|
20846
20848
|
if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
|
|
20847
20849
|
console &&
|
|
@@ -20854,8 +20856,6 @@ var DynamicSDFFontGenerator = /** @class */ (function () {
|
|
|
20854
20856
|
gl.deleteShader(vertexShader);
|
|
20855
20857
|
gl.deleteShader(fragmentShader);
|
|
20856
20858
|
gl.useProgram(shaderProgram);
|
|
20857
|
-
this._vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition");
|
|
20858
|
-
this._textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord");
|
|
20859
20859
|
this._samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler");
|
|
20860
20860
|
this._sizeUniform = gl.getUniformLocation(shaderProgram, "uSize");
|
|
20861
20861
|
gl.useProgram(null);
|
package/dist/wcardinal-ui.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Winter Cardinal UI v0.
|
|
2
|
+
Winter Cardinal UI v0.392.0
|
|
3
3
|
Copyright (C) 2019 Toshiba Corporation
|
|
4
4
|
SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
|
|
@@ -20755,17 +20755,17 @@
|
|
|
20755
20755
|
* SPDX-License-Identifier: Apache-2.0
|
|
20756
20756
|
*/
|
|
20757
20757
|
var VERTEX_SHADER$2 = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nvarying mediump vec2 vTextureCoord;\nvoid main(void) {\n\tgl_Position = vec4(aVertexPosition, 0.0, 1.0);\n\tvTextureCoord = aTextureCoord;\n}\n";
|
|
20758
|
-
var FRAGMENT_SHADER$2 = "\nprecision mediump float;\n\nvarying mediump vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec2 uSize;\n\nfloat norm(vec2 v) {\n\treturn dot(v, v);\n}\n\nfloat norm(vec2 p, vec2 dp) {\n\tvec2 xy = p + dp;\n\tvec2 uvi = vec2(1.0) / uSize;\n\tvec2 uv = xy * uvi;\n\tvec4 t0 = vec4(texture2D(uSampler, uv).a);\n\tvec4 t1 = vec4(\n\t\ttexture2D(uSampler, uv + vec2(-uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , -uvi.y)).a,\n\t\ttexture2D(uSampler, uv + vec2(+uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , +uvi.y)).a\n\t);\n\tvec4 t2 = vec4(0.5);\n\tvec4 t3 = min(t1,t0);\n\tvec4 t4 = max(t1,t0);\n\n\tvec4 w0 = (t2 - t0) / (t1 - t0);\n\tvec4 s0 = vec4(\n\t\tt3.x < 0.5 && 0.5 <= t4.x,\n\t\tt3.y < 0.5 && 0.5 <= t4.y,\n\t\tt3.z < 0.5 && 0.5 <= t4.z,\n\t\tt3.w < 0.5 && 0.5 <= t4.w\n\t);\n\tvec4 l0 = vec4(\n\t\tnorm(dp + vec2(-w0.x, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , -w0.y)),\n\t\tnorm(dp + vec2(+w0.z, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , +w0.w))\n\t);\n\tvec4 c0 = vec4(100.0);\n\tvec4 r0 = mix(c0, l0, s0);\n\n\tvec4 w1 = w0 * vec4(0.5);\n\tvec4 s1 = vec4(\n\t\t0.5 < s0.x && 0.5 < s0.y,\n\t\t0.5 < s0.y && 0.5 < s0.z,\n\t\t0.5 < s0.z && 0.5 < s0.w,\n\t\t0.5 < s0.w && 0.5 < s0.x\n\t);\n\tvec4 l1 = vec4(\n\t\tnorm(dp + vec2(-w1.x, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, +w1.w)),\n\t\tnorm(dp + vec2(-w1.x, +w1.w))\n\t);\n\tvec4 r1 = mix(c0, l1, s1);\n\tvec4 r2 = min(r0, r1);\n\tvec2 r3 = min(r2.xy, r2.zw);\n\treturn min(r3.x, r3.y);\n}\n\nfloat
|
|
20758
|
+
var FRAGMENT_SHADER$2 = "\nprecision mediump float;\n\nvarying mediump vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec2 uSize;\n\nfloat norm(vec2 v) {\n\treturn dot(v, v);\n}\n\nfloat norm(vec2 p, vec2 dp) {\n\tvec2 xy = p + dp;\n\tvec2 uvi = vec2(1.0) / uSize;\n\tvec2 uv = xy * uvi;\n\tvec4 t0 = vec4(texture2D(uSampler, uv).a);\n\tvec4 t1 = vec4(\n\t\ttexture2D(uSampler, uv + vec2(-uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , -uvi.y)).a,\n\t\ttexture2D(uSampler, uv + vec2(+uvi.x, 0.0 )).a,\n\t\ttexture2D(uSampler, uv + vec2(0.0 , +uvi.y)).a\n\t);\n\tvec4 t2 = vec4(0.5);\n\tvec4 t3 = min(t1,t0);\n\tvec4 t4 = max(t1,t0);\n\n\tvec4 w0 = (t2 - t0) / (t1 - t0);\n\tvec4 s0 = vec4(\n\t\tt3.x < 0.5 && 0.5 <= t4.x,\n\t\tt3.y < 0.5 && 0.5 <= t4.y,\n\t\tt3.z < 0.5 && 0.5 <= t4.z,\n\t\tt3.w < 0.5 && 0.5 <= t4.w\n\t);\n\tvec4 l0 = vec4(\n\t\tnorm(dp + vec2(-w0.x, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , -w0.y)),\n\t\tnorm(dp + vec2(+w0.z, 0.0 )),\n\t\tnorm(dp + vec2(0.0 , +w0.w))\n\t);\n\tvec4 c0 = vec4(100.0);\n\tvec4 r0 = mix(c0, l0, s0);\n\n\tvec4 w1 = w0 * vec4(0.5);\n\tvec4 s1 = vec4(\n\t\t0.5 < s0.x && 0.5 < s0.y,\n\t\t0.5 < s0.y && 0.5 < s0.z,\n\t\t0.5 < s0.z && 0.5 < s0.w,\n\t\t0.5 < s0.w && 0.5 < s0.x\n\t);\n\tvec4 l1 = vec4(\n\t\tnorm(dp + vec2(-w1.x, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, -w1.y)),\n\t\tnorm(dp + vec2(+w1.z, +w1.w)),\n\t\tnorm(dp + vec2(-w1.x, +w1.w))\n\t);\n\tvec4 r1 = mix(c0, l1, s1);\n\tvec4 r2 = min(r0, r1);\n\tvec2 r3 = min(r2.xy, r2.zw);\n\treturn min(r3.x, r3.y);\n}\n\nfloat normY(vec2 p, float dx) {\n\tfloat result = 100.0;\n\tfor (float dy=-6.0; dy < 6.5; dy += 1.0) {\n\t\tresult = min(result, norm(p, vec2(dx, dy)));\n\t}\n\treturn result;\n}\n\nfloat normX(vec2 p) {\n\tfloat result = 100.0;\n\tfor (float dx=-6.0; dx < 6.5; dx += 1.0) {\n\t\tresult = min(result, normY(p, dx));\n\t}\n\treturn result;\n}\n\nvoid main(void) {\n\tfloat t = texture2D(uSampler, vTextureCoord).a;\n\tfloat d = min( 6.0, sqrt(normX( vTextureCoord * uSize )) ) / 12.0;\n\td = clamp( mix( 0.5 - d, 0.5 + d, step( 0.5, t ) ), 0.0, 1.0 ) * 255.0;\n\tfloat r = floor(d);\n\td = (d - r) * 255.0;\n\tfloat g = floor(d);\n\tgl_FragColor = vec4(r * 0.00392156862745098, g * 0.00392156862745098, d - g, 1.0);\n}\n";
|
|
20759
20759
|
var DynamicSDFFontGenerator = /** @class */ (function () {
|
|
20760
20760
|
function DynamicSDFFontGenerator() {
|
|
20761
20761
|
var _this = this;
|
|
20762
20762
|
this._gl = null;
|
|
20763
20763
|
this._texture = null;
|
|
20764
20764
|
this._shaderProgram = null;
|
|
20765
|
-
this._vertexPositionAttribute =
|
|
20766
|
-
this._textureCoordAttribute =
|
|
20767
|
-
this._samplerUniform =
|
|
20768
|
-
this._sizeUniform =
|
|
20765
|
+
this._vertexPositionAttribute = 0;
|
|
20766
|
+
this._textureCoordAttribute = 1;
|
|
20767
|
+
this._samplerUniform = null;
|
|
20768
|
+
this._sizeUniform = null;
|
|
20769
20769
|
this._vb = null;
|
|
20770
20770
|
this._uvb = null;
|
|
20771
20771
|
var canvas = (this._canvas = document.createElement("canvas"));
|
|
@@ -20839,6 +20839,8 @@
|
|
|
20839
20839
|
if (shaderProgram != null) {
|
|
20840
20840
|
gl.attachShader(shaderProgram, vertexShader);
|
|
20841
20841
|
gl.attachShader(shaderProgram, fragmentShader);
|
|
20842
|
+
gl.bindAttribLocation(shaderProgram, 0, "aVertexPosition");
|
|
20843
|
+
gl.bindAttribLocation(shaderProgram, 1, "aTextureCoord");
|
|
20842
20844
|
gl.linkProgram(shaderProgram);
|
|
20843
20845
|
if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
|
|
20844
20846
|
console &&
|
|
@@ -20851,8 +20853,6 @@
|
|
|
20851
20853
|
gl.deleteShader(vertexShader);
|
|
20852
20854
|
gl.deleteShader(fragmentShader);
|
|
20853
20855
|
gl.useProgram(shaderProgram);
|
|
20854
|
-
this._vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition");
|
|
20855
|
-
this._textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord");
|
|
20856
20856
|
this._samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler");
|
|
20857
20857
|
this._sizeUniform = gl.getUniformLocation(shaderProgram, "uSize");
|
|
20858
20858
|
gl.useProgram(null);
|