@wcardinal/wcardinal-ui 0.426.0 → 0.427.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/types/wcardinal/ui/util/dynamic-sdf-font-atlas.d.ts +2 -0
- package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js +25 -7
- package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.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 +26 -8
- package/dist/wcardinal-ui.js +26 -8
- package/dist/wcardinal-ui.min.js +2 -2
- package/dist/wcardinal-ui.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,6 +18,8 @@ export declare class DynamicSDFFontAtlas {
|
|
|
18
18
|
protected _width: number;
|
|
19
19
|
protected _height: number;
|
|
20
20
|
protected _isDirty: boolean;
|
|
21
|
+
protected _isTouched: boolean;
|
|
22
|
+
protected _life: number;
|
|
21
23
|
constructor(fontFamily: string);
|
|
22
24
|
get id(): string;
|
|
23
25
|
get font(): DynamicSDFFontAtlasFont;
|
|
@@ -26,6 +26,8 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
26
26
|
}
|
|
27
27
|
this._characters = characters;
|
|
28
28
|
this._isDirty = true;
|
|
29
|
+
this._isTouched = false;
|
|
30
|
+
this._life = DynamicFontAtlasCharacter.LIFE;
|
|
29
31
|
}
|
|
30
32
|
Object.defineProperty(DynamicSDFFontAtlas.prototype, "id", {
|
|
31
33
|
get: function () {
|
|
@@ -82,6 +84,7 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
82
84
|
configurable: true
|
|
83
85
|
});
|
|
84
86
|
DynamicSDFFontAtlas.prototype.begin = function () {
|
|
87
|
+
this._isTouched = false;
|
|
85
88
|
this._characters.forEach(function (character) {
|
|
86
89
|
if (!(character.type & DynamicFontAtlasCharacterType.RESERVED)) {
|
|
87
90
|
character.ref = 0;
|
|
@@ -91,15 +94,26 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
91
94
|
DynamicSDFFontAtlas.prototype.end = function () {
|
|
92
95
|
var _this = this;
|
|
93
96
|
var characters = this._characters;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (character.
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
if (this._isTouched) {
|
|
98
|
+
this._life = DynamicFontAtlasCharacter.LIFE;
|
|
99
|
+
characters.forEach(function (character, id) {
|
|
100
|
+
if (character.ref <= 0 &&
|
|
101
|
+
!(character.type & DynamicFontAtlasCharacterType.RESERVED)) {
|
|
102
|
+
character.life -= 1;
|
|
103
|
+
if (character.life <= 0) {
|
|
104
|
+
characters.delete(id);
|
|
105
|
+
_this._isDirty = true;
|
|
106
|
+
}
|
|
100
107
|
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
this._life -= 1;
|
|
112
|
+
if (this._life <= 0 && 0 < characters.size) {
|
|
113
|
+
characters.clear();
|
|
114
|
+
this._isDirty = true;
|
|
101
115
|
}
|
|
102
|
-
}
|
|
116
|
+
}
|
|
103
117
|
};
|
|
104
118
|
DynamicSDFFontAtlas.prototype.newChar = function (character, type) {
|
|
105
119
|
return new DynamicFontAtlasCharacter(type, character, 0, 0, 1, 1, 0);
|
|
@@ -111,12 +125,16 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
111
125
|
var data = cs.get(nac);
|
|
112
126
|
if (data != null) {
|
|
113
127
|
data.ref += 1;
|
|
128
|
+
data.life = DynamicFontAtlasCharacter.LIFE;
|
|
114
129
|
}
|
|
115
130
|
else {
|
|
116
131
|
cs.set(nac, this.newChar(nac, DynamicFontAtlasCharacterType.LETTER));
|
|
117
132
|
this._isDirty = true;
|
|
118
133
|
}
|
|
119
134
|
}
|
|
135
|
+
if (0 < characters.length) {
|
|
136
|
+
this._isTouched = true;
|
|
137
|
+
}
|
|
120
138
|
};
|
|
121
139
|
DynamicSDFFontAtlas.prototype.get = function (id) {
|
|
122
140
|
return this._characters.get(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-sdf-font-atlas.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-sdf-font-atlas.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Character } from \"./character\";\nimport { DynamicFontAtlasCharacter } from \"./dynamic-font-atlas-character\";\nimport { DynamicFontAtlasCharacterType } from \"./dynamic-font-atlas-character-type\";\nimport { DynamicFontAtlasCharacters } from \"./dynamic-font-atlas-characters\";\nimport { DynamicSDFFontAtlasFont } from \"./dynamic-sdf-font-atlas-font\";\nimport { DynamicSDFFontGenerator } from \"./dynamic-sdf-font-generator\";\nimport { UtilFont } from \"./util-font\";\n\nexport interface DynamicSDFFontAtlasJson {\n\twidth: number;\n\theight: number;\n\tfont: DynamicSDFFontAtlasFont;\n\tcharacters: DynamicFontAtlasCharacters;\n}\n\nexport class DynamicSDFFontAtlas {\n\tprotected _id: string;\n\tprotected _generator: DynamicSDFFontGenerator | null;\n\tprotected _canvas: HTMLCanvasElement | null;\n\tprotected _font: DynamicSDFFontAtlasFont;\n\tprotected _characters: DynamicFontAtlasCharacters;\n\tprotected _width: number;\n\tprotected _height: number;\n\tprotected _isDirty: boolean;\n\n\tconstructor(fontFamily: string) {\n\t\tthis._id = `font-atlas:${fontFamily}`;\n\t\tthis._generator = DynamicSDFFontGenerator.getInstance().init();\n\t\tthis._canvas = document.createElement(\"canvas\");\n\t\tthis._font = new DynamicSDFFontAtlasFont(fontFamily);\n\t\tthis._width = 1;\n\t\tthis._height = 1;\n\n\t\tconst characters = new Map<string, DynamicFontAtlasCharacter>();\n\t\tcharacters.set(\n\t\t\tCharacter.SPACE,\n\t\t\tthis.newChar(Character.SPACE, DynamicFontAtlasCharacterType.SPACE_R)\n\t\t);\n\t\tcharacters.set(\n\t\t\tCharacter.TAB,\n\t\t\tthis.newChar(Character.SOFT_TAB, DynamicFontAtlasCharacterType.SPACE_R)\n\t\t);\n\t\tcharacters.set(\n\t\t\tCharacter.DOTS,\n\t\t\tthis.newChar(Character.DOTS, DynamicFontAtlasCharacterType.LETTER_RNB)\n\t\t);\n\t\tfor (let i = 0, imax = Character.ASCII.length; i < imax; ++i) {\n\t\t\tconst ac = Character.ASCII[i];\n\t\t\tcharacters.set(ac, this.newChar(ac, DynamicFontAtlasCharacterType.LETTER_RNB));\n\t\t}\n\t\tthis._characters = characters;\n\t\tthis._isDirty = true;\n\t}\n\n\tget id(): string {\n\t\treturn this._id;\n\t}\n\n\tget font(): DynamicSDFFontAtlasFont {\n\t\treturn this._font;\n\t}\n\n\tset font(font: DynamicSDFFontAtlasFont) {\n\t\tthis._font.id = font.id;\n\t\tthis._font.size = font.size;\n\t\tthis._font.italic = font.italic;\n\t}\n\n\tget width(): number {\n\t\treturn this._width;\n\t}\n\n\tget height(): number {\n\t\treturn this._height;\n\t}\n\n\tget canvas(): HTMLCanvasElement | null {\n\t\treturn this._canvas;\n\t}\n\n\tget generator(): DynamicSDFFontGenerator | null {\n\t\treturn this._generator;\n\t}\n\n\tget characters(): DynamicFontAtlasCharacters {\n\t\treturn this._characters;\n\t}\n\n\tbegin(): void {\n\t\tthis._characters.forEach((character) => {\n\t\t\tif (!(character.type & DynamicFontAtlasCharacterType.RESERVED)) {\n\t\t\t\tcharacter.ref = 0;\n\t\t\t}\n\t\t});\n\t}\n\n\tend(): void {\n\t\tconst characters = this._characters;\n\t\tcharacters.forEach((character, id) => {\n\t\t\tif (character.ref <= 0 && !(character.type & DynamicFontAtlasCharacterType.RESERVED)) {\n\t\t\t\tcharacter.life -= 1;\n\t\t\t\tif (character.life <= 0) {\n\t\t\t\t\tcharacters.delete(id);\n\t\t\t\t\tthis._isDirty = true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected newChar(\n\t\tcharacter: string,\n\t\ttype: DynamicFontAtlasCharacterType\n\t): DynamicFontAtlasCharacter {\n\t\treturn new DynamicFontAtlasCharacter(type, character, 0, 0, 1, 1, 0);\n\t}\n\n\tadd(characters: string[], nacharacters: string[]): void {\n\t\tconst cs = this._characters;\n\t\tfor (let i = 0, imax = nacharacters.length; i < imax; ++i) {\n\t\t\tconst nac = nacharacters[i];\n\t\t\tconst data = cs.get(nac);\n\t\t\tif (data != null) {\n\t\t\t\tdata.ref += 1;\n\t\t\t} else {\n\t\t\t\tcs.set(nac, this.newChar(nac, DynamicFontAtlasCharacterType.LETTER));\n\t\t\t\tthis._isDirty = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tget(id: string): DynamicFontAtlasCharacter | undefined {\n\t\treturn this._characters.get(id);\n\t}\n\n\tupdate(): boolean {\n\t\tif (this._isDirty) {\n\t\t\tconst canvas = this._canvas;\n\t\t\tconst generator = this._generator;\n\t\t\tif (canvas != null && generator != null) {\n\t\t\t\tconst context = canvas.getContext(\"2d\");\n\t\t\t\tif (context != null) {\n\t\t\t\t\tthis._isDirty = false;\n\n\t\t\t\t\tconst font = this._font;\n\t\t\t\t\tconst fontSize = font.size + 14;\n\t\t\t\t\tconst characters = this._characters;\n\t\t\t\t\tconst width = this.toPowerOf2(Math.ceil(Math.sqrt(characters.size)) * fontSize);\n\t\t\t\t\tthis._width = width;\n\t\t\t\t\tconst fontStyle =\n\t\t\t\t\t\t(font.italic ? \"italic \" : \"\") + (font.size + \"px \") + font.id;\n\n\t\t\t\t\tcontext.font = fontStyle;\n\t\t\t\t\tcontext.textAlign = \"left\";\n\t\t\t\t\tcontext.textBaseline = \"alphabetic\";\n\t\t\t\t\tcontext.lineWidth = 0;\n\t\t\t\t\tcontext.lineCap = \"round\";\n\t\t\t\t\tcontext.lineJoin = \"miter\";\n\t\t\t\t\tcontext.miterLimit = 10;\n\t\t\t\t\tcontext.fillStyle = \"#FFFFFF\";\n\t\t\t\t\tUtilFont.measure(context, font);\n\n\t\t\t\t\tconst offsetX = 7;\n\t\t\t\t\tconst offsetY = Math.round(\n\t\t\t\t\t\t(fontSize - (font.ascent + font.descent)) * 0.5 + font.ascent\n\t\t\t\t\t);\n\t\t\t\t\tlet x = 0;\n\t\t\t\t\tlet y = 0;\n\t\t\t\t\tcharacters.forEach((character) => {\n\t\t\t\t\t\tconst advance = context.measureText(character.character).width;\n\t\t\t\t\t\tconst characterWidth = Math.ceil(offsetX + advance + offsetX);\n\t\t\t\t\t\tconst characterHeight = fontSize;\n\t\t\t\t\t\tif (width <= x + characterWidth) {\n\t\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\t\ty += fontSize;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcharacter.x = x;\n\t\t\t\t\t\tcharacter.y = y;\n\t\t\t\t\t\tcharacter.width = characterWidth;\n\t\t\t\t\t\tcharacter.height = characterHeight;\n\t\t\t\t\t\tcharacter.advance = advance;\n\t\t\t\t\t\tcharacter.origin.x = x + offsetX;\n\t\t\t\t\t\tcharacter.origin.y = y + offsetY;\n\n\t\t\t\t\t\tx += characterWidth;\n\t\t\t\t\t});\n\t\t\t\t\tconst height = (this._height = y + fontSize);\n\n\t\t\t\t\t// Make a input canvas\n\t\t\t\t\t// Here, we need to reset the context because\n\t\t\t\t\t// context settings will be lost when we set the width/height.\n\t\t\t\t\tcanvas.width = width;\n\t\t\t\t\tcanvas.height = height;\n\t\t\t\t\tcontext.font = fontStyle;\n\t\t\t\t\tcontext.textAlign = \"left\";\n\t\t\t\t\tcontext.textBaseline = \"alphabetic\";\n\t\t\t\t\tcontext.lineWidth = 0;\n\t\t\t\t\tcontext.lineCap = \"round\";\n\t\t\t\t\tcontext.lineJoin = \"miter\";\n\t\t\t\t\tcontext.miterLimit = 10;\n\t\t\t\t\tcontext.fillStyle = \"#FFFFFF\";\n\t\t\t\t\tcontext.clearRect(0, 0, width, height);\n\t\t\t\t\tcharacters.forEach((character) => {\n\t\t\t\t\t\tcontext.fillText(\n\t\t\t\t\t\t\tcharacter.character,\n\t\t\t\t\t\t\tcharacter.origin.x,\n\t\t\t\t\t\t\tcharacter.origin.y\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\n\t\t\t\t\t// Convert to SDF font texture\n\t\t\t\t\tgenerator.updateTexture(width, height, canvas);\n\t\t\t\t\tgenerator.render();\n\t\t\t\t\tgenerator.read(canvas);\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tget length(): number {\n\t\treturn this._characters.size;\n\t}\n\n\ttoJson(): DynamicSDFFontAtlasJson {\n\t\treturn {\n\t\t\twidth: this._width,\n\t\t\theight: this._height,\n\t\t\tfont: this._font,\n\t\t\tcharacters: this._characters\n\t\t};\n\t}\n\n\ttoString(): string {\n\t\treturn JSON.stringify(this.toJson());\n\t}\n\n\tdestroy(): void {\n\t\tconst generator = this._generator;\n\t\tif (generator != null) {\n\t\t\tthis._generator = null;\n\t\t}\n\n\t\tconst canvas = this._canvas;\n\t\tif (canvas != null) {\n\t\t\tthis._canvas = null;\n\t\t}\n\n\t\tthis._characters.clear();\n\t}\n\n\tprotected toPowerOf2(size: number): number {\n\t\tlet result = 32;\n\t\twhile (result < size) {\n\t\t\tresult <<= 1;\n\t\t}\n\t\treturn result;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dynamic-sdf-font-atlas.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-sdf-font-atlas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AAEpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AASvC;IAYC,6BAAY,UAAkB;QAC7B,IAAI,CAAC,GAAG,GAAG,qBAAc,UAAU,CAAE,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,uBAAuB,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAEjB,IAAM,UAAU,GAAG,IAAI,GAAG,EAAqC,CAAC;QAChE,UAAU,CAAC,GAAG,CACb,SAAS,CAAC,KAAK,EACf,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,6BAA6B,CAAC,OAAO,CAAC,CACpE,CAAC;QACF,UAAU,CAAC,GAAG,CACb,SAAS,CAAC,GAAG,EACb,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,6BAA6B,CAAC,OAAO,CAAC,CACvE,CAAC;QACF,UAAU,CAAC,GAAG,CACb,SAAS,CAAC,IAAI,EACd,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,6BAA6B,CAAC,UAAU,CAAC,CACtE,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;YAC7D,IAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,6BAA6B,CAAC,UAAU,CAAC,CAAC,CAAC;SAC/E;QACD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC;IAC7C,CAAC;IAED,sBAAI,mCAAE;aAAN;YACC,OAAO,IAAI,CAAC,GAAG,CAAC;QACjB,CAAC;;;OAAA;IAED,sBAAI,qCAAI;aAAR;YACC,OAAO,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;aAED,UAAS,IAA6B;YACrC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,CAAC;;;OANA;IAQD,sBAAI,sCAAK;aAAT;YACC,OAAO,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;;;OAAA;IAED,sBAAI,uCAAM;aAAV;YACC,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAED,sBAAI,uCAAM;aAAV;YACC,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAED,sBAAI,0CAAS;aAAb;YACC,OAAO,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAED,sBAAI,2CAAU;aAAd;YACC,OAAO,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;;;OAAA;IAED,mCAAK,GAAL;QACC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,SAAS;YAClC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,6BAA6B,CAAC,QAAQ,CAAC,EAAE;gBAC/D,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;aAClB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,iCAAG,GAAH;QAAA,iBAuBC;QAtBA,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC;YAC5C,UAAU,CAAC,OAAO,CAAC,UAAC,SAAS,EAAE,EAAE;gBAChC,IACC,SAAS,CAAC,GAAG,IAAI,CAAC;oBAClB,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,6BAA6B,CAAC,QAAQ,CAAC,EACzD;oBACD,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC;oBACpB,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE;wBACxB,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBACtB,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;qBACrB;iBACD;YACF,CAAC,CAAC,CAAC;SACH;aAAM;YACN,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE;gBAC3C,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACrB;SACD;IACF,CAAC;IAES,qCAAO,GAAjB,UACC,SAAiB,EACjB,IAAmC;QAEnC,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,iCAAG,GAAH,UAAI,UAAoB,EAAE,YAAsB;QAC/C,IAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;YAC1D,IAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,IAAI,IAAI,IAAI,EAAE;gBACjB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC;aAC3C;iBAAM;gBACN,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,6BAA6B,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACrB;SACD;QACD,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACvB;IACF,CAAC;IAED,iCAAG,GAAH,UAAI,EAAU;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,oCAAM,GAAN;QACC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,IAAI,MAAM,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;gBACxC,IAAM,SAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,SAAO,IAAI,IAAI,EAAE;oBACpB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAEtB,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxB,IAAM,UAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;oBAChC,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;oBACpC,IAAM,OAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,UAAQ,CAAC,CAAC;oBAChF,IAAI,CAAC,MAAM,GAAG,OAAK,CAAC;oBACpB,IAAM,SAAS,GACd,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;oBAEhE,SAAO,CAAC,IAAI,GAAG,SAAS,CAAC;oBACzB,SAAO,CAAC,SAAS,GAAG,MAAM,CAAC;oBAC3B,SAAO,CAAC,YAAY,GAAG,YAAY,CAAC;oBACpC,SAAO,CAAC,SAAS,GAAG,CAAC,CAAC;oBACtB,SAAO,CAAC,OAAO,GAAG,OAAO,CAAC;oBAC1B,SAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;oBAC3B,SAAO,CAAC,UAAU,GAAG,EAAE,CAAC;oBACxB,SAAO,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC9B,QAAQ,CAAC,OAAO,CAAC,SAAO,EAAE,IAAI,CAAC,CAAC;oBAEhC,IAAM,SAAO,GAAG,CAAC,CAAC;oBAClB,IAAM,SAAO,GAAG,IAAI,CAAC,KAAK,CACzB,CAAC,UAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAC7D,CAAC;oBACF,IAAI,GAAC,GAAG,CAAC,CAAC;oBACV,IAAI,GAAC,GAAG,CAAC,CAAC;oBACV,UAAU,CAAC,OAAO,CAAC,UAAC,SAAS;wBAC5B,IAAM,OAAO,GAAG,SAAO,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;wBAC/D,IAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAO,GAAG,OAAO,GAAG,SAAO,CAAC,CAAC;wBAC9D,IAAM,eAAe,GAAG,UAAQ,CAAC;wBACjC,IAAI,OAAK,IAAI,GAAC,GAAG,cAAc,EAAE;4BAChC,GAAC,GAAG,CAAC,CAAC;4BACN,GAAC,IAAI,UAAQ,CAAC;yBACd;wBAED,SAAS,CAAC,CAAC,GAAG,GAAC,CAAC;wBAChB,SAAS,CAAC,CAAC,GAAG,GAAC,CAAC;wBAChB,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC;wBACjC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;wBACnC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;wBAC5B,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,GAAC,GAAG,SAAO,CAAC;wBACjC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,GAAC,GAAG,SAAO,CAAC;wBAEjC,GAAC,IAAI,cAAc,CAAC;oBACrB,CAAC,CAAC,CAAC;oBACH,IAAM,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,GAAC,GAAG,UAAQ,CAAC,CAAC;oBAE7C,sBAAsB;oBACtB,6CAA6C;oBAC7C,8DAA8D;oBAC9D,MAAM,CAAC,KAAK,GAAG,OAAK,CAAC;oBACrB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;oBACvB,SAAO,CAAC,IAAI,GAAG,SAAS,CAAC;oBACzB,SAAO,CAAC,SAAS,GAAG,MAAM,CAAC;oBAC3B,SAAO,CAAC,YAAY,GAAG,YAAY,CAAC;oBACpC,SAAO,CAAC,SAAS,GAAG,CAAC,CAAC;oBACtB,SAAO,CAAC,OAAO,GAAG,OAAO,CAAC;oBAC1B,SAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;oBAC3B,SAAO,CAAC,UAAU,GAAG,EAAE,CAAC;oBACxB,SAAO,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC9B,SAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAK,EAAE,MAAM,CAAC,CAAC;oBACvC,UAAU,CAAC,OAAO,CAAC,UAAC,SAAS;wBAC5B,SAAO,CAAC,QAAQ,CACf,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,MAAM,CAAC,CAAC,EAClB,SAAS,CAAC,MAAM,CAAC,CAAC,CAClB,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,8BAA8B;oBAC9B,SAAS,CAAC,aAAa,CAAC,OAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC/C,SAAS,CAAC,MAAM,EAAE,CAAC;oBACnB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAEvB,OAAO,IAAI,CAAC;iBACZ;aACD;SACD;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,sBAAI,uCAAM;aAAV;YACC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC9B,CAAC;;;OAAA;IAED,oCAAM,GAAN;QACC,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,UAAU,EAAE,IAAI,CAAC,WAAW;SAC5B,CAAC;IACH,CAAC;IAED,sCAAQ,GAAR;QACC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,qCAAO,GAAP;QACC,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,SAAS,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACvB;QAED,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,MAAM,IAAI,IAAI,EAAE;YACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACpB;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAES,wCAAU,GAApB,UAAqB,IAAY;QAChC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,OAAO,MAAM,GAAG,IAAI,EAAE;YACrB,MAAM,KAAK,CAAC,CAAC;SACb;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IACF,0BAAC;AAAD,CAAC,AA1QD,IA0QC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Character } from \"./character\";\nimport { DynamicFontAtlasCharacter } from \"./dynamic-font-atlas-character\";\nimport { DynamicFontAtlasCharacterType } from \"./dynamic-font-atlas-character-type\";\nimport { DynamicFontAtlasCharacters } from \"./dynamic-font-atlas-characters\";\nimport { DynamicSDFFontAtlasFont } from \"./dynamic-sdf-font-atlas-font\";\nimport { DynamicSDFFontGenerator } from \"./dynamic-sdf-font-generator\";\nimport { UtilFont } from \"./util-font\";\n\nexport interface DynamicSDFFontAtlasJson {\n\twidth: number;\n\theight: number;\n\tfont: DynamicSDFFontAtlasFont;\n\tcharacters: DynamicFontAtlasCharacters;\n}\n\nexport class DynamicSDFFontAtlas {\n\tprotected _id: string;\n\tprotected _generator: DynamicSDFFontGenerator | null;\n\tprotected _canvas: HTMLCanvasElement | null;\n\tprotected _font: DynamicSDFFontAtlasFont;\n\tprotected _characters: DynamicFontAtlasCharacters;\n\tprotected _width: number;\n\tprotected _height: number;\n\tprotected _isDirty: boolean;\n\tprotected _isTouched: boolean;\n\tprotected _life: number;\n\n\tconstructor(fontFamily: string) {\n\t\tthis._id = `font-atlas:${fontFamily}`;\n\t\tthis._generator = DynamicSDFFontGenerator.getInstance().init();\n\t\tthis._canvas = document.createElement(\"canvas\");\n\t\tthis._font = new DynamicSDFFontAtlasFont(fontFamily);\n\t\tthis._width = 1;\n\t\tthis._height = 1;\n\n\t\tconst characters = new Map<string, DynamicFontAtlasCharacter>();\n\t\tcharacters.set(\n\t\t\tCharacter.SPACE,\n\t\t\tthis.newChar(Character.SPACE, DynamicFontAtlasCharacterType.SPACE_R)\n\t\t);\n\t\tcharacters.set(\n\t\t\tCharacter.TAB,\n\t\t\tthis.newChar(Character.SOFT_TAB, DynamicFontAtlasCharacterType.SPACE_R)\n\t\t);\n\t\tcharacters.set(\n\t\t\tCharacter.DOTS,\n\t\t\tthis.newChar(Character.DOTS, DynamicFontAtlasCharacterType.LETTER_RNB)\n\t\t);\n\t\tfor (let i = 0, imax = Character.ASCII.length; i < imax; ++i) {\n\t\t\tconst ac = Character.ASCII[i];\n\t\t\tcharacters.set(ac, this.newChar(ac, DynamicFontAtlasCharacterType.LETTER_RNB));\n\t\t}\n\t\tthis._characters = characters;\n\t\tthis._isDirty = true;\n\t\tthis._isTouched = false;\n\t\tthis._life = DynamicFontAtlasCharacter.LIFE;\n\t}\n\n\tget id(): string {\n\t\treturn this._id;\n\t}\n\n\tget font(): DynamicSDFFontAtlasFont {\n\t\treturn this._font;\n\t}\n\n\tset font(font: DynamicSDFFontAtlasFont) {\n\t\tthis._font.id = font.id;\n\t\tthis._font.size = font.size;\n\t\tthis._font.italic = font.italic;\n\t}\n\n\tget width(): number {\n\t\treturn this._width;\n\t}\n\n\tget height(): number {\n\t\treturn this._height;\n\t}\n\n\tget canvas(): HTMLCanvasElement | null {\n\t\treturn this._canvas;\n\t}\n\n\tget generator(): DynamicSDFFontGenerator | null {\n\t\treturn this._generator;\n\t}\n\n\tget characters(): DynamicFontAtlasCharacters {\n\t\treturn this._characters;\n\t}\n\n\tbegin(): void {\n\t\tthis._isTouched = false;\n\t\tthis._characters.forEach((character) => {\n\t\t\tif (!(character.type & DynamicFontAtlasCharacterType.RESERVED)) {\n\t\t\t\tcharacter.ref = 0;\n\t\t\t}\n\t\t});\n\t}\n\n\tend(): void {\n\t\tconst characters = this._characters;\n\t\tif (this._isTouched) {\n\t\t\tthis._life = DynamicFontAtlasCharacter.LIFE;\n\t\t\tcharacters.forEach((character, id) => {\n\t\t\t\tif (\n\t\t\t\t\tcharacter.ref <= 0 &&\n\t\t\t\t\t!(character.type & DynamicFontAtlasCharacterType.RESERVED)\n\t\t\t\t) {\n\t\t\t\t\tcharacter.life -= 1;\n\t\t\t\t\tif (character.life <= 0) {\n\t\t\t\t\t\tcharacters.delete(id);\n\t\t\t\t\t\tthis._isDirty = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis._life -= 1;\n\t\t\tif (this._life <= 0 && 0 < characters.size) {\n\t\t\t\tcharacters.clear();\n\t\t\t\tthis._isDirty = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected newChar(\n\t\tcharacter: string,\n\t\ttype: DynamicFontAtlasCharacterType\n\t): DynamicFontAtlasCharacter {\n\t\treturn new DynamicFontAtlasCharacter(type, character, 0, 0, 1, 1, 0);\n\t}\n\n\tadd(characters: string[], nacharacters: string[]): void {\n\t\tconst cs = this._characters;\n\t\tfor (let i = 0, imax = nacharacters.length; i < imax; ++i) {\n\t\t\tconst nac = nacharacters[i];\n\t\t\tconst data = cs.get(nac);\n\t\t\tif (data != null) {\n\t\t\t\tdata.ref += 1;\n\t\t\t\tdata.life = DynamicFontAtlasCharacter.LIFE;\n\t\t\t} else {\n\t\t\t\tcs.set(nac, this.newChar(nac, DynamicFontAtlasCharacterType.LETTER));\n\t\t\t\tthis._isDirty = true;\n\t\t\t}\n\t\t}\n\t\tif (0 < characters.length) {\n\t\t\tthis._isTouched = true;\n\t\t}\n\t}\n\n\tget(id: string): DynamicFontAtlasCharacter | undefined {\n\t\treturn this._characters.get(id);\n\t}\n\n\tupdate(): boolean {\n\t\tif (this._isDirty) {\n\t\t\tconst canvas = this._canvas;\n\t\t\tconst generator = this._generator;\n\t\t\tif (canvas != null && generator != null) {\n\t\t\t\tconst context = canvas.getContext(\"2d\");\n\t\t\t\tif (context != null) {\n\t\t\t\t\tthis._isDirty = false;\n\n\t\t\t\t\tconst font = this._font;\n\t\t\t\t\tconst fontSize = font.size + 14;\n\t\t\t\t\tconst characters = this._characters;\n\t\t\t\t\tconst width = this.toPowerOf2(Math.ceil(Math.sqrt(characters.size)) * fontSize);\n\t\t\t\t\tthis._width = width;\n\t\t\t\t\tconst fontStyle =\n\t\t\t\t\t\t(font.italic ? \"italic \" : \"\") + (font.size + \"px \") + font.id;\n\n\t\t\t\t\tcontext.font = fontStyle;\n\t\t\t\t\tcontext.textAlign = \"left\";\n\t\t\t\t\tcontext.textBaseline = \"alphabetic\";\n\t\t\t\t\tcontext.lineWidth = 0;\n\t\t\t\t\tcontext.lineCap = \"round\";\n\t\t\t\t\tcontext.lineJoin = \"miter\";\n\t\t\t\t\tcontext.miterLimit = 10;\n\t\t\t\t\tcontext.fillStyle = \"#FFFFFF\";\n\t\t\t\t\tUtilFont.measure(context, font);\n\n\t\t\t\t\tconst offsetX = 7;\n\t\t\t\t\tconst offsetY = Math.round(\n\t\t\t\t\t\t(fontSize - (font.ascent + font.descent)) * 0.5 + font.ascent\n\t\t\t\t\t);\n\t\t\t\t\tlet x = 0;\n\t\t\t\t\tlet y = 0;\n\t\t\t\t\tcharacters.forEach((character) => {\n\t\t\t\t\t\tconst advance = context.measureText(character.character).width;\n\t\t\t\t\t\tconst characterWidth = Math.ceil(offsetX + advance + offsetX);\n\t\t\t\t\t\tconst characterHeight = fontSize;\n\t\t\t\t\t\tif (width <= x + characterWidth) {\n\t\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\t\ty += fontSize;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcharacter.x = x;\n\t\t\t\t\t\tcharacter.y = y;\n\t\t\t\t\t\tcharacter.width = characterWidth;\n\t\t\t\t\t\tcharacter.height = characterHeight;\n\t\t\t\t\t\tcharacter.advance = advance;\n\t\t\t\t\t\tcharacter.origin.x = x + offsetX;\n\t\t\t\t\t\tcharacter.origin.y = y + offsetY;\n\n\t\t\t\t\t\tx += characterWidth;\n\t\t\t\t\t});\n\t\t\t\t\tconst height = (this._height = y + fontSize);\n\n\t\t\t\t\t// Make a input canvas\n\t\t\t\t\t// Here, we need to reset the context because\n\t\t\t\t\t// context settings will be lost when we set the width/height.\n\t\t\t\t\tcanvas.width = width;\n\t\t\t\t\tcanvas.height = height;\n\t\t\t\t\tcontext.font = fontStyle;\n\t\t\t\t\tcontext.textAlign = \"left\";\n\t\t\t\t\tcontext.textBaseline = \"alphabetic\";\n\t\t\t\t\tcontext.lineWidth = 0;\n\t\t\t\t\tcontext.lineCap = \"round\";\n\t\t\t\t\tcontext.lineJoin = \"miter\";\n\t\t\t\t\tcontext.miterLimit = 10;\n\t\t\t\t\tcontext.fillStyle = \"#FFFFFF\";\n\t\t\t\t\tcontext.clearRect(0, 0, width, height);\n\t\t\t\t\tcharacters.forEach((character) => {\n\t\t\t\t\t\tcontext.fillText(\n\t\t\t\t\t\t\tcharacter.character,\n\t\t\t\t\t\t\tcharacter.origin.x,\n\t\t\t\t\t\t\tcharacter.origin.y\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\n\t\t\t\t\t// Convert to SDF font texture\n\t\t\t\t\tgenerator.updateTexture(width, height, canvas);\n\t\t\t\t\tgenerator.render();\n\t\t\t\t\tgenerator.read(canvas);\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tget length(): number {\n\t\treturn this._characters.size;\n\t}\n\n\ttoJson(): DynamicSDFFontAtlasJson {\n\t\treturn {\n\t\t\twidth: this._width,\n\t\t\theight: this._height,\n\t\t\tfont: this._font,\n\t\t\tcharacters: this._characters\n\t\t};\n\t}\n\n\ttoString(): string {\n\t\treturn JSON.stringify(this.toJson());\n\t}\n\n\tdestroy(): void {\n\t\tconst generator = this._generator;\n\t\tif (generator != null) {\n\t\t\tthis._generator = null;\n\t\t}\n\n\t\tconst canvas = this._canvas;\n\t\tif (canvas != null) {\n\t\t\tthis._canvas = null;\n\t\t}\n\n\t\tthis._characters.clear();\n\t}\n\n\tprotected toPowerOf2(size: number): number {\n\t\tlet result = 32;\n\t\twhile (result < size) {\n\t\t\tresult <<= 1;\n\t\t}\n\t\treturn result;\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.427.0
|
|
3
3
|
Copyright (C) 2019 Toshiba Corporation
|
|
4
4
|
SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
|
|
@@ -21622,6 +21622,8 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
21622
21622
|
}
|
|
21623
21623
|
this._characters = characters;
|
|
21624
21624
|
this._isDirty = true;
|
|
21625
|
+
this._isTouched = false;
|
|
21626
|
+
this._life = DynamicFontAtlasCharacter.LIFE;
|
|
21625
21627
|
}
|
|
21626
21628
|
Object.defineProperty(DynamicSDFFontAtlas.prototype, "id", {
|
|
21627
21629
|
get: function () {
|
|
@@ -21678,6 +21680,7 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
21678
21680
|
configurable: true
|
|
21679
21681
|
});
|
|
21680
21682
|
DynamicSDFFontAtlas.prototype.begin = function () {
|
|
21683
|
+
this._isTouched = false;
|
|
21681
21684
|
this._characters.forEach(function (character) {
|
|
21682
21685
|
if (!(character.type & DynamicFontAtlasCharacterType.RESERVED)) {
|
|
21683
21686
|
character.ref = 0;
|
|
@@ -21687,15 +21690,26 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
21687
21690
|
DynamicSDFFontAtlas.prototype.end = function () {
|
|
21688
21691
|
var _this = this;
|
|
21689
21692
|
var characters = this._characters;
|
|
21690
|
-
|
|
21691
|
-
|
|
21692
|
-
|
|
21693
|
-
if (character.
|
|
21694
|
-
|
|
21695
|
-
|
|
21693
|
+
if (this._isTouched) {
|
|
21694
|
+
this._life = DynamicFontAtlasCharacter.LIFE;
|
|
21695
|
+
characters.forEach(function (character, id) {
|
|
21696
|
+
if (character.ref <= 0 &&
|
|
21697
|
+
!(character.type & DynamicFontAtlasCharacterType.RESERVED)) {
|
|
21698
|
+
character.life -= 1;
|
|
21699
|
+
if (character.life <= 0) {
|
|
21700
|
+
characters.delete(id);
|
|
21701
|
+
_this._isDirty = true;
|
|
21702
|
+
}
|
|
21696
21703
|
}
|
|
21704
|
+
});
|
|
21705
|
+
}
|
|
21706
|
+
else {
|
|
21707
|
+
this._life -= 1;
|
|
21708
|
+
if (this._life <= 0 && 0 < characters.size) {
|
|
21709
|
+
characters.clear();
|
|
21710
|
+
this._isDirty = true;
|
|
21697
21711
|
}
|
|
21698
|
-
}
|
|
21712
|
+
}
|
|
21699
21713
|
};
|
|
21700
21714
|
DynamicSDFFontAtlas.prototype.newChar = function (character, type) {
|
|
21701
21715
|
return new DynamicFontAtlasCharacter(type, character, 0, 0, 1, 1, 0);
|
|
@@ -21707,12 +21721,16 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
21707
21721
|
var data = cs.get(nac);
|
|
21708
21722
|
if (data != null) {
|
|
21709
21723
|
data.ref += 1;
|
|
21724
|
+
data.life = DynamicFontAtlasCharacter.LIFE;
|
|
21710
21725
|
}
|
|
21711
21726
|
else {
|
|
21712
21727
|
cs.set(nac, this.newChar(nac, DynamicFontAtlasCharacterType.LETTER));
|
|
21713
21728
|
this._isDirty = true;
|
|
21714
21729
|
}
|
|
21715
21730
|
}
|
|
21731
|
+
if (0 < characters.length) {
|
|
21732
|
+
this._isTouched = true;
|
|
21733
|
+
}
|
|
21716
21734
|
};
|
|
21717
21735
|
DynamicSDFFontAtlas.prototype.get = function (id) {
|
|
21718
21736
|
return this._characters.get(id);
|
package/dist/wcardinal-ui.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Winter Cardinal UI v0.
|
|
2
|
+
Winter Cardinal UI v0.427.0
|
|
3
3
|
Copyright (C) 2019 Toshiba Corporation
|
|
4
4
|
SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
|
|
@@ -21619,6 +21619,8 @@
|
|
|
21619
21619
|
}
|
|
21620
21620
|
this._characters = characters;
|
|
21621
21621
|
this._isDirty = true;
|
|
21622
|
+
this._isTouched = false;
|
|
21623
|
+
this._life = DynamicFontAtlasCharacter.LIFE;
|
|
21622
21624
|
}
|
|
21623
21625
|
Object.defineProperty(DynamicSDFFontAtlas.prototype, "id", {
|
|
21624
21626
|
get: function () {
|
|
@@ -21675,6 +21677,7 @@
|
|
|
21675
21677
|
configurable: true
|
|
21676
21678
|
});
|
|
21677
21679
|
DynamicSDFFontAtlas.prototype.begin = function () {
|
|
21680
|
+
this._isTouched = false;
|
|
21678
21681
|
this._characters.forEach(function (character) {
|
|
21679
21682
|
if (!(character.type & DynamicFontAtlasCharacterType.RESERVED)) {
|
|
21680
21683
|
character.ref = 0;
|
|
@@ -21684,15 +21687,26 @@
|
|
|
21684
21687
|
DynamicSDFFontAtlas.prototype.end = function () {
|
|
21685
21688
|
var _this = this;
|
|
21686
21689
|
var characters = this._characters;
|
|
21687
|
-
|
|
21688
|
-
|
|
21689
|
-
|
|
21690
|
-
if (character.
|
|
21691
|
-
|
|
21692
|
-
|
|
21690
|
+
if (this._isTouched) {
|
|
21691
|
+
this._life = DynamicFontAtlasCharacter.LIFE;
|
|
21692
|
+
characters.forEach(function (character, id) {
|
|
21693
|
+
if (character.ref <= 0 &&
|
|
21694
|
+
!(character.type & DynamicFontAtlasCharacterType.RESERVED)) {
|
|
21695
|
+
character.life -= 1;
|
|
21696
|
+
if (character.life <= 0) {
|
|
21697
|
+
characters.delete(id);
|
|
21698
|
+
_this._isDirty = true;
|
|
21699
|
+
}
|
|
21693
21700
|
}
|
|
21701
|
+
});
|
|
21702
|
+
}
|
|
21703
|
+
else {
|
|
21704
|
+
this._life -= 1;
|
|
21705
|
+
if (this._life <= 0 && 0 < characters.size) {
|
|
21706
|
+
characters.clear();
|
|
21707
|
+
this._isDirty = true;
|
|
21694
21708
|
}
|
|
21695
|
-
}
|
|
21709
|
+
}
|
|
21696
21710
|
};
|
|
21697
21711
|
DynamicSDFFontAtlas.prototype.newChar = function (character, type) {
|
|
21698
21712
|
return new DynamicFontAtlasCharacter(type, character, 0, 0, 1, 1, 0);
|
|
@@ -21704,12 +21718,16 @@
|
|
|
21704
21718
|
var data = cs.get(nac);
|
|
21705
21719
|
if (data != null) {
|
|
21706
21720
|
data.ref += 1;
|
|
21721
|
+
data.life = DynamicFontAtlasCharacter.LIFE;
|
|
21707
21722
|
}
|
|
21708
21723
|
else {
|
|
21709
21724
|
cs.set(nac, this.newChar(nac, DynamicFontAtlasCharacterType.LETTER));
|
|
21710
21725
|
this._isDirty = true;
|
|
21711
21726
|
}
|
|
21712
21727
|
}
|
|
21728
|
+
if (0 < characters.length) {
|
|
21729
|
+
this._isTouched = true;
|
|
21730
|
+
}
|
|
21713
21731
|
};
|
|
21714
21732
|
DynamicSDFFontAtlas.prototype.get = function (id) {
|
|
21715
21733
|
return this._characters.get(id);
|