@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.
Files changed (44) hide show
  1. package/dist/types/wcardinal/ui/d-dialog.d.ts +1 -1
  2. package/dist/types/wcardinal/ui/d-dynamic-text.d.ts +1 -0
  3. package/dist/types/wcardinal/ui/d-menu-closeable.d.ts +4 -0
  4. package/dist/types/wcardinal/ui/d-menu-context.d.ts +9 -13
  5. package/dist/types/wcardinal/ui/d-menu-item.d.ts +3 -2
  6. package/dist/types/wcardinal/ui/d-menu-opener.d.ts +4 -0
  7. package/dist/types/wcardinal/ui/d-menu-sided.d.ts +3 -2
  8. package/dist/types/wcardinal/ui/d-menu.d.ts +8 -6
  9. package/dist/types/wcardinal/ui/index.d.ts +2 -0
  10. package/dist/types/wcardinal/ui/shape/e-shape.d.ts +3 -3
  11. package/dist/types/wcardinal/ui/shape/variant/e-shape-base.d.ts +3 -3
  12. package/dist/types/wcardinal/ui/util/dynamic-font-atlas-character.d.ts +1 -1
  13. package/dist/wcardinal/ui/d-dialog.js.map +1 -1
  14. package/dist/wcardinal/ui/d-dynamic-text.js +4 -0
  15. package/dist/wcardinal/ui/d-dynamic-text.js.map +1 -1
  16. package/dist/wcardinal/ui/d-menu-closeable.js +2 -0
  17. package/dist/wcardinal/ui/d-menu-closeable.js.map +1 -0
  18. package/dist/wcardinal/ui/d-menu-context.js.map +1 -1
  19. package/dist/wcardinal/ui/d-menu-item.js.map +1 -1
  20. package/dist/wcardinal/ui/d-menu-opener.js +2 -0
  21. package/dist/wcardinal/ui/d-menu-opener.js.map +1 -0
  22. package/dist/wcardinal/ui/d-menu-sided.js.map +1 -1
  23. package/dist/wcardinal/ui/d-menu.js +5 -2
  24. package/dist/wcardinal/ui/d-menu.js.map +1 -1
  25. package/dist/wcardinal/ui/index.js +2 -0
  26. package/dist/wcardinal/ui/index.js.map +1 -1
  27. package/dist/wcardinal/ui/shape/e-shape.js.map +1 -1
  28. package/dist/wcardinal/ui/shape/variant/e-shape-base.js +3 -0
  29. package/dist/wcardinal/ui/shape/variant/e-shape-base.js.map +1 -1
  30. package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js +3 -3
  31. package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js.map +1 -1
  32. package/dist/wcardinal/ui/util/dynamic-font-atlas.js +3 -2
  33. package/dist/wcardinal/ui/util/dynamic-font-atlas.js.map +1 -1
  34. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js +1 -1
  35. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js.map +1 -1
  36. package/dist/wcardinal-ui-theme-dark.js +1 -1
  37. package/dist/wcardinal-ui-theme-dark.min.js +1 -1
  38. package/dist/wcardinal-ui-theme-white.js +1 -1
  39. package/dist/wcardinal-ui-theme-white.min.js +1 -1
  40. package/dist/wcardinal-ui.cjs.js +19 -9
  41. package/dist/wcardinal-ui.js +19 -9
  42. package/dist/wcardinal-ui.min.js +2 -2
  43. package/dist/wcardinal-ui.min.js.map +1 -1
  44. 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(character, advance, width, height, type);
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 a input canvas
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, type);
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"]}
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.350.0
2
+ Winter Cardinal UI v0.352.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.350.0
2
+ Winter Cardinal UI v0.352.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.350.0
2
+ Winter Cardinal UI v0.352.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.350.0
2
+ Winter Cardinal UI v0.352.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.350.0
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, advance, width, height, type) {
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 = 0;
20688
- this.y = 0;
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, type);
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(character, advance, width, height, type);
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 a input canvas
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;
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.350.0
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, advance, width, height, type) {
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 = 0;
20685
- this.y = 0;
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, type);
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(character, advance, width, height, type);
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 a input canvas
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;