@wcardinal/wcardinal-ui 0.350.0 → 0.352.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-dialog.d.ts +1 -1
- package/dist/types/wcardinal/ui/d-dynamic-text.d.ts +1 -0
- package/dist/types/wcardinal/ui/d-menu-closeable.d.ts +4 -0
- package/dist/types/wcardinal/ui/d-menu-context.d.ts +9 -13
- package/dist/types/wcardinal/ui/d-menu-item.d.ts +3 -2
- package/dist/types/wcardinal/ui/d-menu-opener.d.ts +4 -0
- package/dist/types/wcardinal/ui/d-menu-sided.d.ts +3 -2
- package/dist/types/wcardinal/ui/d-menu.d.ts +8 -6
- package/dist/types/wcardinal/ui/index.d.ts +2 -0
- package/dist/types/wcardinal/ui/shape/e-shape.d.ts +3 -3
- package/dist/types/wcardinal/ui/shape/variant/e-shape-base.d.ts +3 -3
- package/dist/types/wcardinal/ui/util/dynamic-font-atlas-character.d.ts +1 -1
- package/dist/wcardinal/ui/d-dialog.js.map +1 -1
- package/dist/wcardinal/ui/d-dynamic-text.js +4 -0
- package/dist/wcardinal/ui/d-dynamic-text.js.map +1 -1
- package/dist/wcardinal/ui/d-menu-closeable.js +2 -0
- package/dist/wcardinal/ui/d-menu-closeable.js.map +1 -0
- package/dist/wcardinal/ui/d-menu-context.js.map +1 -1
- package/dist/wcardinal/ui/d-menu-item.js.map +1 -1
- package/dist/wcardinal/ui/d-menu-opener.js +2 -0
- package/dist/wcardinal/ui/d-menu-opener.js.map +1 -0
- package/dist/wcardinal/ui/d-menu-sided.js.map +1 -1
- package/dist/wcardinal/ui/d-menu.js +5 -2
- package/dist/wcardinal/ui/d-menu.js.map +1 -1
- package/dist/wcardinal/ui/index.js +2 -0
- package/dist/wcardinal/ui/index.js.map +1 -1
- package/dist/wcardinal/ui/shape/e-shape.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/e-shape-base.js +3 -0
- package/dist/wcardinal/ui/shape/variant/e-shape-base.js.map +1 -1
- package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js +3 -3
- package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js.map +1 -1
- package/dist/wcardinal/ui/util/dynamic-font-atlas.js +3 -2
- package/dist/wcardinal/ui/util/dynamic-font-atlas.js.map +1 -1
- package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js +1 -1
- package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js.map +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.js +1 -1
- package/dist/wcardinal-ui-theme-white.min.js +1 -1
- package/dist/wcardinal-ui.cjs.js +19 -9
- package/dist/wcardinal-ui.js +19 -9
- package/dist/wcardinal-ui.min.js +2 -2
- package/dist/wcardinal-ui.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -105,7 +105,8 @@ var DynamicFontAtlas = /** @class */ (function () {
|
|
|
105
105
|
var padding = this._padding;
|
|
106
106
|
var width = Math.ceil(padding + advance + padding);
|
|
107
107
|
var height = this.font.height;
|
|
108
|
-
characters[id] = new DynamicFontAtlasCharacter(
|
|
108
|
+
characters[id] = new DynamicFontAtlasCharacter(type, character, -width, // Setting X and Y to zeros leads to render the letter at the UV coordinate (0, 0).
|
|
109
|
+
-height, width, height, advance);
|
|
109
110
|
this._length += 1;
|
|
110
111
|
this._revision += 1;
|
|
111
112
|
}
|
|
@@ -232,7 +233,7 @@ var DynamicFontAtlas = /** @class */ (function () {
|
|
|
232
233
|
x += character.width;
|
|
233
234
|
}
|
|
234
235
|
var height = (this._height = y + fontHeight);
|
|
235
|
-
// Make
|
|
236
|
+
// Make an input canvas
|
|
236
237
|
// Here, we need to reset the context because
|
|
237
238
|
// context settings will be lost when we set the width/height.
|
|
238
239
|
var baseTexture = this._texture.baseTexture;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-font-atlas.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-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 { MIPMAP_MODES, SCALE_MODES, Texture } from \"pixi.js\";\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 { DynamicFontAtlasFont } from \"./dynamic-font-atlas-font\";\nimport { UtilCharacterIterator } from \"./util-character-iterator\";\n\nexport class DynamicFontAtlas {\n\tprotected _id: string;\n\tprotected _canvas: HTMLCanvasElement | null;\n\tprotected _context: CanvasRenderingContext2D | null;\n\tprotected _font: DynamicFontAtlasFont;\n\tprotected _characters: DynamicFontAtlasCharacters;\n\tprotected _length: number;\n\tprotected _unrefCount: number;\n\tprotected _width: number;\n\tprotected _height: number;\n\tprotected _revision: number;\n\tprotected _revisionUpdated: number;\n\tprotected _texture: Texture;\n\tprotected _padding: number;\n\n\tconstructor(fontId: string, fontSize: number, fontColor: number, resolution: number) {\n\t\tthis._id = fontId;\n\t\tthis._canvas = document.createElement(\"canvas\");\n\t\tthis._context = null;\n\t\tconst padding = this.toPadding(fontSize);\n\t\tthis._padding = padding;\n\t\tthis._font = new DynamicFontAtlasFont(fontId, fontSize, fontColor, padding);\n\t\tthis._characters = {};\n\t\tthis._length = 0;\n\t\tthis._unrefCount = 0;\n\t\tthis._width = 1;\n\t\tthis._height = 1;\n\t\tthis._revision = 0;\n\t\tthis._revisionUpdated = 0;\n\t\tthis._texture = Texture.from(this._canvas, {\n\t\t\tmipmap: MIPMAP_MODES.OFF,\n\t\t\tresolution,\n\t\t\tscaleMode: SCALE_MODES.NEAREST\n\t\t});\n\n\t\tconst characters = this._characters;\n\t\tthis.add_(\" \", \" \", characters, DynamicFontAtlasCharacterType.SPACE_R);\n\t\tthis.add_(\"\\t\", \" \", characters, DynamicFontAtlasCharacterType.SPACE_R);\n\t\tthis.add_(\"...\", \"...\", characters, 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.add_(char, char, characters, DynamicFontAtlasCharacterType.LETTER_RNB);\n\t\t}\n\t}\n\n\tprotected toPadding(fontSize: number): number {\n\t\treturn Math.max(3, Math.ceil(fontSize * 0.2));\n\t}\n\n\tget id(): string {\n\t\treturn this._id;\n\t}\n\n\tget font(): DynamicFontAtlasFont {\n\t\treturn this._font;\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 characters(): DynamicFontAtlasCharacters {\n\t\treturn this._characters;\n\t}\n\n\tget texture(): Texture {\n\t\treturn this._texture;\n\t}\n\n\tprotected add_(\n\t\tid: string,\n\t\tcharacter: string,\n\t\tcharacters: DynamicFontAtlasCharacters,\n\t\ttype: DynamicFontAtlasCharacterType\n\t): void {\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.type & DynamicFontAtlasCharacterType.RESERVED)) {\n\t\t\t\t\tif (data.ref === 0) {\n\t\t\t\t\t\tthis._unrefCount -= 1;\n\t\t\t\t\t}\n\t\t\t\t\tdata.ref += 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst advance = this.getAdvance(character);\n\t\t\t\tconst padding = this._padding;\n\t\t\t\tconst width = Math.ceil(padding + advance + padding);\n\t\t\t\tconst height = this.font.height;\n\t\t\t\tcharacters[id] = new DynamicFontAtlasCharacter(\n\t\t\t\t\tcharacter,\n\t\t\t\t\tadvance,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\ttype\n\t\t\t\t);\n\t\t\t\tthis._length += 1;\n\t\t\t\tthis._revision += 1;\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\tprotected remove_(id: string, characters: DynamicFontAtlasCharacters): void {\n\t\tconst data = characters[id];\n\t\tif (data != null) {\n\t\t\tif (!(data.type & DynamicFontAtlasCharacterType.RESERVED) && 0 < data.ref) {\n\t\t\t\tdata.ref -= 1;\n\t\t\t\tif (data.ref === 0) {\n\t\t\t\t\tthis._unrefCount += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected cleanup_(): void {\n\t\tif (this._length >> 1 <= this._unrefCount) {\n\t\t\tconst characters = this._characters;\n\t\t\tfor (const character in characters) {\n\t\t\t\tif (characters[character].ref <= 0) {\n\t\t\t\t\tdelete characters[character];\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._length -= this._unrefCount;\n\t\t\tthis._revision += 1;\n\t\t\tthis._unrefCount = 0;\n\t\t}\n\t}\n\n\tadd(\n\t\ttargets: string,\n\t\ttype: DynamicFontAtlasCharacterType = DynamicFontAtlasCharacterType.LETTER\n\t): void {\n\t\tconst characters = this._characters;\n\t\tconst iterator = UtilCharacterIterator.from(targets);\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tthis.add_(character, character, characters, type);\n\t\t}\n\t}\n\n\tremove(targets: string): void {\n\t\tconst characters = this._characters;\n\t\tconst iterator = UtilCharacterIterator.from(targets);\n\t\twhile (iterator.hasNext()) {\n\t\t\tthis.remove_(iterator.next(), characters);\n\t\t}\n\t}\n\n\tget(id: string): DynamicFontAtlasCharacter | undefined {\n\t\treturn this._characters[id];\n\t}\n\n\tgetAdvance(target: string): number {\n\t\tconst context = this.getContext();\n\t\tif (context != null) {\n\t\t\treturn context.measureText(target).width;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tgetContext(): CanvasRenderingContext2D | null {\n\t\tlet context = this._context;\n\t\tif (context == null) {\n\t\t\tconst canvas = this._canvas;\n\t\t\tif (canvas != null) {\n\t\t\t\tcontext = this._context = canvas.getContext(\"2d\", { alpha: true });\n\t\t\t\tif (context == null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst font = this._font;\n\t\tif (context.font !== font.id) {\n\t\t\tcontext.font = font.id;\n\t\t\tfont.id = context.font;\n\t\t\tcontext.textAlign = \"left\";\n\t\t\tcontext.textBaseline = \"alphabetic\";\n\t\t\tcontext.lineWidth = 0;\n\t\t\tcontext.lineCap = \"round\";\n\t\t\tcontext.lineJoin = \"miter\";\n\t\t\tcontext.miterLimit = 0;\n\t\t\tcontext.fillStyle = font.color;\n\t\t\tcontext.strokeStyle = \"#0000ff\";\n\t\t}\n\t\treturn context;\n\t}\n\n\tupdate(): boolean {\n\t\tthis.cleanup_();\n\n\t\tif (this._revisionUpdated < this._revision) {\n\t\t\tthis._revisionUpdated = this._revision;\n\n\t\t\tconst canvas = this._canvas;\n\t\t\tif (canvas != null) {\n\t\t\t\tconst font = this._font;\n\t\t\t\tconst fontHeight = font.height;\n\t\t\t\tconst characters = this._characters;\n\t\t\t\tconst width = (this._width = this.toPowerOf2(\n\t\t\t\t\tMath.ceil(Math.sqrt(this._length)) * fontHeight\n\t\t\t\t));\n\n\t\t\t\tconst offsetX = this._padding;\n\t\t\t\tconst offsetY = Math.round(\n\t\t\t\t\t(fontHeight - (font.ascent + font.descent)) * 0.5 + font.ascent\n\t\t\t\t);\n\t\t\t\tlet x = 0;\n\t\t\t\tlet y = 0;\n\t\t\t\tfor (const key in characters) {\n\t\t\t\t\tconst character = characters[key];\n\t\t\t\t\tif (width <= x + character.width) {\n\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\ty += fontHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tcharacter.x = x;\n\t\t\t\t\tcharacter.y = y;\n\t\t\t\t\tcharacter.origin.x = x + offsetX;\n\t\t\t\t\tcharacter.origin.y = y + offsetY;\n\n\t\t\t\t\tx += character.width;\n\t\t\t\t}\n\t\t\t\tconst height = (this._height = y + fontHeight);\n\n\t\t\t\t// Make a input canvas\n\t\t\t\t// Here, we need to reset the context because\n\t\t\t\t// context settings will be lost when we set the width/height.\n\t\t\t\tconst baseTexture = this._texture.baseTexture;\n\t\t\t\tconst resolution = baseTexture.resolution;\n\t\t\t\tconst realWidth = Math.ceil(width * resolution);\n\t\t\t\tconst realHeight = Math.ceil(height * resolution);\n\t\t\t\tcanvas.width = realWidth;\n\t\t\t\tcanvas.height = realHeight;\n\t\t\t\tconst context = this.getContext();\n\t\t\t\tif (context != null) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.scale(resolution, resolution);\n\t\t\t\t\tcontext.clearRect(0, 0, width, height);\n\t\t\t\t\tfor (const key in characters) {\n\t\t\t\t\t\tconst character = characters[key];\n\t\t\t\t\t\tcontext.fillText(key, character.origin.x, character.origin.y);\n\t\t\t\t\t}\n\t\t\t\t\tcontext.restore();\n\t\t\t\t}\n\t\t\t\tbaseTexture.setRealSize(realWidth, realHeight);\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetRevision(): number {\n\t\treturn this._revision;\n\t}\n\n\tgetRevisionUpdate(): number {\n\t\treturn this._revisionUpdated;\n\t}\n\n\tget length(): number {\n\t\treturn this._length;\n\t}\n\n\tdestroy(): void {\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 character in characters) {\n\t\t\tdelete characters[character];\n\t\t}\n\t}\n\n\ttoPowerOf2(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-font-atlas.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-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 { MIPMAP_MODES, SCALE_MODES, Texture } from \"pixi.js\";\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 { DynamicFontAtlasFont } from \"./dynamic-font-atlas-font\";\nimport { UtilCharacterIterator } from \"./util-character-iterator\";\n\nexport class DynamicFontAtlas {\n\tprotected _id: string;\n\tprotected _canvas: HTMLCanvasElement | null;\n\tprotected _context: CanvasRenderingContext2D | null;\n\tprotected _font: DynamicFontAtlasFont;\n\tprotected _characters: DynamicFontAtlasCharacters;\n\tprotected _length: number;\n\tprotected _unrefCount: number;\n\tprotected _width: number;\n\tprotected _height: number;\n\tprotected _revision: number;\n\tprotected _revisionUpdated: number;\n\tprotected _texture: Texture;\n\tprotected _padding: number;\n\n\tconstructor(fontId: string, fontSize: number, fontColor: number, resolution: number) {\n\t\tthis._id = fontId;\n\t\tthis._canvas = document.createElement(\"canvas\");\n\t\tthis._context = null;\n\t\tconst padding = this.toPadding(fontSize);\n\t\tthis._padding = padding;\n\t\tthis._font = new DynamicFontAtlasFont(fontId, fontSize, fontColor, padding);\n\t\tthis._characters = {};\n\t\tthis._length = 0;\n\t\tthis._unrefCount = 0;\n\t\tthis._width = 1;\n\t\tthis._height = 1;\n\t\tthis._revision = 0;\n\t\tthis._revisionUpdated = 0;\n\t\tthis._texture = Texture.from(this._canvas, {\n\t\t\tmipmap: MIPMAP_MODES.OFF,\n\t\t\tresolution,\n\t\t\tscaleMode: SCALE_MODES.NEAREST\n\t\t});\n\n\t\tconst characters = this._characters;\n\t\tthis.add_(\" \", \" \", characters, DynamicFontAtlasCharacterType.SPACE_R);\n\t\tthis.add_(\"\\t\", \" \", characters, DynamicFontAtlasCharacterType.SPACE_R);\n\t\tthis.add_(\"...\", \"...\", characters, 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.add_(char, char, characters, DynamicFontAtlasCharacterType.LETTER_RNB);\n\t\t}\n\t}\n\n\tprotected toPadding(fontSize: number): number {\n\t\treturn Math.max(3, Math.ceil(fontSize * 0.2));\n\t}\n\n\tget id(): string {\n\t\treturn this._id;\n\t}\n\n\tget font(): DynamicFontAtlasFont {\n\t\treturn this._font;\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 characters(): DynamicFontAtlasCharacters {\n\t\treturn this._characters;\n\t}\n\n\tget texture(): Texture {\n\t\treturn this._texture;\n\t}\n\n\tprotected add_(\n\t\tid: string,\n\t\tcharacter: string,\n\t\tcharacters: DynamicFontAtlasCharacters,\n\t\ttype: DynamicFontAtlasCharacterType\n\t): void {\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.type & DynamicFontAtlasCharacterType.RESERVED)) {\n\t\t\t\t\tif (data.ref === 0) {\n\t\t\t\t\t\tthis._unrefCount -= 1;\n\t\t\t\t\t}\n\t\t\t\t\tdata.ref += 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst advance = this.getAdvance(character);\n\t\t\t\tconst padding = this._padding;\n\t\t\t\tconst width = Math.ceil(padding + advance + padding);\n\t\t\t\tconst height = this.font.height;\n\t\t\t\tcharacters[id] = new DynamicFontAtlasCharacter(\n\t\t\t\t\ttype,\n\t\t\t\t\tcharacter,\n\t\t\t\t\t-width, // Setting X and Y to zeros leads to render the letter at the UV coordinate (0, 0).\n\t\t\t\t\t-height,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tadvance\n\t\t\t\t);\n\t\t\t\tthis._length += 1;\n\t\t\t\tthis._revision += 1;\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\tprotected remove_(id: string, characters: DynamicFontAtlasCharacters): void {\n\t\tconst data = characters[id];\n\t\tif (data != null) {\n\t\t\tif (!(data.type & DynamicFontAtlasCharacterType.RESERVED) && 0 < data.ref) {\n\t\t\t\tdata.ref -= 1;\n\t\t\t\tif (data.ref === 0) {\n\t\t\t\t\tthis._unrefCount += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected cleanup_(): void {\n\t\tif (this._length >> 1 <= this._unrefCount) {\n\t\t\tconst characters = this._characters;\n\t\t\tfor (const character in characters) {\n\t\t\t\tif (characters[character].ref <= 0) {\n\t\t\t\t\tdelete characters[character];\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._length -= this._unrefCount;\n\t\t\tthis._revision += 1;\n\t\t\tthis._unrefCount = 0;\n\t\t}\n\t}\n\n\tadd(\n\t\ttargets: string,\n\t\ttype: DynamicFontAtlasCharacterType = DynamicFontAtlasCharacterType.LETTER\n\t): void {\n\t\tconst characters = this._characters;\n\t\tconst iterator = UtilCharacterIterator.from(targets);\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tthis.add_(character, character, characters, type);\n\t\t}\n\t}\n\n\tremove(targets: string): void {\n\t\tconst characters = this._characters;\n\t\tconst iterator = UtilCharacterIterator.from(targets);\n\t\twhile (iterator.hasNext()) {\n\t\t\tthis.remove_(iterator.next(), characters);\n\t\t}\n\t}\n\n\tget(id: string): DynamicFontAtlasCharacter | undefined {\n\t\treturn this._characters[id];\n\t}\n\n\tgetAdvance(target: string): number {\n\t\tconst context = this.getContext();\n\t\tif (context != null) {\n\t\t\treturn context.measureText(target).width;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tgetContext(): CanvasRenderingContext2D | null {\n\t\tlet context = this._context;\n\t\tif (context == null) {\n\t\t\tconst canvas = this._canvas;\n\t\t\tif (canvas != null) {\n\t\t\t\tcontext = this._context = canvas.getContext(\"2d\", { alpha: true });\n\t\t\t\tif (context == null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst font = this._font;\n\t\tif (context.font !== font.id) {\n\t\t\tcontext.font = font.id;\n\t\t\tfont.id = context.font;\n\t\t\tcontext.textAlign = \"left\";\n\t\t\tcontext.textBaseline = \"alphabetic\";\n\t\t\tcontext.lineWidth = 0;\n\t\t\tcontext.lineCap = \"round\";\n\t\t\tcontext.lineJoin = \"miter\";\n\t\t\tcontext.miterLimit = 0;\n\t\t\tcontext.fillStyle = font.color;\n\t\t\tcontext.strokeStyle = \"#0000ff\";\n\t\t}\n\t\treturn context;\n\t}\n\n\tupdate(): boolean {\n\t\tthis.cleanup_();\n\n\t\tif (this._revisionUpdated < this._revision) {\n\t\t\tthis._revisionUpdated = this._revision;\n\n\t\t\tconst canvas = this._canvas;\n\t\t\tif (canvas != null) {\n\t\t\t\tconst font = this._font;\n\t\t\t\tconst fontHeight = font.height;\n\t\t\t\tconst characters = this._characters;\n\t\t\t\tconst width = (this._width = this.toPowerOf2(\n\t\t\t\t\tMath.ceil(Math.sqrt(this._length)) * fontHeight\n\t\t\t\t));\n\n\t\t\t\tconst offsetX = this._padding;\n\t\t\t\tconst offsetY = Math.round(\n\t\t\t\t\t(fontHeight - (font.ascent + font.descent)) * 0.5 + font.ascent\n\t\t\t\t);\n\t\t\t\tlet x = 0;\n\t\t\t\tlet y = 0;\n\t\t\t\tfor (const key in characters) {\n\t\t\t\t\tconst character = characters[key];\n\t\t\t\t\tif (width <= x + character.width) {\n\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\ty += fontHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tcharacter.x = x;\n\t\t\t\t\tcharacter.y = y;\n\t\t\t\t\tcharacter.origin.x = x + offsetX;\n\t\t\t\t\tcharacter.origin.y = y + offsetY;\n\n\t\t\t\t\tx += character.width;\n\t\t\t\t}\n\t\t\t\tconst height = (this._height = y + fontHeight);\n\n\t\t\t\t// Make an input canvas\n\t\t\t\t// Here, we need to reset the context because\n\t\t\t\t// context settings will be lost when we set the width/height.\n\t\t\t\tconst baseTexture = this._texture.baseTexture;\n\t\t\t\tconst resolution = baseTexture.resolution;\n\t\t\t\tconst realWidth = Math.ceil(width * resolution);\n\t\t\t\tconst realHeight = Math.ceil(height * resolution);\n\t\t\t\tcanvas.width = realWidth;\n\t\t\t\tcanvas.height = realHeight;\n\t\t\t\tconst context = this.getContext();\n\t\t\t\tif (context != null) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.scale(resolution, resolution);\n\t\t\t\t\tcontext.clearRect(0, 0, width, height);\n\t\t\t\t\tfor (const key in characters) {\n\t\t\t\t\t\tconst character = characters[key];\n\t\t\t\t\t\tcontext.fillText(key, character.origin.x, character.origin.y);\n\t\t\t\t\t}\n\t\t\t\t\tcontext.restore();\n\t\t\t\t}\n\t\t\t\tbaseTexture.setRealSize(realWidth, realHeight);\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetRevision(): number {\n\t\treturn this._revision;\n\t}\n\n\tgetRevisionUpdate(): number {\n\t\treturn this._revisionUpdated;\n\t}\n\n\tget length(): number {\n\t\treturn this._length;\n\t}\n\n\tdestroy(): void {\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 character in characters) {\n\t\t\tdelete characters[character];\n\t\t}\n\t}\n\n\ttoPowerOf2(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"]}
|
|
@@ -118,7 +118,7 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
118
118
|
data.ref += 1;
|
|
119
119
|
}
|
|
120
120
|
else {
|
|
121
|
-
characters[id] = new DynamicFontAtlasCharacter(character, 0, 1, 1,
|
|
121
|
+
characters[id] = new DynamicFontAtlasCharacter(type, character, 0, 0, 1, 1, 0);
|
|
122
122
|
this._length += 1;
|
|
123
123
|
this._isDirty = true;
|
|
124
124
|
}
|
|
@@ -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 { DThemes } from \"../theme/d-themes\";\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 { DynamicSDFFontGenerator } from \"./dynamic-sdf-font-generator\";\nimport { UtilCharacterIterator } from \"./util-character-iterator\";\n\nexport interface DynamicSDFFontAtlasFont {\n\tfamily: string;\n\tsize: number;\n\titalic: boolean;\n}\n\nexport interface DynamicSDFFontAtlasJson {\n\twidth: number;\n\theight: number;\n\tfont: DynamicSDFFontAtlasFont;\n\tcharacters: DynamicFontAtlasCharacters;\n}\n\nexport class DynamicSDFFontAtlas {\n\tprotected static FONT_FAMILY_AUTO: string | null = null;\n\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 = {\n\t\t\tfamily: DynamicSDFFontAtlas.toFontFamily(fontFamily),\n\t\t\tsize: 32,\n\t\t\titalic: false\n\t\t};\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.family = font.family;\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(character, 0, 1, 1, type);\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 = DynamicSDFFontAtlas.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.family;\n\n\t\t\t\t\tcontext.font = fontStyle;\n\t\t\t\t\tcontext.textAlign = \"left\";\n\t\t\t\t\tcontext.textBaseline = \"middle\";\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 = 0;\n\t\t\t\t\tcontext.fillStyle = \"#FFFFFF\";\n\n\t\t\t\t\tconst offsetX = 7;\n\t\t\t\t\tconst offsetY = characterSize >> 1;\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 = \"middle\";\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 = 4;\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(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\tstatic toFontFamily(fontFamily: string): string {\n\t\treturn fontFamily === \"auto\" ? DynamicSDFFontAtlas.getAutoFontFamily() : fontFamily;\n\t}\n\n\tstatic 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\tstatic getAutoFontFamily(): string {\n\t\tif (DynamicSDFFontAtlas.FONT_FAMILY_AUTO == null) {\n\t\t\tDynamicSDFFontAtlas.FONT_FAMILY_AUTO = DThemes.getInstance()\n\t\t\t\t.get<any>(\"DBase\")\n\t\t\t\t.getFontFamilly() as string;\n\t\t}\n\t\treturn DynamicSDFFontAtlas.FONT_FAMILY_AUTO;\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 { DThemes } from \"../theme/d-themes\";\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 { DynamicSDFFontGenerator } from \"./dynamic-sdf-font-generator\";\nimport { UtilCharacterIterator } from \"./util-character-iterator\";\n\nexport interface DynamicSDFFontAtlasFont {\n\tfamily: string;\n\tsize: number;\n\titalic: boolean;\n}\n\nexport interface DynamicSDFFontAtlasJson {\n\twidth: number;\n\theight: number;\n\tfont: DynamicSDFFontAtlasFont;\n\tcharacters: DynamicFontAtlasCharacters;\n}\n\nexport class DynamicSDFFontAtlas {\n\tprotected static FONT_FAMILY_AUTO: string | null = null;\n\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 = {\n\t\t\tfamily: DynamicSDFFontAtlas.toFontFamily(fontFamily),\n\t\t\tsize: 32,\n\t\t\titalic: false\n\t\t};\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.family = font.family;\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 = DynamicSDFFontAtlas.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.family;\n\n\t\t\t\t\tcontext.font = fontStyle;\n\t\t\t\t\tcontext.textAlign = \"left\";\n\t\t\t\t\tcontext.textBaseline = \"middle\";\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 = 0;\n\t\t\t\t\tcontext.fillStyle = \"#FFFFFF\";\n\n\t\t\t\t\tconst offsetX = 7;\n\t\t\t\t\tconst offsetY = characterSize >> 1;\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 = \"middle\";\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 = 4;\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(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\tstatic toFontFamily(fontFamily: string): string {\n\t\treturn fontFamily === \"auto\" ? DynamicSDFFontAtlas.getAutoFontFamily() : fontFamily;\n\t}\n\n\tstatic 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\tstatic getAutoFontFamily(): string {\n\t\tif (DynamicSDFFontAtlas.FONT_FAMILY_AUTO == null) {\n\t\t\tDynamicSDFFontAtlas.FONT_FAMILY_AUTO = DThemes.getInstance()\n\t\t\t\t.get<any>(\"DBase\")\n\t\t\t\t.getFontFamilly() as string;\n\t\t}\n\t\treturn DynamicSDFFontAtlas.FONT_FAMILY_AUTO;\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.352.0
|
|
3
3
|
Copyright (C) 2019 Toshiba Corporation
|
|
4
4
|
SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
|
|
@@ -5168,6 +5168,7 @@ var EShapeBase = /** @class */ (function (_super) {
|
|
|
5168
5168
|
this._boundsTransformId = worldId;
|
|
5169
5169
|
this.getBounds_(this.transform.worldTransform, bounds);
|
|
5170
5170
|
}
|
|
5171
|
+
result !== null && result !== void 0 ? result : (result = new pixi_js.Rectangle());
|
|
5171
5172
|
result.copyFrom(bounds);
|
|
5172
5173
|
return result;
|
|
5173
5174
|
};
|
|
@@ -5182,6 +5183,7 @@ var EShapeBase = /** @class */ (function (_super) {
|
|
|
5182
5183
|
this._boundsInternalTransformId = currentLocalId;
|
|
5183
5184
|
this.getBounds_(this.transform.internalTransform, boundsInternal);
|
|
5184
5185
|
}
|
|
5186
|
+
result !== null && result !== void 0 ? result : (result = new pixi_js.Rectangle());
|
|
5185
5187
|
result.copyFrom(boundsInternal);
|
|
5186
5188
|
return result;
|
|
5187
5189
|
};
|
|
@@ -5196,6 +5198,7 @@ var EShapeBase = /** @class */ (function (_super) {
|
|
|
5196
5198
|
this._boundsLocalTransformId = currentLocalId;
|
|
5197
5199
|
this.getBounds_(this.transform.localTransform, boundsLocal);
|
|
5198
5200
|
}
|
|
5201
|
+
result !== null && result !== void 0 ? result : (result = new pixi_js.Rectangle());
|
|
5199
5202
|
result.copyFrom(boundsLocal);
|
|
5200
5203
|
return result;
|
|
5201
5204
|
};
|
|
@@ -20680,12 +20683,12 @@ var DynamicFontAtlasCharacterOrigin = /** @class */ (function () {
|
|
|
20680
20683
|
* SPDX-License-Identifier: Apache-2.0
|
|
20681
20684
|
*/
|
|
20682
20685
|
var DynamicFontAtlasCharacter = /** @class */ (function () {
|
|
20683
|
-
function DynamicFontAtlasCharacter(character,
|
|
20686
|
+
function DynamicFontAtlasCharacter(type, character, x, y, width, height, advance) {
|
|
20684
20687
|
this.ref = 1;
|
|
20685
20688
|
this.life = 10;
|
|
20686
20689
|
this.character = character;
|
|
20687
|
-
this.x =
|
|
20688
|
-
this.y =
|
|
20690
|
+
this.x = x;
|
|
20691
|
+
this.y = y;
|
|
20689
20692
|
this.width = width;
|
|
20690
20693
|
this.height = height;
|
|
20691
20694
|
this.advance = advance;
|
|
@@ -21126,7 +21129,7 @@ var DynamicSDFFontAtlas = /** @class */ (function () {
|
|
|
21126
21129
|
data.ref += 1;
|
|
21127
21130
|
}
|
|
21128
21131
|
else {
|
|
21129
|
-
characters[id] = new DynamicFontAtlasCharacter(character, 0, 1, 1,
|
|
21132
|
+
characters[id] = new DynamicFontAtlasCharacter(type, character, 0, 0, 1, 1, 0);
|
|
21130
21133
|
this._length += 1;
|
|
21131
21134
|
this._isDirty = true;
|
|
21132
21135
|
}
|
|
@@ -29347,6 +29350,9 @@ var DDynamicText = /** @class */ (function (_super) {
|
|
|
29347
29350
|
_this._isGeometryDirty = true;
|
|
29348
29351
|
_this._atlas = null;
|
|
29349
29352
|
_this._atlasRevisionUpdated = 0;
|
|
29353
|
+
_this._onAtlasTextureUpdateBound = function () {
|
|
29354
|
+
DApplications.update(_this);
|
|
29355
|
+
};
|
|
29350
29356
|
_this._width = 0;
|
|
29351
29357
|
_this._height = 0;
|
|
29352
29358
|
_this._modifier = {
|
|
@@ -29465,6 +29471,7 @@ var DDynamicText = /** @class */ (function (_super) {
|
|
|
29465
29471
|
this._atlasRevisionUpdated = atlas.getRevisionUpdate();
|
|
29466
29472
|
this._atlas = atlas;
|
|
29467
29473
|
this.texture = atlas.texture;
|
|
29474
|
+
this.texture.on("update", this._onAtlasTextureUpdateBound);
|
|
29468
29475
|
this._isGeometryDirty = true;
|
|
29469
29476
|
}
|
|
29470
29477
|
}
|
|
@@ -66120,7 +66127,8 @@ var DynamicFontAtlas = /** @class */ (function () {
|
|
|
66120
66127
|
var padding = this._padding;
|
|
66121
66128
|
var width = Math.ceil(padding + advance + padding);
|
|
66122
66129
|
var height = this.font.height;
|
|
66123
|
-
characters[id] = new DynamicFontAtlasCharacter(
|
|
66130
|
+
characters[id] = new DynamicFontAtlasCharacter(type, character, -width, // Setting X and Y to zeros leads to render the letter at the UV coordinate (0, 0).
|
|
66131
|
+
-height, width, height, advance);
|
|
66124
66132
|
this._length += 1;
|
|
66125
66133
|
this._revision += 1;
|
|
66126
66134
|
}
|
|
@@ -66247,7 +66255,7 @@ var DynamicFontAtlas = /** @class */ (function () {
|
|
|
66247
66255
|
x += character.width;
|
|
66248
66256
|
}
|
|
66249
66257
|
var height = (this._height = y + fontHeight);
|
|
66250
|
-
// Make
|
|
66258
|
+
// Make an input canvas
|
|
66251
66259
|
// Here, we need to reset the context because
|
|
66252
66260
|
// context settings will be lost when we set the width/height.
|
|
66253
66261
|
var baseTexture = this._texture.baseTexture;
|
|
@@ -69024,6 +69032,7 @@ var DMenu = /** @class */ (function (_super) {
|
|
|
69024
69032
|
return this;
|
|
69025
69033
|
};
|
|
69026
69034
|
DMenu.prototype.open = function (owner, closeable, context) {
|
|
69035
|
+
var _a;
|
|
69027
69036
|
if (this.isHidden()) {
|
|
69028
69037
|
var layer = this._overlay.pick(this);
|
|
69029
69038
|
this._owner = owner;
|
|
@@ -69045,7 +69054,7 @@ var DMenu = /** @class */ (function (_super) {
|
|
|
69045
69054
|
renderer.once("prerender", onPrerenderBound);
|
|
69046
69055
|
}
|
|
69047
69056
|
if (this._fit) {
|
|
69048
|
-
var bounds = owner.getBounds();
|
|
69057
|
+
var bounds = owner.getBounds(false, ((_a = DMenu.WORK_BOUNDS) !== null && _a !== void 0 ? _a : (DMenu.WORK_BOUNDS = new pixi_js.Rectangle())));
|
|
69049
69058
|
if (bounds != null) {
|
|
69050
69059
|
this.width = bounds.width;
|
|
69051
69060
|
}
|
|
@@ -69071,9 +69080,10 @@ var DMenu = /** @class */ (function (_super) {
|
|
|
69071
69080
|
return this;
|
|
69072
69081
|
};
|
|
69073
69082
|
DMenu.prototype.onPrerender = function () {
|
|
69083
|
+
var _a;
|
|
69074
69084
|
var owner = this._owner;
|
|
69075
69085
|
if (owner) {
|
|
69076
|
-
var bounds = owner.getBounds();
|
|
69086
|
+
var bounds = owner.getBounds(false, ((_a = DMenu.WORK_BOUNDS) !== null && _a !== void 0 ? _a : (DMenu.WORK_BOUNDS = new pixi_js.Rectangle())));
|
|
69077
69087
|
if (bounds) {
|
|
69078
69088
|
if (this._fit) {
|
|
69079
69089
|
this.width = bounds.width;
|
package/dist/wcardinal-ui.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Winter Cardinal UI v0.
|
|
2
|
+
Winter Cardinal UI v0.352.0
|
|
3
3
|
Copyright (C) 2019 Toshiba Corporation
|
|
4
4
|
SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
|
|
@@ -5165,6 +5165,7 @@
|
|
|
5165
5165
|
this._boundsTransformId = worldId;
|
|
5166
5166
|
this.getBounds_(this.transform.worldTransform, bounds);
|
|
5167
5167
|
}
|
|
5168
|
+
result !== null && result !== void 0 ? result : (result = new pixi_js.Rectangle());
|
|
5168
5169
|
result.copyFrom(bounds);
|
|
5169
5170
|
return result;
|
|
5170
5171
|
};
|
|
@@ -5179,6 +5180,7 @@
|
|
|
5179
5180
|
this._boundsInternalTransformId = currentLocalId;
|
|
5180
5181
|
this.getBounds_(this.transform.internalTransform, boundsInternal);
|
|
5181
5182
|
}
|
|
5183
|
+
result !== null && result !== void 0 ? result : (result = new pixi_js.Rectangle());
|
|
5182
5184
|
result.copyFrom(boundsInternal);
|
|
5183
5185
|
return result;
|
|
5184
5186
|
};
|
|
@@ -5193,6 +5195,7 @@
|
|
|
5193
5195
|
this._boundsLocalTransformId = currentLocalId;
|
|
5194
5196
|
this.getBounds_(this.transform.localTransform, boundsLocal);
|
|
5195
5197
|
}
|
|
5198
|
+
result !== null && result !== void 0 ? result : (result = new pixi_js.Rectangle());
|
|
5196
5199
|
result.copyFrom(boundsLocal);
|
|
5197
5200
|
return result;
|
|
5198
5201
|
};
|
|
@@ -20677,12 +20680,12 @@
|
|
|
20677
20680
|
* SPDX-License-Identifier: Apache-2.0
|
|
20678
20681
|
*/
|
|
20679
20682
|
var DynamicFontAtlasCharacter = /** @class */ (function () {
|
|
20680
|
-
function DynamicFontAtlasCharacter(character,
|
|
20683
|
+
function DynamicFontAtlasCharacter(type, character, x, y, width, height, advance) {
|
|
20681
20684
|
this.ref = 1;
|
|
20682
20685
|
this.life = 10;
|
|
20683
20686
|
this.character = character;
|
|
20684
|
-
this.x =
|
|
20685
|
-
this.y =
|
|
20687
|
+
this.x = x;
|
|
20688
|
+
this.y = y;
|
|
20686
20689
|
this.width = width;
|
|
20687
20690
|
this.height = height;
|
|
20688
20691
|
this.advance = advance;
|
|
@@ -21123,7 +21126,7 @@
|
|
|
21123
21126
|
data.ref += 1;
|
|
21124
21127
|
}
|
|
21125
21128
|
else {
|
|
21126
|
-
characters[id] = new DynamicFontAtlasCharacter(character, 0, 1, 1,
|
|
21129
|
+
characters[id] = new DynamicFontAtlasCharacter(type, character, 0, 0, 1, 1, 0);
|
|
21127
21130
|
this._length += 1;
|
|
21128
21131
|
this._isDirty = true;
|
|
21129
21132
|
}
|
|
@@ -29344,6 +29347,9 @@
|
|
|
29344
29347
|
_this._isGeometryDirty = true;
|
|
29345
29348
|
_this._atlas = null;
|
|
29346
29349
|
_this._atlasRevisionUpdated = 0;
|
|
29350
|
+
_this._onAtlasTextureUpdateBound = function () {
|
|
29351
|
+
DApplications.update(_this);
|
|
29352
|
+
};
|
|
29347
29353
|
_this._width = 0;
|
|
29348
29354
|
_this._height = 0;
|
|
29349
29355
|
_this._modifier = {
|
|
@@ -29462,6 +29468,7 @@
|
|
|
29462
29468
|
this._atlasRevisionUpdated = atlas.getRevisionUpdate();
|
|
29463
29469
|
this._atlas = atlas;
|
|
29464
29470
|
this.texture = atlas.texture;
|
|
29471
|
+
this.texture.on("update", this._onAtlasTextureUpdateBound);
|
|
29465
29472
|
this._isGeometryDirty = true;
|
|
29466
29473
|
}
|
|
29467
29474
|
}
|
|
@@ -46879,7 +46886,8 @@
|
|
|
46879
46886
|
var padding = this._padding;
|
|
46880
46887
|
var width = Math.ceil(padding + advance + padding);
|
|
46881
46888
|
var height = this.font.height;
|
|
46882
|
-
characters[id] = new DynamicFontAtlasCharacter(
|
|
46889
|
+
characters[id] = new DynamicFontAtlasCharacter(type, character, -width, // Setting X and Y to zeros leads to render the letter at the UV coordinate (0, 0).
|
|
46890
|
+
-height, width, height, advance);
|
|
46883
46891
|
this._length += 1;
|
|
46884
46892
|
this._revision += 1;
|
|
46885
46893
|
}
|
|
@@ -47006,7 +47014,7 @@
|
|
|
47006
47014
|
x += character.width;
|
|
47007
47015
|
}
|
|
47008
47016
|
var height = (this._height = y + fontHeight);
|
|
47009
|
-
// Make
|
|
47017
|
+
// Make an input canvas
|
|
47010
47018
|
// Here, we need to reset the context because
|
|
47011
47019
|
// context settings will be lost when we set the width/height.
|
|
47012
47020
|
var baseTexture = this._texture.baseTexture;
|
|
@@ -50378,6 +50386,7 @@
|
|
|
50378
50386
|
return this;
|
|
50379
50387
|
};
|
|
50380
50388
|
DMenu.prototype.open = function (owner, closeable, context) {
|
|
50389
|
+
var _a;
|
|
50381
50390
|
if (this.isHidden()) {
|
|
50382
50391
|
var layer = this._overlay.pick(this);
|
|
50383
50392
|
this._owner = owner;
|
|
@@ -50399,7 +50408,7 @@
|
|
|
50399
50408
|
renderer.once("prerender", onPrerenderBound);
|
|
50400
50409
|
}
|
|
50401
50410
|
if (this._fit) {
|
|
50402
|
-
var bounds = owner.getBounds();
|
|
50411
|
+
var bounds = owner.getBounds(false, ((_a = DMenu.WORK_BOUNDS) !== null && _a !== void 0 ? _a : (DMenu.WORK_BOUNDS = new pixi_js.Rectangle())));
|
|
50403
50412
|
if (bounds != null) {
|
|
50404
50413
|
this.width = bounds.width;
|
|
50405
50414
|
}
|
|
@@ -50425,9 +50434,10 @@
|
|
|
50425
50434
|
return this;
|
|
50426
50435
|
};
|
|
50427
50436
|
DMenu.prototype.onPrerender = function () {
|
|
50437
|
+
var _a;
|
|
50428
50438
|
var owner = this._owner;
|
|
50429
50439
|
if (owner) {
|
|
50430
|
-
var bounds = owner.getBounds();
|
|
50440
|
+
var bounds = owner.getBounds(false, ((_a = DMenu.WORK_BOUNDS) !== null && _a !== void 0 ? _a : (DMenu.WORK_BOUNDS = new pixi_js.Rectangle())));
|
|
50431
50441
|
if (bounds) {
|
|
50432
50442
|
if (this._fit) {
|
|
50433
50443
|
this.width = bounds.width;
|