@wcardinal/wcardinal-ui 0.424.0 → 0.426.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 (68) hide show
  1. package/dist/types/wcardinal/ui/d-chart-axis-guide-simple.d.ts +8 -1
  2. package/dist/types/wcardinal/ui/d-dynamic-text-geometry.d.ts +14 -3
  3. package/dist/types/wcardinal/ui/d-pane.d.ts +4 -4
  4. package/dist/types/wcardinal/ui/shape/e-shape-text.d.ts +3 -1
  5. package/dist/types/wcardinal/ui/shape/variant/build-text.d.ts +1 -1
  6. package/dist/types/wcardinal/ui/shape/variant/e-shape-text-impl.d.ts +6 -1
  7. package/dist/types/wcardinal/ui/util/character.d.ts +8 -0
  8. package/dist/types/wcardinal/ui/util/dynamic-font-atlas-character.d.ts +1 -0
  9. package/dist/types/wcardinal/ui/util/dynamic-font-atlas-characters.d.ts +1 -1
  10. package/dist/types/wcardinal/ui/util/dynamic-font-atlas.d.ts +5 -7
  11. package/dist/types/wcardinal/ui/util/dynamic-sdf-font-atlas.d.ts +2 -5
  12. package/dist/types/wcardinal/ui/util/dynamic-sdf-font-atlases.d.ts +2 -2
  13. package/dist/types/wcardinal/ui/util/index.d.ts +1 -0
  14. package/dist/types/wcardinal/ui/util/util-character-iterator.d.ts +0 -8
  15. package/dist/wcardinal/ui/d-chart-axis-guide-simple.js +54 -26
  16. package/dist/wcardinal/ui/d-chart-axis-guide-simple.js.map +1 -1
  17. package/dist/wcardinal/ui/d-dynamic-text-geometry.js +56 -49
  18. package/dist/wcardinal/ui/d-dynamic-text-geometry.js.map +1 -1
  19. package/dist/wcardinal/ui/d-dynamic-text-measure.js +11 -11
  20. package/dist/wcardinal/ui/d-dynamic-text-measure.js.map +1 -1
  21. package/dist/wcardinal/ui/d-pane.js +9 -21
  22. package/dist/wcardinal/ui/d-pane.js.map +1 -1
  23. package/dist/wcardinal/ui/shape/e-shape-renderer.js +3 -3
  24. package/dist/wcardinal/ui/shape/e-shape-renderer.js.map +1 -1
  25. package/dist/wcardinal/ui/shape/e-shape-text.js.map +1 -1
  26. package/dist/wcardinal/ui/shape/variant/build-text.js +13 -14
  27. package/dist/wcardinal/ui/shape/variant/build-text.js.map +1 -1
  28. package/dist/wcardinal/ui/shape/variant/builder-text.js +1 -1
  29. package/dist/wcardinal/ui/shape/variant/builder-text.js.map +1 -1
  30. package/dist/wcardinal/ui/shape/variant/e-shape-text-impl.js +88 -13
  31. package/dist/wcardinal/ui/shape/variant/e-shape-text-impl.js.map +1 -1
  32. package/dist/wcardinal/ui/util/character.js +13 -0
  33. package/dist/wcardinal/ui/util/character.js.map +1 -0
  34. package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js +2 -1
  35. package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js.map +1 -1
  36. package/dist/wcardinal/ui/util/dynamic-font-atlas-characters.js.map +1 -1
  37. package/dist/wcardinal/ui/util/dynamic-font-atlas.js +124 -108
  38. package/dist/wcardinal/ui/util/dynamic-font-atlas.js.map +1 -1
  39. package/dist/wcardinal/ui/util/dynamic-font-atlases.js +2 -1
  40. package/dist/wcardinal/ui/util/dynamic-font-atlases.js.map +1 -1
  41. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js +83 -114
  42. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js.map +1 -1
  43. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlases.js +18 -26
  44. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlases.js.map +1 -1
  45. package/dist/wcardinal/ui/util/index.js +1 -0
  46. package/dist/wcardinal/ui/util/index.js.map +1 -1
  47. package/dist/wcardinal/ui/util/util-character-iterator.js +0 -17
  48. package/dist/wcardinal/ui/util/util-character-iterator.js.map +1 -1
  49. package/dist/wcardinal-ui-theme-dark-en-us.js +1 -1
  50. package/dist/wcardinal-ui-theme-dark-en-us.min.js +1 -1
  51. package/dist/wcardinal-ui-theme-dark-ja-jp.js +1 -1
  52. package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +1 -1
  53. package/dist/wcardinal-ui-theme-dark.js +1 -1
  54. package/dist/wcardinal-ui-theme-dark.min.js +1 -1
  55. package/dist/wcardinal-ui-theme-white-en-us.js +1 -1
  56. package/dist/wcardinal-ui-theme-white-en-us.min.js +1 -1
  57. package/dist/wcardinal-ui-theme-white-ja-jp.js +1 -1
  58. package/dist/wcardinal-ui-theme-white-ja-jp.min.js +1 -1
  59. package/dist/wcardinal-ui-theme-white.js +1 -1
  60. package/dist/wcardinal-ui-theme-white.min.js +1 -1
  61. package/dist/wcardinal-ui.cjs.js +545 -478
  62. package/dist/wcardinal-ui.js +545 -478
  63. package/dist/wcardinal-ui.min.js +2 -2
  64. package/dist/wcardinal-ui.min.js.map +1 -1
  65. package/package.json +1 -1
  66. package/dist/types/wcardinal/ui/util/ascii.d.ts +0 -1
  67. package/dist/wcardinal/ui/util/ascii.js +0 -6
  68. package/dist/wcardinal/ui/util/ascii.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"d-dynamic-text-geometry.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-geometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MeshGeometry } from \"pixi.js\";\nimport { DDynamicTextMeasure } from \"./d-dynamic-text-measure\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DynamicFontAtlas } from \"./util/dynamic-font-atlas\";\nimport { DynamicFontAtlasCharacter } from \"./util/dynamic-font-atlas-character\";\n\nexport interface DDynamicTextGeometryModifier {\n\tclipping: boolean;\n\tfitting: boolean;\n\twordWrap: DDynamicTextStyleWordWrap;\n\twidth: number;\n\theight: number;\n\tlineHeight: number;\n}\n\nexport class DDynamicTextGeometry extends MeshGeometry {\n\twidth: number;\n\theight: number;\n\tscale: number;\n\tscaled: boolean;\n\tclipped: boolean;\n\n\tconstructor() {\n\t\tsuper(new Float32Array(64), new Float32Array(64), new Uint16Array(48));\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.scale = 1;\n\t\tthis.scaled = false;\n\t\tthis.clipped = false;\n\t}\n\n\tupdate(\n\t\ttext: string,\n\t\tatlas: DynamicFontAtlas | null,\n\t\tmodifier: DDynamicTextGeometryModifier\n\t): void {\n\t\tconst vertexBuffer = this.getBuffer(\"aVertexPosition\");\n\t\tconst uvBuffer = this.getBuffer(\"aTextureCoord\");\n\t\tconst indexBuffer = this.getIndex();\n\n\t\tconst result = DDynamicTextMeasure.measure(text, atlas, modifier);\n\t\tconst requiredTextSize = Math.ceil(result.count / 8) << 3;\n\t\tconst requiredVertexSize = requiredTextSize << 3;\n\t\tif ((vertexBuffer.data as Float32Array).length < requiredVertexSize) {\n\t\t\tvertexBuffer.data = new Float32Array(requiredVertexSize);\n\t\t\tuvBuffer.data = new Float32Array(requiredVertexSize);\n\t\t}\n\t\tconst requiredIndexSize = requiredTextSize * 6;\n\t\tif ((indexBuffer.data as Uint16Array).length < requiredIndexSize) {\n\t\t\tindexBuffer.data = new Uint16Array(requiredIndexSize);\n\t\t}\n\n\t\tconst vertices = vertexBuffer.data as Float32Array;\n\t\tconst uvs = uvBuffer.data as Float32Array;\n\t\tconst indices = indexBuffer.data as Uint16Array;\n\n\t\tif (atlas != null) {\n\t\t\tconst count = result.count;\n\t\t\tconst characters = result.characters;\n\t\t\tconst scale = result.scale;\n\t\t\tfor (let i = 0; i < count; ++i) {\n\t\t\t\tconst character = characters[i];\n\t\t\t\tconst cx = character.x;\n\t\t\t\tconst cy = character.y;\n\t\t\t\tconst cc = character.character;\n\t\t\t\tconst w = atlas.width;\n\t\t\t\tconst h = atlas.height;\n\t\t\t\tthis.writeCharacter(vertices, uvs, indices, i, cx, cy, scale, cc, w, h);\n\t\t\t}\n\t\t\tfor (let i = count, imax = vertices.length >> 3; i < imax; ++i) {\n\t\t\t\tthis.writeCharacterEmpty(vertices, uvs, indices, i);\n\t\t\t}\n\t\t\tthis.width = result.width * scale;\n\t\t\tthis.height = result.height * scale;\n\t\t\tthis.scale = scale;\n\t\t\tthis.scaled = result.scaled;\n\t\t\tthis.clipped = result.clipped;\n\t\t} else {\n\t\t\tfor (let i = 0, imax = vertices.length >> 3; i < imax; ++i) {\n\t\t\t\tthis.writeCharacterEmpty(vertices, uvs, indices, i);\n\t\t\t}\n\t\t\tthis.width = 0;\n\t\t\tthis.height = 0;\n\t\t\tthis.scale = 1;\n\t\t\tthis.scaled = false;\n\t\t\tthis.clipped = false;\n\t\t}\n\n\t\tvertexBuffer.update();\n\t\tuvBuffer.update();\n\t\tindexBuffer.update();\n\t}\n\n\tprotected writeCharacter(\n\t\tvertices: Float32Array,\n\t\tuvs: Float32Array,\n\t\tindices: Uint16Array,\n\t\tindex: number,\n\t\tx: number,\n\t\ty: number,\n\t\tscale: number,\n\t\tcharacter: DynamicFontAtlasCharacter,\n\t\twidth: number,\n\t\theight: number\n\t): void {\n\t\tconst cx = character.x;\n\t\tconst cy = character.y;\n\t\tconst cw = character.width;\n\t\tconst ch = character.height;\n\t\tconst cox = character.origin.x;\n\n\t\tconst x0 = (x + (cx - cox)) * scale;\n\t\tconst y0 = y * scale;\n\t\tconst x1 = x0 + cw * scale;\n\t\tconst y1 = y0 + ch * scale;\n\n\t\tconst iv = index << 3;\n\t\tvertices[iv + 0] = x0;\n\t\tvertices[iv + 1] = y0;\n\t\tvertices[iv + 2] = x1;\n\t\tvertices[iv + 3] = y0;\n\t\tvertices[iv + 4] = x1;\n\t\tvertices[iv + 5] = y1;\n\t\tvertices[iv + 6] = x0;\n\t\tvertices[iv + 7] = y1;\n\n\t\tconst u0 = cx / width;\n\t\tconst v0 = cy / height;\n\t\tconst u1 = (cx + cw) / width;\n\t\tconst v1 = (cy + ch) / height;\n\t\tuvs[iv + 0] = u0;\n\t\tuvs[iv + 1] = v0;\n\t\tuvs[iv + 2] = u1;\n\t\tuvs[iv + 3] = v0;\n\t\tuvs[iv + 4] = u1;\n\t\tuvs[iv + 5] = v1;\n\t\tuvs[iv + 6] = u0;\n\t\tuvs[iv + 7] = v1;\n\n\t\tconst ii = index * 6;\n\t\tconst vo = index << 2;\n\t\tindices[ii + 0] = vo + 0;\n\t\tindices[ii + 1] = vo + 1;\n\t\tindices[ii + 2] = vo + 3;\n\t\tindices[ii + 3] = vo + 1;\n\t\tindices[ii + 4] = vo + 2;\n\t\tindices[ii + 5] = vo + 3;\n\t}\n\n\tprotected writeCharacterEmpty(\n\t\tvertices: Float32Array,\n\t\tuvs: Float32Array,\n\t\tindices: Uint16Array,\n\t\tindex: number\n\t): void {\n\t\tconst iv = index << 3;\n\t\tvertices[iv + 0] = 0;\n\t\tvertices[iv + 1] = 0;\n\t\tvertices[iv + 2] = 0;\n\t\tvertices[iv + 3] = 0;\n\t\tvertices[iv + 4] = 0;\n\t\tvertices[iv + 5] = 0;\n\t\tvertices[iv + 6] = 0;\n\t\tvertices[iv + 7] = 0;\n\n\t\tuvs[iv + 0] = 0;\n\t\tuvs[iv + 1] = 0;\n\t\tuvs[iv + 2] = 0;\n\t\tuvs[iv + 3] = 0;\n\t\tuvs[iv + 4] = 0;\n\t\tuvs[iv + 5] = 0;\n\t\tuvs[iv + 6] = 0;\n\t\tuvs[iv + 7] = 0;\n\n\t\tconst ii = index * 6;\n\t\tconst vo = index << 2;\n\t\tindices[ii + 0] = vo + 0;\n\t\tindices[ii + 1] = vo + 1;\n\t\tindices[ii + 2] = vo + 3;\n\t\tindices[ii + 3] = vo + 1;\n\t\tindices[ii + 4] = vo + 2;\n\t\tindices[ii + 5] = vo + 3;\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-dynamic-text-geometry.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-geometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Buffer, MeshGeometry } from \"pixi.js\";\nimport { DDynamicTextMeasure } from \"./d-dynamic-text-measure\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DynamicFontAtlas } from \"./util/dynamic-font-atlas\";\nimport { DynamicFontAtlasCharacter } from \"./util/dynamic-font-atlas-character\";\n\nexport interface DDynamicTextGeometryModifier {\n\tclipping: boolean;\n\tfitting: boolean;\n\twordWrap: DDynamicTextStyleWordWrap;\n\twidth: number;\n\theight: number;\n\tlineHeight: number;\n}\n\nexport class DDynamicTextGeometry extends MeshGeometry {\n\tprotected static VERTICES?: Float32Array;\n\tprotected static UVS?: Float32Array;\n\tprotected static INDICES?: Uint16Array;\n\n\twidth: number;\n\theight: number;\n\tscale: number;\n\tscaled: boolean;\n\tclipped: boolean;\n\n\tnchars: number;\n\tvertexBuffer: Buffer;\n\tvertices: Float32Array;\n\tuvBuffer: Buffer;\n\tuvs: Float32Array;\n\tindexBuffer: Buffer;\n\tindices: Uint16Array;\n\n\tconstructor() {\n\t\tsuper(\n\t\t\t(DDynamicTextGeometry.VERTICES ??= new Float32Array(0)),\n\t\t\t(DDynamicTextGeometry.UVS ??= new Float32Array(0)),\n\t\t\t(DDynamicTextGeometry.INDICES ??= new Uint16Array(0))\n\t\t);\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.scale = 1;\n\t\tthis.scaled = false;\n\t\tthis.clipped = false;\n\n\t\tthis.vertexBuffer = this.getBuffer(\"aVertexPosition\");\n\t\tthis.vertices = DDynamicTextGeometry.VERTICES;\n\t\tthis.uvBuffer = this.getBuffer(\"aTextureCoord\");\n\t\tthis.uvs = DDynamicTextGeometry.UVS;\n\t\tthis.indexBuffer = this.getIndex();\n\t\tthis.indices = DDynamicTextGeometry.INDICES;\n\n\t\tthis.nchars = 0;\n\t}\n\n\tupdate(\n\t\ttext: string,\n\t\tatlas: DynamicFontAtlas | null,\n\t\tmodifier: DDynamicTextGeometryModifier\n\t): void {\n\t\tconst result = DDynamicTextMeasure.measure(text, atlas, modifier);\n\t\tconst resultCount = result.count;\n\t\tlet nchars = ((resultCount >> 3) + (resultCount & 0x7 ? 1 : 0)) << 3;\n\t\tif (this.nchars < nchars) {\n\t\t\tthis.nchars = nchars;\n\n\t\t\tconst nvertex = nchars << 3;\n\t\t\tthis.vertices = new Float32Array(nvertex);\n\t\t\tthis.uvs = new Float32Array(nvertex);\n\t\t\tthis.vertexBuffer.data = this.vertices;\n\t\t\tthis.uvBuffer.data = this.uvs;\n\n\t\t\tconst nindex = (nchars << 2) + (nchars << 1);\n\t\t\tthis.indices = new Uint16Array(nindex);\n\t\t\tthis.indexBuffer.data = this.indices;\n\t\t\tthis.initIndices(this.indices);\n\t\t\tthis.indexBuffer.update();\n\t\t} else {\n\t\t\tnchars = this.nchars;\n\t\t}\n\t\tif (nchars <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst vertices = this.vertices;\n\t\tconst uvs = this.uvs;\n\t\tif (atlas != null) {\n\t\t\tconst characters = result.characters;\n\t\t\tconst scale = result.scale;\n\t\t\tconst fw = 1 / atlas.width;\n\t\t\tconst fh = 1 / atlas.height;\n\t\t\tfor (let i = 0; i < resultCount; ++i) {\n\t\t\t\tconst character = characters[i];\n\t\t\t\tconst cx = character.x;\n\t\t\t\tconst cy = character.y;\n\t\t\t\tconst cc = character.character;\n\t\t\t\tthis.fill(vertices, uvs, i, cx, cy, scale, cc, fw, fh);\n\t\t\t}\n\t\t\tfor (let i = resultCount; i < nchars; ++i) {\n\t\t\t\tthis.fillBlank(vertices, uvs, i);\n\t\t\t}\n\t\t\tthis.width = result.width * scale;\n\t\t\tthis.height = result.height * scale;\n\t\t\tthis.scale = scale;\n\t\t\tthis.scaled = result.scaled;\n\t\t\tthis.clipped = result.clipped;\n\t\t} else {\n\t\t\tfor (let i = 0; i < nchars; ++i) {\n\t\t\t\tthis.fillBlank(vertices, uvs, i);\n\t\t\t}\n\t\t\tthis.width = 0;\n\t\t\tthis.height = 0;\n\t\t\tthis.scale = 1;\n\t\t\tthis.scaled = false;\n\t\t\tthis.clipped = false;\n\t\t}\n\t\tthis.vertexBuffer.update();\n\t\tthis.uvBuffer.update();\n\t}\n\n\tprotected fill(\n\t\tvertices: Float32Array,\n\t\tuvs: Float32Array,\n\t\tindex: number,\n\t\tx: number,\n\t\ty: number,\n\t\tscale: number,\n\t\tcharacter: DynamicFontAtlasCharacter,\n\t\tfw: number,\n\t\tfh: number\n\t): void {\n\t\tconst cx = character.x;\n\t\tconst cy = character.y;\n\t\tconst cw = character.width;\n\t\tconst ch = character.height;\n\t\tconst cox = character.origin.x;\n\n\t\tconst x0 = (x + (cx - cox)) * scale;\n\t\tconst y0 = y * scale;\n\t\tconst x1 = x0 + cw * scale;\n\t\tconst y1 = y0 + ch * scale;\n\n\t\tconst iv = index << 3;\n\t\tvertices[iv + 0] = x0;\n\t\tvertices[iv + 1] = y0;\n\t\tvertices[iv + 2] = x1;\n\t\tvertices[iv + 3] = y0;\n\t\tvertices[iv + 4] = x1;\n\t\tvertices[iv + 5] = y1;\n\t\tvertices[iv + 6] = x0;\n\t\tvertices[iv + 7] = y1;\n\n\t\tconst u0 = cx * fw;\n\t\tconst v0 = cy * fh;\n\t\tconst u1 = (cx + cw) * fw;\n\t\tconst v1 = (cy + ch) * fh;\n\n\t\tuvs[iv + 0] = u0;\n\t\tuvs[iv + 1] = v0;\n\t\tuvs[iv + 2] = u1;\n\t\tuvs[iv + 3] = v0;\n\t\tuvs[iv + 4] = u1;\n\t\tuvs[iv + 5] = v1;\n\t\tuvs[iv + 6] = u0;\n\t\tuvs[iv + 7] = v1;\n\t}\n\n\tprotected fillBlank(vertices: Float32Array, uvs: Float32Array, index: number): void {\n\t\tconst iv = index << 3;\n\t\tvertices[iv + 0] = 0;\n\t\tvertices[iv + 1] = 0;\n\t\tvertices[iv + 2] = 0;\n\t\tvertices[iv + 3] = 0;\n\t\tvertices[iv + 4] = 0;\n\t\tvertices[iv + 5] = 0;\n\t\tvertices[iv + 6] = 0;\n\t\tvertices[iv + 7] = 0;\n\n\t\tuvs[iv + 0] = 0;\n\t\tuvs[iv + 1] = 0;\n\t\tuvs[iv + 2] = 0;\n\t\tuvs[iv + 3] = 0;\n\t\tuvs[iv + 4] = 0;\n\t\tuvs[iv + 5] = 0;\n\t\tuvs[iv + 6] = 0;\n\t\tuvs[iv + 7] = 0;\n\t}\n\n\tprotected initIndices(indices: Uint16Array): void {\n\t\tfor (let iv = 0, ivmax = this.nchars << 2, ii = 0; iv < ivmax; iv += 4, ii += 6) {\n\t\t\tindices[ii] = iv;\n\t\t\tindices[ii + 1] = iv + 1;\n\t\t\tindices[ii + 2] = iv + 3;\n\t\t\tindices[ii + 3] = iv + 1;\n\t\t\tindices[ii + 4] = iv + 2;\n\t\t\tindices[ii + 5] = iv + 3;\n\t\t}\n\t}\n}\n"]}
