@wcardinal/wcardinal-ui 0.309.0 → 0.310.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 (119) hide show
  1. package/README.md +1 -1
  2. package/dist/types/wcardinal/ui/d-base-state-and-value.d.ts +4 -0
  3. package/dist/types/wcardinal/ui/d-base-state-matcher.d.ts +1 -0
  4. package/dist/types/wcardinal/ui/d-base-state-set-blinker-datum-impl.d.ts +5 -0
  5. package/dist/types/wcardinal/ui/d-base-state-set-blinker-impl.d.ts +8 -0
  6. package/dist/types/wcardinal/ui/d-base-state-set-blinker.d.ts +3 -0
  7. package/dist/types/wcardinal/ui/d-base-state-set-impl.d.ts +51 -18
  8. package/dist/types/wcardinal/ui/d-base-state-set-sub-datum-impl.d.ts +17 -0
  9. package/dist/types/wcardinal/ui/d-base-state-set-sub-datum.d.ts +6 -0
  10. package/dist/types/wcardinal/ui/d-base-state-set-sub-impl.d.ts +15 -0
  11. package/dist/types/wcardinal/ui/d-base-state-set-sub.d.ts +6 -0
  12. package/dist/types/wcardinal/ui/d-base-state-set-ticker-datum-impl.d.ts +5 -0
  13. package/dist/types/wcardinal/ui/d-base-state-set-ticker-impl.d.ts +8 -0
  14. package/dist/types/wcardinal/ui/d-base-state-set-ticker.d.ts +3 -0
  15. package/dist/types/wcardinal/ui/d-base-state-set.d.ts +38 -8
  16. package/dist/types/wcardinal/ui/d-base.d.ts +23 -1
  17. package/dist/types/wcardinal/ui/d-chart-axis-base-guide-container.d.ts +21 -0
  18. package/dist/types/wcardinal/ui/d-chart-axis-base-options-parser.d.ts +6 -0
  19. package/dist/types/wcardinal/ui/d-chart-axis-base-options.d.ts +5 -0
  20. package/dist/types/wcardinal/ui/d-chart-axis-base.d.ts +4 -0
  21. package/dist/types/wcardinal/ui/d-chart-axis-guide-container.d.ts +14 -0
  22. package/dist/types/wcardinal/ui/d-chart-axis-guide-simple-shape-impl.d.ts +41 -0
  23. package/dist/types/wcardinal/ui/d-chart-axis-guide-simple-shape.d.ts +80 -0
  24. package/dist/types/wcardinal/ui/d-chart-axis-guide-simple.d.ts +32 -0
  25. package/dist/types/wcardinal/ui/d-chart-axis-guide.d.ts +14 -0
  26. package/dist/types/wcardinal/ui/d-chart-axis.d.ts +2 -0
  27. package/dist/types/wcardinal/ui/d-dynamic-text-geometry.d.ts +7 -4
  28. package/dist/types/wcardinal/ui/d-dynamic-text-measure-result.d.ts +3 -0
  29. package/dist/types/wcardinal/ui/d-dynamic-text-measure.d.ts +4 -3
  30. package/dist/types/wcardinal/ui/d-dynamic-text-style.d.ts +16 -1
  31. package/dist/types/wcardinal/ui/d-dynamic-text.d.ts +7 -6
  32. package/dist/types/wcardinal/ui/d-links.d.ts +2 -1
  33. package/dist/types/wcardinal/ui/d-text-base.d.ts +1 -0
  34. package/dist/types/wcardinal/ui/index.d.ts +18 -0
  35. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-text-base.d.ts +1 -0
  36. package/dist/types/wcardinal/ui/theme/white/d-theme-white-text-base.d.ts +1 -0
  37. package/dist/types/wcardinal/ui/util/util-font.d.ts +2 -0
  38. package/dist/wcardinal/ui/d-base-state-and-value.js +2 -0
  39. package/dist/wcardinal/ui/d-base-state-and-value.js.map +1 -0
  40. package/dist/wcardinal/ui/d-base-state-matcher.js +2 -0
  41. package/dist/wcardinal/ui/d-base-state-matcher.js.map +1 -0
  42. package/dist/wcardinal/ui/d-base-state-set-blinker-datum-impl.js +17 -0
  43. package/dist/wcardinal/ui/d-base-state-set-blinker-datum-impl.js.map +1 -0
  44. package/dist/wcardinal/ui/d-base-state-set-blinker-impl.js +16 -0
  45. package/dist/wcardinal/ui/d-base-state-set-blinker-impl.js.map +1 -0
  46. package/dist/wcardinal/ui/d-base-state-set-blinker.js +2 -0
  47. package/dist/wcardinal/ui/d-base-state-set-blinker.js.map +1 -0
  48. package/dist/wcardinal/ui/d-base-state-set-impl.js +298 -129
  49. package/dist/wcardinal/ui/d-base-state-set-impl.js.map +1 -1
  50. package/dist/wcardinal/ui/d-base-state-set-sub-datum-impl.js +75 -0
  51. package/dist/wcardinal/ui/d-base-state-set-sub-datum-impl.js.map +1 -0
  52. package/dist/wcardinal/ui/d-base-state-set-sub-datum.js +2 -0
  53. package/dist/wcardinal/ui/d-base-state-set-sub-datum.js.map +1 -0
  54. package/dist/wcardinal/ui/d-base-state-set-sub-impl.js +73 -0
  55. package/dist/wcardinal/ui/d-base-state-set-sub-impl.js.map +1 -0
  56. package/dist/wcardinal/ui/d-base-state-set-sub.js +2 -0
  57. package/dist/wcardinal/ui/d-base-state-set-sub.js.map +1 -0
  58. package/dist/wcardinal/ui/d-base-state-set-ticker-datum-impl.js +17 -0
  59. package/dist/wcardinal/ui/d-base-state-set-ticker-datum-impl.js.map +1 -0
  60. package/dist/wcardinal/ui/d-base-state-set-ticker-impl.js +16 -0
  61. package/dist/wcardinal/ui/d-base-state-set-ticker-impl.js.map +1 -0
  62. package/dist/wcardinal/ui/d-base-state-set-ticker.js +2 -0
  63. package/dist/wcardinal/ui/d-base-state-set-ticker.js.map +1 -0
  64. package/dist/wcardinal/ui/d-base-state-set.js.map +1 -1
  65. package/dist/wcardinal/ui/d-base.js +34 -2
  66. package/dist/wcardinal/ui/d-base.js.map +1 -1
  67. package/dist/wcardinal/ui/d-chart-axis-base-guide-container.js +75 -0
  68. package/dist/wcardinal/ui/d-chart-axis-base-guide-container.js.map +1 -0
  69. package/dist/wcardinal/ui/d-chart-axis-base-options-parser.js +7 -0
  70. package/dist/wcardinal/ui/d-chart-axis-base-options-parser.js.map +1 -1
  71. package/dist/wcardinal/ui/d-chart-axis-base-options.js.map +1 -1
  72. package/dist/wcardinal/ui/d-chart-axis-base.js +23 -1
  73. package/dist/wcardinal/ui/d-chart-axis-base.js.map +1 -1
  74. package/dist/wcardinal/ui/d-chart-axis-guide-container.js +2 -0
  75. package/dist/wcardinal/ui/d-chart-axis-guide-container.js.map +1 -0
  76. package/dist/wcardinal/ui/d-chart-axis-guide-simple-shape-impl.js +328 -0
  77. package/dist/wcardinal/ui/d-chart-axis-guide-simple-shape-impl.js.map +1 -0
  78. package/dist/wcardinal/ui/d-chart-axis-guide-simple-shape.js +2 -0
  79. package/dist/wcardinal/ui/d-chart-axis-guide-simple-shape.js.map +1 -0
  80. package/dist/wcardinal/ui/d-chart-axis-guide-simple.js +123 -0
  81. package/dist/wcardinal/ui/d-chart-axis-guide-simple.js.map +1 -0
  82. package/dist/wcardinal/ui/d-chart-axis-guide.js +2 -0
  83. package/dist/wcardinal/ui/d-chart-axis-guide.js.map +1 -0
  84. package/dist/wcardinal/ui/d-chart-axis.js.map +1 -1
  85. package/dist/wcardinal/ui/d-dynamic-text-geometry.js +17 -10
  86. package/dist/wcardinal/ui/d-dynamic-text-geometry.js.map +1 -1
  87. package/dist/wcardinal/ui/d-dynamic-text-measure-result.js +22 -0
  88. package/dist/wcardinal/ui/d-dynamic-text-measure-result.js.map +1 -1
  89. package/dist/wcardinal/ui/d-dynamic-text-measure.js +14 -10
  90. package/dist/wcardinal/ui/d-dynamic-text-measure.js.map +1 -1
  91. package/dist/wcardinal/ui/d-dynamic-text-style.js +107 -6
  92. package/dist/wcardinal/ui/d-dynamic-text-style.js.map +1 -1
  93. package/dist/wcardinal/ui/d-dynamic-text.js +52 -29
  94. package/dist/wcardinal/ui/d-dynamic-text.js.map +1 -1
  95. package/dist/wcardinal/ui/d-links.js +18 -1
  96. package/dist/wcardinal/ui/d-links.js.map +1 -1
  97. package/dist/wcardinal/ui/d-text-base.js +6 -3
  98. package/dist/wcardinal/ui/d-text-base.js.map +1 -1
  99. package/dist/wcardinal/ui/index.js +18 -0
  100. package/dist/wcardinal/ui/index.js.map +1 -1
  101. package/dist/wcardinal/ui/shape/e-shape-state-set-impl-observable.js +2 -2
  102. package/dist/wcardinal/ui/shape/e-shape-state-set-impl-observable.js.map +1 -1
  103. package/dist/wcardinal/ui/theme/dark/d-theme-dark-text-base.js +3 -0
  104. package/dist/wcardinal/ui/theme/dark/d-theme-dark-text-base.js.map +1 -1
  105. package/dist/wcardinal/ui/theme/white/d-theme-white-text-base.js +3 -0
  106. package/dist/wcardinal/ui/theme/white/d-theme-white-text-base.js.map +1 -1
  107. package/dist/wcardinal/ui/util/util-font.js +18 -11
  108. package/dist/wcardinal/ui/util/util-font.js.map +1 -1
  109. package/dist/wcardinal-ui-theme-dark.js +4 -1
  110. package/dist/wcardinal-ui-theme-dark.min.js +2 -2
  111. package/dist/wcardinal-ui-theme-dark.min.js.map +1 -1
  112. package/dist/wcardinal-ui-theme-white.js +4 -1
  113. package/dist/wcardinal-ui-theme-white.min.js +2 -2
  114. package/dist/wcardinal-ui-theme-white.min.js.map +1 -1
  115. package/dist/wcardinal-ui.cjs.js +1403 -275
  116. package/dist/wcardinal-ui.js +1397 -275
  117. package/dist/wcardinal-ui.min.js +2 -2
  118. package/dist/wcardinal-ui.min.js.map +1 -1
  119. package/package.json +1 -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 DDynamicTextGeometryClipping {\n\tenable: 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\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.clipped = false;\n\t}\n\n\tupdate(\n\t\ttext: string,\n\t\tatlas: DynamicFontAtlas | null,\n\t\tclipping: DDynamicTextGeometryClipping\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, clipping);\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\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, 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;\n\t\t\tthis.height = result.height;\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.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\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);\n\t\tconst y0 = y;\n\t\tconst x1 = x0 + cw;\n\t\tconst y1 = y0 + ch;\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":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAc/D;IAA0C,wCAAY;IAOrD;QAAA,YACC,kBAAM,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,SAMtE;QALA,KAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,KAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,KAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,KAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;IACtB,CAAC;IAED,qCAAM,GAAN,UACC,IAAY,EACZ,KAA8B,EAC9B,QAAsC;QAEtC,IAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACjD,IAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEpC,IAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAM,kBAAkB,GAAG,gBAAgB,IAAI,CAAC,CAAC;QACjD,IAAK,YAAY,CAAC,IAAqB,CAAC,MAAM,GAAG,kBAAkB,EAAE;YACpE,YAAY,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;YACzD,QAAQ,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;SACrD;QACD,IAAM,iBAAiB,GAAG,gBAAgB,GAAG,CAAC,CAAC;QAC/C,IAAK,WAAW,CAAC,IAAoB,CAAC,MAAM,GAAG,iBAAiB,EAAE;YACjE,WAAW,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC;SACtD;QAED,IAAM,QAAQ,GAAG,YAAY,CAAC,IAAoB,CAAC;QACnD,IAAM,GAAG,GAAG,QAAQ,CAAC,IAAoB,CAAC;QAC1C,IAAM,OAAO,GAAG,WAAW,CAAC,IAAmB,CAAC;QAEhD,IAAI,KAAK,IAAI,IAAI,EAAE;YAClB,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACrC,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;gBAC/B,IAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;gBACvB,IAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;gBACvB,IAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC;gBAC/B,IAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;gBACtB,IAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;gBACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aACxE;YACD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;gBAC/D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;aACpD;YACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;SAC9B;aAAM;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;gBAC3D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;aACpD;YACD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACrB;QAED,YAAY,CAAC,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,CAAC;QAClB,WAAW,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAES,6CAAc,GAAxB,UACC,QAAsB,EACtB,GAAiB,EACjB,OAAoB,EACpB,KAAa,EACb,CAAS,EACT,CAAS,EACT,KAAa,EACb,SAAoC,EACpC,KAAa,EACb,MAAc;QAEd,IAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;QACvB,IAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;QACvB,IAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;QAC3B,IAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;QAC5B,IAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAE/B,IAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACpC,IAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,IAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;QAC3B,IAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;QAE3B,IAAM,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAEtB,IAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;QACtB,IAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QACvB,IAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;QAC7B,IAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;QAC9B,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAEjB,IAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;QACrB,IAAM,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;QACtB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC;IAES,kDAAmB,GAA7B,UACC,QAAsB,EACtB,GAAiB,EACjB,OAAoB,EACpB,KAAa;QAEb,IAAM,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;QACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAErB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAEhB,IAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;QACrB,IAAM,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;QACtB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC;IACF,2BAAC;AAAD,CAAC,AAxKD,CAA0C,YAAY,GAwKrD","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"]}
