@wcardinal/wcardinal-ui 0.425.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/d-dynamic-text-geometry.d.ts +14 -3
- package/dist/types/wcardinal/ui/d-pane.d.ts +4 -4
- package/dist/types/wcardinal/ui/shape/e-shape-text.d.ts +3 -1
- package/dist/types/wcardinal/ui/shape/variant/build-text.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/e-shape-text-impl.d.ts +6 -1
- package/dist/types/wcardinal/ui/util/character.d.ts +8 -0
- package/dist/types/wcardinal/ui/util/dynamic-font-atlas-character.d.ts +1 -0
- package/dist/types/wcardinal/ui/util/dynamic-font-atlas-characters.d.ts +1 -1
- package/dist/types/wcardinal/ui/util/dynamic-font-atlas.d.ts +5 -7
- package/dist/types/wcardinal/ui/util/dynamic-sdf-font-atlas.d.ts +4 -5
- package/dist/types/wcardinal/ui/util/dynamic-sdf-font-atlases.d.ts +2 -2
- package/dist/types/wcardinal/ui/util/index.d.ts +1 -0
- package/dist/types/wcardinal/ui/util/util-character-iterator.d.ts +0 -8
- package/dist/wcardinal/ui/d-dynamic-text-geometry.js +56 -49
- package/dist/wcardinal/ui/d-dynamic-text-geometry.js.map +1 -1
- package/dist/wcardinal/ui/d-dynamic-text-measure.js +11 -11
- package/dist/wcardinal/ui/d-dynamic-text-measure.js.map +1 -1
- package/dist/wcardinal/ui/d-pane.js +9 -21
- package/dist/wcardinal/ui/d-pane.js.map +1 -1
- package/dist/wcardinal/ui/shape/e-shape-renderer.js +3 -3
- package/dist/wcardinal/ui/shape/e-shape-renderer.js.map +1 -1
- package/dist/wcardinal/ui/shape/e-shape-text.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-text.js +13 -14
- package/dist/wcardinal/ui/shape/variant/build-text.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-text.js +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-text.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/e-shape-text-impl.js +88 -13
- package/dist/wcardinal/ui/shape/variant/e-shape-text-impl.js.map +1 -1
- package/dist/wcardinal/ui/util/character.js +13 -0
- package/dist/wcardinal/ui/util/character.js.map +1 -0
- package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js +2 -1
- package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js.map +1 -1
- package/dist/wcardinal/ui/util/dynamic-font-atlas-characters.js.map +1 -1
- package/dist/wcardinal/ui/util/dynamic-font-atlas.js +124 -108
- package/dist/wcardinal/ui/util/dynamic-font-atlas.js.map +1 -1
- package/dist/wcardinal/ui/util/dynamic-font-atlases.js +2 -1
- package/dist/wcardinal/ui/util/dynamic-font-atlases.js.map +1 -1
- package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js +99 -112
- package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js.map +1 -1
- package/dist/wcardinal/ui/util/dynamic-sdf-font-atlases.js +18 -26
- package/dist/wcardinal/ui/util/dynamic-sdf-font-atlases.js.map +1 -1
- package/dist/wcardinal/ui/util/index.js +1 -0
- package/dist/wcardinal/ui/util/index.js.map +1 -1
- package/dist/wcardinal/ui/util/util-character-iterator.js +0 -17
- package/dist/wcardinal/ui/util/util-character-iterator.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 +508 -450
- package/dist/wcardinal-ui.js +508 -450
- package/dist/wcardinal-ui.min.js +2 -2
- package/dist/wcardinal-ui.min.js.map +1 -1
- package/package.json +1 -1
- package/dist/types/wcardinal/ui/util/ascii.d.ts +0 -1
- package/dist/wcardinal/ui/util/ascii.js +0 -6
- package/dist/wcardinal/ui/util/ascii.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-font-atlases.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-font-atlases.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"dynamic-font-atlases.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-font-atlases.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DApplicationLayerLike } from \"../d-application-layer-like\";\nimport { DynamicFontAtlas } from \"./dynamic-font-atlas\";\nimport { DynamicFontAtlasCharacterType } from \"./dynamic-font-atlas-character-type\";\n\nconst update = (atlas: DynamicFontAtlas): void => {\n\tatlas.update();\n};\n\nconst updateAll = (colorToAltas: Map<number, DynamicFontAtlas>): void => {\n\tcolorToAltas.forEach(update);\n};\n\nconst destroy = (atlas: DynamicFontAtlas): void => {\n\tatlas.update();\n};\n\nconst destroyAll = (colorToAltas: Map<number, DynamicFontAtlas>): void => {\n\tcolorToAltas.forEach(destroy);\n};\n\nexport class DynamicFontAtlases {\n\tprotected _atlases: Map<string, Map<number, DynamicFontAtlas>>;\n\tprotected _resolution: number;\n\n\tconstructor(layer: DApplicationLayerLike) {\n\t\tthis._atlases = new Map<string, Map<number, DynamicFontAtlas>>();\n\t\tthis._resolution = layer.renderer.resolution;\n\n\t\tlayer.renderer.on(\"prerender\", (): void => {\n\t\t\tthis.update();\n\t\t});\n\t}\n\n\tadd(fontId: string, fontSize: number, fontColor: number, targets: string): void {\n\t\tconst atlases = this._atlases;\n\t\tlet colorToAtlas = atlases.get(fontId);\n\t\tif (colorToAtlas == null) {\n\t\t\tcolorToAtlas = new Map<number, DynamicFontAtlas>();\n\t\t\tatlases.set(fontId, colorToAtlas);\n\t\t}\n\t\tlet atlas = colorToAtlas.get(fontColor);\n\t\tif (atlas == null) {\n\t\t\tatlas = new DynamicFontAtlas(fontId, fontSize, fontColor, this._resolution);\n\t\t\tcolorToAtlas.set(fontColor, atlas);\n\t\t}\n\t\tatlas.add(targets, DynamicFontAtlasCharacterType.LETTER);\n\t}\n\n\tremove(fontId: string, fontColor: number, targets: string): void {\n\t\tconst colorToAtlas = this._atlases.get(fontId);\n\t\tif (colorToAtlas != null) {\n\t\t\tconst atlas = colorToAtlas.get(fontColor);\n\t\t\tif (atlas != null) {\n\t\t\t\tatlas.remove(targets);\n\t\t\t}\n\t\t}\n\t}\n\n\tget(fontId: string, fontColor: number): DynamicFontAtlas | null {\n\t\tconst atlases = this._atlases;\n\t\tconst colorToAtlas = atlases.get(fontId);\n\t\tif (colorToAtlas == null) {\n\t\t\treturn null;\n\t\t}\n\t\tconst atlas = colorToAtlas.get(fontColor);\n\t\tif (atlas == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn atlas;\n\t}\n\n\tupdate(): void {\n\t\tthis._atlases.forEach(updateAll);\n\t}\n\n\tdestroy(): void {\n\t\tconst atlases = this._atlases;\n\t\tatlases.forEach(destroyAll);\n\t\tatlases.clear();\n\t}\n}\n"]}
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
* Copyright (C) 2019 Toshiba Corporation
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { Character } from "./character";
|
|
6
6
|
import { DynamicFontAtlasCharacter } from "./dynamic-font-atlas-character";
|
|
7
7
|
import { DynamicFontAtlasCharacterType } from "./dynamic-font-atlas-character-type";
|
|
8
8
|
import { DynamicSDFFontAtlasFont } from "./dynamic-sdf-font-atlas-font";
|
|
9
9
|
import { DynamicSDFFontGenerator } from "./dynamic-sdf-font-generator";
|
|
10
|
-
import { UtilCharacterIterator } from "./util-character-iterator";
|
|
11
10
|
import { UtilFont } from "./util-font";
|
|
12
11
|
var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
13
12
|
function DynamicSDFFontAtlas(fontFamily) {
|
|
@@ -15,11 +14,20 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
15
14
|
this._generator = DynamicSDFFontGenerator.getInstance().init();
|
|
16
15
|
this._canvas = document.createElement("canvas");
|
|
17
16
|
this._font = new DynamicSDFFontAtlasFont(fontFamily);
|
|
18
|
-
this._characters = {};
|
|
19
|
-
this._length = 0;
|
|
20
17
|
this._width = 1;
|
|
21
18
|
this._height = 1;
|
|
19
|
+
var characters = new Map();
|
|
20
|
+
characters.set(Character.SPACE, this.newChar(Character.SPACE, DynamicFontAtlasCharacterType.SPACE_R));
|
|
21
|
+
characters.set(Character.TAB, this.newChar(Character.SOFT_TAB, DynamicFontAtlasCharacterType.SPACE_R));
|
|
22
|
+
characters.set(Character.DOTS, this.newChar(Character.DOTS, DynamicFontAtlasCharacterType.LETTER_RNB));
|
|
23
|
+
for (var i = 0, imax = Character.ASCII.length; i < imax; ++i) {
|
|
24
|
+
var ac = Character.ASCII[i];
|
|
25
|
+
characters.set(ac, this.newChar(ac, DynamicFontAtlasCharacterType.LETTER_RNB));
|
|
26
|
+
}
|
|
27
|
+
this._characters = characters;
|
|
22
28
|
this._isDirty = true;
|
|
29
|
+
this._isTouched = false;
|
|
30
|
+
this._life = DynamicFontAtlasCharacter.LIFE;
|
|
23
31
|
}
|
|
24
32
|
Object.defineProperty(DynamicSDFFontAtlas.prototype, "id", {
|
|
25
33
|
get: function () {
|
|
@@ -76,143 +84,125 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
76
84
|
configurable: true
|
|
77
85
|
});
|
|
78
86
|
DynamicSDFFontAtlas.prototype.begin = function () {
|
|
79
|
-
this.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
87
|
+
this._isTouched = false;
|
|
88
|
+
this._characters.forEach(function (character) {
|
|
89
|
+
if (!(character.type & DynamicFontAtlasCharacterType.RESERVED)) {
|
|
90
|
+
character.ref = 0;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
84
93
|
};
|
|
85
94
|
DynamicSDFFontAtlas.prototype.end = function () {
|
|
95
|
+
var _this = this;
|
|
86
96
|
var characters = this._characters;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
+
}
|
|
94
107
|
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
this._life -= 1;
|
|
112
|
+
if (this._life <= 0 && 0 < characters.size) {
|
|
113
|
+
characters.clear();
|
|
114
|
+
this._isDirty = true;
|
|
95
115
|
}
|
|
96
116
|
}
|
|
97
117
|
};
|
|
98
|
-
DynamicSDFFontAtlas.prototype.
|
|
99
|
-
|
|
100
|
-
this.addChar("\t", " ", DynamicFontAtlasCharacterType.SPACE_R);
|
|
101
|
-
this.addChar("...", "...", DynamicFontAtlasCharacterType.LETTER_RNB);
|
|
102
|
-
for (var i = 0, imax = ASCII_CHARACTERS.length; i < imax; ++i) {
|
|
103
|
-
var char = ASCII_CHARACTERS[i];
|
|
104
|
-
this.addChar(char, char, DynamicFontAtlasCharacterType.LETTER_RNB);
|
|
105
|
-
}
|
|
118
|
+
DynamicSDFFontAtlas.prototype.newChar = function (character, type) {
|
|
119
|
+
return new DynamicFontAtlasCharacter(type, character, 0, 0, 1, 1, 0);
|
|
106
120
|
};
|
|
107
|
-
DynamicSDFFontAtlas.prototype.
|
|
108
|
-
var
|
|
109
|
-
|
|
110
|
-
var
|
|
121
|
+
DynamicSDFFontAtlas.prototype.add = function (characters, nacharacters) {
|
|
122
|
+
var cs = this._characters;
|
|
123
|
+
for (var i = 0, imax = nacharacters.length; i < imax; ++i) {
|
|
124
|
+
var nac = nacharacters[i];
|
|
125
|
+
var data = cs.get(nac);
|
|
111
126
|
if (data != null) {
|
|
112
|
-
if (data.ref <= 0) {
|
|
113
|
-
this._length += 1;
|
|
114
|
-
}
|
|
115
127
|
data.ref += 1;
|
|
128
|
+
data.life = DynamicFontAtlasCharacter.LIFE;
|
|
116
129
|
}
|
|
117
130
|
else {
|
|
118
|
-
|
|
119
|
-
this._length += 1;
|
|
131
|
+
cs.set(nac, this.newChar(nac, DynamicFontAtlasCharacterType.LETTER));
|
|
120
132
|
this._isDirty = true;
|
|
121
133
|
}
|
|
122
134
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
switch (character) {
|
|
126
|
-
case "\n": // Line feed
|
|
127
|
-
return true;
|
|
128
|
-
case "\r": // Carriage return
|
|
129
|
-
return true;
|
|
130
|
-
case "\v": // Vertical tab
|
|
131
|
-
return true;
|
|
132
|
-
case "\f": // Form feed
|
|
133
|
-
return true;
|
|
134
|
-
case "\u0085": // Next line
|
|
135
|
-
return true;
|
|
136
|
-
}
|
|
137
|
-
return false;
|
|
138
|
-
};
|
|
139
|
-
DynamicSDFFontAtlas.prototype.add = function (characters, type) {
|
|
140
|
-
if (type === void 0) { type = DynamicFontAtlasCharacterType.LETTER; }
|
|
141
|
-
var iterator = UtilCharacterIterator.from(characters);
|
|
142
|
-
while (iterator.hasNext()) {
|
|
143
|
-
var character = iterator.next();
|
|
144
|
-
this.addChar(character, character, type);
|
|
135
|
+
if (0 < characters.length) {
|
|
136
|
+
this._isTouched = true;
|
|
145
137
|
}
|
|
146
138
|
};
|
|
147
139
|
DynamicSDFFontAtlas.prototype.get = function (id) {
|
|
148
|
-
return this._characters
|
|
140
|
+
return this._characters.get(id);
|
|
149
141
|
};
|
|
150
142
|
DynamicSDFFontAtlas.prototype.update = function () {
|
|
151
143
|
if (this._isDirty) {
|
|
152
144
|
var canvas = this._canvas;
|
|
153
145
|
var generator = this._generator;
|
|
154
146
|
if (canvas != null && generator != null) {
|
|
155
|
-
var
|
|
156
|
-
if (
|
|
147
|
+
var context_1 = canvas.getContext("2d");
|
|
148
|
+
if (context_1 != null) {
|
|
157
149
|
this._isDirty = false;
|
|
158
150
|
var font = this._font;
|
|
151
|
+
var fontSize_1 = font.size + 14;
|
|
159
152
|
var characters = this._characters;
|
|
160
|
-
var
|
|
161
|
-
|
|
162
|
-
this._width = width;
|
|
153
|
+
var width_1 = this.toPowerOf2(Math.ceil(Math.sqrt(characters.size)) * fontSize_1);
|
|
154
|
+
this._width = width_1;
|
|
163
155
|
var fontStyle = (font.italic ? "italic " : "") + (font.size + "px ") + font.id;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
UtilFont.measure(
|
|
173
|
-
var
|
|
174
|
-
var
|
|
175
|
-
var
|
|
176
|
-
var
|
|
177
|
-
|
|
178
|
-
var
|
|
179
|
-
var
|
|
180
|
-
var
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
y += characterSize;
|
|
156
|
+
context_1.font = fontStyle;
|
|
157
|
+
context_1.textAlign = "left";
|
|
158
|
+
context_1.textBaseline = "alphabetic";
|
|
159
|
+
context_1.lineWidth = 0;
|
|
160
|
+
context_1.lineCap = "round";
|
|
161
|
+
context_1.lineJoin = "miter";
|
|
162
|
+
context_1.miterLimit = 10;
|
|
163
|
+
context_1.fillStyle = "#FFFFFF";
|
|
164
|
+
UtilFont.measure(context_1, font);
|
|
165
|
+
var offsetX_1 = 7;
|
|
166
|
+
var offsetY_1 = Math.round((fontSize_1 - (font.ascent + font.descent)) * 0.5 + font.ascent);
|
|
167
|
+
var x_1 = 0;
|
|
168
|
+
var y_1 = 0;
|
|
169
|
+
characters.forEach(function (character) {
|
|
170
|
+
var advance = context_1.measureText(character.character).width;
|
|
171
|
+
var characterWidth = Math.ceil(offsetX_1 + advance + offsetX_1);
|
|
172
|
+
var characterHeight = fontSize_1;
|
|
173
|
+
if (width_1 <= x_1 + characterWidth) {
|
|
174
|
+
x_1 = 0;
|
|
175
|
+
y_1 += fontSize_1;
|
|
185
176
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
var height = (this._height =
|
|
177
|
+
character.x = x_1;
|
|
178
|
+
character.y = y_1;
|
|
179
|
+
character.width = characterWidth;
|
|
180
|
+
character.height = characterHeight;
|
|
181
|
+
character.advance = advance;
|
|
182
|
+
character.origin.x = x_1 + offsetX_1;
|
|
183
|
+
character.origin.y = y_1 + offsetY_1;
|
|
184
|
+
x_1 += characterWidth;
|
|
185
|
+
});
|
|
186
|
+
var height = (this._height = y_1 + fontSize_1);
|
|
196
187
|
// Make a input canvas
|
|
197
188
|
// Here, we need to reset the context because
|
|
198
189
|
// context settings will be lost when we set the width/height.
|
|
199
|
-
canvas.width =
|
|
190
|
+
canvas.width = width_1;
|
|
200
191
|
canvas.height = height;
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
}
|
|
192
|
+
context_1.font = fontStyle;
|
|
193
|
+
context_1.textAlign = "left";
|
|
194
|
+
context_1.textBaseline = "alphabetic";
|
|
195
|
+
context_1.lineWidth = 0;
|
|
196
|
+
context_1.lineCap = "round";
|
|
197
|
+
context_1.lineJoin = "miter";
|
|
198
|
+
context_1.miterLimit = 10;
|
|
199
|
+
context_1.fillStyle = "#FFFFFF";
|
|
200
|
+
context_1.clearRect(0, 0, width_1, height);
|
|
201
|
+
characters.forEach(function (character) {
|
|
202
|
+
context_1.fillText(character.character, character.origin.x, character.origin.y);
|
|
203
|
+
});
|
|
214
204
|
// Convert to SDF font texture
|
|
215
|
-
generator.updateTexture(
|
|
205
|
+
generator.updateTexture(width_1, height, canvas);
|
|
216
206
|
generator.render();
|
|
217
207
|
generator.read(canvas);
|
|
218
208
|
return true;
|
|
@@ -223,7 +213,7 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
223
213
|
};
|
|
224
214
|
Object.defineProperty(DynamicSDFFontAtlas.prototype, "length", {
|
|
225
215
|
get: function () {
|
|
226
|
-
return this.
|
|
216
|
+
return this._characters.size;
|
|
227
217
|
},
|
|
228
218
|
enumerable: false,
|
|
229
219
|
configurable: true
|
|
@@ -248,10 +238,7 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
248
238
|
if (canvas != null) {
|
|
249
239
|
this._canvas = null;
|
|
250
240
|
}
|
|
251
|
-
|
|
252
|
-
for (var id in characters) {
|
|
253
|
-
delete characters[id];
|
|
254
|
-
}
|
|
241
|
+
this._characters.clear();
|
|
255
242
|
};
|
|
256
243
|
DynamicSDFFontAtlas.prototype.toPowerOf2 = function (size) {
|
|
257
244
|
var result = 32;
|
|
@@ -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 { ASCII_CHARACTERS } from \"./ascii\";\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 { UtilCharacterIterator } from \"./util-character-iterator\";\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 _length: number;\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._characters = {};\n\t\tthis._length = 0;\n\t\tthis._width = 1;\n\t\tthis._height = 1;\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._length = 0;\n\t\tconst characters = this._characters;\n\t\tfor (const id in characters) {\n\t\t\tcharacters[id].ref = 0;\n\t\t}\n\t}\n\n\tend(): void {\n\t\tconst characters = this._characters;\n\t\tfor (const id in characters) {\n\t\t\tconst data = characters[id];\n\t\t\tif (data.ref <= 0) {\n\t\t\t\tdata.life -= 1;\n\t\t\t\tif (data.life <= 0) {\n\t\t\t\t\tdelete characters[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\taddAscii(): void {\n\t\tthis.addChar(\" \", \" \", DynamicFontAtlasCharacterType.SPACE_R);\n\t\tthis.addChar(\"\\t\", \" \", DynamicFontAtlasCharacterType.SPACE_R);\n\t\tthis.addChar(\"...\", \"...\", DynamicFontAtlasCharacterType.LETTER_RNB);\n\t\tfor (let i = 0, imax = ASCII_CHARACTERS.length; i < imax; ++i) {\n\t\t\tconst char = ASCII_CHARACTERS[i];\n\t\t\tthis.addChar(char, char, DynamicFontAtlasCharacterType.LETTER_RNB);\n\t\t}\n\t}\n\n\taddChar(id: string, character: string, type: DynamicFontAtlasCharacterType): void {\n\t\tconst characters = this._characters;\n\t\tif (!this.isIgnored(character)) {\n\t\t\tconst data = characters[id];\n\t\t\tif (data != null) {\n\t\t\t\tif (data.ref <= 0) {\n\t\t\t\t\tthis._length += 1;\n\t\t\t\t}\n\t\t\t\tdata.ref += 1;\n\t\t\t} else {\n\t\t\t\tcharacters[id] = new DynamicFontAtlasCharacter(type, character, 0, 0, 1, 1, 0);\n\t\t\t\tthis._length += 1;\n\t\t\t\tthis._isDirty = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected isIgnored(character: string): boolean {\n\t\tswitch (character) {\n\t\t\tcase \"\\n\": // Line feed\n\t\t\t\treturn true;\n\t\t\tcase \"\\r\": // Carriage return\n\t\t\t\treturn true;\n\t\t\tcase \"\\v\": // Vertical tab\n\t\t\t\treturn true;\n\t\t\tcase \"\\f\": // Form feed\n\t\t\t\treturn true;\n\t\t\tcase \"\\u0085\": // Next line\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tadd(\n\t\tcharacters: string,\n\t\ttype: DynamicFontAtlasCharacterType = DynamicFontAtlasCharacterType.LETTER\n\t): void {\n\t\tconst iterator = UtilCharacterIterator.from(characters);\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tthis.addChar(character, character, type);\n\t\t}\n\t}\n\n\tget(id: string): DynamicFontAtlasCharacter | undefined {\n\t\treturn this._characters[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 characters = this._characters;\n\t\t\t\t\tconst characterSize = font.size + 14;\n\t\t\t\t\tconst width = this.toPowerOf2(\n\t\t\t\t\t\tMath.ceil(Math.sqrt(this._length)) * characterSize\n\t\t\t\t\t);\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(characterSize - (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\tfor (const id in characters) {\n\t\t\t\t\t\tconst data = characters[id];\n\t\t\t\t\t\tconst advance = context.measureText(data.character).width;\n\t\t\t\t\t\tconst characterWidth = Math.ceil(offsetX + advance + offsetX);\n\t\t\t\t\t\tconst characterHeight = characterSize;\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 += characterSize;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata.x = x;\n\t\t\t\t\t\tdata.y = y;\n\t\t\t\t\t\tdata.width = characterWidth;\n\t\t\t\t\t\tdata.height = characterHeight;\n\t\t\t\t\t\tdata.advance = advance;\n\t\t\t\t\t\tdata.origin.x = x + offsetX;\n\t\t\t\t\t\tdata.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 + characterSize);\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\tfor (const id in characters) {\n\t\t\t\t\t\tconst data = characters[id];\n\t\t\t\t\t\tcontext.fillText(data.character, data.origin.x, data.origin.y);\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._length;\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\tconst characters = this._characters;\n\t\tfor (const id in characters) {\n\t\t\tdelete characters[id];\n\t\t}\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":"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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\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"]}
|
|
@@ -6,52 +6,45 @@ import { DynamicAtlasItemFontAtlas } from "./dynamic-atlas-item-font-atlas";
|
|
|
6
6
|
import { DynamicSDFFontAtlas } from "./dynamic-sdf-font-atlas";
|
|
7
7
|
var DynamicSDFFontAtlases = /** @class */ (function () {
|
|
8
8
|
function DynamicSDFFontAtlases() {
|
|
9
|
-
this._atlases =
|
|
9
|
+
this._atlases = new Map();
|
|
10
10
|
}
|
|
11
11
|
DynamicSDFFontAtlases.prototype.begin = function () {
|
|
12
|
-
|
|
13
|
-
for (var family in atlases) {
|
|
14
|
-
var atlas = atlases[family];
|
|
12
|
+
this._atlases.forEach(function (atlas) {
|
|
15
13
|
atlas.begin();
|
|
16
|
-
}
|
|
14
|
+
});
|
|
17
15
|
};
|
|
18
16
|
DynamicSDFFontAtlases.prototype.end = function () {
|
|
19
17
|
var atlases = this._atlases;
|
|
20
|
-
|
|
21
|
-
var atlas = atlases[family];
|
|
22
|
-
if (0 < atlas.length) {
|
|
23
|
-
atlas.addAscii();
|
|
24
|
-
}
|
|
18
|
+
atlases.forEach(function (atlas, family) {
|
|
25
19
|
atlas.end();
|
|
26
20
|
if (atlas.length <= 0) {
|
|
27
21
|
atlas.destroy();
|
|
28
|
-
delete
|
|
22
|
+
atlases.delete(family);
|
|
29
23
|
}
|
|
30
|
-
}
|
|
24
|
+
});
|
|
31
25
|
};
|
|
32
|
-
DynamicSDFFontAtlases.prototype.add = function (family,
|
|
33
|
-
var
|
|
26
|
+
DynamicSDFFontAtlases.prototype.add = function (family, characters, nacharacters) {
|
|
27
|
+
var atlases = this._atlases;
|
|
28
|
+
var atlas = atlases.get(family);
|
|
34
29
|
if (atlas != null) {
|
|
35
|
-
atlas.add(
|
|
30
|
+
atlas.add(characters, nacharacters);
|
|
36
31
|
}
|
|
37
32
|
else {
|
|
38
33
|
var newAtlas = new DynamicSDFFontAtlas(family);
|
|
39
|
-
newAtlas.add(
|
|
40
|
-
|
|
34
|
+
newAtlas.add(characters, nacharacters);
|
|
35
|
+
atlases.set(family, newAtlas);
|
|
41
36
|
}
|
|
42
37
|
};
|
|
43
38
|
DynamicSDFFontAtlases.prototype.get = function (family) {
|
|
44
|
-
var atlas = this._atlases
|
|
39
|
+
var atlas = this._atlases.get(family);
|
|
45
40
|
if (atlas != null) {
|
|
46
41
|
return atlas;
|
|
47
42
|
}
|
|
48
43
|
return null;
|
|
49
44
|
};
|
|
50
45
|
DynamicSDFFontAtlases.prototype.update = function (baseAtlas) {
|
|
51
|
-
var atlases = this._atlases;
|
|
52
46
|
var baseTexture = baseAtlas.getBaseTexture();
|
|
53
|
-
|
|
54
|
-
var atlas = atlases[family];
|
|
47
|
+
this._atlases.forEach(function (atlas) {
|
|
55
48
|
if (atlas.update()) {
|
|
56
49
|
var atlasId = atlas.id;
|
|
57
50
|
var item = baseAtlas.get(atlasId);
|
|
@@ -69,15 +62,14 @@ var DynamicSDFFontAtlases = /** @class */ (function () {
|
|
|
69
62
|
baseAtlas.set(atlasId, new DynamicAtlasItemFontAtlas(atlas, baseTexture));
|
|
70
63
|
}
|
|
71
64
|
}
|
|
72
|
-
}
|
|
65
|
+
});
|
|
73
66
|
};
|
|
74
67
|
DynamicSDFFontAtlases.prototype.destroy = function () {
|
|
75
68
|
var atlases = this._atlases;
|
|
76
|
-
|
|
77
|
-
var atlas = atlases[family];
|
|
69
|
+
atlases.forEach(function (atlas) {
|
|
78
70
|
atlas.destroy();
|
|
79
|
-
}
|
|
80
|
-
|
|
71
|
+
});
|
|
72
|
+
atlases.clear();
|
|
81
73
|
};
|
|
82
74
|
return DynamicSDFFontAtlases;
|
|
83
75
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-sdf-font-atlases.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-sdf-font-atlases.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;IAGC;QACC,IAAI,CAAC,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"dynamic-sdf-font-atlases.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-sdf-font-atlases.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DynamicAtlas } from \"./dynamic-atlas\";\nimport { DynamicAtlasItemFontAtlas } from \"./dynamic-atlas-item-font-atlas\";\nimport { DynamicSDFFontAtlas } from \"./dynamic-sdf-font-atlas\";\n\nexport class DynamicSDFFontAtlases {\n\tprotected _atlases: Map<string, DynamicSDFFontAtlas>;\n\n\tconstructor() {\n\t\tthis._atlases = new Map<string, DynamicSDFFontAtlas>();\n\t}\n\n\tbegin(): void {\n\t\tthis._atlases.forEach((atlas) => {\n\t\t\tatlas.begin();\n\t\t});\n\t}\n\n\tend(): void {\n\t\tconst atlases = this._atlases;\n\t\tatlases.forEach((atlas, family) => {\n\t\t\tatlas.end();\n\t\t\tif (atlas.length <= 0) {\n\t\t\t\tatlas.destroy();\n\t\t\t\tatlases.delete(family);\n\t\t\t}\n\t\t});\n\t}\n\n\tadd(family: string, characters: string[], nacharacters: string[]): void {\n\t\tconst atlases = this._atlases;\n\t\tconst atlas = atlases.get(family);\n\t\tif (atlas != null) {\n\t\t\tatlas.add(characters, nacharacters);\n\t\t} else {\n\t\t\tconst newAtlas = new DynamicSDFFontAtlas(family);\n\t\t\tnewAtlas.add(characters, nacharacters);\n\t\t\tatlases.set(family, newAtlas);\n\t\t}\n\t}\n\n\tget(family: string): DynamicSDFFontAtlas | null {\n\t\tconst atlas = this._atlases.get(family);\n\t\tif (atlas != null) {\n\t\t\treturn atlas;\n\t\t}\n\t\treturn null;\n\t}\n\n\tupdate(baseAtlas: DynamicAtlas): void {\n\t\tconst baseTexture = baseAtlas.getBaseTexture();\n\t\tthis._atlases.forEach((atlas) => {\n\t\t\tif (atlas.update()) {\n\t\t\t\tconst atlasId = atlas.id;\n\t\t\t\tconst item = baseAtlas.get(atlasId);\n\t\t\t\tif (item != null) {\n\t\t\t\t\tconst width = atlas.width;\n\t\t\t\t\tconst height = atlas.height;\n\t\t\t\t\tconst resolution = baseTexture.resolution;\n\t\t\t\t\titem.frame.width = width;\n\t\t\t\t\titem.frame.height = height;\n\t\t\t\t\titem.width = width / resolution;\n\t\t\t\t\titem.height = height / resolution;\n\t\t\t\t\tbaseAtlas.toDirty();\n\t\t\t\t} else {\n\t\t\t\t\tbaseAtlas.set(atlasId, new DynamicAtlasItemFontAtlas(atlas, baseTexture));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tdestroy(): void {\n\t\tconst atlases = this._atlases;\n\t\tatlases.forEach((atlas) => {\n\t\t\tatlas.destroy();\n\t\t});\n\t\tatlases.clear();\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport * from \"./format-node\";\nexport * from \"./deep-partial\";\nexport * from \"./dynamic-atlas-item-empty\";\nexport * from \"./dynamic-atlas-item-font-atlas\";\nexport * from \"./dynamic-atlas-item-image\";\nexport * from \"./dynamic-atlas-item-text\";\nexport * from \"./dynamic-atlas-item-white\";\nexport * from \"./dynamic-atlas-item\";\nexport * from \"./dynamic-atlas\";\nexport * from \"./dynamic-font-atlas-chaaracter-origin\";\nexport * from \"./dynamic-font-atlas-character-type\";\nexport * from \"./dynamic-font-atlas-character\";\nexport * from \"./dynamic-font-atlas-characters\";\nexport * from \"./dynamic-font-atlas-font\";\nexport * from \"./dynamic-font-atlas\";\nexport * from \"./dynamic-font-atlases\";\nexport * from \"./dynamic-sdf-font-atlas-font\";\nexport * from \"./dynamic-sdf-font-atlas\";\nexport * from \"./dynamic-sdf-font-atlases\";\nexport * from \"./dynamic-sdf-font-generator\";\nexport * from \"./is-array\";\nexport * from \"./is-function\";\nexport * from \"./is-nan\";\nexport * from \"./is-number\";\nexport * from \"./is-object\";\nexport * from \"./is-string\";\nexport * from \"./lazy\";\nexport * from \"./number-formatter-function\";\nexport * from \"./number-formatter-impl\";\nexport * from \"./number-formatter\";\nexport * from \"./number-formatters\";\nexport * from \"./to-ceiling-index\";\nexport * from \"./to-cloned\";\nexport * from \"./to-enum\";\nexport * from \"./to-id\";\nexport * from \"./to-index-of\";\nexport * from \"./to-label\";\nexport * from \"./to-merged\";\nexport * from \"./to-padded\";\nexport * from \"./to-string\";\nexport * from \"./to-svg-texture\";\nexport * from \"./to-svg-url\";\nexport * from \"./util-alpha\";\nexport * from \"./util-svg-atlas-builder\";\nexport * from \"./util-attach\";\nexport * from \"./util-character-iterator\";\nexport * from \"./util-click-outside\";\nexport * from \"./util-clipboard\";\nexport * from \"./util-gesture-data\";\nexport * from \"./util-gesture-easing-history\";\nexport * from \"./util-gesture-easing\";\nexport * from \"./util-gesture-mode\";\nexport * from \"./util-gesture-modifier\";\nexport * from \"./util-gesture-modifiers\";\nexport * from \"./util-gesture\";\nexport * from \"./util-extract\";\nexport * from \"./util-extractor-pixels\";\nexport * from \"./util-extractor\";\nexport * from \"./util-file-downloader\";\nexport * from \"./util-file-opener\";\nexport * from \"./util-font\";\nexport * from \"./util-hsv\";\nexport * from \"./util-html-element-clipper-ex-impl\";\nexport * from \"./util-html-element-clipper-ex-rects-impl\";\nexport * from \"./util-html-element-clipper-ex-rects\";\nexport * from \"./util-html-element-clipper-ex\";\nexport * from \"./util-html-element-when\";\nexport * from \"./util-html-element\";\nexport * from \"./util-input-input\";\nexport * from \"./util-input-number\";\nexport * from \"./util-input-text-area\";\nexport * from \"./util-input-text\";\nexport * from \"./util-input\";\nexport * from \"./util-keyboard-event\";\nexport * from \"./util-name\";\nexport * from \"./util-overlay\";\nexport * from \"./util-pointer-event\";\nexport * from \"./util-rgb\";\nexport * from \"./util-rgba\";\nexport * from \"./util-state-blinker\";\nexport * from \"./util-transition\";\nexport * from \"./util-wheel-event\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport * from \"./format-node\";\nexport * from \"./character\";\nexport * from \"./deep-partial\";\nexport * from \"./dynamic-atlas-item-empty\";\nexport * from \"./dynamic-atlas-item-font-atlas\";\nexport * from \"./dynamic-atlas-item-image\";\nexport * from \"./dynamic-atlas-item-text\";\nexport * from \"./dynamic-atlas-item-white\";\nexport * from \"./dynamic-atlas-item\";\nexport * from \"./dynamic-atlas\";\nexport * from \"./dynamic-font-atlas-chaaracter-origin\";\nexport * from \"./dynamic-font-atlas-character-type\";\nexport * from \"./dynamic-font-atlas-character\";\nexport * from \"./dynamic-font-atlas-characters\";\nexport * from \"./dynamic-font-atlas-font\";\nexport * from \"./dynamic-font-atlas\";\nexport * from \"./dynamic-font-atlases\";\nexport * from \"./dynamic-sdf-font-atlas-font\";\nexport * from \"./dynamic-sdf-font-atlas\";\nexport * from \"./dynamic-sdf-font-atlases\";\nexport * from \"./dynamic-sdf-font-generator\";\nexport * from \"./is-array\";\nexport * from \"./is-function\";\nexport * from \"./is-nan\";\nexport * from \"./is-number\";\nexport * from \"./is-object\";\nexport * from \"./is-string\";\nexport * from \"./lazy\";\nexport * from \"./number-formatter-function\";\nexport * from \"./number-formatter-impl\";\nexport * from \"./number-formatter\";\nexport * from \"./number-formatters\";\nexport * from \"./to-ceiling-index\";\nexport * from \"./to-cloned\";\nexport * from \"./to-enum\";\nexport * from \"./to-id\";\nexport * from \"./to-index-of\";\nexport * from \"./to-label\";\nexport * from \"./to-merged\";\nexport * from \"./to-padded\";\nexport * from \"./to-string\";\nexport * from \"./to-svg-texture\";\nexport * from \"./to-svg-url\";\nexport * from \"./util-alpha\";\nexport * from \"./util-svg-atlas-builder\";\nexport * from \"./util-attach\";\nexport * from \"./util-character-iterator\";\nexport * from \"./util-click-outside\";\nexport * from \"./util-clipboard\";\nexport * from \"./util-gesture-data\";\nexport * from \"./util-gesture-easing-history\";\nexport * from \"./util-gesture-easing\";\nexport * from \"./util-gesture-mode\";\nexport * from \"./util-gesture-modifier\";\nexport * from \"./util-gesture-modifiers\";\nexport * from \"./util-gesture\";\nexport * from \"./util-extract\";\nexport * from \"./util-extractor-pixels\";\nexport * from \"./util-extractor\";\nexport * from \"./util-file-downloader\";\nexport * from \"./util-file-opener\";\nexport * from \"./util-font\";\nexport * from \"./util-hsv\";\nexport * from \"./util-html-element-clipper-ex-impl\";\nexport * from \"./util-html-element-clipper-ex-rects-impl\";\nexport * from \"./util-html-element-clipper-ex-rects\";\nexport * from \"./util-html-element-clipper-ex\";\nexport * from \"./util-html-element-when\";\nexport * from \"./util-html-element\";\nexport * from \"./util-input-input\";\nexport * from \"./util-input-number\";\nexport * from \"./util-input-text-area\";\nexport * from \"./util-input-text\";\nexport * from \"./util-input\";\nexport * from \"./util-keyboard-event\";\nexport * from \"./util-name\";\nexport * from \"./util-overlay\";\nexport * from \"./util-pointer-event\";\nexport * from \"./util-rgb\";\nexport * from \"./util-rgba\";\nexport * from \"./util-state-blinker\";\nexport * from \"./util-transition\";\nexport * from \"./util-wheel-event\";\n"]}
|
|
@@ -41,23 +41,6 @@ var UtilCharacterIterator = /** @class */ (function () {
|
|
|
41
41
|
this.position = nextBreak;
|
|
42
42
|
return result;
|
|
43
43
|
};
|
|
44
|
-
/**
|
|
45
|
-
* Advances the position if the next character is not equal to
|
|
46
|
-
* the given `except`.
|
|
47
|
-
*
|
|
48
|
-
* @param except
|
|
49
|
-
* @return true if the position is advanced
|
|
50
|
-
*/
|
|
51
|
-
UtilCharacterIterator.prototype.advance = function (except) {
|
|
52
|
-
var target = this.target;
|
|
53
|
-
var position = this.position;
|
|
54
|
-
var nextBreak = this.findNextBreak(target, position + 1);
|
|
55
|
-
if (target.substring(position, nextBreak) !== except) {
|
|
56
|
-
this.position = nextBreak;
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
return false;
|
|
60
|
-
};
|
|
61
44
|
/**
|
|
62
45
|
* Closes this iterator.
|
|
63
46
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util-character-iterator.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/util-character-iterator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;IAKC;QACC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,oCAAI,GAAJ,UAAK,MAAc;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,uCAAO,GAAP;QACC,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,CAAC;IAES,6CAAa,GAAvB,UAAwB,MAAc,EAAE,MAAc;QACrD,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;YACnC,IAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;gBAClE,OAAO,CAAC,CAAC;aACT;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAES,+CAAe,GAAzB,UAA0B,IAAY;QACrC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC;IACzC,CAAC;IAES,8CAAc,GAAxB,UAAyB,IAAY;QACpC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC;IACzC,CAAC;IAES,mDAAmB,GAA7B,UAA8B,IAAY;QACzC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC;IACzC,CAAC;IAED,oCAAI,GAAJ;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,OAAO,MAAM,CAAC;IACf,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"util-character-iterator.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/util-character-iterator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;IAKC;QACC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,oCAAI,GAAJ,UAAK,MAAc;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,uCAAO,GAAP;QACC,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,CAAC;IAES,6CAAa,GAAvB,UAAwB,MAAc,EAAE,MAAc;QACrD,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;YACnC,IAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;gBAClE,OAAO,CAAC,CAAC;aACT;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAES,+CAAe,GAAzB,UAA0B,IAAY;QACrC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC;IACzC,CAAC;IAES,8CAAc,GAAxB,UAAyB,IAAY;QACpC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC;IACzC,CAAC;IAES,mDAAmB,GAA7B,UAA8B,IAAY;QACzC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC;IACzC,CAAC;IAED,oCAAI,GAAJ;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,qCAAK,GAAL;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE;YAC3B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YACvB,OAAO,IAAI,CAAC;SACZ;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,0BAAI,GAAX,UAAY,MAAc;QACzB,IAAI,qBAAqB,CAAC,SAAS,IAAI,IAAI,EAAE;YAC5C,qBAAqB,CAAC,SAAS,GAAG,IAAI,qBAAqB,EAAE,CAAC;SAC9D;QACD,IAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,QAAQ,CAAC;IACjB,CAAC;IAvEgB,+BAAS,GAAiC,IAAI,CAAC;IAwEjE,4BAAC;CAAA,AAzED,IAyEC;SAzEY,qBAAqB","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport class UtilCharacterIterator {\n\tprotected static _instance: UtilCharacterIterator | null = null;\n\ttarget: string;\n\tposition: number;\n\n\tconstructor() {\n\t\tthis.target = \"\";\n\t\tthis.position = 0;\n\t}\n\n\tinit(target: string): void {\n\t\tthis.target = target;\n\t\tthis.position = 0;\n\t}\n\n\thasNext(): boolean {\n\t\treturn this.position < this.target.length;\n\t}\n\n\tprotected findNextBreak(target: string, istart: number): number {\n\t\tconst iend = target.length;\n\t\tfor (let i = istart; i < iend; ++i) {\n\t\t\tconst code = target.charCodeAt(i);\n\t\t\tif (!this.isLowSurrogate(code) && !this.isVariationSelector(code)) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn iend;\n\t}\n\n\tprotected isHighSurrogate(code: number): boolean {\n\t\treturn 0xd800 <= code && code <= 0xdbff;\n\t}\n\n\tprotected isLowSurrogate(code: number): boolean {\n\t\treturn 0xdc00 <= code && code <= 0xdfff;\n\t}\n\n\tprotected isVariationSelector(code: number): boolean {\n\t\treturn 0xfe00 <= code && code <= 0xfe0f;\n\t}\n\n\tnext(): string {\n\t\tconst target = this.target;\n\t\tconst position = this.position;\n\t\tconst nextBreak = this.findNextBreak(target, position + 1);\n\t\tconst result = target.substring(position, nextBreak);\n\t\tthis.position = nextBreak;\n\t\treturn result;\n\t}\n\n\t/**\n\t * Closes this iterator.\n\t *\n\t * @returns true if closed.\n\t */\n\tclose(): boolean {\n\t\tconst length = this.target.length;\n\t\tif (this.position < length) {\n\t\t\tthis.position = length;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tstatic from(target: string): UtilCharacterIterator {\n\t\tif (UtilCharacterIterator._instance == null) {\n\t\t\tUtilCharacterIterator._instance = new UtilCharacterIterator();\n\t\t}\n\t\tconst instance = UtilCharacterIterator._instance;\n\t\tinstance.init(target);\n\t\treturn instance;\n\t}\n}\n"]}
|