@@ -2,7 +2,7 @@ import { DDynamicTextMeasureResult } from "./d-dynamic-text-measure-result";
2
2
  import { UtilCharacterIterator } from "./util/util-character-iterator";
3
3
  import { DDynamicTextStyleWordWrap } from "./d-dynamic-text-style-word-wrap";
4
4
  import { DynamicFontAtlasCharacterType } from "./util/dynamic-font-atlas-character-type";
5
- var NEW_LINE = "\n";
5
+ import { Character } from "./util/character";
6
6
  var DDynamicTextMeasure = /** @class */ (function () {
7
7
  function DDynamicTextMeasure() {
8
8
  }
@@ -72,7 +72,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
72
72
  while (iterator.hasNext()) {
73
73
  var characterPosition = iterator.position;
74
74
  var character = iterator.next();
75
- if (character === NEW_LINE) {
75
+ if (character === Character.NEW_LINE) {
76
76
  if (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {
77
77
  result.newLine(lineHeight);
78
78
  }
@@ -104,7 +104,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
104
104
  DDynamicTextMeasure.measure1b = function (iterator, clippingWidth, clippingHeight, fontHeight, lineHeight, atlas, result) {
105
105
  while (iterator.hasNext()) {
106
106
  var character = iterator.next();
107
- if (character === NEW_LINE) {
107
+ if (character === Character.NEW_LINE) {
108
108
  if (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {
109
109
  result.newLine(lineHeight);
110
110
  }
@@ -135,7 +135,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
135
135
  DDynamicTextMeasure.measure1 = function (iterator, clippingWidth, clippingHeight, fontHeight, lineHeight, atlas, result) {
136
136
  while (iterator.hasNext()) {
137
137
  var character = iterator.next();
138
- if (character === NEW_LINE) {
138
+ if (character === Character.NEW_LINE) {
139
139
  if (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {
140
140
  result.newLine(lineHeight);
141
141
  }
@@ -167,7 +167,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
167
167
  while (iterator.hasNext()) {
168
168
  var characterPosition = iterator.position;
169
169
  var character = iterator.next();
170
- if (character === NEW_LINE) {
170
+ if (character === Character.NEW_LINE) {
171
171
  result.newLine(lineHeight);
172
172
  }
173
173
  else {
@@ -189,7 +189,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
189
189
  DDynamicTextMeasure.measure2b = function (iterator, clippingWidth, lineHeight, atlas, result) {
190
190
  while (iterator.hasNext()) {
191
191
  var character = iterator.next();
192
- if (character === NEW_LINE) {
192
+ if (character === Character.NEW_LINE) {
193
193
  result.newLine(lineHeight);
194
194
  }
195
195
  else {
@@ -210,7 +210,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
210
210
  DDynamicTextMeasure.measure2 = function (iterator, clippingWidth, lineHeight, atlas, result) {
211
211
  while (iterator.hasNext()) {
212
212
  var character = iterator.next();
213
- if (character === NEW_LINE) {
213
+ if (character === Character.NEW_LINE) {
214
214
  result.newLine(lineHeight);
215
215
  }
216
216
  else {
@@ -230,7 +230,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
230
230
  DDynamicTextMeasure.measure3 = function (iterator, clippingWidth, clippingHeight, fontHeight, lineHeight, atlas, result) {
231
231
  while (iterator.hasNext()) {
232
232
  var character = iterator.next();
233
- if (character === NEW_LINE) {
233
+ if (character === Character.NEW_LINE) {
234
234
  if (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {
235
235
  result.newLine(lineHeight);
236
236
  }
@@ -254,7 +254,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
254
254
  DDynamicTextMeasure.measure4 = function (iterator, lineHeight, atlas, result) {
255
255
  while (iterator.hasNext()) {
256
256
  var character = iterator.next();
257
- if (character === NEW_LINE) {
257
+ if (character === Character.NEW_LINE) {
258
258
  result.newLine(lineHeight);
259
259
  }
260
260
  else {
@@ -267,7 +267,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
267
267
  };
268
268
  DDynamicTextMeasure.measure5 = function (iterator, clippingWidth, lineHeight, atlas, result, close) {
269
269
  result.clipped = true;
270
- var dots = atlas.get("...");
270
+ var dots = atlas.get(Character.DOTS);
271
271
  if (dots != null) {
272
272
  while (!result.isPushable(clippingWidth, dots)) {
273
273
  if (!result.pop()) {
@@ -283,7 +283,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
283
283
  }
284
284
  else {
285
285
  while (iterator.hasNext()) {
286
- if (iterator.next() === NEW_LINE) {
286
+ if (iterator.next() === Character.NEW_LINE) {
287
287
  result.newLine(lineHeight);
288
288
  break;
289
289
  }
@@ -1 +1 @@
1
- {"version":3,"file":"d-dynamic-text-measure.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAWzF,IAAM,QAAQ,GAAG,IAAI,CAAC;AAEtB;IAAA;IA0ZA,CAAC;IAvZO,2BAAO,GAAd,UACC,IAAY,EACZ,KAA8B,EAC9B,QAAqC;QAErC,IAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,IAAI,IAAI,yBAAyB,EAAE,CAAC;QAC7E,mBAAmB,CAAC,MAAM,GAAG,MAAM,CAAC;QACpC,IAAI,KAAK,IAAI,IAAI,EAAE;YAClB,IAAM,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B,IAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;YAC/B,IAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;YAC5B,IAAM,EAAE,GAAG,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC;YACpC,IAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC1B,IAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC3B,IAAM,EAAE,GAAG,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACrB,QAAQ,EAAE,EAAE;gBACX,KAAK,yBAAyB,CAAC,SAAS;oBACvC,IAAI,EAAE,EAAE;wBACP,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;qBAClD;yBAAM;wBACN,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;qBAC1C;oBACD,MAAM;gBACP,KAAK,yBAAyB,CAAC,MAAM;oBACpC,IAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBACrC,IAAI,EAAE,EAAE;wBACP,IAAI,EAAE,EAAE;4BACP,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;yBACvD;6BAAM;4BACN,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;yBAC/C;qBACD;yBAAM;wBACN,IAAI,EAAE,EAAE;4BACP,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;yBACnD;6BAAM;4BACN,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;yBAC3C;qBACD;oBACD,MAAM;gBACP;oBACC,IAAI,EAAE,EAAE;wBACP,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;qBAClD;yBAAM;wBACN,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;qBACtC;oBACD,MAAM;aACP;YACD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACnB,IAAI,EAAE,EAAE;gBACP,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;aACnB;SACD;aAAM;YACN,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACjB;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEc,6BAAS,GAAxB,UACC,WAA2C,EAC3C,QAA+B,EAC/B,aAAqB,EACrB,cAAsB,EACtB,UAAkB,EAClB,UAAkB,EAClB,KAAuB,EACvB,MAAiC;QAEjC,IAAI,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC1B,IAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC5C,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAC3B,IAAI,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;oBACvE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;iBAC3B;qBAAM;oBACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;iBACxE;aACD;iBAAM;gBACN,IAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,IAAI;oBAAE,SAAS;gBAExB,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;gBACpE,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;gBAEpE,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;iBAC5B;qBAAM;oBACN,IAAI,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;wBACvE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;wBAC5B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;qBAC5B;yBAAM;wBACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;qBACxE;iBACD;aACD;SACD;IACF,CAAC;IAEc,6BAAS,GAAxB,UACC,QAA+B,EAC/B,aAAqB,EACrB,cAAsB,EACtB,UAAkB,EAClB,UAAkB,EAClB,KAAuB,EACvB,MAAiC;QAEjC,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC1B,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAC3B,IAAI,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;oBACvE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;iBAC3B;qBAAM;oBACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;iBACxE;aACD;iBAAM;gBACN,IAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,IAAI;oBAAE,SAAS;gBAExB,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACjD,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;iBAC5B;qBAAM;oBACN,IAAI,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;wBACvE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;wBAC5B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;qBAC5B;yBAAM;wBACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;qBACxE;iBACD;aACD;SACD;IACF,CAAC;IAEc,4BAAQ,GAAvB,UACC,QAA+B,EAC/B,aAAqB,EACrB,cAAsB,EACtB,UAAkB,EAClB,UAAkB,EAClB,KAAuB,EACvB,MAAiC;QAEjC,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC1B,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAC3B,IAAI,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;oBACvE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;iBAC3B;qBAAM;oBACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;iBACxE;aACD;iBAAM;gBACN,IAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,IAAI;oBAAE,SAAS;gBAExB,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;iBACrB;qBAAM;oBACN,IAAI,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;wBACvE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;wBAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;qBACrB;yBAAM;wBACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;qBACxE;iBACD;aACD;SACD;IACF,CAAC;IAEc,6BAAS,GAAxB,UACC,WAA2C,EAC3C,QAA+B,EAC/B,aAAqB,EACrB,UAAkB,EAClB,KAAuB,EACvB,MAAiC;QAEjC,IAAI,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC1B,IAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC5C,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAC3B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC3B;iBAAM;gBACN,IAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,IAAI;oBAAE,SAAS;gBAExB,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;gBACpE,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;gBAEpE,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;iBAC5B;qBAAM;oBACN,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;oBAC5B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;iBAC5B;aACD;SACD;IACF,CAAC;IAEc,6BAAS,GAAxB,UACC,QAA+B,EAC/B,aAAqB,EACrB,UAAkB,EAClB,KAAuB,EACvB,MAAiC;QAEjC,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC1B,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAC3B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC3B;iBAAM;gBACN,IAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,IAAI;oBAAE,SAAS;gBAExB,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAEjD,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;iBAC5B;qBAAM;oBACN,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;oBAC5B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;iBAC5B;aACD;SACD;IACF,CAAC;IAEc,4BAAQ,GAAvB,UACC,QAA+B,EAC/B,aAAqB,EACrB,UAAkB,EAClB,KAAuB,EACvB,MAAiC;QAEjC,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC1B,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAC3B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC3B;iBAAM;gBACN,IAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,IAAI;oBAAE,SAAS;gBAExB,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;iBACtB;qBAAM;oBACN,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;iBACtB;aACD;SACD;IACF,CAAC;IAEc,4BAAQ,GAAvB,UACC,QAA+B,EAC/B,aAAqB,EACrB,cAAsB,EACtB,UAAkB,EAClB,UAAkB,EAClB,KAAuB,EACvB,MAAiC;QAEjC,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC1B,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAC3B,IAAI,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;oBACvE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;iBAC3B;qBAAM;oBACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;iBACxE;aACD;iBAAM;gBACN,IAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,IAAI;oBAAE,SAAS;gBAExB,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;iBACtB;qBAAM;oBACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;iBACzE;aACD;SACD;IACF,CAAC;IAEc,4BAAQ,GAAvB,UACC,QAA+B,EAC/B,UAAkB,EAClB,KAAuB,EACvB,MAAiC;QAEjC,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC1B,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAC3B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC3B;iBAAM;gBACN,IAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,IAAI;oBAAE,SAAS;gBACxB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aACtB;SACD;IACF,CAAC;IAEM,4BAAQ,GAAf,UACC,QAA+B,EAC/B,aAAqB,EACrB,UAAkB,EAClB,KAAuB,EACvB,MAAiC,EACjC,KAAc;QAEd,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,IAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,IAAI,IAAI,IAAI,EAAE;YACjB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE;gBAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE;oBAClB,MAAM;iBACN;aACD;YACD,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE;gBAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aACzB;SACD;QACD,IAAI,KAAK,EAAE;YACV,QAAQ,CAAC,KAAK,EAAE,CAAC;SACjB;aAAM;YACN,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE;gBAC1B,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE;oBACjC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBAC3B,MAAM;iBACN;aACD;SACD;IACF,CAAC;IAEc,gCAAY,GAA3B,UACC,MAAiC,EACjC,SAAoC;QAEpC,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAC;SACb;QACD,IAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACjD,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACrC,IAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC5B,IAAI,QAAQ,GAAG,6BAA6B,CAAC,KAAK,EAAE;YACnD,IAAI,IAAI,GAAG,6BAA6B,CAAC,KAAK,EAAE;gBAC/C,OAAO,KAAK,CAAC;aACb;iBAAM;gBACN,IAAI,QAAQ,GAAG,6BAA6B,CAAC,YAAY,EAAE;oBAC1D,OAAO,KAAK,CAAC;iBACb;qBAAM;oBACN,OAAO,IAAI,CAAC;iBACZ;aACD;SACD;aAAM;YACN,IAAI,IAAI,GAAG,6BAA6B,CAAC,KAAK,EAAE;gBAC/C,OAAO,KAAK,CAAC;aACb;iBAAM;gBACN,IAAI,QAAQ,GAAG,6BAA6B,CAAC,YAAY,EAAE;oBAC1D,IAAI,IAAI,GAAG,6BAA6B,CAAC,YAAY,EAAE;wBACtD,OAAO,KAAK,CAAC;qBACb;yBAAM;wBACN,OAAO,IAAI,CAAC;qBACZ;iBACD;qBAAM;oBACN,OAAO,IAAI,CAAC;iBACZ;aACD;SACD;IACF,CAAC;IAEc,2BAAO,GAAtB,UACC,QAAgB,EAChB,SAAoB,EACpB,WAA2C;QAE3C,IAAI,SAAS,CAAC,IAAI,EAAE;YACnB,OAAO,SAAS,CAAC;SACjB;QACD,IAAI,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;YACpC,OAAO,SAAS,CAAC;SACjB;QACD,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IAClB,CAAC;IAEc,gCAAY,GAA3B,UAA4B,QAAgB,EAAE,SAAoB;QACjE,IAAI,SAAS,CAAC,IAAI,EAAE;YACnB,OAAO,KAAK,CAAC;SACb;QACD,IAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC;IAC3D,CAAC;IAEc,kCAAc,GAA7B,UAA8B,MAAc;QAC3C,IAAI,gBAAgB,IAAI,MAAM,EAAE;YAC/B,IAAM,YAAY,GAAI,MAAc,CAAC,gBAAgB,CAEpD,CAAC;YACF,OAAO,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE;gBACvC,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,QAAQ;aACnB,CAAC,CAAC;SACH;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAxZgB,0BAAM,GAAqC,IAAI,CAAC;IAyZlE,0BAAC;CAAA,AA1ZD,IA0ZC;SA1ZY,mBAAmB","sourcesContent":["import { DDynamicTextMeasureResult } from \"./d-dynamic-text-measure-result\";\nimport { DynamicFontAtlas } from \"./util/dynamic-font-atlas\";\nimport { UtilCharacterIterator } from \"./util/util-character-iterator\";\nimport type { LineBreaker } from \"css-line-break\";\nimport { LineBreak } from \"css-line-break/dist/types/LineBreak\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DynamicFontAtlasCharacter } from \"./util/dynamic-font-atlas-character\";\nimport { DynamicFontAtlasCharacterType } from \"./util/dynamic-font-atlas-character-type\";\n\nexport interface DDynamicTextMeasureModifier {\n\tclipping: boolean;\n\tfitting: boolean;\n\twordWrap: DDynamicTextStyleWordWrap;\n\twidth: number;\n\theight: number;\n\tlineHeight: number;\n}\n\nconst NEW_LINE = \"\\n\";\n\nexport class DDynamicTextMeasure {\n\tprotected static RESULT: DDynamicTextMeasureResult | null = null;\n\n\tstatic measure(\n\t\ttext: string,\n\t\tatlas: DynamicFontAtlas | null,\n\t\tmodifier: DDynamicTextMeasureModifier\n\t): DDynamicTextMeasureResult {\n\t\tconst result = DDynamicTextMeasure.RESULT || new DDynamicTextMeasureResult();\n\t\tDDynamicTextMeasure.RESULT = result;\n\t\tif (atlas != null) {\n\t\t\tconst itr = UtilCharacterIterator.from(text);\n\t\t\tconst fh = atlas.font.height;\n\t\t\tconst lh = modifier.lineHeight;\n\t\t\tconst cf = modifier.fitting;\n\t\t\tconst cc = !cf && modifier.clipping;\n\t\t\tconst cw = modifier.width;\n\t\t\tconst ch = modifier.height;\n\t\t\tconst cp = !cf && modifier.wordWrap;\n\t\t\tresult.start(lh, fh);\n\t\t\tswitch (cp) {\n\t\t\t\tcase DDynamicTextStyleWordWrap.BREAK_ALL:\n\t\t\t\t\tif (cc) {\n\t\t\t\t\t\tthis.measure1(itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure2(itr, cw, lh, atlas, result);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase DDynamicTextStyleWordWrap.NORMAL:\n\t\t\t\t\tconst lb = this.newLineBreaker(text);\n\t\t\t\t\tif (lb) {\n\t\t\t\t\t\tif (cc) {\n\t\t\t\t\t\t\tthis.measure1a(lb, itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.measure2a(lb, itr, cw, lh, atlas, result);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (cc) {\n\t\t\t\t\t\t\tthis.measure1b(itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.measure2b(itr, cw, lh, atlas, result);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif (cc) {\n\t\t\t\t\t\tthis.measure3(itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure4(itr, lh, atlas, result);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tresult.end(lh, fh);\n\t\t\tif (cf) {\n\t\t\t\tresult.fit(cw, ch);\n\t\t\t}\n\t\t} else {\n\t\t\tresult.start(0, 0);\n\t\t\tresult.end(0, 0);\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate static measure1a(\n\t\tlineBreaker: ReturnType<typeof LineBreaker>,\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\tlet lineBreak = lineBreaker.next();\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst characterPosition = iterator.position;\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tlineBreak = this.advance(characterPosition, lineBreak, lineBreaker);\n\t\t\t\tconst isWrappable = this.isWrappable1(characterPosition, lineBreak);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure1b(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tconst isWrappable = this.isWrappable2(result, a);\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure1(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, true);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\t\tresult.push(a, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2a(\n\t\tlineBreaker: ReturnType<typeof LineBreaker>,\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\tlet lineBreak = lineBreaker.next();\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst characterPosition = iterator.position;\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tlineBreak = this.advance(characterPosition, lineBreak, lineBreaker);\n\t\t\t\tconst isWrappable = this.isWrappable1(characterPosition, lineBreak);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2b(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tconst isWrappable = this.isWrappable2(result, a);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t} else {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure3(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure4(\n\t\titerator: UtilCharacterIterator,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\t\t\t\tresult.push(a, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic measure5(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult,\n\t\tclose: boolean\n\t): void {\n\t\tresult.clipped = true;\n\t\tconst dots = atlas.get(\"...\");\n\t\tif (dots != null) {\n\t\t\twhile (!result.isPushable(clippingWidth, dots)) {\n\t\t\t\tif (!result.pop()) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result.isPushable(clippingWidth, dots)) {\n\t\t\t\tresult.push(dots, false);\n\t\t\t}\n\t\t}\n\t\tif (close) {\n\t\t\titerator.close();\n\t\t} else {\n\t\t\twhile (iterator.hasNext()) {\n\t\t\t\tif (iterator.next() === NEW_LINE) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static isWrappable2(\n\t\tresult: DDynamicTextMeasureResult,\n\t\tcharacter: DynamicFontAtlasCharacter\n\t): boolean {\n\t\tif (result.countPerLine <= 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst last = result.characters[result.count - 1];\n\t\tconst lastType = last.character.type;\n\t\tconst type = character.type;\n\t\tif (lastType & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\tif (type & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tif (lastType & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (type & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tif (lastType & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\tif (type & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static advance(\n\t\tposition: number,\n\t\tlineBreak: LineBreak,\n\t\tlineBreaker: ReturnType<typeof LineBreaker>\n\t): LineBreak {\n\t\tif (lineBreak.done) {\n\t\t\treturn lineBreak;\n\t\t}\n\t\tif (position <= lineBreak.value.end) {\n\t\t\treturn lineBreak;\n\t\t}\n\t\tlineBreak = lineBreaker.next();\n\t\treturn lineBreak;\n\t}\n\n\tprivate static isWrappable1(position: number, lineBreak: LineBreak): boolean {\n\t\tif (lineBreak.done) {\n\t\t\treturn false;\n\t\t}\n\t\tconst value = lineBreak.value;\n\t\treturn value.start === position || value.end === position;\n\t}\n\n\tprivate static newLineBreaker(target: string): ReturnType<typeof LineBreaker> | null {\n\t\tif (\"css-line-break\" in window) {\n\t\t\tconst cssLineBreak = (window as any)[\"css-line-break\"] as {\n\t\t\t\tLineBreaker: typeof LineBreaker;\n\t\t\t};\n\t\t\treturn cssLineBreak.LineBreaker(target, {\n\t\t\t\tlineBreak: \"strict\",\n\t\t\t\twordBreak: \"normal\"\n\t\t\t});\n\t\t}\n\t\treturn null;\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-dynamic-text-measure.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-measure.ts"],"names":[],"mappings":"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","sourcesContent":["import { DDynamicTextMeasureResult } from \"./d-dynamic-text-measure-result\";\nimport { DynamicFontAtlas } from \"./util/dynamic-font-atlas\";\nimport { UtilCharacterIterator } from \"./util/util-character-iterator\";\nimport type { LineBreaker } from \"css-line-break\";\nimport { LineBreak } from \"css-line-break/dist/types/LineBreak\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DynamicFontAtlasCharacter } from \"./util/dynamic-font-atlas-character\";\nimport { DynamicFontAtlasCharacterType } from \"./util/dynamic-font-atlas-character-type\";\nimport { Character } from \"./util/character\";\n\nexport interface DDynamicTextMeasureModifier {\n\tclipping: boolean;\n\tfitting: boolean;\n\twordWrap: DDynamicTextStyleWordWrap;\n\twidth: number;\n\theight: number;\n\tlineHeight: number;\n}\n\nexport class DDynamicTextMeasure {\n\tprotected static RESULT: DDynamicTextMeasureResult | null = null;\n\n\tstatic measure(\n\t\ttext: string,\n\t\tatlas: DynamicFontAtlas | null,\n\t\tmodifier: DDynamicTextMeasureModifier\n\t): DDynamicTextMeasureResult {\n\t\tconst result = DDynamicTextMeasure.RESULT || new DDynamicTextMeasureResult();\n\t\tDDynamicTextMeasure.RESULT = result;\n\t\tif (atlas != null) {\n\t\t\tconst itr = UtilCharacterIterator.from(text);\n\t\t\tconst fh = atlas.font.height;\n\t\t\tconst lh = modifier.lineHeight;\n\t\t\tconst cf = modifier.fitting;\n\t\t\tconst cc = !cf && modifier.clipping;\n\t\t\tconst cw = modifier.width;\n\t\t\tconst ch = modifier.height;\n\t\t\tconst cp = !cf && modifier.wordWrap;\n\t\t\tresult.start(lh, fh);\n\t\t\tswitch (cp) {\n\t\t\t\tcase DDynamicTextStyleWordWrap.BREAK_ALL:\n\t\t\t\t\tif (cc) {\n\t\t\t\t\t\tthis.measure1(itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure2(itr, cw, lh, atlas, result);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase DDynamicTextStyleWordWrap.NORMAL:\n\t\t\t\t\tconst lb = this.newLineBreaker(text);\n\t\t\t\t\tif (lb) {\n\t\t\t\t\t\tif (cc) {\n\t\t\t\t\t\t\tthis.measure1a(lb, itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.measure2a(lb, itr, cw, lh, atlas, result);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (cc) {\n\t\t\t\t\t\t\tthis.measure1b(itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.measure2b(itr, cw, lh, atlas, result);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif (cc) {\n\t\t\t\t\t\tthis.measure3(itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure4(itr, lh, atlas, result);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tresult.end(lh, fh);\n\t\t\tif (cf) {\n\t\t\t\tresult.fit(cw, ch);\n\t\t\t}\n\t\t} else {\n\t\t\tresult.start(0, 0);\n\t\t\tresult.end(0, 0);\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate static measure1a(\n\t\tlineBreaker: ReturnType<typeof LineBreaker>,\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\tlet lineBreak = lineBreaker.next();\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst characterPosition = iterator.position;\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === Character.NEW_LINE) {\n\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tlineBreak = this.advance(characterPosition, lineBreak, lineBreaker);\n\t\t\t\tconst isWrappable = this.isWrappable1(characterPosition, lineBreak);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure1b(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === Character.NEW_LINE) {\n\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tconst isWrappable = this.isWrappable2(result, a);\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure1(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === Character.NEW_LINE) {\n\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, true);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\t\tresult.push(a, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2a(\n\t\tlineBreaker: ReturnType<typeof LineBreaker>,\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\tlet lineBreak = lineBreaker.next();\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst characterPosition = iterator.position;\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === Character.NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tlineBreak = this.advance(characterPosition, lineBreak, lineBreaker);\n\t\t\t\tconst isWrappable = this.isWrappable1(characterPosition, lineBreak);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2b(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === Character.NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tconst isWrappable = this.isWrappable2(result, a);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === Character.NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t} else {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure3(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === Character.NEW_LINE) {\n\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure4(\n\t\titerator: UtilCharacterIterator,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === Character.NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\t\t\t\tresult.push(a, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic measure5(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult,\n\t\tclose: boolean\n\t): void {\n\t\tresult.clipped = true;\n\t\tconst dots = atlas.get(Character.DOTS);\n\t\tif (dots != null) {\n\t\t\twhile (!result.isPushable(clippingWidth, dots)) {\n\t\t\t\tif (!result.pop()) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result.isPushable(clippingWidth, dots)) {\n\t\t\t\tresult.push(dots, false);\n\t\t\t}\n\t\t}\n\t\tif (close) {\n\t\t\titerator.close();\n\t\t} else {\n\t\t\twhile (iterator.hasNext()) {\n\t\t\t\tif (iterator.next() === Character.NEW_LINE) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static isWrappable2(\n\t\tresult: DDynamicTextMeasureResult,\n\t\tcharacter: DynamicFontAtlasCharacter\n\t): boolean {\n\t\tif (result.countPerLine <= 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst last = result.characters[result.count - 1];\n\t\tconst lastType = last.character.type;\n\t\tconst type = character.type;\n\t\tif (lastType & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\tif (type & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tif (lastType & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (type & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tif (lastType & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\tif (type & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static advance(\n\t\tposition: number,\n\t\tlineBreak: LineBreak,\n\t\tlineBreaker: ReturnType<typeof LineBreaker>\n\t): LineBreak {\n\t\tif (lineBreak.done) {\n\t\t\treturn lineBreak;\n\t\t}\n\t\tif (position <= lineBreak.value.end) {\n\t\t\treturn lineBreak;\n\t\t}\n\t\tlineBreak = lineBreaker.next();\n\t\treturn lineBreak;\n\t}\n\n\tprivate static isWrappable1(position: number, lineBreak: LineBreak): boolean {\n\t\tif (lineBreak.done) {\n\t\t\treturn false;\n\t\t}\n\t\tconst value = lineBreak.value;\n\t\treturn value.start === position || value.end === position;\n\t}\n\n\tprivate static newLineBreaker(target: string): ReturnType<typeof LineBreaker> | null {\n\t\tif (\"css-line-break\" in window) {\n\t\t\tconst cssLineBreak = (window as any)[\"css-line-break\"] as {\n\t\t\t\tLineBreaker: typeof LineBreaker;\n\t\t\t};\n\t\t\treturn cssLineBreak.LineBreaker(target, {\n\t\t\t\tlineBreak: \"strict\",\n\t\t\t\twordBreak: \"normal\"\n\t\t\t});\n\t\t}\n\t\treturn null;\n\t}\n}\n"]}
@@ -4,7 +4,6 @@
4
4
  */
5
5
  import { __extends } from "tslib";
6
6
  import { Point, Rectangle } from "pixi.js";
7
- import { DApplications } from "./d-applications";
8
7
  import { DBase } from "./d-base";
9
8
  import { DBaseOverflowMask } from "./d-base-overflow-mask";
10
9
  import { DContent } from "./d-content";
@@ -81,22 +80,7 @@ var DPane = /** @class */ (function (_super) {
81
80
  });
82
81
  };
83
82
  DPane.prototype.onScrollBarUpdate = function (isRegionVisible) {
84
- var overflowMask = this._overflowMask;
85
- if (overflowMask != null) {
86
- var content = this.content;
87
- if (isRegionVisible) {
88
- if (content.mask !== overflowMask) {
89
- content.mask = overflowMask;
90
- DApplications.update(this);
91
- }
92
- }
93
- else {
94
- if (content.mask) {
95
- content.mask = null;
96
- DApplications.update(this);
97
- }
98
- }
99
- }
83
+ // DO NOTHING
100
84
  };
101
85
  DPane.prototype.initScrollBar = function (scrollbar) {
102
86
  var _this = this;
@@ -169,14 +153,18 @@ var DPane = /** @class */ (function (_super) {
169
153
  };
170
154
  DPane.prototype.getOverflowMask = function () {
171
155
  var result = this._overflowMask;
172
- if (result == null) {
173
- result = new DBaseOverflowMask(this);
156
+ if (result === undefined) {
157
+ result = this.newOverflowMask();
174
158
  this._overflowMask = result;
175
- this.reflowable.add(result);
176
- this.toDirty();
177
159
  }
178
160
  return result;
179
161
  };
162
+ DPane.prototype.newOverflowMask = function () {
163
+ var result = new DBaseOverflowMask(this);
164
+ this.reflowable.add(result);
165
+ this.toDirty();
166
+ return result;
167
+ };
180
168
  DPane.prototype.onWheel = function (e, deltas, global) {
181
169
  var content = this.content;
182
170
  var x = this.getWheelContentX(content, deltas.deltaX * deltas.lowest);
@@ -1 +1 @@
1
- {"version":3,"file":"d-pane.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-pane.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { InteractionEvent, Point, Rectangle } from \"pixi.js\";\nimport { DApplications } from \"./d-applications\";\nimport { DBase, DBaseOptions, DThemeBase } from \"./d-base\";\nimport { DBaseOverflowMask } from \"./d-base-overflow-mask\";\nimport { DContent, DContentOptions } from \"./d-content\";\nimport { UtilGestureMode } from \"./util/util-gesture-mode\";\nimport { DScrollBar } from \"./d-scroll-bar\";\nimport { toEnum } from \"./util/to-enum\";\nimport { UtilGesture } from \"./util/util-gesture\";\nimport { UtilWheelEventDeltas } from \"./util/util-wheel-event\";\nimport { DPaneScrollBar, DPaneScrollBarOptions } from \"./d-pane-scrollbar\";\n\n/**\n * {@link DPane} gesture options.\n */\nexport interface DPaneGestureOptions {\n\tmode?: keyof typeof UtilGestureMode | UtilGestureMode;\n}\n\n/**\n * {@link DPane} options.\n */\nexport interface DPaneOptions<\n\tTHEME extends DThemePane = DThemePane,\n\tCONTENT_OPTIONS extends DBaseOptions = DContentOptions\n> extends DBaseOptions<THEME> {\n\t/**\n\t * True to enable an overflow mask.\n\t */\n\tmask?: boolean;\n\n\t/**\n\t * Content options or a content.\n\t */\n\tcontent?: CONTENT_OPTIONS | DBase;\n\n\t/**\n\t * Scroll bar options.\n\t */\n\tscrollbar?: DPaneScrollBarOptions;\n\n\t/**\n\t * Gesture options.\n\t */\n\tgesture?: DPaneGestureOptions;\n}\n\nexport interface DThemePane extends DThemeBase {\n\tisOverflowMaskEnabled(): boolean;\n\tgetWheelSpeed(): number;\n\tgetGestureMode(): UtilGestureMode;\n}\n\n// Class\nexport class DPane<\n\tTHEME extends DThemePane = DThemePane,\n\tCONTENT_OPTIONS extends DBaseOptions = DContentOptions,\n\tOPTIONS extends DPaneOptions<THEME, CONTENT_OPTIONS> = DPaneOptions<THEME, CONTENT_OPTIONS>\n> extends DBase<THEME, OPTIONS> {\n\tprotected static WORK_POINT?: Point;\n\tprotected static WORK_RECTANGLE?: Rectangle;\n\n\tprotected _content?: DBase;\n\tprotected _overflowMask?: DBaseOverflowMask | null;\n\tprotected _scrollbar?: DPaneScrollBar;\n\tprotected _gestureUtil?: UtilGesture<DPane>;\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\n\t\t// Mask\n\t\tconst theme = this.theme;\n\t\tif (options?.mask ?? theme.isOverflowMaskEnabled()) {\n\t\t\tthis.mask = this.getOverflowMask();\n\t\t}\n\n\t\t// Content\n\t\tthis.addChild(this.content);\n\n\t\t// Scroll bar\n\t\tconst scrollbar = this.scrollbar;\n\t\tthis.addChild(scrollbar.vertical);\n\t\tthis.addChild(scrollbar.horizontal);\n\t\tscrollbar.update();\n\n\t\t// Gesture\n\t\tthis.initGesture(theme, options);\n\t}\n\n\tprotected initGesture(theme: THEME, options?: OPTIONS): void {\n\t\t// Edge does not fire the wheel event when scrolling using the 2-fingure scroll gesture on a touchpad.\n\t\t// Instead, it fires touch events. This is why the gesture is enabled regardless of the `UtilPointerEvent.touchable`.\n\t\t// https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7134034/\n\t\tconst mode = toEnum(options?.gesture?.mode ?? theme.getGestureMode(), UtilGestureMode);\n\t\tif (mode === UtilGestureMode.ON || mode === UtilGestureMode.TOUCH) {\n\t\t\tconst position = new Point();\n\t\t\tconst content = this.content;\n\t\t\tthis._gestureUtil = new UtilGesture<DPane>({\n\t\t\t\tbind: this,\n\t\t\t\ttouch: mode === UtilGestureMode.TOUCH,\n\t\t\t\ton: {\n\t\t\t\t\tstart: (): void => {\n\t\t\t\t\t\tposition.copyFrom(content.position);\n\t\t\t\t\t},\n\t\t\t\t\tmove: (target: DPane, dx: number, dy: number): void => {\n\t\t\t\t\t\tposition.set(position.x + dx, position.y + dy);\n\t\t\t\t\t\tcontent.position.set(\n\t\t\t\t\t\t\tthis.toContentX(content, position.x),\n\t\t\t\t\t\t\tthis.toContentY(content, position.y)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tget scrollbar(): DPaneScrollBar {\n\t\tlet result = this._scrollbar;\n\t\tif (result == null) {\n\t\t\tresult = this.newScrollBar(this._options?.scrollbar);\n\t\t\tthis.initScrollBar(result);\n\t\t\tthis._scrollbar = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newScrollBar(options?: DPaneScrollBarOptions): DPaneScrollBar {\n\t\treturn new DPaneScrollBar(this, options, (isRegionVisible: boolean): void => {\n\t\t\tthis.onScrollBarUpdate(isRegionVisible);\n\t\t});\n\t}\n\n\tprotected onScrollBarUpdate(isRegionVisible: boolean): void {\n\t\tconst overflowMask = this._overflowMask;\n\t\tif (overflowMask != null) {\n\t\t\tconst content = this.content;\n\t\t\tif (isRegionVisible) {\n\t\t\t\tif (content.mask !== overflowMask) {\n\t\t\t\t\tcontent.mask = overflowMask;\n\t\t\t\t\tDApplications.update(this);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (content.mask) {\n\t\t\t\t\t(content as any).mask = null;\n\t\t\t\t\tDApplications.update(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected initScrollBar(scrollbar: DPaneScrollBar): void {\n\t\tscrollbar.vertical.on(\"regionmove\", (start: number): void => {\n\t\t\tthis.onScrollBarMoveY(start);\n\t\t});\n\t\tscrollbar.horizontal.on(\"regionmove\", (start: number): void => {\n\t\t\tthis.onScrollBarMoveX(start);\n\t\t});\n\t}\n\n\tprotected onScrollBarMoveX(start: number): void {\n\t\tconst gestureUtil = this._gestureUtil;\n\t\tif (gestureUtil != null) {\n\t\t\tgestureUtil.stop(this);\n\t\t}\n\t\tconst content = this.content;\n\t\tcontent.x = -content.width * start;\n\t}\n\n\tprotected onScrollBarMoveY(start: number): void {\n\t\tconst gestureUtil = this._gestureUtil;\n\t\tif (gestureUtil != null) {\n\t\t\tgestureUtil.stop(this);\n\t\t}\n\t\tconst content = this.content;\n\t\tcontent.y = -content.height * start;\n\t}\n\n\tprotected override onOver(e: InteractionEvent): void {\n\t\tsuper.onOver(e);\n\t\tthis.scrollbar.touch();\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DPane\";\n\t}\n\n\tget content(): DBase {\n\t\tlet result = this._content;\n\t\tif (result == null) {\n\t\t\tresult = this.toContent(this._options);\n\t\t\tthis.initContent(result);\n\t\t\tthis._content = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected toContent(options?: OPTIONS): DBase {\n\t\tconst content = options?.content;\n\t\tif (content) {\n\t\t\tif (content instanceof DBase) {\n\t\t\t\treturn content;\n\t\t\t} else {\n\t\t\t\treturn this.newContent(content);\n\t\t\t}\n\t\t}\n\t\treturn this.newContent();\n\t}\n\n\tprotected newContent(options?: CONTENT_OPTIONS): DBase {\n\t\treturn new DContent(options);\n\t}\n\n\tprotected initContent(content: DBase): void {\n\t\tcontent.on(\"move\", (): void => {\n\t\t\tthis.onContentChange();\n\t\t});\n\t\tcontent.on(\"resize\", (): void => {\n\t\t\tthis.onContentChange();\n\t\t});\n\t}\n\n\tprotected getOverflowMask(): DBaseOverflowMask {\n\t\tlet result = this._overflowMask;\n\t\tif (result == null) {\n\t\t\tresult = new DBaseOverflowMask(this);\n\t\t\tthis._overflowMask = result;\n\t\t\tthis.reflowable.add(result);\n\t\t\tthis.toDirty();\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected onWheel(e: WheelEvent, deltas: UtilWheelEventDeltas, global: Point): boolean {\n\t\tconst content = this.content;\n\t\tconst x = this.getWheelContentX(content, deltas.deltaX * deltas.lowest);\n\t\tconst y = this.getWheelContentY(content, deltas.deltaY * deltas.lowest);\n\t\tif (content.x !== x || content.y !== y) {\n\t\t\tconst gestureUtil = this._gestureUtil;\n\t\t\tif (gestureUtil != null) {\n\t\t\t\tgestureUtil.stop(this);\n\t\t\t}\n\t\t\tcontent.position.set(x, y);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected getWheelContentX(content: DBase, delta: number): number {\n\t\tif (0 < delta || delta < 0) {\n\t\t\tconst speed = this.theme.getWheelSpeed();\n\t\t\treturn this.toContentX(content, content.x - delta * speed);\n\t\t}\n\t\treturn content.x;\n\t}\n\n\tprotected getWheelContentY(content: DBase, delta: number): number {\n\t\tif (0 < delta || delta < 0) {\n\t\t\tconst speed = this.theme.getWheelSpeed();\n\t\t\treturn this.toContentY(content, content.y + delta * speed);\n\t\t}\n\t\treturn content.y;\n\t}\n\n\tprotected toContentX(content: DBase, x: number): number {\n\t\treturn Math.min(0, Math.max(this.width - content.width, x));\n\t}\n\n\tprotected toContentY(content: DBase, y: number): number {\n\t\treturn Math.min(0, Math.max(this.height - content.height, y));\n\t}\n\n\tprotected isRefitable(target: any): target is DBase<any, any> {\n\t\treturn super.isRefitable(target) && !(target instanceof DScrollBar);\n\t}\n\n\tonResize(newWidth: number, newHeight: number, oldWidth: number, oldHeight: number): void {\n\t\tconst scrollbar = this.scrollbar;\n\t\tscrollbar.lock();\n\t\tsuper.onResize(newWidth, newHeight, oldWidth, oldHeight);\n\t\tscrollbar.update();\n\t\tscrollbar.unlock(true);\n\t}\n\n\tprotected onContentChange(): void {\n\t\tthis.scrollbar.update();\n\t}\n\n\tprotected getFocusedChildClippingRect(\n\t\tfocused: DBase,\n\t\tcontentX: number,\n\t\tcontentY: number,\n\t\tcontentWidth: number,\n\t\tcontentHeight: number,\n\t\twidth: number,\n\t\theight: number,\n\t\tresult: Rectangle\n\t): Rectangle {\n\t\tresult.x = 0;\n\t\tresult.y = 0;\n\t\tresult.width = width;\n\t\tresult.height = height;\n\t\treturn result;\n\t}\n\n\tprotected onChildFocus(focused: DBase): void {\n\t\tconst point = DPane.WORK_POINT || new Point();\n\t\tDPane.WORK_POINT = point;\n\n\t\t// Content rectangle\n\t\tconst content = this.content;\n\t\tconst contentX = content.x;\n\t\tconst contentY = content.y;\n\t\tconst contentWidth = content.width;\n\t\tconst contentHeight = content.height;\n\n\t\tpoint.set(0, 0);\n\t\tfocused.toGlobal(point, point, false);\n\t\tcontent.toLocal(point, undefined, point, false);\n\t\tconst x0 = contentX + Math.min(contentWidth, Math.max(0, point.x));\n\t\tconst y0 = contentY + Math.min(contentHeight, Math.max(0, point.y));\n\n\t\tpoint.set(focused.width, focused.height);\n\t\tfocused.toGlobal(point, point, true);\n\t\tcontent.toLocal(point, undefined, point, true);\n\t\tconst x1 = contentX + Math.min(contentWidth, Math.max(0, point.x));\n\t\tconst y1 = contentY + Math.min(contentHeight, Math.max(0, point.y));\n\n\t\tconst width = this.width;\n\t\tconst height = this.height;\n\t\tconst clippingRect = DPane.WORK_RECTANGLE || new Rectangle();\n\t\tDPane.WORK_RECTANGLE = clippingRect;\n\t\tthis.getFocusedChildClippingRect(\n\t\t\tfocused,\n\t\t\tcontentX,\n\t\t\tcontentY,\n\t\t\tcontentWidth,\n\t\t\tcontentHeight,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tclippingRect\n\t\t);\n\t\tconst clippingRectX = clippingRect.x;\n\t\tconst clippingRectY = clippingRect.y;\n\t\tconst clippingRectX0 = clippingRectX;\n\t\tconst clippingRectY0 = clippingRectY;\n\t\tconst clippingRectX1 = clippingRectX + clippingRect.width;\n\t\tconst clippingRectY1 = clippingRectY + clippingRect.height;\n\n\t\tlet newX: number | null = null;\n\t\tif (x0 < clippingRectX0) {\n\t\t\tif (x1 <= clippingRectX1) {\n\t\t\t\tnewX = contentX + Math.min(clippingRectX0 - x0, clippingRectX1 - x1);\n\t\t\t\tnewX = Math.max(width - contentWidth, Math.min(0, newX));\n\t\t\t}\n\t\t} else if (clippingRectX1 < x1) {\n\t\t\tnewX = contentX - Math.min(x0 - clippingRectX0, x1 - clippingRectX1);\n\t\t\tnewX = Math.max(width - contentWidth, Math.min(0, newX));\n\t\t}\n\n\t\tlet newY: number | null = null;\n\t\tif (y0 < clippingRectY0) {\n\t\t\tif (y1 <= clippingRectY1) {\n\t\t\t\tnewY = contentY + Math.min(clippingRectY0 - y0, clippingRectY1 - y1);\n\t\t\t\tnewY = Math.max(height - contentHeight, Math.min(0, newY));\n\t\t\t}\n\t\t} else if (clippingRectY1 < y1) {\n\t\t\tnewY = contentY - Math.min(y0 - clippingRectY0, y1 - clippingRectY1);\n\t\t\tnewY = Math.max(height - contentHeight, Math.min(0, newY));\n\t\t}\n\n\t\tconst contentPosition = content.position;\n\t\tif (newX != null) {\n\t\t\tif (newY != null) {\n\t\t\t\tcontentPosition.set(newX, newY);\n\t\t\t} else {\n\t\t\t\tcontentPosition.x = newX;\n\t\t\t}\n\t\t} else {\n\t\t\tif (newY != null) {\n\t\t\t\tcontentPosition.y = newY;\n\t\t\t}\n\t\t}\n\n\t\tsuper.onChildFocus(focused);\n\t}\n\n\tdestroy(): void {\n\t\t// Overflow mask\n\t\tconst overflowMask = this._overflowMask;\n\t\tif (overflowMask != null) {\n\t\t\tthis._overflowMask = null;\n\t\t\toverflowMask.destroy();\n\t\t}\n\t\t(this as any).mask = null;\n\n\t\tsuper.destroy();\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-pane.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-pane.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Graphics, InteractionEvent, Point, Rectangle } from \"pixi.js\";\nimport { DBase, DBaseOptions, DThemeBase } from \"./d-base\";\nimport { DBaseOverflowMask } from \"./d-base-overflow-mask\";\nimport { DContent, DContentOptions } from \"./d-content\";\nimport { UtilGestureMode } from \"./util/util-gesture-mode\";\nimport { DScrollBar } from \"./d-scroll-bar\";\nimport { toEnum } from \"./util/to-enum\";\nimport { UtilGesture } from \"./util/util-gesture\";\nimport { UtilWheelEventDeltas } from \"./util/util-wheel-event\";\nimport { DPaneScrollBar, DPaneScrollBarOptions } from \"./d-pane-scrollbar\";\n\n/**\n * {@link DPane} gesture options.\n */\nexport interface DPaneGestureOptions {\n\tmode?: keyof typeof UtilGestureMode | UtilGestureMode;\n}\n\n/**\n * {@link DPane} options.\n */\nexport interface DPaneOptions<\n\tTHEME extends DThemePane = DThemePane,\n\tCONTENT_OPTIONS extends DBaseOptions = DContentOptions\n> extends DBaseOptions<THEME> {\n\t/**\n\t * True to enable an overflow mask.\n\t */\n\tmask?: boolean;\n\n\t/**\n\t * Content options or a content.\n\t */\n\tcontent?: CONTENT_OPTIONS | DBase;\n\n\t/**\n\t * Scroll bar options.\n\t */\n\tscrollbar?: DPaneScrollBarOptions;\n\n\t/**\n\t * Gesture options.\n\t */\n\tgesture?: DPaneGestureOptions;\n}\n\nexport interface DThemePane extends DThemeBase {\n\tisOverflowMaskEnabled(): boolean;\n\tgetWheelSpeed(): number;\n\tgetGestureMode(): UtilGestureMode;\n}\n\n// Class\nexport class DPane<\n\tTHEME extends DThemePane = DThemePane,\n\tCONTENT_OPTIONS extends DBaseOptions = DContentOptions,\n\tOPTIONS extends DPaneOptions<THEME, CONTENT_OPTIONS> = DPaneOptions<THEME, CONTENT_OPTIONS>\n> extends DBase<THEME, OPTIONS> {\n\tprotected static WORK_POINT?: Point;\n\tprotected static WORK_RECTANGLE?: Rectangle;\n\n\tprotected _content?: DBase;\n\tprotected _overflowMask?: Graphics | null;\n\tprotected _scrollbar?: DPaneScrollBar;\n\tprotected _gestureUtil?: UtilGesture<DPane>;\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\n\t\t// Mask\n\t\tconst theme = this.theme;\n\t\tif (options?.mask ?? theme.isOverflowMaskEnabled()) {\n\t\t\tthis.mask = this.getOverflowMask();\n\t\t}\n\n\t\t// Content\n\t\tthis.addChild(this.content);\n\n\t\t// Scroll bar\n\t\tconst scrollbar = this.scrollbar;\n\t\tthis.addChild(scrollbar.vertical);\n\t\tthis.addChild(scrollbar.horizontal);\n\t\tscrollbar.update();\n\n\t\t// Gesture\n\t\tthis.initGesture(theme, options);\n\t}\n\n\tprotected initGesture(theme: THEME, options?: OPTIONS): void {\n\t\t// Edge does not fire the wheel event when scrolling using the 2-fingure scroll gesture on a touchpad.\n\t\t// Instead, it fires touch events. This is why the gesture is enabled regardless of the `UtilPointerEvent.touchable`.\n\t\t// https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7134034/\n\t\tconst mode = toEnum(options?.gesture?.mode ?? theme.getGestureMode(), UtilGestureMode);\n\t\tif (mode === UtilGestureMode.ON || mode === UtilGestureMode.TOUCH) {\n\t\t\tconst position = new Point();\n\t\t\tconst content = this.content;\n\t\t\tthis._gestureUtil = new UtilGesture<DPane>({\n\t\t\t\tbind: this,\n\t\t\t\ttouch: mode === UtilGestureMode.TOUCH,\n\t\t\t\ton: {\n\t\t\t\t\tstart: (): void => {\n\t\t\t\t\t\tposition.copyFrom(content.position);\n\t\t\t\t\t},\n\t\t\t\t\tmove: (target: DPane, dx: number, dy: number): void => {\n\t\t\t\t\t\tposition.set(position.x + dx, position.y + dy);\n\t\t\t\t\t\tcontent.position.set(\n\t\t\t\t\t\t\tthis.toContentX(content, position.x),\n\t\t\t\t\t\t\tthis.toContentY(content, position.y)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tget scrollbar(): DPaneScrollBar {\n\t\tlet result = this._scrollbar;\n\t\tif (result == null) {\n\t\t\tresult = this.newScrollBar(this._options?.scrollbar);\n\t\t\tthis.initScrollBar(result);\n\t\t\tthis._scrollbar = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newScrollBar(options?: DPaneScrollBarOptions): DPaneScrollBar {\n\t\treturn new DPaneScrollBar(this, options, (isRegionVisible: boolean): void => {\n\t\t\tthis.onScrollBarUpdate(isRegionVisible);\n\t\t});\n\t}\n\n\tprotected onScrollBarUpdate(isRegionVisible: boolean): void {\n\t\t// DO NOTHING\n\t}\n\n\tprotected initScrollBar(scrollbar: DPaneScrollBar): void {\n\t\tscrollbar.vertical.on(\"regionmove\", (start: number): void => {\n\t\t\tthis.onScrollBarMoveY(start);\n\t\t});\n\t\tscrollbar.horizontal.on(\"regionmove\", (start: number): void => {\n\t\t\tthis.onScrollBarMoveX(start);\n\t\t});\n\t}\n\n\tprotected onScrollBarMoveX(start: number): void {\n\t\tconst gestureUtil = this._gestureUtil;\n\t\tif (gestureUtil != null) {\n\t\t\tgestureUtil.stop(this);\n\t\t}\n\t\tconst content = this.content;\n\t\tcontent.x = -content.width * start;\n\t}\n\n\tprotected onScrollBarMoveY(start: number): void {\n\t\tconst gestureUtil = this._gestureUtil;\n\t\tif (gestureUtil != null) {\n\t\t\tgestureUtil.stop(this);\n\t\t}\n\t\tconst content = this.content;\n\t\tcontent.y = -content.height * start;\n\t}\n\n\tprotected override onOver(e: InteractionEvent): void {\n\t\tsuper.onOver(e);\n\t\tthis.scrollbar.touch();\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DPane\";\n\t}\n\n\tget content(): DBase {\n\t\tlet result = this._content;\n\t\tif (result == null) {\n\t\t\tresult = this.toContent(this._options);\n\t\t\tthis.initContent(result);\n\t\t\tthis._content = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected toContent(options?: OPTIONS): DBase {\n\t\tconst content = options?.content;\n\t\tif (content) {\n\t\t\tif (content instanceof DBase) {\n\t\t\t\treturn content;\n\t\t\t} else {\n\t\t\t\treturn this.newContent(content);\n\t\t\t}\n\t\t}\n\t\treturn this.newContent();\n\t}\n\n\tprotected newContent(options?: CONTENT_OPTIONS): DBase {\n\t\treturn new DContent(options);\n\t}\n\n\tprotected initContent(content: DBase): void {\n\t\tcontent.on(\"move\", (): void => {\n\t\t\tthis.onContentChange();\n\t\t});\n\t\tcontent.on(\"resize\", (): void => {\n\t\t\tthis.onContentChange();\n\t\t});\n\t}\n\n\tprotected getOverflowMask(): Graphics | null {\n\t\tlet result = this._overflowMask;\n\t\tif (result === undefined) {\n\t\t\tresult = this.newOverflowMask();\n\t\t\tthis._overflowMask = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newOverflowMask(): Graphics | null {\n\t\tconst result = new DBaseOverflowMask(this);\n\t\tthis.reflowable.add(result);\n\t\tthis.toDirty();\n\t\treturn result;\n\t}\n\n\tprotected onWheel(e: WheelEvent, deltas: UtilWheelEventDeltas, global: Point): boolean {\n\t\tconst content = this.content;\n\t\tconst x = this.getWheelContentX(content, deltas.deltaX * deltas.lowest);\n\t\tconst y = this.getWheelContentY(content, deltas.deltaY * deltas.lowest);\n\t\tif (content.x !== x || content.y !== y) {\n\t\t\tconst gestureUtil = this._gestureUtil;\n\t\t\tif (gestureUtil != null) {\n\t\t\t\tgestureUtil.stop(this);\n\t\t\t}\n\t\t\tcontent.position.set(x, y);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected getWheelContentX(content: DBase, delta: number): number {\n\t\tif (0 < delta || delta < 0) {\n\t\t\tconst speed = this.theme.getWheelSpeed();\n\t\t\treturn this.toContentX(content, content.x - delta * speed);\n\t\t}\n\t\treturn content.x;\n\t}\n\n\tprotected getWheelContentY(content: DBase, delta: number): number {\n\t\tif (0 < delta || delta < 0) {\n\t\t\tconst speed = this.theme.getWheelSpeed();\n\t\t\treturn this.toContentY(content, content.y + delta * speed);\n\t\t}\n\t\treturn content.y;\n\t}\n\n\tprotected toContentX(content: DBase, x: number): number {\n\t\treturn Math.min(0, Math.max(this.width - content.width, x));\n\t}\n\n\tprotected toContentY(content: DBase, y: number): number {\n\t\treturn Math.min(0, Math.max(this.height - content.height, y));\n\t}\n\n\tprotected isRefitable(target: any): target is DBase<any, any> {\n\t\treturn super.isRefitable(target) && !(target instanceof DScrollBar);\n\t}\n\n\tonResize(newWidth: number, newHeight: number, oldWidth: number, oldHeight: number): void {\n\t\tconst scrollbar = this.scrollbar;\n\t\tscrollbar.lock();\n\t\tsuper.onResize(newWidth, newHeight, oldWidth, oldHeight);\n\t\tscrollbar.update();\n\t\tscrollbar.unlock(true);\n\t}\n\n\tprotected onContentChange(): void {\n\t\tthis.scrollbar.update();\n\t}\n\n\tprotected getFocusedChildClippingRect(\n\t\tfocused: DBase,\n\t\tcontentX: number,\n\t\tcontentY: number,\n\t\tcontentWidth: number,\n\t\tcontentHeight: number,\n\t\twidth: number,\n\t\theight: number,\n\t\tresult: Rectangle\n\t): Rectangle {\n\t\tresult.x = 0;\n\t\tresult.y = 0;\n\t\tresult.width = width;\n\t\tresult.height = height;\n\t\treturn result;\n\t}\n\n\tprotected onChildFocus(focused: DBase): void {\n\t\tconst point = DPane.WORK_POINT || new Point();\n\t\tDPane.WORK_POINT = point;\n\n\t\t// Content rectangle\n\t\tconst content = this.content;\n\t\tconst contentX = content.x;\n\t\tconst contentY = content.y;\n\t\tconst contentWidth = content.width;\n\t\tconst contentHeight = content.height;\n\n\t\tpoint.set(0, 0);\n\t\tfocused.toGlobal(point, point, false);\n\t\tcontent.toLocal(point, undefined, point, false);\n\t\tconst x0 = contentX + Math.min(contentWidth, Math.max(0, point.x));\n\t\tconst y0 = contentY + Math.min(contentHeight, Math.max(0, point.y));\n\n\t\tpoint.set(focused.width, focused.height);\n\t\tfocused.toGlobal(point, point, true);\n\t\tcontent.toLocal(point, undefined, point, true);\n\t\tconst x1 = contentX + Math.min(contentWidth, Math.max(0, point.x));\n\t\tconst y1 = contentY + Math.min(contentHeight, Math.max(0, point.y));\n\n\t\tconst width = this.width;\n\t\tconst height = this.height;\n\t\tconst clippingRect = DPane.WORK_RECTANGLE || new Rectangle();\n\t\tDPane.WORK_RECTANGLE = clippingRect;\n\t\tthis.getFocusedChildClippingRect(\n\t\t\tfocused,\n\t\t\tcontentX,\n\t\t\tcontentY,\n\t\t\tcontentWidth,\n\t\t\tcontentHeight,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tclippingRect\n\t\t);\n\t\tconst clippingRectX = clippingRect.x;\n\t\tconst clippingRectY = clippingRect.y;\n\t\tconst clippingRectX0 = clippingRectX;\n\t\tconst clippingRectY0 = clippingRectY;\n\t\tconst clippingRectX1 = clippingRectX + clippingRect.width;\n\t\tconst clippingRectY1 = clippingRectY + clippingRect.height;\n\n\t\tlet newX: number | null = null;\n\t\tif (x0 < clippingRectX0) {\n\t\t\tif (x1 <= clippingRectX1) {\n\t\t\t\tnewX = contentX + Math.min(clippingRectX0 - x0, clippingRectX1 - x1);\n\t\t\t\tnewX = Math.max(width - contentWidth, Math.min(0, newX));\n\t\t\t}\n\t\t} else if (clippingRectX1 < x1) {\n\t\t\tnewX = contentX - Math.min(x0 - clippingRectX0, x1 - clippingRectX1);\n\t\t\tnewX = Math.max(width - contentWidth, Math.min(0, newX));\n\t\t}\n\n\t\tlet newY: number | null = null;\n\t\tif (y0 < clippingRectY0) {\n\t\t\tif (y1 <= clippingRectY1) {\n\t\t\t\tnewY = contentY + Math.min(clippingRectY0 - y0, clippingRectY1 - y1);\n\t\t\t\tnewY = Math.max(height - contentHeight, Math.min(0, newY));\n\t\t\t}\n\t\t} else if (clippingRectY1 < y1) {\n\t\t\tnewY = contentY - Math.min(y0 - clippingRectY0, y1 - clippingRectY1);\n\t\t\tnewY = Math.max(height - contentHeight, Math.min(0, newY));\n\t\t}\n\n\t\tconst contentPosition = content.position;\n\t\tif (newX != null) {\n\t\t\tif (newY != null) {\n\t\t\t\tcontentPosition.set(newX, newY);\n\t\t\t} else {\n\t\t\t\tcontentPosition.x = newX;\n\t\t\t}\n\t\t} else {\n\t\t\tif (newY != null) {\n\t\t\t\tcontentPosition.y = newY;\n\t\t\t}\n\t\t}\n\n\t\tsuper.onChildFocus(focused);\n\t}\n\n\tdestroy(): void {\n\t\t// Overflow mask\n\t\tconst overflowMask = this._overflowMask;\n\t\tif (overflowMask != null) {\n\t\t\tthis._overflowMask = null;\n\t\t\toverflowMask.destroy();\n\t\t}\n\t\tthis.mask = null;\n\n\t\tsuper.destroy();\n\t}\n}\n"]}
@@ -49,9 +49,9 @@ var EShapeRenderer = /** @class */ (function (_super) {
49
49
  }
50
50
  // Font texture atlas
51
51
  var text = shape.text;
52
- var textValue = text.value;
53
- if (0 < textValue.length) {
54
- fontAtlases.add(text.family, textValue);
52
+ var textCharacters = text.characters;
53
+ if (0 < textCharacters.length) {
54
+ fontAtlases.add(text.family, textCharacters, text.nacharacters);
55
55
  }
56
56
  };
57
57
  EShapeRenderer.prototype.updateAtlases = function (shapes, atlas, fontAtlases, defaultTexture, baseTexture) {
@@ -1 +1 @@
1
- {"version":3,"file":"e-shape-renderer.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/shape/e-shape-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n\tBaseTexture,\n\tBLEND_MODES,\n\tObjectRenderer,\n\tRenderer,\n\tShader,\n\tTexture,\n\tutils\n} from \"pixi.js\";\nimport { DynamicAtlas } from \"../util/dynamic-atlas\";\nimport { DynamicAtlasItemImage } from \"../util/dynamic-atlas-item-image\";\nimport { DynamicSDFFontAtlases } from \"../util/dynamic-sdf-font-atlases\";\nimport { EShape } from \"./e-shape\";\nimport { EShapeBuffer } from \"./e-shape-buffer\";\nimport { EShapeContainer } from \"./e-shape-container\";\nimport { EShapeRendererIterator } from \"./e-shape-renderer-iterator\";\n\nconst VERTEX_SHADER = `\nattribute highp vec2 aPosition;\nattribute highp vec2 aStepA;\nattribute highp vec4 aStepB;\nattribute highp vec3 aColor;\nattribute highp vec2 aUv;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mediump float shapeScale;\nuniform mediump float antialiasWeight;\n\nvarying mediump float vType;\nvarying mediump vec2 vStepA;\nvarying mediump vec4 vStepB;\nvarying mediump vec4 vColorFill;\nvarying mediump vec4 vColorStroke;\nvarying mediump vec2 vUv;\n\nvec2 toInverse(in vec2 v) {\n\treturn vec2(-v.y, v.x);\n}\n\nvec4 toGeneral(in float v) {\n\tvec4 c = vec4(1.0, 1.0/64.0, 1.0/64.0/64.0, 1.0/64.0/64.0/64.0) * v;\n\tc -= fract(c);\n\tc -= c.yzwx * vec4(64.0, 64.0, 64.0, 0.0);\n\treturn c;\n}\n\nfloat toStrokeWidthScale(in float scale) {\n\treturn (\n\t\tscale == 3.0 || scale == 7.0 ?\n\t\tshapeScale : (\n\t\t\tscale == 1.0 || scale == 5.0 ?\n\t\t\tmin(1.0, shapeScale) : (\n\t\t\t\tscale == 2.0 || scale == 6.0 ?\n\t\t\t\tmax(1.0, shapeScale) : 1.0\n\t\t\t)\n\t\t)\n\t);\n}\n\nvec2 toUnpackedF2x1024(in float v) {\n\tvec2 c = vec2(1.0, 1.0/1024.0) * v;\n\tc -= fract(c);\n\tc -= c.yx * vec2(1024.0, 0.0);\n\tc /= vec2(1023.0, 1023.0);\n\treturn c;\n}\n\nvec3 toUnpackedF3x256(in float v) {\n\tvec3 c = vec3(1.0, 1.0/256.0, 1.0/256.0/256.0) * v;\n\tc -= fract(c);\n\tc -= c.yzx * vec3(256.0, 256.0, 0.0);\n\tc /= 255.0;\n\treturn c;\n}\n\nvec2 toPosition012(in vec2 v) {\n\treturn (projectionMatrix * translationMatrix * vec3(v, 1.0)).xy;\n}\n\nvec4 toStepB01(in vec4 sb) {\n\treturn vec4(sb.xy, toUnpackedF2x1024(sb.z));\n}\n\nvec4 toStepB2(in vec4 sb, in float strokeWidth) {\n\tfloat x = min(0.4, 0.4 / 12.0 * sb.x * antialiasWeight);\n\tfloat w = clamp(strokeWidth, 0.0, 1.0) * 0.4;\n\tfloat p = w * sb.y + sb.z;\n\tfloat y = 0.5 - p;\n\tfloat z = 0.5 - p - w;\n\treturn vec4(y, z, y - max(0.01, y - x), z - max(0.01, z - x));\n}\n\nvec2 toPosition3(in float type, in vec2 p, in float npacked, in float length, in float strokeWidth, out float shift) {\n\tvec3 t = vec3(1.0, 1.0/1024.0, 1.0/1024.0/1024.0) * npacked;\n\tt -= fract(t);\n\tt -= t.yzx * vec3(1024.0, 1024.0, 0.0);\n\tt *= vec3(1.0/511.5, 1.0/511.5, 1.0);\n\tt -= vec3(1.0, 1.0, 0.0);\n\tvec2 n0 = vec2(t.x, ((0.5 < t.z && t.z < 1.5) || 2.5 < t.z ? +1.0 : -1.0) * sqrt(max(0.0, 1.0 - t.x * t.x)));\n\tvec2 n1 = vec2(t.y, (1.5 < t.z ? +1.0 : -1.0) * sqrt(max(0.0, 1.0 - t.y * t.y)));\n\n\tvec2 n0i = toInverse(n0);\n\tvec2 n1i = toInverse(n1);\n\tfloat direction = sign(4.5 - type);\n\n\t// Offset\n\tfloat cross = dot(n0i, n1);\n\tbool bcross = 0.00001 < abs(cross);\n\tfloat crossi = (bcross ? 1.0 / cross : 0.0);\n\tfloat b = dot(n1 - n0, n0) * crossi;\n\tfloat offsetSize = direction * strokeWidth * 0.5;\n\tvec2 offset = n1 + n1i * b;\n\n\t// Miter\n\tvec2 pmiter = p + offsetSize * offset;\n\tfloat miterAngle0 = dot( n0i, offsetSize * offset - length * n0i );\n\tfloat miterAngle1 = dot( n1i, offsetSize * offset + length * n1i );\n\tfloat miterLength = dot( offset, offset );\n\tfloat miterSide = direction * cross;\n\n\t// Bevel\n\tvec2 n = (type == 4.0 || type == 6.0 ? n1 : n0);\n\tvec2 pbevel = p + offsetSize * n;\n\n\t//\n\tvec2 presult = (\n\t\t0.0 <= miterSide ?\n\t\t(miterAngle0 < 0.0 && 0.0 <= miterAngle1 && bcross ? pmiter : pbevel) :\n\t\t(miterLength < 6.0 && bcross ? pmiter : pbevel)\n\t);\n\tvec2 ni = (type == 4.0 || type == 6.0 ? n1i : n0i);\n\tshift = dot(ni, p - presult);\n\treturn toPosition012(presult);\n}\n\nvec2 toStepA3(in float type, in float strokeWidth) {\n\treturn vec2(type < 4.5 ? 1.0 : 0.0, strokeWidth);\n}\n\nvec4 toStepB3(in float shift, in float dash, in float strokeScaling, in float strokeWidthScale) {\n\tfloat l = aStepB.y + shift;\n\tfloat s = aStepA.x * (\n\t\tstrokeScaling == 4.0 || strokeScaling == 5.0 ||\n\t\tstrokeScaling == 6.0 || strokeScaling == 7.0 ?\n\t\tstrokeWidthScale : 1.0\n\t);\n\tfloat lt = aStepB.z;\n\treturn (dash < 0.5 ?\n\t\tvec4(l, 2.0 * abs(lt), 0.0, lt) :\n\t\t(dash < 3.5 ?\n\t\t\t(dash < 1.5 ?\n\t\t\t\tvec4(l, s, s, lt) :\n\t\t\t\t(2.5 < dash ?\n\t\t\t\t\tvec4(l, s, 2.0 * s, lt) :\n\t\t\t\t\tvec4(l, s, 0.5 * s, lt)\n\t\t\t\t)\n\t\t\t) :\n\t\t\t(dash < 4.5 ?\n\t\t\t\tvec4(l, 2.0 * s, s, lt) :\n\t\t\t\t(5.5 < dash ?\n\t\t\t\t\tvec4(l, 2.0 * s, 2.0 * s, lt) :\n\t\t\t\t\tvec4(l, 2.0 * s, 0.5 * s, lt)\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t);\n}\n\nvoid toColors(in vec3 source, out vec4 fillColor, out vec4 strokeColor) {\n\tvec2 a = toUnpackedF2x1024(source.z);\n\tfillColor.xyz = toUnpackedF3x256(source.x).zyx * a.x;\n\tfillColor.w = a.x;\n\tstrokeColor.xyz = toUnpackedF3x256(source.y).zyx * a.y;\n\tstrokeColor.w = a.y;\n}\n\nvoid main(void) {\n\tvec4 general = toGeneral(aStepA.y);\n\tfloat type = general.x;\n\tfloat strokeScaling = general.y;\n\tfloat strokeWidthScale = toStrokeWidthScale(strokeScaling);\n\tfloat strokeWidth = strokeWidthScale * aStepA.x;\n\n\t// Type 0, 1\n\tvec2 p012 = toPosition012(aPosition);\n\tvec2 sa012 = strokeWidth * general.zw;\n\tvec4 sb01 = toStepB01(aStepB);\n\n\t// Type 2\n\tvec4 sb2 = toStepB2(aStepB, strokeWidth);\n\n\t// Type 3 ~ 6\n\tfloat shift3 = 0.0;\n\tvec2 p3 = toPosition3(type, aPosition, aStepB.x, aStepB.w, strokeWidth, shift3);\n\tvec2 sa3 = toStepA3(type, strokeWidth);\n\tvec4 sb3 = toStepB3(shift3, general.z, strokeScaling, strokeWidthScale);\n\n\t//\n\tgl_Position = vec4((2.5 < type ? p3 : p012), 0.0, 1.0);\n\tvType = type;\n\tvStepA = (2.5 < type ? sa3 : sa012);\n\tvStepB = (1.5 < type ? (2.5 < type ? sb3 : sb2) : sb01);\n\ttoColors(aColor, vColorFill, vColorStroke);\n\tvUv = aUv;\n}`;\n\nconst FRAGMENT_SHADER = `\nvarying mediump float vType;\nvarying mediump vec2 vStepA;\nvarying mediump vec4 vStepB;\nvarying mediump vec4 vColorFill;\nvarying mediump vec4 vColorStroke;\nvarying mediump vec2 vUv;\n\nuniform sampler2D sampler;\nuniform mediump float antialiasWeight;\n\nvec4 toColor0(in vec4 texture) {\n\tvec2 d = vStepB.xy;\n\tvec2 c = vStepB.zw;\n\tvec2 awd = antialiasWeight / d;\n\tvec2 swd = vStepA / d;\n\tvec2 one = vec2(1.0);\n\tvec2 zero = vec2(0.0);\n\tvec2 p0 = clamp(one - awd, zero, one);\n\tvec2 p1 = clamp(one - swd, zero, one);\n\tvec2 p2 = clamp(one - swd - awd, zero, one);\n\tvec2 s0 = smoothstep(p0, one, c);\n\tvec2 s1 = smoothstep(p2, p1, c);\n\tfloat s2 = max(s0.x, s0.y);\n\tfloat s3 = max(s1.x, s1.y);\n\treturn texture * (\n\t\tvColorStroke * (s3 - s2) +\n\t\tvColorFill * (1.0 - s3)\n\t);\n}\n\nvec4 toColor1(in vec4 texture) {\n\tvec2 d = vStepB.xy;\n\tvec2 c = vStepB.zw;\n\tvec2 awd = antialiasWeight / d;\n\tvec2 swd = vStepA / d;\n\tvec2 one = vec2(1.0);\n\tvec2 zero = vec2(0.0);\n\tfloat s0 = smoothstep(length(c), length(c/clamp(one - awd, zero, one)), 1.0);\n\tfloat s1 = smoothstep(length(c/clamp(one - swd, zero, one)), length(c/clamp(one - swd - awd, zero, one)), 1.0);\n\treturn texture * (\n\t\tvColorStroke * (s0 - s1) +\n\t\tvColorFill * s1\n\t);\n}\n\nvec4 toColor2(in vec4 texture) {\n\tvec2 p0 = vStepB.xy;\n\tvec2 p1 = vStepB.zw;\n\tvec2 d = vec2(dot(texture, vec4(1.0, 1.0/255.0, 1.0/255.0/255.0, 0.0)));\n\tvec2 s = smoothstep(p0 - p1, p0 + p1, d);\n\treturn vColorStroke * (s.y - s.x) + vColorFill * s.x;\n}\n\nvec4 toColor3(in vec4 texture) {\n\tfloat l = vStepB.x;\n\tfloat lp0 = vStepB.y;\n\tfloat lp1 = vStepB.z;\n\tfloat lt = vStepB.w;\n\tfloat ld = antialiasWeight;\n\tfloat lm = mod(l, lp0 + lp1);\n\tfloat ls0 = (0.0 < lp1 ? smoothstep(0.0, ld, lm) - smoothstep(lp0, lp0 + ld, lm) : 1.0);\n\tfloat ls1 = (0.0 <= lt ? smoothstep(0.0, ld, l) - smoothstep(lt - ld, lt, l) : 1.0);\n\n\tfloat c = vStepA.x;\n\tfloat awd = antialiasWeight / vStepA.y;\n\tfloat p0 = clamp(awd, 0.0, 1.0);\n\tfloat p1 = clamp(1.0 - awd, 0.0, 1.0);\n\tfloat s0 = smoothstep(0.0, p0, c);\n\tfloat s1 = smoothstep(p1, 1.0, c);\n\treturn texture * vColorStroke * (s0 - s1) * ls0 * ls1;\n}\n\nvoid main(void) {\n\tvec4 texture = texture2D(sampler, vUv);\n\tgl_FragColor = (vType < 1.5 ?\n\t\t(vType < 0.5 ?\n\t\t\ttoColor0(texture) :\n\t\t\ttoColor1(texture)\n\t\t) :\n\t\t(vType < 2.5 ?\n\t\t\ttoColor2(texture) :\n\t\t\ttoColor3(texture)\n\t\t)\n\t);\n}`;\n\nexport class EShapeRenderer extends ObjectRenderer {\n\tstatic SHADER: Shader | null = null;\n\n\tprotected _shader: Shader | null;\n\tprotected _iterator: EShapeRendererIterator;\n\tprotected _bufferSizeMax: number;\n\n\tconstructor(renderer: Renderer) {\n\t\tsuper(renderer);\n\t\tEShapeRenderer.SHADER =\n\t\t\tEShapeRenderer.SHADER || Shader.from(VERTEX_SHADER, FRAGMENT_SHADER);\n\t\tthis._shader = EShapeRenderer.SHADER;\n\t\tthis._iterator = new EShapeRendererIterator();\n\t\tthis._bufferSizeMax = this.getBufferSizeMax(renderer);\n\t}\n\n\tprotected getBufferSizeMax(renderer: Renderer): number {\n\t\tconst context = renderer.context;\n\t\tconst extensions = context.extensions as any;\n\t\tif (1 < context.webGLVersion || !!extensions.uint32ElementIndex) {\n\t\t\treturn 1431655765; // 2^32 / 3\n\t\t}\n\t\treturn 21845; // 2^16 / 3\n\t}\n\n\tupdateAtlas(\n\t\tshape: EShape,\n\t\tatlas: DynamicAtlas,\n\t\tfontAtlases: DynamicSDFFontAtlases,\n\t\tdefaultTexture: Texture,\n\t\tbaseTexture: BaseTexture\n\t): void {\n\t\t// Texture\n\t\t// Do not access the shape.image.source here.\n\t\t// It slows down the rendering speed significantly.\n\t\tconst image = shape.image;\n\t\tif (image != null) {\n\t\t\tconst textureItem = atlas.get(image.url);\n\t\t\tif (textureItem != null) {\n\t\t\t\tshape.texture = textureItem.texture;\n\t\t\t} else {\n\t\t\t\tconst newTextureItem = new DynamicAtlasItemImage(\n\t\t\t\t\timage.url,\n\t\t\t\t\timage.width,\n\t\t\t\t\timage.height,\n\t\t\t\t\timage.source,\n\t\t\t\t\tbaseTexture\n\t\t\t\t);\n\t\t\t\tshape.texture = newTextureItem.texture;\n\t\t\t\tatlas.set(newTextureItem.id, newTextureItem);\n\t\t\t}\n\t\t} else {\n\t\t\tshape.texture = defaultTexture;\n\t\t}\n\n\t\t// Font texture atlas\n\t\tconst text = shape.text;\n\t\tconst textValue = text.value;\n\t\tif (0 < textValue.length) {\n\t\t\tfontAtlases.add(text.family, textValue);\n\t\t}\n\t}\n\n\tupdateAtlases(\n\t\tshapes: EShape[],\n\t\tatlas: DynamicAtlas,\n\t\tfontAtlases: DynamicSDFFontAtlases,\n\t\tdefaultTexture: Texture,\n\t\tbaseTexture: BaseTexture\n\t): void {\n\t\tfor (let i = 0, imax = shapes.length; i < imax; ++i) {\n\t\t\tconst shape = shapes[i];\n\t\t\tthis.updateAtlas(shape, atlas, fontAtlases, defaultTexture, baseTexture);\n\t\t\tconst children = shape.children;\n\t\t\tfor (let j = 0, jmax = children.length; j < jmax; ++j) {\n\t\t\t\tconst child = children[j];\n\t\t\t\tthis.updateAtlas(child, atlas, fontAtlases, defaultTexture, baseTexture);\n\t\t\t\tthis.updateAtlases(child.children, atlas, fontAtlases, defaultTexture, baseTexture);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateFontAtlas(\n\t\tshape: EShape,\n\t\tatlas: DynamicAtlas,\n\t\tfontAtlases: DynamicSDFFontAtlases,\n\t\tdefaultTexture: Texture\n\t): void {\n\t\tconst text = shape.text;\n\t\tconst fontAtlas = fontAtlases.get(text.family);\n\t\tif (fontAtlas != null) {\n\t\t\tconst textureItem = atlas.get(fontAtlas.id);\n\t\t\tif (textureItem != null) {\n\t\t\t\ttext.atlas = fontAtlas;\n\t\t\t\ttext.texture = textureItem.texture;\n\t\t\t} else {\n\t\t\t\ttext.atlas = undefined;\n\t\t\t\ttext.texture = defaultTexture;\n\t\t\t}\n\t\t} else {\n\t\t\ttext.atlas = undefined;\n\t\t\ttext.texture = defaultTexture;\n\t\t}\n\t}\n\n\tupdateFontAtlases(\n\t\tshapes: EShape[],\n\t\tatlas: DynamicAtlas,\n\t\tfontAtlases: DynamicSDFFontAtlases,\n\t\tdefaultTexture: Texture\n\t): void {\n\t\tfor (let i = 0, imax = shapes.length; i < imax; ++i) {\n\t\t\tconst shape = shapes[i];\n\t\t\tthis.updateFontAtlas(shape, atlas, fontAtlases, defaultTexture);\n\t\t\tconst children = shape.children;\n\t\t\tfor (let j = 0, jmax = children.length; j < jmax; ++j) {\n\t\t\t\tconst child = children[j];\n\t\t\t\tthis.updateFontAtlas(child, atlas, fontAtlases, defaultTexture);\n\t\t\t\tthis.updateFontAtlases(child.children, atlas, fontAtlases, defaultTexture);\n\t\t\t}\n\t\t}\n\t}\n\n\trender_(\n\t\tcontainer: EShapeContainer,\n\t\tshape: EShape | null,\n\t\tshapes: EShape[],\n\t\tisDirty: boolean\n\t): void {\n\t\tconst renderer = this.renderer;\n\t\tconst shader = this._shader;\n\n\t\tif (shader != null && (shape != null || 0 < shapes.length)) {\n\t\t\tconst resolution = renderer.resolution;\n\t\t\tconst buffers = container.getBuffers();\n\t\t\tconst antialiasWeight = container.toAntialiasWeight(resolution);\n\n\t\t\t// Update textures\n\t\t\tif (isDirty) {\n\t\t\t\t// Atlases\n\t\t\t\tconst atlas = container.getAtlas(resolution);\n\t\t\t\tconst fontAtlases = container.getFontAtlases();\n\t\t\t\tatlas.begin();\n\t\t\t\tfontAtlases.begin();\n\t\t\t\tconst defaultTexture = atlas.getDefaultTexture();\n\t\t\t\tconst baseTexture: BaseTexture = atlas.getBaseTexture();\n\t\t\t\tthis.updateAtlases(shapes, atlas, fontAtlases, defaultTexture, baseTexture);\n\t\t\t\tfontAtlases.end();\n\t\t\t\tfontAtlases.update(atlas);\n\t\t\t\tthis.updateFontAtlases(shapes, atlas, fontAtlases, defaultTexture);\n\t\t\t\tatlas.end();\n\t\t\t\tatlas.repack();\n\n\t\t\t\t// Update buffers\n\t\t\t\tthis.updateBuffers(shape, shapes, buffers, renderer, antialiasWeight);\n\t\t\t}\n\n\t\t\t// Render buffers\n\t\t\tshader.uniforms.shapeScale = container.toShapeScale();\n\t\t\tshader.uniforms.antialiasWeight = container.toPixelScale(resolution) * antialiasWeight;\n\t\t\tshader.uniforms.translationMatrix = container.worldTransform.toArray(true);\n\t\t\trenderer.shader.bind(shader, false);\n\t\t\trenderer.state.setBlendMode(utils.correctBlendMode(BLEND_MODES.NORMAL, true));\n\t\t\tconst buffersLength = buffers.length;\n\t\t\tif (1 < buffersLength) {\n\t\t\t\tfor (let i = 0; i < buffersLength; ++i) {\n\t\t\t\t\tbuffers[i].upload();\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let i = 0; i < buffersLength; ++i) {\n\t\t\t\tbuffers[i].render(shader);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateBuffers(\n\t\tshape: EShape | null,\n\t\tshapes: EShape[],\n\t\tbuffers: EShapeBuffer[],\n\t\trenderer: Renderer,\n\t\tantialiasWeight: number\n\t): void {\n\t\tconst iterator = this._iterator;\n\t\titerator.reset(shape, shapes);\n\n\t\tlet ib = 0;\n\t\tlet bufferSize = 0;\n\t\tconst bufferSizeBase = 5000;\n\t\tconst bufferSizeMax = this._bufferSizeMax;\n\t\twhile (iterator.get() != null) {\n\t\t\tlet buffer: EShapeBuffer | null = null;\n\t\t\tlet noMoreThanOne = false;\n\t\t\tif (0 < bufferSize) {\n\t\t\t\tbuffer = new EShapeBuffer(bufferSize, renderer);\n\t\t\t\tbuffers.splice(ib, 0, buffer);\n\t\t\t\tnoMoreThanOne = true;\n\t\t\t} else if (ib < buffers.length) {\n\t\t\t\tbuffer = buffers[ib];\n\t\t\t\tnoMoreThanOne = false;\n\t\t\t} else {\n\t\t\t\tbuffer = new EShapeBuffer(bufferSizeBase, renderer);\n\t\t\t\tbuffers.push(buffer);\n\t\t\t\tnoMoreThanOne = false;\n\t\t\t}\n\t\t\tif (buffer.update(iterator, antialiasWeight, noMoreThanOne)) {\n\t\t\t\tbufferSize = 0;\n\t\t\t\tib += 1;\n\t\t\t} else {\n\t\t\t\tbufferSize = buffer.indexCountRequested;\n\t\t\t\tif (bufferSize <= bufferSizeMax) {\n\t\t\t\t\tbufferSize = Math.ceil(bufferSize / bufferSizeBase) * bufferSizeBase;\n\t\t\t\t\tbufferSize = Math.min(bufferSize, bufferSizeMax);\n\t\t\t\t} else {\n\t\t\t\t\t// No way to render\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (ib < buffers.length) {\n\t\t\tfor (let jb = ib, ibmax = buffers.length; jb < ibmax; ++jb) {\n\t\t\t\tbuffers[jb].destroy();\n\t\t\t}\n\t\t\tbuffers.length = ib;\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"e-shape-renderer.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/shape/e-shape-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n\tBaseTexture,\n\tBLEND_MODES,\n\tObjectRenderer,\n\tRenderer,\n\tShader,\n\tTexture,\n\tutils\n} from \"pixi.js\";\nimport { DynamicAtlas } from \"../util/dynamic-atlas\";\nimport { DynamicAtlasItemImage } from \"../util/dynamic-atlas-item-image\";\nimport { DynamicSDFFontAtlases } from \"../util/dynamic-sdf-font-atlases\";\nimport { EShape } from \"./e-shape\";\nimport { EShapeBuffer } from \"./e-shape-buffer\";\nimport { EShapeContainer } from \"./e-shape-container\";\nimport { EShapeRendererIterator } from \"./e-shape-renderer-iterator\";\n\nconst VERTEX_SHADER = `\nattribute highp vec2 aPosition;\nattribute highp vec2 aStepA;\nattribute highp vec4 aStepB;\nattribute highp vec3 aColor;\nattribute highp vec2 aUv;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mediump float shapeScale;\nuniform mediump float antialiasWeight;\n\nvarying mediump float vType;\nvarying mediump vec2 vStepA;\nvarying mediump vec4 vStepB;\nvarying mediump vec4 vColorFill;\nvarying mediump vec4 vColorStroke;\nvarying mediump vec2 vUv;\n\nvec2 toInverse(in vec2 v) {\n\treturn vec2(-v.y, v.x);\n}\n\nvec4 toGeneral(in float v) {\n\tvec4 c = vec4(1.0, 1.0/64.0, 1.0/64.0/64.0, 1.0/64.0/64.0/64.0) * v;\n\tc -= fract(c);\n\tc -= c.yzwx * vec4(64.0, 64.0, 64.0, 0.0);\n\treturn c;\n}\n\nfloat toStrokeWidthScale(in float scale) {\n\treturn (\n\t\tscale == 3.0 || scale == 7.0 ?\n\t\tshapeScale : (\n\t\t\tscale == 1.0 || scale == 5.0 ?\n\t\t\tmin(1.0, shapeScale) : (\n\t\t\t\tscale == 2.0 || scale == 6.0 ?\n\t\t\t\tmax(1.0, shapeScale) : 1.0\n\t\t\t)\n\t\t)\n\t);\n}\n\nvec2 toUnpackedF2x1024(in float v) {\n\tvec2 c = vec2(1.0, 1.0/1024.0) * v;\n\tc -= fract(c);\n\tc -= c.yx * vec2(1024.0, 0.0);\n\tc /= vec2(1023.0, 1023.0);\n\treturn c;\n}\n\nvec3 toUnpackedF3x256(in float v) {\n\tvec3 c = vec3(1.0, 1.0/256.0, 1.0/256.0/256.0) * v;\n\tc -= fract(c);\n\tc -= c.yzx * vec3(256.0, 256.0, 0.0);\n\tc /= 255.0;\n\treturn c;\n}\n\nvec2 toPosition012(in vec2 v) {\n\treturn (projectionMatrix * translationMatrix * vec3(v, 1.0)).xy;\n}\n\nvec4 toStepB01(in vec4 sb) {\n\treturn vec4(sb.xy, toUnpackedF2x1024(sb.z));\n}\n\nvec4 toStepB2(in vec4 sb, in float strokeWidth) {\n\tfloat x = min(0.4, 0.4 / 12.0 * sb.x * antialiasWeight);\n\tfloat w = clamp(strokeWidth, 0.0, 1.0) * 0.4;\n\tfloat p = w * sb.y + sb.z;\n\tfloat y = 0.5 - p;\n\tfloat z = 0.5 - p - w;\n\treturn vec4(y, z, y - max(0.01, y - x), z - max(0.01, z - x));\n}\n\nvec2 toPosition3(in float type, in vec2 p, in float npacked, in float length, in float strokeWidth, out float shift) {\n\tvec3 t = vec3(1.0, 1.0/1024.0, 1.0/1024.0/1024.0) * npacked;\n\tt -= fract(t);\n\tt -= t.yzx * vec3(1024.0, 1024.0, 0.0);\n\tt *= vec3(1.0/511.5, 1.0/511.5, 1.0);\n\tt -= vec3(1.0, 1.0, 0.0);\n\tvec2 n0 = vec2(t.x, ((0.5 < t.z && t.z < 1.5) || 2.5 < t.z ? +1.0 : -1.0) * sqrt(max(0.0, 1.0 - t.x * t.x)));\n\tvec2 n1 = vec2(t.y, (1.5 < t.z ? +1.0 : -1.0) * sqrt(max(0.0, 1.0 - t.y * t.y)));\n\n\tvec2 n0i = toInverse(n0);\n\tvec2 n1i = toInverse(n1);\n\tfloat direction = sign(4.5 - type);\n\n\t// Offset\n\tfloat cross = dot(n0i, n1);\n\tbool bcross = 0.00001 < abs(cross);\n\tfloat crossi = (bcross ? 1.0 / cross : 0.0);\n\tfloat b = dot(n1 - n0, n0) * crossi;\n\tfloat offsetSize = direction * strokeWidth * 0.5;\n\tvec2 offset = n1 + n1i * b;\n\n\t// Miter\n\tvec2 pmiter = p + offsetSize * offset;\n\tfloat miterAngle0 = dot( n0i, offsetSize * offset - length * n0i );\n\tfloat miterAngle1 = dot( n1i, offsetSize * offset + length * n1i );\n\tfloat miterLength = dot( offset, offset );\n\tfloat miterSide = direction * cross;\n\n\t// Bevel\n\tvec2 n = (type == 4.0 || type == 6.0 ? n1 : n0);\n\tvec2 pbevel = p + offsetSize * n;\n\n\t//\n\tvec2 presult = (\n\t\t0.0 <= miterSide ?\n\t\t(miterAngle0 < 0.0 && 0.0 <= miterAngle1 && bcross ? pmiter : pbevel) :\n\t\t(miterLength < 6.0 && bcross ? pmiter : pbevel)\n\t);\n\tvec2 ni = (type == 4.0 || type == 6.0 ? n1i : n0i);\n\tshift = dot(ni, p - presult);\n\treturn toPosition012(presult);\n}\n\nvec2 toStepA3(in float type, in float strokeWidth) {\n\treturn vec2(type < 4.5 ? 1.0 : 0.0, strokeWidth);\n}\n\nvec4 toStepB3(in float shift, in float dash, in float strokeScaling, in float strokeWidthScale) {\n\tfloat l = aStepB.y + shift;\n\tfloat s = aStepA.x * (\n\t\tstrokeScaling == 4.0 || strokeScaling == 5.0 ||\n\t\tstrokeScaling == 6.0 || strokeScaling == 7.0 ?\n\t\tstrokeWidthScale : 1.0\n\t);\n\tfloat lt = aStepB.z;\n\treturn (dash < 0.5 ?\n\t\tvec4(l, 2.0 * abs(lt), 0.0, lt) :\n\t\t(dash < 3.5 ?\n\t\t\t(dash < 1.5 ?\n\t\t\t\tvec4(l, s, s, lt) :\n\t\t\t\t(2.5 < dash ?\n\t\t\t\t\tvec4(l, s, 2.0 * s, lt) :\n\t\t\t\t\tvec4(l, s, 0.5 * s, lt)\n\t\t\t\t)\n\t\t\t) :\n\t\t\t(dash < 4.5 ?\n\t\t\t\tvec4(l, 2.0 * s, s, lt) :\n\t\t\t\t(5.5 < dash ?\n\t\t\t\t\tvec4(l, 2.0 * s, 2.0 * s, lt) :\n\t\t\t\t\tvec4(l, 2.0 * s, 0.5 * s, lt)\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t);\n}\n\nvoid toColors(in vec3 source, out vec4 fillColor, out vec4 strokeColor) {\n\tvec2 a = toUnpackedF2x1024(source.z);\n\tfillColor.xyz = toUnpackedF3x256(source.x).zyx * a.x;\n\tfillColor.w = a.x;\n\tstrokeColor.xyz = toUnpackedF3x256(source.y).zyx * a.y;\n\tstrokeColor.w = a.y;\n}\n\nvoid main(void) {\n\tvec4 general = toGeneral(aStepA.y);\n\tfloat type = general.x;\n\tfloat strokeScaling = general.y;\n\tfloat strokeWidthScale = toStrokeWidthScale(strokeScaling);\n\tfloat strokeWidth = strokeWidthScale * aStepA.x;\n\n\t// Type 0, 1\n\tvec2 p012 = toPosition012(aPosition);\n\tvec2 sa012 = strokeWidth * general.zw;\n\tvec4 sb01 = toStepB01(aStepB);\n\n\t// Type 2\n\tvec4 sb2 = toStepB2(aStepB, strokeWidth);\n\n\t// Type 3 ~ 6\n\tfloat shift3 = 0.0;\n\tvec2 p3 = toPosition3(type, aPosition, aStepB.x, aStepB.w, strokeWidth, shift3);\n\tvec2 sa3 = toStepA3(type, strokeWidth);\n\tvec4 sb3 = toStepB3(shift3, general.z, strokeScaling, strokeWidthScale);\n\n\t//\n\tgl_Position = vec4((2.5 < type ? p3 : p012), 0.0, 1.0);\n\tvType = type;\n\tvStepA = (2.5 < type ? sa3 : sa012);\n\tvStepB = (1.5 < type ? (2.5 < type ? sb3 : sb2) : sb01);\n\ttoColors(aColor, vColorFill, vColorStroke);\n\tvUv = aUv;\n}`;\n\nconst FRAGMENT_SHADER = `\nvarying mediump float vType;\nvarying mediump vec2 vStepA;\nvarying mediump vec4 vStepB;\nvarying mediump vec4 vColorFill;\nvarying mediump vec4 vColorStroke;\nvarying mediump vec2 vUv;\n\nuniform sampler2D sampler;\nuniform mediump float antialiasWeight;\n\nvec4 toColor0(in vec4 texture) {\n\tvec2 d = vStepB.xy;\n\tvec2 c = vStepB.zw;\n\tvec2 awd = antialiasWeight / d;\n\tvec2 swd = vStepA / d;\n\tvec2 one = vec2(1.0);\n\tvec2 zero = vec2(0.0);\n\tvec2 p0 = clamp(one - awd, zero, one);\n\tvec2 p1 = clamp(one - swd, zero, one);\n\tvec2 p2 = clamp(one - swd - awd, zero, one);\n\tvec2 s0 = smoothstep(p0, one, c);\n\tvec2 s1 = smoothstep(p2, p1, c);\n\tfloat s2 = max(s0.x, s0.y);\n\tfloat s3 = max(s1.x, s1.y);\n\treturn texture * (\n\t\tvColorStroke * (s3 - s2) +\n\t\tvColorFill * (1.0 - s3)\n\t);\n}\n\nvec4 toColor1(in vec4 texture) {\n\tvec2 d = vStepB.xy;\n\tvec2 c = vStepB.zw;\n\tvec2 awd = antialiasWeight / d;\n\tvec2 swd = vStepA / d;\n\tvec2 one = vec2(1.0);\n\tvec2 zero = vec2(0.0);\n\tfloat s0 = smoothstep(length(c), length(c/clamp(one - awd, zero, one)), 1.0);\n\tfloat s1 = smoothstep(length(c/clamp(one - swd, zero, one)), length(c/clamp(one - swd - awd, zero, one)), 1.0);\n\treturn texture * (\n\t\tvColorStroke * (s0 - s1) +\n\t\tvColorFill * s1\n\t);\n}\n\nvec4 toColor2(in vec4 texture) {\n\tvec2 p0 = vStepB.xy;\n\tvec2 p1 = vStepB.zw;\n\tvec2 d = vec2(dot(texture, vec4(1.0, 1.0/255.0, 1.0/255.0/255.0, 0.0)));\n\tvec2 s = smoothstep(p0 - p1, p0 + p1, d);\n\treturn vColorStroke * (s.y - s.x) + vColorFill * s.x;\n}\n\nvec4 toColor3(in vec4 texture) {\n\tfloat l = vStepB.x;\n\tfloat lp0 = vStepB.y;\n\tfloat lp1 = vStepB.z;\n\tfloat lt = vStepB.w;\n\tfloat ld = antialiasWeight;\n\tfloat lm = mod(l, lp0 + lp1);\n\tfloat ls0 = (0.0 < lp1 ? smoothstep(0.0, ld, lm) - smoothstep(lp0, lp0 + ld, lm) : 1.0);\n\tfloat ls1 = (0.0 <= lt ? smoothstep(0.0, ld, l) - smoothstep(lt - ld, lt, l) : 1.0);\n\n\tfloat c = vStepA.x;\n\tfloat awd = antialiasWeight / vStepA.y;\n\tfloat p0 = clamp(awd, 0.0, 1.0);\n\tfloat p1 = clamp(1.0 - awd, 0.0, 1.0);\n\tfloat s0 = smoothstep(0.0, p0, c);\n\tfloat s1 = smoothstep(p1, 1.0, c);\n\treturn texture * vColorStroke * (s0 - s1) * ls0 * ls1;\n}\n\nvoid main(void) {\n\tvec4 texture = texture2D(sampler, vUv);\n\tgl_FragColor = (vType < 1.5 ?\n\t\t(vType < 0.5 ?\n\t\t\ttoColor0(texture) :\n\t\t\ttoColor1(texture)\n\t\t) :\n\t\t(vType < 2.5 ?\n\t\t\ttoColor2(texture) :\n\t\t\ttoColor3(texture)\n\t\t)\n\t);\n}`;\n\nexport class EShapeRenderer extends ObjectRenderer {\n\tstatic SHADER: Shader | null = null;\n\n\tprotected _shader: Shader | null;\n\tprotected _iterator: EShapeRendererIterator;\n\tprotected _bufferSizeMax: number;\n\n\tconstructor(renderer: Renderer) {\n\t\tsuper(renderer);\n\t\tEShapeRenderer.SHADER =\n\t\t\tEShapeRenderer.SHADER || Shader.from(VERTEX_SHADER, FRAGMENT_SHADER);\n\t\tthis._shader = EShapeRenderer.SHADER;\n\t\tthis._iterator = new EShapeRendererIterator();\n\t\tthis._bufferSizeMax = this.getBufferSizeMax(renderer);\n\t}\n\n\tprotected getBufferSizeMax(renderer: Renderer): number {\n\t\tconst context = renderer.context;\n\t\tconst extensions = context.extensions as any;\n\t\tif (1 < context.webGLVersion || !!extensions.uint32ElementIndex) {\n\t\t\treturn 1431655765; // 2^32 / 3\n\t\t}\n\t\treturn 21845; // 2^16 / 3\n\t}\n\n\tupdateAtlas(\n\t\tshape: EShape,\n\t\tatlas: DynamicAtlas,\n\t\tfontAtlases: DynamicSDFFontAtlases,\n\t\tdefaultTexture: Texture,\n\t\tbaseTexture: BaseTexture\n\t): void {\n\t\t// Texture\n\t\t// Do not access the shape.image.source here.\n\t\t// It slows down the rendering speed significantly.\n\t\tconst image = shape.image;\n\t\tif (image != null) {\n\t\t\tconst textureItem = atlas.get(image.url);\n\t\t\tif (textureItem != null) {\n\t\t\t\tshape.texture = textureItem.texture;\n\t\t\t} else {\n\t\t\t\tconst newTextureItem = new DynamicAtlasItemImage(\n\t\t\t\t\timage.url,\n\t\t\t\t\timage.width,\n\t\t\t\t\timage.height,\n\t\t\t\t\timage.source,\n\t\t\t\t\tbaseTexture\n\t\t\t\t);\n\t\t\t\tshape.texture = newTextureItem.texture;\n\t\t\t\tatlas.set(newTextureItem.id, newTextureItem);\n\t\t\t}\n\t\t} else {\n\t\t\tshape.texture = defaultTexture;\n\t\t}\n\n\t\t// Font texture atlas\n\t\tconst text = shape.text;\n\t\tconst textCharacters = text.characters;\n\t\tif (0 < textCharacters.length) {\n\t\t\tfontAtlases.add(text.family, textCharacters, text.nacharacters);\n\t\t}\n\t}\n\n\tupdateAtlases(\n\t\tshapes: EShape[],\n\t\tatlas: DynamicAtlas,\n\t\tfontAtlases: DynamicSDFFontAtlases,\n\t\tdefaultTexture: Texture,\n\t\tbaseTexture: BaseTexture\n\t): void {\n\t\tfor (let i = 0, imax = shapes.length; i < imax; ++i) {\n\t\t\tconst shape = shapes[i];\n\t\t\tthis.updateAtlas(shape, atlas, fontAtlases, defaultTexture, baseTexture);\n\t\t\tconst children = shape.children;\n\t\t\tfor (let j = 0, jmax = children.length; j < jmax; ++j) {\n\t\t\t\tconst child = children[j];\n\t\t\t\tthis.updateAtlas(child, atlas, fontAtlases, defaultTexture, baseTexture);\n\t\t\t\tthis.updateAtlases(child.children, atlas, fontAtlases, defaultTexture, baseTexture);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateFontAtlas(\n\t\tshape: EShape,\n\t\tatlas: DynamicAtlas,\n\t\tfontAtlases: DynamicSDFFontAtlases,\n\t\tdefaultTexture: Texture\n\t): void {\n\t\tconst text = shape.text;\n\t\tconst fontAtlas = fontAtlases.get(text.family);\n\t\tif (fontAtlas != null) {\n\t\t\tconst textureItem = atlas.get(fontAtlas.id);\n\t\t\tif (textureItem != null) {\n\t\t\t\ttext.atlas = fontAtlas;\n\t\t\t\ttext.texture = textureItem.texture;\n\t\t\t} else {\n\t\t\t\ttext.atlas = undefined;\n\t\t\t\ttext.texture = defaultTexture;\n\t\t\t}\n\t\t} else {\n\t\t\ttext.atlas = undefined;\n\t\t\ttext.texture = defaultTexture;\n\t\t}\n\t}\n\n\tupdateFontAtlases(\n\t\tshapes: EShape[],\n\t\tatlas: DynamicAtlas,\n\t\tfontAtlases: DynamicSDFFontAtlases,\n\t\tdefaultTexture: Texture\n\t): void {\n\t\tfor (let i = 0, imax = shapes.length; i < imax; ++i) {\n\t\t\tconst shape = shapes[i];\n\t\t\tthis.updateFontAtlas(shape, atlas, fontAtlases, defaultTexture);\n\t\t\tconst children = shape.children;\n\t\t\tfor (let j = 0, jmax = children.length; j < jmax; ++j) {\n\t\t\t\tconst child = children[j];\n\t\t\t\tthis.updateFontAtlas(child, atlas, fontAtlases, defaultTexture);\n\t\t\t\tthis.updateFontAtlases(child.children, atlas, fontAtlases, defaultTexture);\n\t\t\t}\n\t\t}\n\t}\n\n\trender_(\n\t\tcontainer: EShapeContainer,\n\t\tshape: EShape | null,\n\t\tshapes: EShape[],\n\t\tisDirty: boolean\n\t): void {\n\t\tconst renderer = this.renderer;\n\t\tconst shader = this._shader;\n\n\t\tif (shader != null && (shape != null || 0 < shapes.length)) {\n\t\t\tconst resolution = renderer.resolution;\n\t\t\tconst buffers = container.getBuffers();\n\t\t\tconst antialiasWeight = container.toAntialiasWeight(resolution);\n\n\t\t\t// Update textures\n\t\t\tif (isDirty) {\n\t\t\t\t// Atlases\n\t\t\t\tconst atlas = container.getAtlas(resolution);\n\t\t\t\tconst fontAtlases = container.getFontAtlases();\n\t\t\t\tatlas.begin();\n\t\t\t\tfontAtlases.begin();\n\t\t\t\tconst defaultTexture = atlas.getDefaultTexture();\n\t\t\t\tconst baseTexture: BaseTexture = atlas.getBaseTexture();\n\t\t\t\tthis.updateAtlases(shapes, atlas, fontAtlases, defaultTexture, baseTexture);\n\t\t\t\tfontAtlases.end();\n\t\t\t\tfontAtlases.update(atlas);\n\t\t\t\tthis.updateFontAtlases(shapes, atlas, fontAtlases, defaultTexture);\n\t\t\t\tatlas.end();\n\t\t\t\tatlas.repack();\n\n\t\t\t\t// Update buffers\n\t\t\t\tthis.updateBuffers(shape, shapes, buffers, renderer, antialiasWeight);\n\t\t\t}\n\n\t\t\t// Render buffers\n\t\t\tshader.uniforms.shapeScale = container.toShapeScale();\n\t\t\tshader.uniforms.antialiasWeight = container.toPixelScale(resolution) * antialiasWeight;\n\t\t\tshader.uniforms.translationMatrix = container.worldTransform.toArray(true);\n\t\t\trenderer.shader.bind(shader, false);\n\t\t\trenderer.state.setBlendMode(utils.correctBlendMode(BLEND_MODES.NORMAL, true));\n\t\t\tconst buffersLength = buffers.length;\n\t\t\tif (1 < buffersLength) {\n\t\t\t\tfor (let i = 0; i < buffersLength; ++i) {\n\t\t\t\t\tbuffers[i].upload();\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let i = 0; i < buffersLength; ++i) {\n\t\t\t\tbuffers[i].render(shader);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateBuffers(\n\t\tshape: EShape | null,\n\t\tshapes: EShape[],\n\t\tbuffers: EShapeBuffer[],\n\t\trenderer: Renderer,\n\t\tantialiasWeight: number\n\t): void {\n\t\tconst iterator = this._iterator;\n\t\titerator.reset(shape, shapes);\n\n\t\tlet ib = 0;\n\t\tlet bufferSize = 0;\n\t\tconst bufferSizeBase = 5000;\n\t\tconst bufferSizeMax = this._bufferSizeMax;\n\t\twhile (iterator.get() != null) {\n\t\t\tlet buffer: EShapeBuffer | null = null;\n\t\t\tlet noMoreThanOne = false;\n\t\t\tif (0 < bufferSize) {\n\t\t\t\tbuffer = new EShapeBuffer(bufferSize, renderer);\n\t\t\t\tbuffers.splice(ib, 0, buffer);\n\t\t\t\tnoMoreThanOne = true;\n\t\t\t} else if (ib < buffers.length) {\n\t\t\t\tbuffer = buffers[ib];\n\t\t\t\tnoMoreThanOne = false;\n\t\t\t} else {\n\t\t\t\tbuffer = new EShapeBuffer(bufferSizeBase, renderer);\n\t\t\t\tbuffers.push(buffer);\n\t\t\t\tnoMoreThanOne = false;\n\t\t\t}\n\t\t\tif (buffer.update(iterator, antialiasWeight, noMoreThanOne)) {\n\t\t\t\tbufferSize = 0;\n\t\t\t\tib += 1;\n\t\t\t} else {\n\t\t\t\tbufferSize = buffer.indexCountRequested;\n\t\t\t\tif (bufferSize <= bufferSizeMax) {\n\t\t\t\t\tbufferSize = Math.ceil(bufferSize / bufferSizeBase) * bufferSizeBase;\n\t\t\t\t\tbufferSize = Math.min(bufferSize, bufferSizeMax);\n\t\t\t\t} else {\n\t\t\t\t\t// No way to render\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (ib < buffers.length) {\n\t\t\tfor (let jb = ib, ibmax = buffers.length; jb < ibmax; ++jb) {\n\t\t\t\tbuffers[jb].destroy();\n\t\t\t}\n\t\t\tbuffers.length = ib;\n\t\t}\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"e-shape-text.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/shape/e-shape-text.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,CAAC,IAAM,gBAAgB,GAAG;IAC/B,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;CACE,CAAC;AAIX,MAAM,CAAC,IAAM,eAAe,GAAG;IAC9B,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;CACA,CAAC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Texture } from \"pixi.js\";\nimport { DeepPartial } from \"../util/deep-partial\";\nimport { EShapeResourceManagerDeserialization } from \"./e-shape-resource-manager-deserialization\";\nimport { EShapeResourceManagerSerialization } from \"./e-shape-resource-manager-serialization\";\nimport { EShapeTextAlign, EShapeTextAlignLike } from \"./e-shape-text-align\";\nimport { EShapeTextDirection } from \"./e-shape-text-direction\";\nimport { EShapeTextOffset, EShapeTextOffsetLike } from \"./e-shape-text-offset\";\nimport { EShapeTextOutline, EShapeTextOutlineLike } from \"./e-shape-text-outline\";\n\nexport const EShapeTextWeight = {\n\tNORMAL: 0,\n\tBOLD: 1\n} as const;\n\nexport type EShapeTextWeight = (typeof EShapeTextWeight)[keyof typeof EShapeTextWeight];\n\nexport const EShapeTextStyle = {\n\tNORMAL: 0,\n\tITALIC: 1\n} as const;\n\nexport type EShapeTextStyle = (typeof EShapeTextStyle)[keyof typeof EShapeTextStyle];\n\nexport interface EShapeTextLike {\n\tvalue: string;\n\tcolor: number;\n\talpha: number;\n\tfamily: string;\n\tsize: number;\n\tweight: EShapeTextWeight;\n\talign: EShapeTextAlignLike;\n\toffset: EShapeTextOffsetLike;\n\tstyle: EShapeTextStyle;\n\toutline: EShapeTextOutlineLike;\n\tspacing: EShapeTextOffsetLike;\n\tdirection: EShapeTextDirection;\n\tpadding: EShapeTextOffsetLike;\n\tclipping: boolean;\n\tfitting: boolean;\n}\n\nexport interface EShapeTextAtlasCharacter {\n\tx: number;\n\ty: number;\n\twidth: number;\n\theight: number;\n\tadvance: number;\n\torigin: {\n\t\tx: number;\n\t\ty: number;\n\t};\n}\n\nexport type EShapeTextAtlasCharacters = Record<string, EShapeTextAtlasCharacter>;\n\nexport interface EShapeTextAtlas {\n\twidth: number;\n\theight: number;\n\tfont: {\n\t\tsize: number;\n\t};\n\tcharacters: EShapeTextAtlasCharacters;\n}\n\nexport interface EShapeText extends EShapeTextLike {\n\tenable: boolean;\n\n\talign: EShapeTextAlign;\n\toffset: EShapeTextOffset;\n\toutline: EShapeTextOutline;\n\tspacing: EShapeTextOffset;\n\tpadding: EShapeTextOffset;\n\n\ttexture?: Texture; // Used for rendering and updated when rendered\n\tatlas?: EShapeTextAtlas; // Used for rendering and updated when rendered\n\tworld?: number[]; // Updated when rendered\n\n\treadonly length: number;\n\t/** Peak length */\n\treadonly plength: number;\n\n\tcopy(target?: DeepPartial<EShapeTextLike>): this;\n\tset(\n\t\tvalue?: string,\n\t\tcolor?: number,\n\t\talpha?: number,\n\t\tfamily?: string,\n\t\tsize?: number,\n\t\tweight?: EShapeTextWeight,\n\t\tstyle?: EShapeTextStyle,\n\t\tdirection?: EShapeTextDirection,\n\t\tclipping?: boolean,\n\t\tfitting?: boolean\n\t): this;\n\ttoObject(): EShapeTextLike;\n\tserialize(manager: EShapeResourceManagerSerialization): number;\n\tdeserialize(target: number, manager: EShapeResourceManagerDeserialization): void;\n}\n"]}
1
+ {"version":3,"file":"e-shape-text.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/shape/e-shape-text.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,CAAC,IAAM,gBAAgB,GAAG;IAC/B,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;CACE,CAAC;AAIX,MAAM,CAAC,IAAM,eAAe,GAAG;IAC9B,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;CACA,CAAC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Texture } from \"pixi.js\";\nimport { DeepPartial } from \"../util/deep-partial\";\nimport { EShapeResourceManagerDeserialization } from \"./e-shape-resource-manager-deserialization\";\nimport { EShapeResourceManagerSerialization } from \"./e-shape-resource-manager-serialization\";\nimport { EShapeTextAlign, EShapeTextAlignLike } from \"./e-shape-text-align\";\nimport { EShapeTextDirection } from \"./e-shape-text-direction\";\nimport { EShapeTextOffset, EShapeTextOffsetLike } from \"./e-shape-text-offset\";\nimport { EShapeTextOutline, EShapeTextOutlineLike } from \"./e-shape-text-outline\";\n\nexport const EShapeTextWeight = {\n\tNORMAL: 0,\n\tBOLD: 1\n} as const;\n\nexport type EShapeTextWeight = (typeof EShapeTextWeight)[keyof typeof EShapeTextWeight];\n\nexport const EShapeTextStyle = {\n\tNORMAL: 0,\n\tITALIC: 1\n} as const;\n\nexport type EShapeTextStyle = (typeof EShapeTextStyle)[keyof typeof EShapeTextStyle];\n\nexport interface EShapeTextLike {\n\tvalue: string;\n\tcolor: number;\n\talpha: number;\n\tfamily: string;\n\tsize: number;\n\tweight: EShapeTextWeight;\n\talign: EShapeTextAlignLike;\n\toffset: EShapeTextOffsetLike;\n\tstyle: EShapeTextStyle;\n\toutline: EShapeTextOutlineLike;\n\tspacing: EShapeTextOffsetLike;\n\tdirection: EShapeTextDirection;\n\tpadding: EShapeTextOffsetLike;\n\tclipping: boolean;\n\tfitting: boolean;\n}\n\nexport interface EShapeTextAtlasCharacter {\n\tx: number;\n\ty: number;\n\twidth: number;\n\theight: number;\n\tadvance: number;\n\torigin: {\n\t\tx: number;\n\t\ty: number;\n\t};\n}\n\nexport type EShapeTextAtlasCharacters = Map<string, EShapeTextAtlasCharacter>;\n\nexport interface EShapeTextAtlas {\n\twidth: number;\n\theight: number;\n\tfont: {\n\t\tsize: number;\n\t};\n\tcharacters: EShapeTextAtlasCharacters;\n}\n\nexport interface EShapeText extends EShapeTextLike {\n\tenable: boolean;\n\n\talign: EShapeTextAlign;\n\toffset: EShapeTextOffset;\n\toutline: EShapeTextOutline;\n\tspacing: EShapeTextOffset;\n\tpadding: EShapeTextOffset;\n\n\ttexture?: Texture; // Used for rendering and updated when rendered\n\tatlas?: EShapeTextAtlas; // Used for rendering and updated when rendered\n\tcharacters: string[];\n\tnacharacters: string[];\n\tworld?: number[]; // Updated when rendered\n\n\treadonly length: number;\n\t/** Peak length */\n\treadonly plength: number;\n\n\tcopy(target?: DeepPartial<EShapeTextLike>): this;\n\tset(\n\t\tvalue?: string,\n\t\tcolor?: number,\n\t\talpha?: number,\n\t\tfamily?: string,\n\t\tsize?: number,\n\t\tweight?: EShapeTextWeight,\n\t\tstyle?: EShapeTextStyle,\n\t\tdirection?: EShapeTextDirection,\n\t\tclipping?: boolean,\n\t\tfitting?: boolean\n\t): this;\n\ttoObject(): EShapeTextLike;\n\tserialize(manager: EShapeResourceManagerSerialization): number;\n\tdeserialize(target: number, manager: EShapeResourceManagerDeserialization): void;\n}\n"]}