@@ -7,6 +7,8 @@ var DDynamicTextMeasureResult = /** @class */ (function () {
7
7
  this.width = 0;
8
8
  this.height = 0;
9
9
  this.characters = [];
10
+ this.scale = 1;
11
+ this.scaled = false;
10
12
  this.clipped = false;
11
13
  this.x = 0;
12
14
  this.y = 0;
@@ -16,6 +18,8 @@ var DDynamicTextMeasureResult = /** @class */ (function () {
16
18
  this.countPerLine = 0;
17
19
  this.width = 0;
18
20
  this.height = 0;
21
+ this.scale = 1;
22
+ this.scaled = false;
19
23
  this.clipped = false;
20
24
  this.x = 0;
21
25
  this.y = 0.5 * (lineHeight - fontHeight);
@@ -102,6 +106,24 @@ var DDynamicTextMeasureResult = /** @class */ (function () {
102
106
  }
103
107
  return false;
104
108
  };
109
+ DDynamicTextMeasureResult.prototype.fit = function (width, height) {
110
+ var w = this.width;
111
+ var h = this.height;
112
+ if (1e-4 < w && width < w) {
113
+ if (1e-4 < h && height < h) {
114
+ this.scale = Math.min(width / w, height / h);
115
+ this.scaled = true;
116
+ }
117
+ else {
118
+ this.scale = width / w;
119
+ this.scaled = true;
120
+ }
121
+ }
122
+ else if (1e-4 < h && height < h) {
123
+ this.scale = height / h;
124
+ this.scaled = true;
125
+ }
126
+ };
105
127
  DDynamicTextMeasureResult.prototype.end = function (lineHeight, fontHeight) {
106
128
  this.newLine(lineHeight);
107
129
  this.y -= 0.5 * (lineHeight - fontHeight);
@@ -1 +1 @@
1
- {"version":3,"file":"d-dynamic-text-measure-result.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-measure-result.ts"],"names":[],"mappings":"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","sourcesContent":["import { DDynamicTextMeasureResultCharacter } from \"./d-dynamic-text-measure-result-character\";\nimport { DynamicFontAtlasCharacter } from \"./util/dynamic-font-atlas-character\";\nimport { DynamicFontAtlasCharacterType } from \"./util/dynamic-font-atlas-character-type\";\n\nexport class DDynamicTextMeasureResult {\n\tcount: number;\n\tcountPerLine: number;\n\twidth: number;\n\theight: number;\n\tcharacters: DDynamicTextMeasureResultCharacter[];\n\tclipped: boolean;\n\n\tx: number;\n\ty: number;\n\n\tconstructor() {\n\t\tthis.count = 0;\n\t\tthis.countPerLine = 0;\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.characters = [];\n\t\tthis.clipped = false;\n\n\t\tthis.x = 0;\n\t\tthis.y = 0;\n\t}\n\n\tstart(lineHeight: number, fontHeight: number): void {\n\t\tthis.count = 0;\n\t\tthis.countPerLine = 0;\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.clipped = false;\n\n\t\tthis.x = 0;\n\t\tthis.y = 0.5 * (lineHeight - fontHeight);\n\t}\n\n\tisPushable(width: number, character: DynamicFontAtlasCharacter): boolean {\n\t\tconst x = this.x + character.advance;\n\t\tif (width < x) {\n\t\t\tif (character.type & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tisPushableAtNewLine(height: number, lineHeight: number, fontHeight: number): boolean {\n\t\treturn this.y + 1.5 * lineHeight + 0.5 * fontHeight <= height;\n\t}\n\n\tpush(character: DynamicFontAtlasCharacter, isWrappable: boolean): void {\n\t\tconst x = this.x;\n\t\tthis.x += character.advance;\n\t\tconst y = this.y;\n\t\tconst count = this.count;\n\t\tconst characters = this.characters;\n\t\tif (count < characters.length) {\n\t\t\tcharacters[count].set(x, y, character, isWrappable);\n\t\t} else {\n\t\t\tcharacters.push(new DDynamicTextMeasureResultCharacter(x, y, character, isWrappable));\n\t\t}\n\t\tthis.count += 1;\n\t\tthis.countPerLine += 1;\n\t}\n\n\tnewLine(lineHeight: number): void {\n\t\tthis.width = Math.max(this.width, this.x);\n\t\tthis.x = 0;\n\t\tthis.y += lineHeight;\n\t\tthis.countPerLine = 0;\n\t}\n\n\twordWrap(lineHeight: number): boolean {\n\t\tconst countPerLine = this.countPerLine;\n\t\tconst characters = this.characters;\n\t\tif (0 < countPerLine) {\n\t\t\tconst count = this.count;\n\t\t\tfor (let i = count - 1, imin = count - countPerLine; imin < i; --i) {\n\t\t\t\tlet character = characters[i];\n\t\t\t\tif (character.wrappable) {\n\t\t\t\t\tlet x = character.character.advance;\n\t\t\t\t\tconst y = character.y + lineHeight;\n\t\t\t\t\tcharacter.x = 0;\n\t\t\t\t\tcharacter.y = y;\n\t\t\t\t\tfor (let j = i + 1; j < count; ++j) {\n\t\t\t\t\t\tcharacter = characters[j];\n\t\t\t\t\t\tcharacter.x = x;\n\t\t\t\t\t\tcharacter.y = y;\n\t\t\t\t\t\tx += character.character.advance;\n\t\t\t\t\t}\n\t\t\t\t\tthis.x = x;\n\t\t\t\t\tthis.y = y;\n\t\t\t\t\tthis.countPerLine = count - i;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst last = characters[count - 1];\n\t\t\tlast.x = 0;\n\t\t\tlast.y = last.y + lineHeight;\n\t\t\tthis.x = last.character.advance;\n\t\t\tthis.y = last.y;\n\t\t\tthis.countPerLine = 1;\n\t\t\treturn false;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpop(): boolean {\n\t\tconst countPerLine = this.countPerLine;\n\t\tconst characters = this.characters;\n\t\tif (0 < countPerLine) {\n\t\t\tconst character = characters[this.count - 1];\n\t\t\tthis.x -= character.character.advance;\n\t\t\tthis.count -= 1;\n\t\t\tthis.countPerLine -= 1;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tend(lineHeight: number, fontHeight: number): void {\n\t\tthis.newLine(lineHeight);\n\t\tthis.y -= 0.5 * (lineHeight - fontHeight);\n\t\tthis.height = this.y;\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-dynamic-text-measure-result.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-measure-result.ts"],"names":[],"mappings":"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","sourcesContent":["import { DDynamicTextMeasureResultCharacter } from \"./d-dynamic-text-measure-result-character\";\nimport { DynamicFontAtlasCharacter } from \"./util/dynamic-font-atlas-character\";\nimport { DynamicFontAtlasCharacterType } from \"./util/dynamic-font-atlas-character-type\";\n\nexport class DDynamicTextMeasureResult {\n\tcount: number;\n\tcountPerLine: number;\n\twidth: number;\n\theight: number;\n\tcharacters: DDynamicTextMeasureResultCharacter[];\n\tscale: number;\n\tscaled: boolean;\n\tclipped: boolean;\n\n\tx: number;\n\ty: number;\n\n\tconstructor() {\n\t\tthis.count = 0;\n\t\tthis.countPerLine = 0;\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.characters = [];\n\t\tthis.scale = 1;\n\t\tthis.scaled = false;\n\t\tthis.clipped = false;\n\n\t\tthis.x = 0;\n\t\tthis.y = 0;\n\t}\n\n\tstart(lineHeight: number, fontHeight: number): void {\n\t\tthis.count = 0;\n\t\tthis.countPerLine = 0;\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.x = 0;\n\t\tthis.y = 0.5 * (lineHeight - fontHeight);\n\t}\n\n\tisPushable(width: number, character: DynamicFontAtlasCharacter): boolean {\n\t\tconst x = this.x + character.advance;\n\t\tif (width < x) {\n\t\t\tif (character.type & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tisPushableAtNewLine(height: number, lineHeight: number, fontHeight: number): boolean {\n\t\treturn this.y + 1.5 * lineHeight + 0.5 * fontHeight <= height;\n\t}\n\n\tpush(character: DynamicFontAtlasCharacter, isWrappable: boolean): void {\n\t\tconst x = this.x;\n\t\tthis.x += character.advance;\n\t\tconst y = this.y;\n\t\tconst count = this.count;\n\t\tconst characters = this.characters;\n\t\tif (count < characters.length) {\n\t\t\tcharacters[count].set(x, y, character, isWrappable);\n\t\t} else {\n\t\t\tcharacters.push(new DDynamicTextMeasureResultCharacter(x, y, character, isWrappable));\n\t\t}\n\t\tthis.count += 1;\n\t\tthis.countPerLine += 1;\n\t}\n\n\tnewLine(lineHeight: number): void {\n\t\tthis.width = Math.max(this.width, this.x);\n\t\tthis.x = 0;\n\t\tthis.y += lineHeight;\n\t\tthis.countPerLine = 0;\n\t}\n\n\twordWrap(lineHeight: number): boolean {\n\t\tconst countPerLine = this.countPerLine;\n\t\tconst characters = this.characters;\n\t\tif (0 < countPerLine) {\n\t\t\tconst count = this.count;\n\t\t\tfor (let i = count - 1, imin = count - countPerLine; imin < i; --i) {\n\t\t\t\tlet character = characters[i];\n\t\t\t\tif (character.wrappable) {\n\t\t\t\t\tlet x = character.character.advance;\n\t\t\t\t\tconst y = character.y + lineHeight;\n\t\t\t\t\tcharacter.x = 0;\n\t\t\t\t\tcharacter.y = y;\n\t\t\t\t\tfor (let j = i + 1; j < count; ++j) {\n\t\t\t\t\t\tcharacter = characters[j];\n\t\t\t\t\t\tcharacter.x = x;\n\t\t\t\t\t\tcharacter.y = y;\n\t\t\t\t\t\tx += character.character.advance;\n\t\t\t\t\t}\n\t\t\t\t\tthis.x = x;\n\t\t\t\t\tthis.y = y;\n\t\t\t\t\tthis.countPerLine = count - i;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst last = characters[count - 1];\n\t\t\tlast.x = 0;\n\t\t\tlast.y = last.y + lineHeight;\n\t\t\tthis.x = last.character.advance;\n\t\t\tthis.y = last.y;\n\t\t\tthis.countPerLine = 1;\n\t\t\treturn false;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpop(): boolean {\n\t\tconst countPerLine = this.countPerLine;\n\t\tconst characters = this.characters;\n\t\tif (0 < countPerLine) {\n\t\t\tconst character = characters[this.count - 1];\n\t\t\tthis.x -= character.character.advance;\n\t\t\tthis.count -= 1;\n\t\t\tthis.countPerLine -= 1;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tfit(width: number, height: number): void {\n\t\tconst w = this.width;\n\t\tconst h = this.height;\n\t\tif (1e-4 < w && width < w) {\n\t\t\tif (1e-4 < h && height < h) {\n\t\t\t\tthis.scale = Math.min(width / w, height / h);\n\t\t\t\tthis.scaled = true;\n\t\t\t} else {\n\t\t\t\tthis.scale = width / w;\n\t\t\t\tthis.scaled = true;\n\t\t\t}\n\t\t} else if (1e-4 < h && height < h) {\n\t\t\tthis.scale = height / h;\n\t\t\tthis.scaled = true;\n\t\t}\n\t}\n\n\tend(lineHeight: number, fontHeight: number): void {\n\t\tthis.newLine(lineHeight);\n\t\tthis.y -= 0.5 * (lineHeight - fontHeight);\n\t\tthis.height = this.y;\n\t}\n}\n"]}
@@ -6,21 +6,22 @@ var NEW_LINE = "\n";
6
6
  var DDynamicTextMeasure = /** @class */ (function () {
7
7
  function DDynamicTextMeasure() {
8
8
  }
9
- DDynamicTextMeasure.measure = function (text, atlas, clipping) {
9
+ DDynamicTextMeasure.measure = function (text, atlas, modifier) {
10
10
  var result = DDynamicTextMeasure.RESULT || new DDynamicTextMeasureResult();
11
11
  DDynamicTextMeasure.RESULT = result;
12
12
  if (atlas != null) {
13
13
  var itr = UtilCharacterIterator.from(text);
14
14
  var fh = atlas.font.height;
15
- var lh = clipping.lineHeight;
16
- var ce = clipping.enable;
17
- var cw = clipping.width;
18
- var ch = clipping.height;
19
- var cp = clipping.wordWrap;
15
+ var lh = modifier.lineHeight;
16
+ var cf = modifier.fitting;
17
+ var cc = !cf && modifier.clipping;
18
+ var cw = modifier.width;
19
+ var ch = modifier.height;
20
+ var cp = !cf && modifier.wordWrap;
20
21
  result.start(lh, fh);
21
22
  switch (cp) {
22
23
  case DDynamicTextStyleWordWrap.BREAK_ALL:
23
- if (ce) {
24
+ if (cc) {
24
25
  this.measure1(itr, cw, ch, fh, lh, atlas, result);
25
26
  }
26
27
  else {
@@ -30,7 +31,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
30
31
  case DDynamicTextStyleWordWrap.NORMAL:
31
32
  var lb = this.newLineBreaker(text);
32
33
  if (lb) {
33
- if (ce) {
34
+ if (cc) {
34
35
  this.measure1a(lb, itr, cw, ch, fh, lh, atlas, result);
35
36
  }
36
37
  else {
@@ -38,7 +39,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
38
39
  }
39
40
  }
40
41
  else {
41
- if (ce) {
42
+ if (cc) {
42
43
  this.measure1b(itr, cw, ch, fh, lh, atlas, result);
43
44
  }
44
45
  else {
@@ -47,7 +48,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
47
48
  }
48
49
  break;
49
50
  default:
50
- if (ce) {
51
+ if (cc) {
51
52
  this.measure3(itr, cw, lh, atlas, result);
52
53
  }
53
54
  else {
@@ -56,6 +57,9 @@ var DDynamicTextMeasure = /** @class */ (function () {
56
57
  break;
57
58
  }
58
59
  result.end(lh, fh);
60
+ if (cf) {
61
+ result.fit(cw, ch);
62
+ }
59
63
  }
60
64
  else {
61
65
  result.start(0, 0);
@@ -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":"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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\";\n\nexport interface DDynamicTextMeasureClipping {\n\tenable: 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\tclipping: DDynamicTextMeasureClipping\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 = clipping.lineHeight;\n\t\t\tconst ce = clipping.enable;\n\t\t\tconst cw = clipping.width;\n\t\t\tconst ch = clipping.height;\n\t\t\tconst cp = clipping.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 (ce) {\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 (ce) {\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 (ce) {\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 (ce) {\n\t\t\t\t\t\tthis.measure3(itr, cw, 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} 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\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\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\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\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\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, 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\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\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\";\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, 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\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\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\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\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\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, 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\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\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"]}
@@ -8,7 +8,7 @@ import { DThemes } from "./theme/d-themes";
8
8
  import { toEnum } from "./util/to-enum";
9
9
  var DDynamicTextStyle = /** @class */ (function () {
10
10
  function DDynamicTextStyle(options, onChange) {
11
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
11
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
12
12
  this._id = 0;
13
13
  this._idApproved = -1;
14
14
  var defaultOptions = this.getDefaultOptions();
@@ -21,8 +21,9 @@ var DDynamicTextStyle = /** @class */ (function () {
21
21
  this._fontWeight = (_f = options.fontWeight) !== null && _f !== void 0 ? _f : defaultOptions.fontWeight;
22
22
  this._fill = (_g = options.fill) !== null && _g !== void 0 ? _g : defaultOptions.fill;
23
23
  this._clipping = (_h = options.clipping) !== null && _h !== void 0 ? _h : defaultOptions.clipping;
24
- this._wordWrap = toEnum((_j = options.wordWrap) !== null && _j !== void 0 ? _j : defaultOptions.wordWrap, DDynamicTextStyleWordWrap);
25
- this._lineHeight = (_k = options.lineHeight) !== null && _k !== void 0 ? _k : defaultOptions.lineHeight;
24
+ this._fitting = (_j = options.fitting) !== null && _j !== void 0 ? _j : defaultOptions.fitting;
25
+ this._wordWrap = toEnum((_k = options.wordWrap) !== null && _k !== void 0 ? _k : defaultOptions.wordWrap, DDynamicTextStyleWordWrap);
26
+ this._lineHeight = (_l = options.lineHeight) !== null && _l !== void 0 ? _l : defaultOptions.lineHeight;
26
27
  }
27
28
  else {
28
29
  this._align = defaultOptions.align;
@@ -33,9 +34,14 @@ var DDynamicTextStyle = /** @class */ (function () {
33
34
  this._fontWeight = defaultOptions.fontWeight;
34
35
  this._fill = defaultOptions.fill;
35
36
  this._clipping = defaultOptions.clipping;
37
+ this._fitting = defaultOptions.fitting;
36
38
  this._wordWrap = toEnum(defaultOptions.wordWrap, DDynamicTextStyleWordWrap);
37
39
  this._lineHeight = defaultOptions.lineHeight;
38
40
  }
41
+ this._fontSizeFitted = this._fontSize;
42
+ this._lineHeightFitted = this._lineHeight;
43
+ this._isFontFitted = false;
44
+ this._fontIdFontSize = this._fontSize;
39
45
  this._fontIdId = -1;
40
46
  this._fontId = "";
41
47
  this._fontIdApproved = "";
@@ -61,6 +67,7 @@ var DDynamicTextStyle = /** @class */ (function () {
61
67
  fontWeight: "normal",
62
68
  fill: theme.getColor(new DBaseStateSetImpl()),
63
69
  clipping: true,
70
+ fitting: false,
64
71
  wordWrap: DDynamicTextStyleWordWrap.NONE,
65
72
  lineHeight: theme.getLineHeight()
66
73
  };
@@ -87,6 +94,14 @@ var DDynamicTextStyle = /** @class */ (function () {
87
94
  enumerable: false,
88
95
  configurable: true
89
96
  });
97
+ Object.defineProperty(DDynamicTextStyle.prototype, "fontIdFontSize", {
98
+ get: function () {
99
+ this.update();
100
+ return this._fontSizeFitted;
101
+ },
102
+ enumerable: false,
103
+ configurable: true
104
+ });
90
105
  Object.defineProperty(DDynamicTextStyle.prototype, "fontIdApproved", {
91
106
  get: function () {
92
107
  return this._fontIdApproved;
@@ -144,12 +159,29 @@ var DDynamicTextStyle = /** @class */ (function () {
144
159
  set: function (fontSize) {
145
160
  if (this._fontSize !== fontSize) {
146
161
  this._fontSize = fontSize;
162
+ this._fontSizeFitted = fontSize;
163
+ this._lineHeightFitted = this._lineHeight;
164
+ this._isFontFitted = false;
147
165
  this.onChange();
148
166
  }
149
167
  },
150
168
  enumerable: false,
151
169
  configurable: true
152
170
  });
171
+ Object.defineProperty(DDynamicTextStyle.prototype, "fontSizeFitted", {
172
+ get: function () {
173
+ return this._fontSizeFitted;
174
+ },
175
+ enumerable: false,
176
+ configurable: true
177
+ });
178
+ Object.defineProperty(DDynamicTextStyle.prototype, "isFontFitted", {
179
+ get: function () {
180
+ return this._isFontFitted;
181
+ },
182
+ enumerable: false,
183
+ configurable: true
184
+ });
153
185
  Object.defineProperty(DDynamicTextStyle.prototype, "fontStyle", {
154
186
  get: function () {
155
187
  return this._fontStyle;
@@ -192,11 +224,13 @@ var DDynamicTextStyle = /** @class */ (function () {
192
224
  DDynamicTextStyle.prototype.update = function () {
193
225
  if (this._fontIdId !== this._id) {
194
226
  this._fontIdId = this._id;
195
- this._fontId = this.newFontId();
227
+ var fontIdFontSize = this._fitting ? this._fontSizeFitted : this._fontSize;
228
+ this._fontIdFontSize = fontIdFontSize;
229
+ this._fontId = this.toFontId(fontIdFontSize);
196
230
  }
197
231
  };
198
- DDynamicTextStyle.prototype.newFontId = function () {
199
- return "".concat(this._fontStyle, " ").concat(this._fontVariant, " ").concat(this._fontWeight, " ").concat(this._fontSize, "px ").concat(this._fontFamily);
232
+ DDynamicTextStyle.prototype.toFontId = function (fontSize) {
233
+ return "".concat(this._fontStyle, " ").concat(this._fontVariant, " ").concat(this._fontWeight, " ").concat(fontSize, "px ").concat(this._fontFamily);
200
234
  };
201
235
  Object.defineProperty(DDynamicTextStyle.prototype, "clipping", {
202
236
  get: function () {
@@ -211,6 +245,19 @@ var DDynamicTextStyle = /** @class */ (function () {
211
245
  enumerable: false,
212
246
  configurable: true
213
247
  });
248
+ Object.defineProperty(DDynamicTextStyle.prototype, "fitting", {
249
+ get: function () {
250
+ return this._fitting;
251
+ },
252
+ set: function (fitting) {
253
+ if (this._fitting !== fitting) {
254
+ this._fitting = fitting;
255
+ this.onChange();
256
+ }
257
+ },
258
+ enumerable: false,
259
+ configurable: true
260
+ });
214
261
  Object.defineProperty(DDynamicTextStyle.prototype, "wordWrap", {
215
262
  get: function () {
216
263
  return this._wordWrap;
@@ -231,12 +278,66 @@ var DDynamicTextStyle = /** @class */ (function () {
231
278
  set: function (lineHeight) {
232
279
  if (this._lineHeight !== lineHeight) {
233
280
  this._lineHeight = lineHeight;
281
+ this._fontSizeFitted = this._fontSize;
282
+ this._lineHeightFitted = lineHeight;
283
+ this._isFontFitted = false;
284
+ this.onChange();
285
+ }
286
+ },
287
+ enumerable: false,
288
+ configurable: true
289
+ });
290
+ Object.defineProperty(DDynamicTextStyle.prototype, "lineHeightFitted", {
291
+ get: function () {
292
+ return this._lineHeightFitted;
293
+ },
294
+ set: function (lineHeightFitted) {
295
+ if (this._lineHeightFitted !== lineHeightFitted) {
296
+ this._lineHeightFitted = lineHeightFitted;
234
297
  this.onChange();
235
298
  }
236
299
  },
237
300
  enumerable: false,
238
301
  configurable: true
239
302
  });
303
+ DDynamicTextStyle.prototype.fit = function (fontSize, lineHeight) {
304
+ var isChanged = false;
305
+ if (fontSize < this._fontSizeFitted) {
306
+ this._fontSizeFitted = fontSize;
307
+ isChanged = true;
308
+ }
309
+ if (this._lineHeightFitted !== lineHeight) {
310
+ this._lineHeightFitted = lineHeight;
311
+ isChanged = true;
312
+ }
313
+ if (this._isFontFitted !== true) {
314
+ this._isFontFitted = true;
315
+ isChanged = true;
316
+ }
317
+ if (isChanged) {
318
+ this.onChange();
319
+ }
320
+ return isChanged;
321
+ };
322
+ DDynamicTextStyle.prototype.unfit = function () {
323
+ var isChanged = false;
324
+ if (this._isFontFitted !== false) {
325
+ this._isFontFitted = false;
326
+ isChanged = true;
327
+ }
328
+ if (this._fontSizeFitted !== this._fontSize) {
329
+ this._fontSizeFitted = this._fontSize;
330
+ isChanged = true;
331
+ }
332
+ if (this._lineHeightFitted !== this._lineHeight) {
333
+ this._lineHeightFitted = this._lineHeight;
334
+ isChanged = true;
335
+ }
336
+ if (isChanged) {
337
+ this.onChange();
338
+ }
339
+ return isChanged;
340
+ };
240
341
  return DDynamicTextStyle;
241
342
  }());
242
343
  export { DDynamicTextStyle };
@@ -1 +1 @@
1
- {"version":3,"file":"d-dynamic-text-style.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-style.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DBaseStateSetImpl } from \"./d-base-state-set-impl\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DFontStyle, DFontVariant, DFontWeight, DThemeFont } from \"./d-font\";\nimport { DThemes } from \"./theme/d-themes\";\nimport { toEnum } from \"./util/to-enum\";\n\nexport type DDynamicTextAlign = \"left\" | \"center\" | \"right\";\n\nexport interface DDynamicTextStyleOptions {\n\talign?: DDynamicTextAlign;\n\tfontFamily?: string;\n\tfontSize?: number;\n\tfontStyle?: DFontStyle;\n\tfontVariant?: DFontVariant;\n\tfontWeight?: DFontWeight;\n\tfill?: number;\n\tclipping?: boolean;\n\twordWrap?: DDynamicTextStyleWordWrap | keyof typeof DDynamicTextStyleWordWrap;\n\tlineHeight?: number;\n}\n\nexport class DDynamicTextStyle {\n\tprotected static DEFAULT_OPTIONS?: Required<DDynamicTextStyleOptions>;\n\n\tprotected _id: number;\n\tprotected _idApproved: number;\n\tprotected _fontIdId: number;\n\tprotected _fontId: string;\n\tprotected _fontIdApproved: string;\n\tprotected _align: DDynamicTextAlign;\n\tprotected _fontFamily: string;\n\tprotected _fontSize: number;\n\tprotected _fontStyle: DFontStyle;\n\tprotected _fontVariant: DFontVariant;\n\tprotected _fontWeight: DFontWeight;\n\tprotected _fill: number;\n\tprotected _fillApproved: number;\n\tprotected _clipping: boolean;\n\tprotected _wordWrap: DDynamicTextStyleWordWrap;\n\tprotected _lineHeight: number;\n\tprotected _onChange: () => void;\n\n\tconstructor(options: DDynamicTextStyleOptions | undefined, onChange: () => void) {\n\t\tthis._id = 0;\n\t\tthis._idApproved = -1;\n\n\t\tconst defaultOptions = this.getDefaultOptions();\n\t\tif (options) {\n\t\t\tthis._align = options.align ?? defaultOptions.align;\n\t\t\tthis._fontFamily = options.fontFamily ?? defaultOptions.fontFamily;\n\t\t\tthis._fontSize = options.fontSize ?? defaultOptions.fontSize;\n\t\t\tthis._fontStyle = options.fontStyle ?? defaultOptions.fontStyle;\n\t\t\tthis._fontVariant = options.fontVariant ?? defaultOptions.fontVariant;\n\t\t\tthis._fontWeight = options.fontWeight ?? defaultOptions.fontWeight;\n\t\t\tthis._fill = options.fill ?? defaultOptions.fill;\n\t\t\tthis._clipping = options.clipping ?? defaultOptions.clipping;\n\t\t\tthis._wordWrap = toEnum(\n\t\t\t\toptions.wordWrap ?? defaultOptions.wordWrap,\n\t\t\t\tDDynamicTextStyleWordWrap\n\t\t\t);\n\t\t\tthis._lineHeight = options.lineHeight ?? defaultOptions.lineHeight;\n\t\t} else {\n\t\t\tthis._align = defaultOptions.align;\n\t\t\tthis._fontFamily = defaultOptions.fontFamily;\n\t\t\tthis._fontSize = defaultOptions.fontSize;\n\t\t\tthis._fontStyle = defaultOptions.fontStyle;\n\t\t\tthis._fontVariant = defaultOptions.fontVariant;\n\t\t\tthis._fontWeight = defaultOptions.fontWeight;\n\t\t\tthis._fill = defaultOptions.fill;\n\t\t\tthis._clipping = defaultOptions.clipping;\n\t\t\tthis._wordWrap = toEnum(defaultOptions.wordWrap, DDynamicTextStyleWordWrap);\n\t\t\tthis._lineHeight = defaultOptions.lineHeight;\n\t\t}\n\n\t\tthis._fontIdId = -1;\n\t\tthis._fontId = \"\";\n\t\tthis._fontIdApproved = \"\";\n\t\tthis._fillApproved = 0x000000;\n\n\t\tthis._onChange = onChange;\n\t}\n\n\tprotected getDefaultOptions(): Required<DDynamicTextStyleOptions> {\n\t\tlet result = DDynamicTextStyle.DEFAULT_OPTIONS;\n\t\tif (result == null) {\n\t\t\tresult = this.newDefaultOptions();\n\t\t\tDDynamicTextStyle.DEFAULT_OPTIONS = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newDefaultOptions(): Required<DDynamicTextStyleOptions> {\n\t\tconst theme = DThemes.getInstance().get(\"DBase\") as DThemeFont;\n\t\treturn {\n\t\t\talign: \"left\",\n\t\t\tfontFamily: theme.getFontFamilly(),\n\t\t\tfontSize: theme.getFontSize(),\n\t\t\tfontStyle: \"normal\",\n\t\t\tfontVariant: \"normal\",\n\t\t\tfontWeight: \"normal\",\n\t\t\tfill: theme.getColor(new DBaseStateSetImpl()),\n\t\t\tclipping: true,\n\t\t\twordWrap: DDynamicTextStyleWordWrap.NONE,\n\t\t\tlineHeight: theme.getLineHeight()\n\t\t};\n\t}\n\n\tget id(): number {\n\t\treturn this._id;\n\t}\n\n\tget idApproved(): number {\n\t\treturn this._idApproved;\n\t}\n\n\tget fontId(): string {\n\t\tthis.update();\n\t\treturn this._fontId;\n\t}\n\n\tget fontIdApproved(): string {\n\t\treturn this._fontIdApproved;\n\t}\n\n\tget fill(): number {\n\t\treturn this._fill;\n\t}\n\n\tset fill(fill: number) {\n\t\tif (this._fill !== fill) {\n\t\t\tthis._fill = fill;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tprotected onChange(): void {\n\t\tthis._id += 1;\n\t\tthis._onChange();\n\t}\n\n\tget fillApproved(): number {\n\t\treturn this._fillApproved;\n\t}\n\n\tapprove(): void {\n\t\tthis.update();\n\t\tthis._idApproved = this._id;\n\t\tthis._fontIdApproved = this._fontId;\n\t\tthis._fillApproved = this._fill;\n\t}\n\n\tget fontFamily(): string {\n\t\treturn this._fontFamily;\n\t}\n\n\tset fontFamily(fontFamily: string) {\n\t\tif (this._fontFamily !== fontFamily) {\n\t\t\tthis._fontFamily = fontFamily;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontSize(): number {\n\t\treturn this._fontSize;\n\t}\n\n\tset fontSize(fontSize: number) {\n\t\tif (this._fontSize !== fontSize) {\n\t\t\tthis._fontSize = fontSize;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontStyle(): DFontStyle {\n\t\treturn this._fontStyle;\n\t}\n\n\tset fontStyle(fontStyle: DFontStyle) {\n\t\tif (this._fontStyle !== fontStyle) {\n\t\t\tthis._fontStyle = fontStyle;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontVariant(): DFontVariant {\n\t\treturn this._fontVariant;\n\t}\n\n\tset fontVariant(fontVariant: DFontVariant) {\n\t\tif (this._fontVariant !== fontVariant) {\n\t\t\tthis._fontVariant = fontVariant;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontWeight(): DFontWeight {\n\t\treturn this._fontWeight;\n\t}\n\n\tset fontWeight(fontWeight: DFontWeight) {\n\t\tif (this._fontWeight !== fontWeight) {\n\t\t\tthis._fontWeight = fontWeight;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tprotected update(): void {\n\t\tif (this._fontIdId !== this._id) {\n\t\t\tthis._fontIdId = this._id;\n\t\t\tthis._fontId = this.newFontId();\n\t\t}\n\t}\n\n\tprotected newFontId(): string {\n\t\treturn `${this._fontStyle} ${this._fontVariant} ${this._fontWeight} ${this._fontSize}px ${this._fontFamily}`;\n\t}\n\n\tget clipping(): boolean {\n\t\treturn this._clipping;\n\t}\n\n\tset clipping(clipping: boolean) {\n\t\tif (this._clipping !== clipping) {\n\t\t\tthis._clipping = clipping;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget wordWrap(): DDynamicTextStyleWordWrap {\n\t\treturn this._wordWrap;\n\t}\n\n\tset wordWrap(wordWrap: DDynamicTextStyleWordWrap) {\n\t\tif (this._wordWrap !== wordWrap) {\n\t\t\tthis._wordWrap = wordWrap;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget lineHeight(): number {\n\t\treturn this._lineHeight;\n\t}\n\n\tset lineHeight(lineHeight: number) {\n\t\tif (this._lineHeight !== lineHeight) {\n\t\t\tthis._lineHeight = lineHeight;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-dynamic-text-style.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-style.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DBaseStateSetImpl } from \"./d-base-state-set-impl\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DFontStyle, DFontVariant, DFontWeight, DThemeFont } from \"./d-font\";\nimport { DThemes } from \"./theme/d-themes\";\nimport { toEnum } from \"./util/to-enum\";\n\nexport type DDynamicTextAlign = \"left\" | \"center\" | \"right\";\n\nexport interface DDynamicTextStyleOptions {\n\talign?: DDynamicTextAlign;\n\tfontFamily?: string;\n\tfontSize?: number;\n\tfontStyle?: DFontStyle;\n\tfontVariant?: DFontVariant;\n\tfontWeight?: DFontWeight;\n\tfill?: number;\n\tclipping?: boolean;\n\tfitting?: boolean;\n\twordWrap?: DDynamicTextStyleWordWrap | keyof typeof DDynamicTextStyleWordWrap;\n\tlineHeight?: number;\n}\n\nexport class DDynamicTextStyle {\n\tprotected static DEFAULT_OPTIONS?: Required<DDynamicTextStyleOptions>;\n\n\tprotected _id: number;\n\tprotected _idApproved: number;\n\tprotected _fontIdId: number;\n\tprotected _fontId: string;\n\tprotected _fontIdApproved: string;\n\tprotected _fontIdFontSize: number;\n\tprotected _align: DDynamicTextAlign;\n\tprotected _fontFamily: string;\n\tprotected _fontSize: number;\n\tprotected _fontSizeFitted: number;\n\tprotected _isFontFitted: boolean;\n\tprotected _fontStyle: DFontStyle;\n\tprotected _fontVariant: DFontVariant;\n\tprotected _fontWeight: DFontWeight;\n\tprotected _fill: number;\n\tprotected _fillApproved: number;\n\tprotected _clipping: boolean;\n\tprotected _fitting: boolean;\n\tprotected _wordWrap: DDynamicTextStyleWordWrap;\n\tprotected _lineHeight: number;\n\tprotected _lineHeightFitted: number;\n\tprotected _onChange: () => void;\n\n\tconstructor(options: DDynamicTextStyleOptions | undefined, onChange: () => void) {\n\t\tthis._id = 0;\n\t\tthis._idApproved = -1;\n\n\t\tconst defaultOptions = this.getDefaultOptions();\n\t\tif (options) {\n\t\t\tthis._align = options.align ?? defaultOptions.align;\n\t\t\tthis._fontFamily = options.fontFamily ?? defaultOptions.fontFamily;\n\t\t\tthis._fontSize = options.fontSize ?? defaultOptions.fontSize;\n\t\t\tthis._fontStyle = options.fontStyle ?? defaultOptions.fontStyle;\n\t\t\tthis._fontVariant = options.fontVariant ?? defaultOptions.fontVariant;\n\t\t\tthis._fontWeight = options.fontWeight ?? defaultOptions.fontWeight;\n\t\t\tthis._fill = options.fill ?? defaultOptions.fill;\n\t\t\tthis._clipping = options.clipping ?? defaultOptions.clipping;\n\t\t\tthis._fitting = options.fitting ?? defaultOptions.fitting;\n\t\t\tthis._wordWrap = toEnum(\n\t\t\t\toptions.wordWrap ?? defaultOptions.wordWrap,\n\t\t\t\tDDynamicTextStyleWordWrap\n\t\t\t);\n\t\t\tthis._lineHeight = options.lineHeight ?? defaultOptions.lineHeight;\n\t\t} else {\n\t\t\tthis._align = defaultOptions.align;\n\t\t\tthis._fontFamily = defaultOptions.fontFamily;\n\t\t\tthis._fontSize = defaultOptions.fontSize;\n\t\t\tthis._fontStyle = defaultOptions.fontStyle;\n\t\t\tthis._fontVariant = defaultOptions.fontVariant;\n\t\t\tthis._fontWeight = defaultOptions.fontWeight;\n\t\t\tthis._fill = defaultOptions.fill;\n\t\t\tthis._clipping = defaultOptions.clipping;\n\t\t\tthis._fitting = defaultOptions.fitting;\n\t\t\tthis._wordWrap = toEnum(defaultOptions.wordWrap, DDynamicTextStyleWordWrap);\n\t\t\tthis._lineHeight = defaultOptions.lineHeight;\n\t\t}\n\n\t\tthis._fontSizeFitted = this._fontSize;\n\t\tthis._lineHeightFitted = this._lineHeight;\n\t\tthis._isFontFitted = false;\n\t\tthis._fontIdFontSize = this._fontSize;\n\t\tthis._fontIdId = -1;\n\t\tthis._fontId = \"\";\n\t\tthis._fontIdApproved = \"\";\n\t\tthis._fillApproved = 0x000000;\n\n\t\tthis._onChange = onChange;\n\t}\n\n\tprotected getDefaultOptions(): Required<DDynamicTextStyleOptions> {\n\t\tlet result = DDynamicTextStyle.DEFAULT_OPTIONS;\n\t\tif (result == null) {\n\t\t\tresult = this.newDefaultOptions();\n\t\t\tDDynamicTextStyle.DEFAULT_OPTIONS = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newDefaultOptions(): Required<DDynamicTextStyleOptions> {\n\t\tconst theme = DThemes.getInstance().get(\"DBase\") as DThemeFont;\n\t\treturn {\n\t\t\talign: \"left\",\n\t\t\tfontFamily: theme.getFontFamilly(),\n\t\t\tfontSize: theme.getFontSize(),\n\t\t\tfontStyle: \"normal\",\n\t\t\tfontVariant: \"normal\",\n\t\t\tfontWeight: \"normal\",\n\t\t\tfill: theme.getColor(new DBaseStateSetImpl()),\n\t\t\tclipping: true,\n\t\t\tfitting: false,\n\t\t\twordWrap: DDynamicTextStyleWordWrap.NONE,\n\t\t\tlineHeight: theme.getLineHeight()\n\t\t};\n\t}\n\n\tget id(): number {\n\t\treturn this._id;\n\t}\n\n\tget idApproved(): number {\n\t\treturn this._idApproved;\n\t}\n\n\tget fontId(): string {\n\t\tthis.update();\n\t\treturn this._fontId;\n\t}\n\n\tget fontIdFontSize(): number {\n\t\tthis.update();\n\t\treturn this._fontSizeFitted;\n\t}\n\n\tget fontIdApproved(): string {\n\t\treturn this._fontIdApproved;\n\t}\n\n\tget fill(): number {\n\t\treturn this._fill;\n\t}\n\n\tset fill(fill: number) {\n\t\tif (this._fill !== fill) {\n\t\t\tthis._fill = fill;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tprotected onChange(): void {\n\t\tthis._id += 1;\n\t\tthis._onChange();\n\t}\n\n\tget fillApproved(): number {\n\t\treturn this._fillApproved;\n\t}\n\n\tapprove(): void {\n\t\tthis.update();\n\t\tthis._idApproved = this._id;\n\t\tthis._fontIdApproved = this._fontId;\n\t\tthis._fillApproved = this._fill;\n\t}\n\n\tget fontFamily(): string {\n\t\treturn this._fontFamily;\n\t}\n\n\tset fontFamily(fontFamily: string) {\n\t\tif (this._fontFamily !== fontFamily) {\n\t\t\tthis._fontFamily = fontFamily;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontSize(): number {\n\t\treturn this._fontSize;\n\t}\n\n\tset fontSize(fontSize: number) {\n\t\tif (this._fontSize !== fontSize) {\n\t\t\tthis._fontSize = fontSize;\n\t\t\tthis._fontSizeFitted = fontSize;\n\t\t\tthis._lineHeightFitted = this._lineHeight;\n\t\t\tthis._isFontFitted = false;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontSizeFitted(): number {\n\t\treturn this._fontSizeFitted;\n\t}\n\n\tget isFontFitted(): boolean {\n\t\treturn this._isFontFitted;\n\t}\n\n\tget fontStyle(): DFontStyle {\n\t\treturn this._fontStyle;\n\t}\n\n\tset fontStyle(fontStyle: DFontStyle) {\n\t\tif (this._fontStyle !== fontStyle) {\n\t\t\tthis._fontStyle = fontStyle;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontVariant(): DFontVariant {\n\t\treturn this._fontVariant;\n\t}\n\n\tset fontVariant(fontVariant: DFontVariant) {\n\t\tif (this._fontVariant !== fontVariant) {\n\t\t\tthis._fontVariant = fontVariant;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontWeight(): DFontWeight {\n\t\treturn this._fontWeight;\n\t}\n\n\tset fontWeight(fontWeight: DFontWeight) {\n\t\tif (this._fontWeight !== fontWeight) {\n\t\t\tthis._fontWeight = fontWeight;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tprotected update(): void {\n\t\tif (this._fontIdId !== this._id) {\n\t\t\tthis._fontIdId = this._id;\n\t\t\tconst fontIdFontSize = this._fitting ? this._fontSizeFitted : this._fontSize;\n\t\t\tthis._fontIdFontSize = fontIdFontSize;\n\t\t\tthis._fontId = this.toFontId(fontIdFontSize);\n\t\t}\n\t}\n\n\ttoFontId(fontSize: number): string {\n\t\treturn `${this._fontStyle} ${this._fontVariant} ${this._fontWeight} ${fontSize}px ${this._fontFamily}`;\n\t}\n\n\tget clipping(): boolean {\n\t\treturn this._clipping;\n\t}\n\n\tset clipping(clipping: boolean) {\n\t\tif (this._clipping !== clipping) {\n\t\t\tthis._clipping = clipping;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fitting(): boolean {\n\t\treturn this._fitting;\n\t}\n\n\tset fitting(fitting: boolean) {\n\t\tif (this._fitting !== fitting) {\n\t\t\tthis._fitting = fitting;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget wordWrap(): DDynamicTextStyleWordWrap {\n\t\treturn this._wordWrap;\n\t}\n\n\tset wordWrap(wordWrap: DDynamicTextStyleWordWrap) {\n\t\tif (this._wordWrap !== wordWrap) {\n\t\t\tthis._wordWrap = wordWrap;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget lineHeight(): number {\n\t\treturn this._lineHeight;\n\t}\n\n\tset lineHeight(lineHeight: number) {\n\t\tif (this._lineHeight !== lineHeight) {\n\t\t\tthis._lineHeight = lineHeight;\n\t\t\tthis._fontSizeFitted = this._fontSize;\n\t\t\tthis._lineHeightFitted = lineHeight;\n\t\t\tthis._isFontFitted = false;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget lineHeightFitted(): number {\n\t\treturn this._lineHeightFitted;\n\t}\n\n\tset lineHeightFitted(lineHeightFitted: number) {\n\t\tif (this._lineHeightFitted !== lineHeightFitted) {\n\t\t\tthis._lineHeightFitted = lineHeightFitted;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tfit(fontSize: number, lineHeight: number): boolean {\n\t\tlet isChanged = false;\n\t\tif (fontSize < this._fontSizeFitted) {\n\t\t\tthis._fontSizeFitted = fontSize;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (this._lineHeightFitted !== lineHeight) {\n\t\t\tthis._lineHeightFitted = lineHeight;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (this._isFontFitted !== true) {\n\t\t\tthis._isFontFitted = true;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (isChanged) {\n\t\t\tthis.onChange();\n\t\t}\n\t\treturn isChanged;\n\t}\n\n\tunfit(): boolean {\n\t\tlet isChanged = false;\n\t\tif (this._isFontFitted !== false) {\n\t\t\tthis._isFontFitted = false;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (this._fontSizeFitted !== this._fontSize) {\n\t\t\tthis._fontSizeFitted = this._fontSize;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (this._lineHeightFitted !== this._lineHeight) {\n\t\t\tthis._lineHeightFitted = this._lineHeight;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (isChanged) {\n\t\t\tthis.onChange();\n\t\t}\n\t\treturn isChanged;\n\t}\n}\n"]}