@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.
@@ -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 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";
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 = NaN;
14
- this._textureCoordAttribute = NaN;
15
- this._samplerUniform = NaN;
16
- this._sizeUniform = NaN;
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"]}
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
2
+ Winter Cardinal UI v0.392.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
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 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";
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 = NaN;
20769
- this._textureCoordAttribute = NaN;
20770
- this._samplerUniform = NaN;
20771
- this._sizeUniform = NaN;
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);
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.391.0
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 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";
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 = NaN;
20766
- this._textureCoordAttribute = NaN;
20767
- this._samplerUniform = NaN;
20768
- this._sizeUniform = NaN;
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);