@wcardinal/wcardinal-ui 0.408.0 → 0.410.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 (189) hide show
  1. package/dist/types/wcardinal/ui/d-base-snippet-container.d.ts +1 -0
  2. package/dist/types/wcardinal/ui/d-base.d.ts +1 -0
  3. package/dist/types/wcardinal/ui/shape/e-shape-buffer.d.ts +3 -9
  4. package/dist/types/wcardinal/ui/shape/e-shape-container.d.ts +1 -1
  5. package/dist/types/wcardinal/ui/shape/e-shape-points-formatter-curve-bezier-quadratic.d.ts +2 -0
  6. package/dist/types/wcardinal/ui/shape/e-shape-points-formatters.d.ts +2 -1
  7. package/dist/types/wcardinal/ui/shape/e-shape-points-style.d.ts +7 -1
  8. package/dist/types/wcardinal/ui/shape/index.d.ts +1 -0
  9. package/dist/types/wcardinal/ui/shape/variant/build-bar.d.ts +1 -2
  10. package/dist/types/wcardinal/ui/shape/variant/build-circle.d.ts +1 -2
  11. package/dist/types/wcardinal/ui/shape/variant/build-color.d.ts +1 -1
  12. package/dist/types/wcardinal/ui/shape/variant/build-image-sdf.d.ts +0 -1
  13. package/dist/types/wcardinal/ui/shape/variant/build-line-of-any.d.ts +17 -1
  14. package/dist/types/wcardinal/ui/shape/variant/build-line.d.ts +2 -3
  15. package/dist/types/wcardinal/ui/shape/variant/build-null.d.ts +0 -1
  16. package/dist/types/wcardinal/ui/shape/variant/build-rectangle-rounded.d.ts +2 -3
  17. package/dist/types/wcardinal/ui/shape/variant/build-rectangle.d.ts +4 -5
  18. package/dist/types/wcardinal/ui/shape/variant/build-semicircle.d.ts +1 -2
  19. package/dist/types/wcardinal/ui/shape/variant/build-text.d.ts +0 -1
  20. package/dist/types/wcardinal/ui/shape/variant/build-triangle-rounded.d.ts +1 -2
  21. package/dist/types/wcardinal/ui/shape/variant/build-triangle.d.ts +1 -2
  22. package/dist/types/wcardinal/ui/shape/variant/builder-bar.d.ts +1 -1
  23. package/dist/types/wcardinal/ui/shape/variant/builder-base.d.ts +1 -2
  24. package/dist/types/wcardinal/ui/shape/variant/builder-line-of-any.d.ts +1 -2
  25. package/dist/types/wcardinal/ui/shape/variant/builder-line-of-rectangle-roundeds.d.ts +1 -1
  26. package/dist/types/wcardinal/ui/shape/variant/builder-line-of-rectangles.d.ts +1 -1
  27. package/dist/types/wcardinal/ui/shape/variant/builder-line-of-triangle-roundeds.d.ts +1 -1
  28. package/dist/types/wcardinal/ui/shape/variant/builder-line.d.ts +1 -2
  29. package/dist/types/wcardinal/ui/shape/variant/builder-marker-base.d.ts +1 -1
  30. package/dist/types/wcardinal/ui/shape/variant/builder-marker-rectangle.d.ts +1 -1
  31. package/dist/types/wcardinal/ui/shape/variant/builder-rectangle-pivoted.d.ts +1 -1
  32. package/dist/types/wcardinal/ui/shape/variant/builder-rectangle-rounded.d.ts +1 -1
  33. package/dist/types/wcardinal/ui/shape/variant/builder-rectangle.d.ts +1 -1
  34. package/dist/types/wcardinal/ui/shape/variant/builder-text.d.ts +1 -2
  35. package/dist/types/wcardinal/ui/shape/variant/builder-triangle-rounded.d.ts +1 -1
  36. package/dist/types/wcardinal/ui/shape/variant/builder.d.ts +9 -18
  37. package/dist/types/wcardinal/ui/shape/variant/index.d.ts +0 -1
  38. package/dist/types/wcardinal/ui/shape/variant/to-dash.d.ts +1 -2
  39. package/dist/types/wcardinal/ui/shape/variant/to-normal-packed.d.ts +1 -0
  40. package/dist/types/wcardinal/ui/shape/variant/to-normal.d.ts +1 -0
  41. package/dist/types/wcardinal/ui/shape/variant/to-packed.d.ts +2 -0
  42. package/dist/types/wcardinal/ui/shape/variant/to-vector-length.d.ts +1 -0
  43. package/dist/types/wcardinal/ui/shape/variant/to-vector.d.ts +1 -0
  44. package/dist/types/wcardinal/ui/theme/dark/e-theme-dark-en-us-shape-points-formatter.d.ts +2 -1
  45. package/dist/types/wcardinal/ui/theme/dark/e-theme-dark-ja-jp-shape-points-formatter.d.ts +2 -1
  46. package/dist/types/wcardinal/ui/theme/dark/e-theme-dark-shape-points-formatter.d.ts +2 -1
  47. package/dist/types/wcardinal/ui/theme/white/e-theme-white-en-us-shape-points-formatter.d.ts +2 -1
  48. package/dist/types/wcardinal/ui/theme/white/e-theme-white-ja-jp-shape-points-formatter.d.ts +2 -1
  49. package/dist/types/wcardinal/ui/theme/white/e-theme-white-shape-points-formatter.d.ts +2 -1
  50. package/dist/wcardinal/ui/d-base-snippet-container.js +11 -3
  51. package/dist/wcardinal/ui/d-base-snippet-container.js.map +1 -1
  52. package/dist/wcardinal/ui/d-base.js +4 -0
  53. package/dist/wcardinal/ui/d-base.js.map +1 -1
  54. package/dist/wcardinal/ui/d-scroll-bar.js +1 -0
  55. package/dist/wcardinal/ui/d-scroll-bar.js.map +1 -1
  56. package/dist/wcardinal/ui/shape/e-shape-buffer.js +10 -30
  57. package/dist/wcardinal/ui/shape/e-shape-buffer.js.map +1 -1
  58. package/dist/wcardinal/ui/shape/e-shape-container.js +1 -1
  59. package/dist/wcardinal/ui/shape/e-shape-container.js.map +1 -1
  60. package/dist/wcardinal/ui/shape/e-shape-points-formatter-curve-bezier-quadratic.js +165 -0
  61. package/dist/wcardinal/ui/shape/e-shape-points-formatter-curve-bezier-quadratic.js.map +1 -0
  62. package/dist/wcardinal/ui/shape/e-shape-points-formatters.js +7 -2
  63. package/dist/wcardinal/ui/shape/e-shape-points-formatters.js.map +1 -1
  64. package/dist/wcardinal/ui/shape/e-shape-points-style.js +12 -4
  65. package/dist/wcardinal/ui/shape/e-shape-points-style.js.map +1 -1
  66. package/dist/wcardinal/ui/shape/e-shape-renderer.js +4 -5
  67. package/dist/wcardinal/ui/shape/e-shape-renderer.js.map +1 -1
  68. package/dist/wcardinal/ui/shape/index.js +1 -0
  69. package/dist/wcardinal/ui/shape/index.js.map +1 -1
  70. package/dist/wcardinal/ui/shape/variant/build-bar.js +37 -63
  71. package/dist/wcardinal/ui/shape/variant/build-bar.js.map +1 -1
  72. package/dist/wcardinal/ui/shape/variant/build-circle.js +63 -40
  73. package/dist/wcardinal/ui/shape/variant/build-circle.js.map +1 -1
  74. package/dist/wcardinal/ui/shape/variant/build-color.js +8 -11
  75. package/dist/wcardinal/ui/shape/variant/build-color.js.map +1 -1
  76. package/dist/wcardinal/ui/shape/variant/build-image-sdf.js +30 -37
  77. package/dist/wcardinal/ui/shape/variant/build-image-sdf.js.map +1 -1
  78. package/dist/wcardinal/ui/shape/variant/build-line-of-any.js +244 -25
  79. package/dist/wcardinal/ui/shape/variant/build-line-of-any.js.map +1 -1
  80. package/dist/wcardinal/ui/shape/variant/build-line.js +149 -129
  81. package/dist/wcardinal/ui/shape/variant/build-line.js.map +1 -1
  82. package/dist/wcardinal/ui/shape/variant/build-null.js +0 -7
  83. package/dist/wcardinal/ui/shape/variant/build-null.js.map +1 -1
  84. package/dist/wcardinal/ui/shape/variant/build-rectangle-rounded.js +917 -849
  85. package/dist/wcardinal/ui/shape/variant/build-rectangle-rounded.js.map +1 -1
  86. package/dist/wcardinal/ui/shape/variant/build-rectangle.js +279 -353
  87. package/dist/wcardinal/ui/shape/variant/build-rectangle.js.map +1 -1
  88. package/dist/wcardinal/ui/shape/variant/build-semicircle.js +45 -31
  89. package/dist/wcardinal/ui/shape/variant/build-semicircle.js.map +1 -1
  90. package/dist/wcardinal/ui/shape/variant/build-text.js +6 -13
  91. package/dist/wcardinal/ui/shape/variant/build-text.js.map +1 -1
  92. package/dist/wcardinal/ui/shape/variant/build-triangle-rounded.js +255 -128
  93. package/dist/wcardinal/ui/shape/variant/build-triangle-rounded.js.map +1 -1
  94. package/dist/wcardinal/ui/shape/variant/build-triangle.js +55 -35
  95. package/dist/wcardinal/ui/shape/variant/build-triangle.js.map +1 -1
  96. package/dist/wcardinal/ui/shape/variant/builder-bar.js +8 -11
  97. package/dist/wcardinal/ui/shape/variant/builder-bar.js.map +1 -1
  98. package/dist/wcardinal/ui/shape/variant/builder-base.js +18 -22
  99. package/dist/wcardinal/ui/shape/variant/builder-base.js.map +1 -1
  100. package/dist/wcardinal/ui/shape/variant/builder-circle.js +4 -7
  101. package/dist/wcardinal/ui/shape/variant/builder-circle.js.map +1 -1
  102. package/dist/wcardinal/ui/shape/variant/builder-image-sdf.js +3 -6
  103. package/dist/wcardinal/ui/shape/variant/builder-image-sdf.js.map +1 -1
  104. package/dist/wcardinal/ui/shape/variant/builder-line-of-any.js +13 -17
  105. package/dist/wcardinal/ui/shape/variant/builder-line-of-any.js.map +1 -1
  106. package/dist/wcardinal/ui/shape/variant/builder-line-of-circles.js +5 -12
  107. package/dist/wcardinal/ui/shape/variant/builder-line-of-circles.js.map +1 -1
  108. package/dist/wcardinal/ui/shape/variant/builder-line-of-rectangle-roundeds.js +10 -26
  109. package/dist/wcardinal/ui/shape/variant/builder-line-of-rectangle-roundeds.js.map +1 -1
  110. package/dist/wcardinal/ui/shape/variant/builder-line-of-rectangles.js +9 -25
  111. package/dist/wcardinal/ui/shape/variant/builder-line-of-rectangles.js.map +1 -1
  112. package/dist/wcardinal/ui/shape/variant/builder-line-of-triangle-roundeds.js +9 -25
  113. package/dist/wcardinal/ui/shape/variant/builder-line-of-triangle-roundeds.js.map +1 -1
  114. package/dist/wcardinal/ui/shape/variant/builder-line-of-triangles.js +5 -12
  115. package/dist/wcardinal/ui/shape/variant/builder-line-of-triangles.js.map +1 -1
  116. package/dist/wcardinal/ui/shape/variant/builder-line.js +13 -27
  117. package/dist/wcardinal/ui/shape/variant/builder-line.js.map +1 -1
  118. package/dist/wcardinal/ui/shape/variant/builder-marker-base.js +27 -19
  119. package/dist/wcardinal/ui/shape/variant/builder-marker-base.js.map +1 -1
  120. package/dist/wcardinal/ui/shape/variant/builder-marker-circle.js +4 -7
  121. package/dist/wcardinal/ui/shape/variant/builder-marker-circle.js.map +1 -1
  122. package/dist/wcardinal/ui/shape/variant/builder-marker-rectangle.js +7 -13
  123. package/dist/wcardinal/ui/shape/variant/builder-marker-rectangle.js.map +1 -1
  124. package/dist/wcardinal/ui/shape/variant/builder-marker-triangle.js +4 -7
  125. package/dist/wcardinal/ui/shape/variant/builder-marker-triangle.js.map +1 -1
  126. package/dist/wcardinal/ui/shape/variant/builder-rectangle-pivoted.js +7 -13
  127. package/dist/wcardinal/ui/shape/variant/builder-rectangle-pivoted.js.map +1 -1
  128. package/dist/wcardinal/ui/shape/variant/builder-rectangle-rounded.js +6 -12
  129. package/dist/wcardinal/ui/shape/variant/builder-rectangle-rounded.js.map +1 -1
  130. package/dist/wcardinal/ui/shape/variant/builder-rectangle.js +7 -13
  131. package/dist/wcardinal/ui/shape/variant/builder-rectangle.js.map +1 -1
  132. package/dist/wcardinal/ui/shape/variant/builder-semicircle.js +4 -7
  133. package/dist/wcardinal/ui/shape/variant/builder-semicircle.js.map +1 -1
  134. package/dist/wcardinal/ui/shape/variant/builder-text.js +19 -28
  135. package/dist/wcardinal/ui/shape/variant/builder-text.js.map +1 -1
  136. package/dist/wcardinal/ui/shape/variant/builder-triangle-rounded.js +7 -12
  137. package/dist/wcardinal/ui/shape/variant/builder-triangle-rounded.js.map +1 -1
  138. package/dist/wcardinal/ui/shape/variant/builder-triangle.js +4 -7
  139. package/dist/wcardinal/ui/shape/variant/builder-triangle.js.map +1 -1
  140. package/dist/wcardinal/ui/shape/variant/builder.js +18 -14
  141. package/dist/wcardinal/ui/shape/variant/builder.js.map +1 -1
  142. package/dist/wcardinal/ui/shape/variant/index.js +0 -1
  143. package/dist/wcardinal/ui/shape/variant/index.js.map +1 -1
  144. package/dist/wcardinal/ui/shape/variant/to-dash.js +8 -9
  145. package/dist/wcardinal/ui/shape/variant/to-dash.js.map +1 -1
  146. package/dist/wcardinal/ui/shape/variant/to-normal-packed.js +7 -0
  147. package/dist/wcardinal/ui/shape/variant/to-normal-packed.js.map +1 -0
  148. package/dist/wcardinal/ui/shape/variant/to-normal.js +15 -0
  149. package/dist/wcardinal/ui/shape/variant/to-normal.js.map +1 -0
  150. package/dist/wcardinal/ui/shape/variant/to-packed.js +7 -0
  151. package/dist/wcardinal/ui/shape/variant/to-packed.js.map +1 -0
  152. package/dist/wcardinal/ui/shape/variant/to-vector-length.js +4 -0
  153. package/dist/wcardinal/ui/shape/variant/to-vector-length.js.map +1 -0
  154. package/dist/wcardinal/ui/shape/variant/to-vector.js +6 -0
  155. package/dist/wcardinal/ui/shape/variant/to-vector.js.map +1 -0
  156. package/dist/wcardinal/ui/theme/dark/e-theme-dark-en-us-shape-points-formatter.js +5 -2
  157. package/dist/wcardinal/ui/theme/dark/e-theme-dark-en-us-shape-points-formatter.js.map +1 -1
  158. package/dist/wcardinal/ui/theme/dark/e-theme-dark-ja-jp-shape-points-formatter.js +5 -2
  159. package/dist/wcardinal/ui/theme/dark/e-theme-dark-ja-jp-shape-points-formatter.js.map +1 -1
  160. package/dist/wcardinal/ui/theme/dark/e-theme-dark-shape-points-formatter.js.map +1 -1
  161. package/dist/wcardinal/ui/theme/white/e-theme-white-en-us-shape-points-formatter.js +5 -2
  162. package/dist/wcardinal/ui/theme/white/e-theme-white-en-us-shape-points-formatter.js.map +1 -1
  163. package/dist/wcardinal/ui/theme/white/e-theme-white-ja-jp-shape-points-formatter.js +5 -2
  164. package/dist/wcardinal/ui/theme/white/e-theme-white-ja-jp-shape-points-formatter.js.map +1 -1
  165. package/dist/wcardinal/ui/theme/white/e-theme-white-shape-points-formatter.js.map +1 -1
  166. package/dist/wcardinal-ui-theme-dark-en-us.js +6 -3
  167. package/dist/wcardinal-ui-theme-dark-en-us.min.js +2 -2
  168. package/dist/wcardinal-ui-theme-dark-en-us.min.js.map +1 -1
  169. package/dist/wcardinal-ui-theme-dark-ja-jp.js +6 -3
  170. package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +2 -2
  171. package/dist/wcardinal-ui-theme-dark-ja-jp.min.js.map +1 -1
  172. package/dist/wcardinal-ui-theme-dark.js +6 -3
  173. package/dist/wcardinal-ui-theme-dark.min.js +2 -2
  174. package/dist/wcardinal-ui-theme-white-en-us.js +6 -3
  175. package/dist/wcardinal-ui-theme-white-en-us.min.js +2 -2
  176. package/dist/wcardinal-ui-theme-white-en-us.min.js.map +1 -1
  177. package/dist/wcardinal-ui-theme-white-ja-jp.js +6 -3
  178. package/dist/wcardinal-ui-theme-white-ja-jp.min.js +2 -2
  179. package/dist/wcardinal-ui-theme-white-ja-jp.min.js.map +1 -1
  180. package/dist/wcardinal-ui-theme-white.js +6 -3
  181. package/dist/wcardinal-ui-theme-white.min.js +2 -2
  182. package/dist/wcardinal-ui.cjs.js +2526 -2114
  183. package/dist/wcardinal-ui.js +2502 -2102
  184. package/dist/wcardinal-ui.min.js +2 -2
  185. package/dist/wcardinal-ui.min.js.map +1 -1
  186. package/package.json +1 -1
  187. package/dist/types/wcardinal/ui/shape/variant/copy-clipping.d.ts +0 -1
  188. package/dist/wcardinal/ui/shape/variant/copy-clipping.js +0 -20
  189. package/dist/wcardinal/ui/shape/variant/copy-clipping.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"build-text.js","sourceRoot":"","sources":["../../../../../src/main/typescript/wcardinal/ui/shape/variant/build-text.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix, Point, TextureUvs } from \"pixi.js\";\nimport { UtilCharacterIterator } from \"../../util/util-character-iterator\";\nimport { EShape } from \"../e-shape\";\nimport { EShapeStrokeStyle } from \"../e-shape-stroke-style\";\nimport {\n\tEShapeTextAtlas,\n\tEShapeTextAtlasCharacter,\n\tEShapeTextStyle,\n\tEShapeTextWeight\n} from \"../e-shape-text\";\nimport { EShapeTextAlignHorizontal } from \"../e-shape-text-align-horizontal\";\nimport { EShapeTextAlignVertical } from \"../e-shape-text-align-vertical\";\nimport { EShapeTextDirection } from \"../e-shape-text-direction\";\nimport { toLength } from \"./to-length\";\nimport { toScaleInvariant } from \"./to-scale-invariant\";\n\nexport const TEXT_VERTEX_COUNT = 4;\nexport const TEXT_VERTEX_COUNT_SHIFT = 2;\nexport const TEXT_INDEX_COUNT = 2;\nexport const TEXT_INDEX_COUNT_SHIFT = 1;\nexport const TEXT_FMIN: number = 0.00001;\nconst TEXT_WORK_POINT: Point = new Point();\n\nexport const toTextBufferCount = (shape: EShape): number => {\n\tconst l = shape.text.plength;\n\treturn ((l >> 3) + (0 < (l & 0x7) ? 1 : 0)) << 3;\n};\n\nexport const buildTextClipping = (\n\tclippings: Float32Array,\n\tvoffset: number,\n\tvcount: number\n): void => {\n\tlet ic = voffset * 3 - 1;\n\tconst icmax = (voffset + vcount) * 3 - 1;\n\tfor (; ic < icmax; ) {\n\t\tclippings[++ic] = 0;\n\t\tclippings[++ic] = 0;\n\t\tclippings[++ic] = 2;\n\t}\n};\n\nexport const buildTextIndex = (\n\tindices: Uint16Array | Uint32Array,\n\tvoffset: number,\n\tioffset: number,\n\ticount: number\n): void => {\n\tlet ii = ioffset * 3 - 1;\n\tconst iimax = (ioffset + icount) * 3 - 1;\n\tlet iv = voffset;\n\tfor (; ii < iimax; ) {\n\t\tindices[++ii] = iv;\n\t\tindices[++ii] = iv + 1;\n\t\tindices[++ii] = iv + 3;\n\n\t\tindices[++ii] = iv + 1;\n\t\tindices[++ii] = iv + 2;\n\t\tindices[++ii] = iv + 3;\n\t\tiv += 4;\n\t}\n};\n\nexport const buildTextStep = (\n\tsteps: Float32Array,\n\tvoffset: number,\n\tvcount: number,\n\ttextAtlas: EShapeTextAtlas | undefined,\n\ttextSize: number,\n\ttextOutlineWidth: number,\n\ttextWeight: EShapeTextWeight,\n\tscaleX: number,\n\tscaleY: number\n): void => {\n\tlet is = voffset * 6 - 1;\n\tconst ismax = (voffset + vcount) * 6 - 1;\n\tconst scaleInvariant = toScaleInvariant(EShapeStrokeStyle.NONE);\n\tif (textAtlas != null) {\n\t\tconst scale = textAtlas.font.size / (textSize * (scaleX + scaleY) * 0.5);\n\t\tconst position = textWeight === EShapeTextWeight.NORMAL ? 0.0 : 0.05;\n\t\tfor (; is < ismax; ) {\n\t\t\tsteps[++is] = textOutlineWidth;\n\t\t\tsteps[++is] = scaleInvariant;\n\t\t\tsteps[++is] = scale;\n\t\t\tsteps[++is] = 1;\n\t\t\tsteps[++is] = 0;\n\t\t\tsteps[++is] = position;\n\t\t}\n\t} else {\n\t\tfor (; is < ismax; ) {\n\t\t\tsteps[++is] = 0;\n\t\t\tsteps[++is] = scaleInvariant;\n\t\t\tsteps[++is] = 0;\n\t\t\tsteps[++is] = 1;\n\t\t\tsteps[++is] = 0;\n\t\t\tsteps[++is] = 0;\n\t\t}\n\t}\n};\n\nconst getTextBBox = (\n\thalign: EShapeTextAlignHorizontal,\n\tvalign: EShapeTextAlignVertical,\n\thoffset: number,\n\tvoffset: number,\n\thpadding: number,\n\tvpadding: number,\n\twidth: number,\n\theight: number,\n\tx0: number,\n\ty0: number,\n\tx1: number,\n\ty1: number,\n\tx2: number,\n\ty2: number,\n\tx3: number,\n\ty3: number,\n\thnx: number,\n\thny: number,\n\tvnx: number,\n\tvny: number,\n\tresult: Point\n): void => {\n\tswitch (halign) {\n\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\tswitch (valign) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tresult.x = x0 + hnx * (hoffset + hpadding) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y0 + hny * (hoffset + hpadding) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x0 + x3) +\n\t\t\t\t\t\thnx * (hoffset + hpadding) +\n\t\t\t\t\t\tvnx * (voffset - 0.5 * height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y0 + y3) +\n\t\t\t\t\t\thny * (hoffset + hpadding) +\n\t\t\t\t\t\tvny * (voffset - 0.5 * height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx3 + hnx * (hoffset + hpadding) + vnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty3 + hny * (hoffset + hpadding) + vny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx0 + hnx * (hoffset + hpadding) + vnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty0 + hny * (hoffset + hpadding) + vny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tresult.x = x3 + hnx * (hoffset + hpadding) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y3 + hny * (hoffset + hpadding) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\tswitch (valign) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x0 + x1) +\n\t\t\t\t\t\thnx * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvnx * (voffset + vpadding);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y0 + y1) +\n\t\t\t\t\t\thny * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x0 + x2) +\n\t\t\t\t\t\thnx * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvnx * (voffset - 0.5 * height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y0 + y2) +\n\t\t\t\t\t\thny * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvny * (voffset - 0.5 * height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x3 + x2) +\n\t\t\t\t\t\thnx * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y3 + y2) +\n\t\t\t\t\t\thny * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x0 + x1) +\n\t\t\t\t\t\thnx * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y0 + y1) +\n\t\t\t\t\t\thny * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x3 + x2) +\n\t\t\t\t\t\thnx * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvnx * (voffset + vpadding);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y3 + y2) +\n\t\t\t\t\t\thny * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\tswitch (valign) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tresult.x = x1 + hnx * (hoffset - hpadding - width) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y1 + hny * (hoffset - hpadding - width) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x1 + x2) +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - 0.5 * height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y1 + y2) +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - 0.5 * height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx2 +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty2 +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx1 +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty1 +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tresult.x = x2 + hnx * (hoffset - hpadding - width) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y2 + hny * (hoffset - hpadding - width) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\tswitch (valign) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tresult.x = x0 + hnx * (hoffset - hpadding - width) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y0 + hny * (hoffset - hpadding - width) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x0 + x3) +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - 0.5 * height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y0 + y3) +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - 0.5 * height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx3 +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty3 +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx0 +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty0 +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tresult.x = x3 + hnx * (hoffset - hpadding - width) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y3 + hny * (hoffset - hpadding - width) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\tswitch (valign) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tresult.x = x1 + hnx * (hoffset + hpadding) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y1 + hny * (hoffset + hpadding) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x1 + x2) +\n\t\t\t\t\t\thnx * (hoffset + hpadding) +\n\t\t\t\t\t\tvnx * (voffset - 0.5 * height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y1 + y2) +\n\t\t\t\t\t\thny * (hoffset + hpadding) +\n\t\t\t\t\t\tvny * (voffset - 0.5 * height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx2 + hnx * (hoffset + hpadding) + vnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty2 + hny * (hoffset + hpadding) + vny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx1 + hnx * (hoffset + hpadding) + vnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty1 + hny * (hoffset + hpadding) + vny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tresult.x = x2 + hnx * (hoffset + hpadding) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y2 + hny * (hoffset + hpadding) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t}\n};\n\nconst rotateAlignHorizontalRight = (align: EShapeTextAlignHorizontal): EShapeTextAlignVertical => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\treturn EShapeTextAlignVertical.BOTTOM;\n\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\treturn EShapeTextAlignVertical.MIDDLE;\n\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\treturn EShapeTextAlignVertical.TOP;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_BOTTOM;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_TOP;\n\t}\n};\n\nconst rotateAlignVerticalRight = (align: EShapeTextAlignVertical): EShapeTextAlignHorizontal => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\treturn EShapeTextAlignHorizontal.LEFT;\n\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\treturn EShapeTextAlignHorizontal.CENTER;\n\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\treturn EShapeTextAlignHorizontal.RIGHT;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_LEFT;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_RIGHT;\n\t}\n};\n\nconst rotateAlignHorizontalLeft = (align: EShapeTextAlignHorizontal): EShapeTextAlignVertical => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\treturn EShapeTextAlignVertical.TOP;\n\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\treturn EShapeTextAlignVertical.MIDDLE;\n\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\treturn EShapeTextAlignVertical.BOTTOM;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_TOP;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_BOTTOM;\n\t}\n};\n\nconst rotateAlignVerticalLeft = (align: EShapeTextAlignVertical): EShapeTextAlignHorizontal => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\treturn EShapeTextAlignHorizontal.RIGHT;\n\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\treturn EShapeTextAlignHorizontal.CENTER;\n\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\treturn EShapeTextAlignHorizontal.LEFT;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_RIGHT;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_LEFT;\n\t}\n};\n\nconst invertAlignHorizontal = (align: EShapeTextAlignHorizontal): EShapeTextAlignHorizontal => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\treturn EShapeTextAlignHorizontal.RIGHT;\n\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\treturn EShapeTextAlignHorizontal.CENTER;\n\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\treturn EShapeTextAlignHorizontal.LEFT;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_RIGHT;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_LEFT;\n\t}\n};\n\nconst invertAlignVertical = (align: EShapeTextAlignVertical): EShapeTextAlignVertical => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\treturn EShapeTextAlignVertical.BOTTOM;\n\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\treturn EShapeTextAlignVertical.MIDDLE;\n\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\treturn EShapeTextAlignVertical.TOP;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_BOTTOM;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_TOP;\n\t}\n};\n\nexport const buildTextVertex = (\n\tvertices: Float32Array,\n\tuvs: Float32Array,\n\tvoffset: number,\n\tvcount: number,\n\toriginX: number,\n\toriginY: number,\n\tsizeX: number,\n\tsizeY: number,\n\ttextAtlas: EShapeTextAtlas,\n\ttextSize: number,\n\ttextValue: string,\n\ttextStyle: EShapeTextStyle,\n\ttextAlignHorizontal: EShapeTextAlignHorizontal,\n\ttextAlignVertical: EShapeTextAlignVertical,\n\ttextOffsetHorizontal: number,\n\ttextOffsetVertical: number,\n\ttextSpacingHorizontal: number,\n\ttextSpacingVertical: number,\n\ttextDirection: EShapeTextDirection,\n\ttextPaddingHorizontal: number,\n\ttextPaddingVertical: number,\n\ttextClipping: boolean,\n\ttextFitting: boolean,\n\ttextWorld: number[],\n\ttextureUvs: TextureUvs,\n\tinternalTransform: Matrix\n): void => {\n\t// Calculate the transformed positions\n\t//\n\t// 0 1\n\t// |---------------|\n\t// | |\n\t// |3 |2\n\t// |---------------|\n\t//\n\tconst sx = sizeX * 0.5;\n\tconst sy = sizeY * 0.5;\n\n\tconst a = internalTransform.a;\n\tconst b = internalTransform.b;\n\tconst c = internalTransform.c;\n\tconst d = internalTransform.d;\n\tconst tx = internalTransform.tx;\n\tconst ty = internalTransform.ty;\n\n\tconst ltx = originX - sx;\n\tconst lty = originY - sy;\n\tconst rtx = originX + sx;\n\tconst rty = originY - sy;\n\tconst rbx = originX + sx;\n\tconst rby = originY + sy;\n\tconst x0 = a * ltx + c * lty + tx;\n\tconst y0 = b * ltx + d * lty + ty;\n\tconst x1 = a * rtx + c * rty + tx;\n\tconst y1 = b * rtx + d * rty + ty;\n\tconst x2 = a * rbx + c * rby + tx;\n\tconst y2 = b * rbx + d * rby + ty;\n\tconst x3 = x0 + (x2 - x1);\n\tconst y3 = y0 + (y2 - y1);\n\n\t// Horizontal normal\n\tconst hl = toLength(x0, y0, x1, y1);\n\tlet hnl = toLength(0, 0, a, b);\n\tlet hnx = 1;\n\tlet hny = 0;\n\tif (TEXT_FMIN < hnl) {\n\t\tconst hnli = 1 / hnl;\n\t\thnx = a * hnli;\n\t\thny = b * hnli;\n\t}\n\n\t// Vertical normal\n\tconst vl = toLength(x0, y0, x3, y3);\n\tlet vnl = toLength(0, 0, c, d);\n\tlet vnx = 0;\n\tlet vny = 1;\n\tif (TEXT_FMIN < hnl) {\n\t\tconst vnli = 1 / vnl;\n\t\tvnx = c * vnli;\n\t\tvny = d * vnli;\n\t}\n\n\tconst work = TEXT_WORK_POINT;\n\tswitch (textDirection) {\n\t\tcase EShapeTextDirection.LEFT_TO_RIGHT:\n\t\t\t// DO NOTHING\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.TOP_TO_BOTTOM:\n\t\t\twork.set(vnx, vny);\n\t\t\tvnx = -hnx;\n\t\t\tvny = -hny;\n\t\t\thnx = work.x;\n\t\t\thny = work.y;\n\n\t\t\twork.x = vnl;\n\t\t\tvnl = hnl;\n\t\t\thnl = work.x;\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.BOTTOM_TO_TOP:\n\t\t\twork.set(vnx, vny);\n\t\t\tvnx = hnx;\n\t\t\tvny = hny;\n\t\t\thnx = -work.x;\n\t\t\thny = -work.y;\n\n\t\t\twork.x = vnl;\n\t\t\tvnl = hnl;\n\t\t\thnl = work.x;\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.RIGHT_TO_LEFT:\n\t\t\thnx = -hnx;\n\t\t\thny = -hny;\n\t\t\tvnx = -vnx;\n\t\t\tvny = -vny;\n\t\t\tbreak;\n\t}\n\n\t// Calculate the width / height\n\tlet width = 0;\n\tlet height = 0;\n\tlet heightChar = 0;\n\tlet textSizeY = textSize * vnl;\n\tlet lineHeight = Math.max(0, textSize + textSpacingVertical) * vnl;\n\tlet lineWidth = 0;\n\tlet lineCount = 1;\n\tconst textAtlasCharacters = textAtlas.characters;\n\tconst iterator = UtilCharacterIterator.from(textValue);\n\tlet advancePrevious = 0;\n\twhile (iterator.hasNext()) {\n\t\tconst character = iterator.next();\n\t\tif (character !== \"\\n\") {\n\t\t\tif (0 < advancePrevious) {\n\t\t\t\tlineWidth += Math.max(0, advancePrevious + textSpacingHorizontal);\n\t\t\t}\n\t\t\tconst data = textAtlasCharacters[character];\n\t\t\tif (data) {\n\t\t\t\tadvancePrevious = data.advance;\n\t\t\t\theightChar = data.height;\n\t\t\t} else {\n\t\t\t\tadvancePrevious = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tlineWidth += advancePrevious;\n\t\t\tadvancePrevious = 0;\n\t\t\twidth = Math.max(width, lineWidth);\n\t\t\tlineWidth = 0;\n\t\t\theight += lineHeight;\n\t\t\tlineCount += 1;\n\t\t}\n\t}\n\tlineWidth += advancePrevious;\n\twidth = Math.max(width, lineWidth);\n\theight += textSizeY;\n\tlineWidth = 0;\n\n\tif (textFitting && isIn(textAlignHorizontal, textAlignVertical)) {\n\t\tlet w0 = 0;\n\t\tlet h0 = 0;\n\t\tswitch (textDirection) {\n\t\t\tcase EShapeTextDirection.LEFT_TO_RIGHT:\n\t\t\tcase EShapeTextDirection.RIGHT_TO_LEFT:\n\t\t\t\tw0 = Math.max(0, hl - textPaddingHorizontal * 2);\n\t\t\t\th0 = Math.max(0, vl - textPaddingVertical * 2);\n\t\t\t\tbreak;\n\t\t\tcase EShapeTextDirection.TOP_TO_BOTTOM:\n\t\t\tcase EShapeTextDirection.BOTTOM_TO_TOP:\n\t\t\t\tw0 = Math.max(0, vl - textPaddingVertical * 2);\n\t\t\t\th0 = Math.max(0, hl - textPaddingHorizontal * 2);\n\t\t\t\tbreak;\n\t\t}\n\t\tconst w1 = width * hnl * (textSize / textAtlas.font.size);\n\t\tconst h1 = height;\n\t\tconst s = Math.min(1, Math.min(w0 / w1, h0 / h1));\n\t\ttextSize *= s;\n\t\ttextSizeY *= s;\n\t\tlineHeight *= s;\n\t\theight *= s;\n\t}\n\n\tconst scaleZ = textSize / textAtlas.font.size;\n\tconst scaleX = hnl * scaleZ;\n\tconst scaleY = vnl * scaleZ;\n\twidth *= scaleX;\n\theightChar *= scaleY;\n\n\t//\n\tlet tx0 = 0;\n\tlet ty0 = 0;\n\tlet lineWidthMaximum = width;\n\tswitch (textDirection) {\n\t\tcase EShapeTextDirection.LEFT_TO_RIGHT:\n\t\t\tgetTextBBox(\n\t\t\t\ttextAlignHorizontal,\n\t\t\t\ttextAlignVertical,\n\t\t\t\ttextOffsetHorizontal,\n\t\t\t\ttextOffsetVertical,\n\t\t\t\ttextPaddingHorizontal,\n\t\t\t\ttextPaddingVertical,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tx0,\n\t\t\t\ty0,\n\t\t\t\tx1,\n\t\t\t\ty1,\n\t\t\t\tx2,\n\t\t\t\ty2,\n\t\t\t\tx3,\n\t\t\t\ty3,\n\t\t\t\thnx,\n\t\t\t\thny,\n\t\t\t\tvnx,\n\t\t\t\tvny,\n\t\t\t\twork\n\t\t\t);\n\t\t\ttx0 = work.x;\n\t\t\tty0 = work.y;\n\t\t\tif (textClipping && isIn(textAlignHorizontal, textAlignVertical)) {\n\t\t\t\tlineWidthMaximum = hl - textPaddingHorizontal * 2;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.TOP_TO_BOTTOM:\n\t\t\tgetTextBBox(\n\t\t\t\trotateAlignVerticalRight(textAlignVertical),\n\t\t\t\trotateAlignHorizontalRight(textAlignHorizontal),\n\t\t\t\ttextOffsetVertical,\n\t\t\t\ttextOffsetHorizontal,\n\t\t\t\ttextPaddingVertical,\n\t\t\t\ttextPaddingHorizontal,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tx1,\n\t\t\t\ty1,\n\t\t\t\tx2,\n\t\t\t\ty2,\n\t\t\t\tx3,\n\t\t\t\ty3,\n\t\t\t\tx0,\n\t\t\t\ty0,\n\t\t\t\thnx,\n\t\t\t\thny,\n\t\t\t\tvnx,\n\t\t\t\tvny,\n\t\t\t\twork\n\t\t\t);\n\t\t\ttx0 = work.x;\n\t\t\tty0 = work.y;\n\t\t\tif (textClipping && isIn(textAlignHorizontal, textAlignVertical)) {\n\t\t\t\tlineWidthMaximum = vl - textPaddingVertical * 2;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.BOTTOM_TO_TOP:\n\t\t\tgetTextBBox(\n\t\t\t\trotateAlignVerticalLeft(textAlignVertical),\n\t\t\t\trotateAlignHorizontalLeft(textAlignHorizontal),\n\t\t\t\ttextOffsetVertical,\n\t\t\t\ttextOffsetHorizontal,\n\t\t\t\ttextPaddingVertical,\n\t\t\t\ttextPaddingHorizontal,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tx3,\n\t\t\t\ty3,\n\t\t\t\tx0,\n\t\t\t\ty0,\n\t\t\t\tx1,\n\t\t\t\ty1,\n\t\t\t\tx2,\n\t\t\t\ty2,\n\t\t\t\thnx,\n\t\t\t\thny,\n\t\t\t\tvnx,\n\t\t\t\tvny,\n\t\t\t\twork\n\t\t\t);\n\t\t\ttx0 = work.x;\n\t\t\tty0 = work.y;\n\t\t\tif (textClipping && isIn(textAlignHorizontal, textAlignVertical)) {\n\t\t\t\tlineWidthMaximum = vl - textPaddingVertical * 2;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.RIGHT_TO_LEFT:\n\t\t\tgetTextBBox(\n\t\t\t\tinvertAlignHorizontal(textAlignHorizontal),\n\t\t\t\tinvertAlignVertical(textAlignVertical),\n\t\t\t\ttextOffsetHorizontal,\n\t\t\t\ttextOffsetVertical,\n\t\t\t\ttextPaddingHorizontal,\n\t\t\t\ttextPaddingVertical,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tx2,\n\t\t\t\ty2,\n\t\t\t\tx3,\n\t\t\t\ty3,\n\t\t\t\tx0,\n\t\t\t\ty0,\n\t\t\t\tx1,\n\t\t\t\ty1,\n\t\t\t\thnx,\n\t\t\t\thny,\n\t\t\t\tvnx,\n\t\t\t\tvny,\n\t\t\t\twork\n\t\t\t);\n\t\t\ttx0 = work.x;\n\t\t\tty0 = work.y;\n\t\t\tif (textClipping && isIn(textAlignHorizontal, textAlignVertical)) {\n\t\t\t\tlineWidthMaximum = hl - textPaddingHorizontal * 2;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\t//\n\tif (lineWidthMaximum < width) {\n\t\tconst dwidth = (width - lineWidthMaximum) * 0.5;\n\t\ttextWorld[0] = tx0 + hnx * dwidth;\n\t\ttextWorld[1] = ty0 + hny * dwidth;\n\t\ttextWorld[2] = hnx;\n\t\ttextWorld[3] = hny;\n\t\ttextWorld[4] = vnx;\n\t\ttextWorld[5] = vny;\n\t\ttextWorld[6] = lineWidthMaximum;\n\t\ttextWorld[7] = height;\n\t\ttextWorld[8] = hnl;\n\t\ttextWorld[9] = vnl;\n\t} else {\n\t\ttextWorld[0] = tx0;\n\t\ttextWorld[1] = ty0;\n\t\ttextWorld[2] = hnx;\n\t\ttextWorld[3] = hny;\n\t\ttextWorld[4] = vnx;\n\t\ttextWorld[5] = vny;\n\t\ttextWorld[6] = width;\n\t\ttextWorld[7] = height;\n\t\ttextWorld[8] = hnl;\n\t\ttextWorld[9] = vnl;\n\t}\n\n\t// Texture\n\tconst uvx0 = textureUvs.x0;\n\tconst uvx1 = textureUvs.x1;\n\tconst uvx3 = textureUvs.x3;\n\tconst uvy0 = textureUvs.y0;\n\tconst uvy1 = textureUvs.y1;\n\tconst uvy3 = textureUvs.y3;\n\n\tconst duvx01 = uvx1 - uvx0;\n\tconst duvy01 = uvy1 - uvy0;\n\tconst duvx03 = uvx3 - uvx0;\n\tconst duvy03 = uvy3 - uvy0;\n\n\t// Vertices & UVs\n\tconst lhx = lineHeight * vnx;\n\tconst lhy = lineHeight * vny;\n\n\tconst snx = scaleX * hnx;\n\tconst sny = scaleX * hny;\n\n\tconst offsetY = (heightChar - textSizeY) * 0.5;\n\tconst oyx = offsetY * vnx;\n\tconst oyy = offsetY * vny;\n\n\tconst offsetItalic = textStyle === EShapeTextStyle.NORMAL ? 0 : textSize * 0.25;\n\tlet bx0 = tx0 - oyx + offsetItalic * snx;\n\tlet by0 = ty0 - oyy + offsetItalic * sny;\n\tlet bx3 = tx0 + oyx + textSizeY * vnx;\n\tlet by3 = ty0 + oyy + textSizeY * vny;\n\tlet cx0 = bx0;\n\tlet cy0 = by0;\n\tlet cx3 = bx3;\n\tlet cy3 = by3;\n\n\tlineWidth = 0;\n\tadvancePrevious = 0;\n\titerator.position = 0;\n\tlineCount = 0;\n\tlet iv = voffset * 2;\n\tfor (; iterator.hasNext(); iv += 8) {\n\t\tconst character = iterator.next();\n\t\tif (character !== \"\\n\") {\n\t\t\tconst lineWidthPrevious = lineWidth;\n\t\t\tif (0 < advancePrevious) {\n\t\t\t\tlineWidth += Math.max(0, advancePrevious + textSpacingHorizontal);\n\t\t\t}\n\n\t\t\tconst ax = lineWidth * snx;\n\t\t\tconst ay = lineWidth * sny;\n\t\t\tcx0 = bx0 + ax;\n\t\t\tcy0 = by0 + ay;\n\t\t\tcx3 = bx3 + ax;\n\t\t\tcy3 = by3 + ay;\n\n\t\t\tconst data = textAtlasCharacters[character];\n\t\t\tlineCount += 1;\n\t\t\tif (data) {\n\t\t\t\tconst advance = data.advance;\n\t\t\t\tif (lineWidthMaximum < (lineWidth + advance) * scaleX) {\n\t\t\t\t\tconst dots = textAtlasCharacters[\"...\"];\n\t\t\t\t\tif (dots) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t1 < lineCount &&\n\t\t\t\t\t\t\tlineWidthMaximum < (lineWidth + dots.advance) * scaleX\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tlineWidth = lineWidthPrevious;\n\t\t\t\t\t\t\tiv -= 8;\n\t\t\t\t\t\t\tlineCount -= 1;\n\t\t\t\t\t\t\tconst bx = lineWidth * snx;\n\t\t\t\t\t\t\tconst by = lineWidth * sny;\n\t\t\t\t\t\t\tcx0 = bx0 + bx;\n\t\t\t\t\t\t\tcy0 = by0 + by;\n\t\t\t\t\t\t\tcx3 = bx3 + bx;\n\t\t\t\t\t\t\tcy3 = by3 + by;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tadvancePrevious = dots.advance;\n\n\t\t\t\t\t\twriteCharacter(\n\t\t\t\t\t\t\tvertices,\n\t\t\t\t\t\t\tuvs,\n\t\t\t\t\t\t\tiv,\n\t\t\t\t\t\t\tdots,\n\t\t\t\t\t\t\ttextAtlas,\n\t\t\t\t\t\t\tsnx,\n\t\t\t\t\t\t\tsny,\n\t\t\t\t\t\t\tcx0,\n\t\t\t\t\t\t\tcy0,\n\t\t\t\t\t\t\tcx3,\n\t\t\t\t\t\t\tcy3,\n\t\t\t\t\t\t\tduvx01,\n\t\t\t\t\t\t\tduvy01,\n\t\t\t\t\t\t\tduvx03,\n\t\t\t\t\t\t\tduvy03,\n\t\t\t\t\t\t\tuvx0,\n\t\t\t\t\t\t\tuvy0\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfor (iv += 8; true; iv += 8) {\n\t\t\t\t\t\t\tif (iterator.hasNext() && iterator.advance(\"\\n\")) {\n\t\t\t\t\t\t\t\twriteCharacterEmpty(\n\t\t\t\t\t\t\t\t\tvertices,\n\t\t\t\t\t\t\t\t\tuvs,\n\t\t\t\t\t\t\t\t\tiv,\n\t\t\t\t\t\t\t\t\tcx0,\n\t\t\t\t\t\t\t\t\tcy0,\n\t\t\t\t\t\t\t\t\tcx3,\n\t\t\t\t\t\t\t\t\tcy3,\n\t\t\t\t\t\t\t\t\tuvx0,\n\t\t\t\t\t\t\t\t\tuvy0,\n\t\t\t\t\t\t\t\t\tuvx3,\n\t\t\t\t\t\t\t\t\tuvy3\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tlineCount += 1;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tiv -= 8;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadvancePrevious = advance;\n\n\t\t\t\t\t\twriteCharacterEmpty(\n\t\t\t\t\t\t\tvertices,\n\t\t\t\t\t\t\tuvs,\n\t\t\t\t\t\t\tiv,\n\t\t\t\t\t\t\tcx0,\n\t\t\t\t\t\t\tcy0,\n\t\t\t\t\t\t\tcx3,\n\t\t\t\t\t\t\tcy3,\n\t\t\t\t\t\t\tuvx0,\n\t\t\t\t\t\t\tuvy0,\n\t\t\t\t\t\t\tuvx3,\n\t\t\t\t\t\t\tuvy3\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tadvancePrevious = advance;\n\n\t\t\t\t\twriteCharacter(\n\t\t\t\t\t\tvertices,\n\t\t\t\t\t\tuvs,\n\t\t\t\t\t\tiv,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\ttextAtlas,\n\t\t\t\t\t\tsnx,\n\t\t\t\t\t\tsny,\n\t\t\t\t\t\tcx0,\n\t\t\t\t\t\tcy0,\n\t\t\t\t\t\tcx3,\n\t\t\t\t\t\tcy3,\n\t\t\t\t\t\tduvx01,\n\t\t\t\t\t\tduvy01,\n\t\t\t\t\t\tduvx03,\n\t\t\t\t\t\tduvy03,\n\t\t\t\t\t\tuvx0,\n\t\t\t\t\t\tuvy0\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tadvancePrevious = 0;\n\n\t\t\t\twriteCharacterEmpty(vertices, uvs, iv, cx0, cy0, cx3, cy3, uvx0, uvy0, uvx3, uvy3);\n\t\t\t}\n\t\t} else {\n\t\t\tlineWidth += advancePrevious;\n\t\t\tadvancePrevious = 0;\n\n\t\t\tbx0 += lhx;\n\t\t\tby0 += lhy;\n\t\t\tbx3 += lhx;\n\t\t\tby3 += lhy;\n\t\t\tcx0 = bx0;\n\t\t\tcy0 = by0;\n\t\t\tcx3 = bx3;\n\t\t\tcy3 = by3;\n\n\t\t\twriteCharacterEmpty(vertices, uvs, iv, cx0, cy0, cx3, cy3, uvx0, uvy0, uvx3, uvy3);\n\n\t\t\tadjustTextAlignment(\n\t\t\t\tvertices,\n\t\t\t\thnx,\n\t\t\t\thny,\n\t\t\t\tlineCount,\n\t\t\t\tiv,\n\t\t\t\twidth - lineWidth * scaleX,\n\t\t\t\ttextDirection,\n\t\t\t\ttextAlignHorizontal,\n\t\t\t\ttextAlignVertical\n\t\t\t);\n\t\t\tlineWidth = 0;\n\t\t\tlineCount = 0;\n\t\t}\n\t}\n\n\tlineWidth += advancePrevious;\n\tadjustTextAlignment(\n\t\tvertices,\n\t\thnx,\n\t\thny,\n\t\tlineCount,\n\t\tiv,\n\t\twidth - lineWidth * scaleX,\n\t\ttextDirection,\n\t\ttextAlignHorizontal,\n\t\ttextAlignVertical\n\t);\n\n\tfor (const ivmax = (voffset + vcount) * 2; iv < ivmax; iv += 2) {\n\t\tvertices[iv + 0] = tx0;\n\t\tvertices[iv + 1] = ty0;\n\t\tuvs[iv + 0] = uvx0;\n\t\tuvs[iv + 1] = uvy0;\n\t}\n};\n\nconst isIn = (\n\ttextAlignHorizontal: EShapeTextAlignHorizontal,\n\ttextAlignVertical: EShapeTextAlignVertical\n): boolean => {\n\tswitch (textAlignHorizontal) {\n\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\tswitch (textAlignVertical) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\treturn true;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn false;\n};\n\nconst writeCharacterEmpty = (\n\tvertices: Float32Array,\n\tuvs: Float32Array,\n\tiv: number,\n\tcx0: number,\n\tcy0: number,\n\tcx3: number,\n\tcy3: number,\n\tuvx0: number,\n\tuvy0: number,\n\tuvx3: number,\n\tuvy3: number\n): void => {\n\tvertices[iv + 0] = cx0;\n\tvertices[iv + 1] = cy0;\n\tvertices[iv + 2] = cx0;\n\tvertices[iv + 3] = cy0;\n\tvertices[iv + 4] = cx3;\n\tvertices[iv + 5] = cy3;\n\tvertices[iv + 6] = cx3;\n\tvertices[iv + 7] = cy3;\n\n\tuvs[iv + 0] = uvx0;\n\tuvs[iv + 1] = uvy0;\n\tuvs[iv + 2] = uvx0;\n\tuvs[iv + 3] = uvy0;\n\tuvs[iv + 4] = uvx3;\n\tuvs[iv + 5] = uvy3;\n\tuvs[iv + 6] = uvx3;\n\tuvs[iv + 7] = uvy3;\n};\n\nconst writeCharacter = (\n\tvertices: Float32Array,\n\tuvs: Float32Array,\n\tiv: number,\n\tdata: EShapeTextAtlasCharacter,\n\tatlas: EShapeTextAtlas,\n\tsnx: number,\n\tsny: number,\n\tcx0: number,\n\tcy0: number,\n\tcx3: number,\n\tcy3: number,\n\tduvx01: number,\n\tduvy01: number,\n\tduvx03: number,\n\tduvy03: number,\n\tuvx0: number,\n\tuvy0: number\n): void => {\n\t// Vertices\n\tconst dataOffsetX = data.x - data.origin.x;\n\tconst dataWidth = data.width;\n\tconst dx0 = dataOffsetX * snx;\n\tconst dy0 = dataOffsetX * sny;\n\tconst dx1 = (dataOffsetX + dataWidth) * snx;\n\tconst dy1 = (dataOffsetX + dataWidth) * sny;\n\tvertices[iv + 0] = cx0 + dx0;\n\tvertices[iv + 1] = cy0 + dy0;\n\tvertices[iv + 2] = cx0 + dx1;\n\tvertices[iv + 3] = cy0 + dy1;\n\tvertices[iv + 4] = cx3 + dx1;\n\tvertices[iv + 5] = cy3 + dy1;\n\tvertices[iv + 6] = cx3 + dx0;\n\tvertices[iv + 7] = cy3 + dy0;\n\n\t// UVs\n\tconst px0 = data.x / atlas.width;\n\tconst py0 = data.y / atlas.height;\n\tconst px1 = (data.x + data.width) / atlas.width;\n\tconst py1 = (data.y + data.height) / atlas.height;\n\n\tconst dux0 = duvx01 * px0;\n\tconst duy0 = duvy01 * px0;\n\tconst dux1 = duvx01 * px1;\n\tconst duy1 = duvy01 * px1;\n\n\tconst dvx0 = duvx03 * py0;\n\tconst dvy0 = duvy03 * py0;\n\tconst dvx1 = duvx03 * py1;\n\tconst dvy1 = duvy03 * py1;\n\tuvs[iv + 0] = uvx0 + dux0 + dvx0;\n\tuvs[iv + 1] = uvy0 + duy0 + dvy0;\n\tuvs[iv + 2] = uvx0 + dux1 + dvx0;\n\tuvs[iv + 3] = uvy0 + duy1 + dvy0;\n\tuvs[iv + 4] = uvx0 + dux1 + dvx1;\n\tuvs[iv + 5] = uvy0 + duy1 + dvy1;\n\tuvs[iv + 6] = uvx0 + dux0 + dvx1;\n\tuvs[iv + 7] = uvy0 + duy0 + dvy1;\n};\n\nconst moveText = (\n\tvertices: Float32Array,\n\tvertexIndex: number,\n\ttextCount: number,\n\tdx: number,\n\tdy: number\n): void => {\n\tlet iv = vertexIndex - 8 * textCount - 1;\n\tfor (let i = 0; i < textCount; ++i) {\n\t\tvertices[++iv] += dx;\n\t\tvertices[++iv] += dy;\n\t\tvertices[++iv] += dx;\n\t\tvertices[++iv] += dy;\n\t\tvertices[++iv] += dx;\n\t\tvertices[++iv] += dy;\n\t\tvertices[++iv] += dx;\n\t\tvertices[++iv] += dy;\n\t}\n};\n\nconst moveTextHalf = (\n\tvertices: Float32Array,\n\tvertexIndex: number,\n\ttextCount: number,\n\toffset: number,\n\tnx: number,\n\tny: number\n): void => {\n\toffset *= 0.5;\n\tmoveText(vertices, vertexIndex, textCount, offset * nx, offset * ny);\n};\n\nconst moveTextFull = (\n\tvertices: Float32Array,\n\tvertexIndex: number,\n\ttextCount: number,\n\toffset: number,\n\tnx: number,\n\tny: number\n): void => {\n\tmoveText(vertices, vertexIndex, textCount, offset * nx, offset * ny);\n};\n\nconst adjustTextAlignment = (\n\tvertices: Float32Array,\n\tnx: number,\n\tny: number,\n\tlineCount: number,\n\tvertexIndex: number,\n\toffset: number,\n\ttextDirection: EShapeTextDirection,\n\ttextAlignHorizontal: EShapeTextAlignHorizontal,\n\ttextAlignVertical: EShapeTextAlignVertical\n): void => {\n\tif (TEXT_FMIN < offset) {\n\t\tswitch (textDirection) {\n\t\t\tcase EShapeTextDirection.LEFT_TO_RIGHT:\n\t\t\t\tswitch (textAlignHorizontal) {\n\t\t\t\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\t\t\t\t// DO NOTHING\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\t\t\t\tmoveTextHalf(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\t\t\t\tmoveTextFull(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase EShapeTextDirection.TOP_TO_BOTTOM:\n\t\t\t\tswitch (textAlignVertical) {\n\t\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\t\t// DO NOTHING\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\t\tmoveTextHalf(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\t\tmoveTextFull(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase EShapeTextDirection.BOTTOM_TO_TOP:\n\t\t\t\tswitch (textAlignVertical) {\n\t\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\t\tmoveTextFull(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\t\tmoveTextHalf(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\t\t// DO NOTHING\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase EShapeTextDirection.RIGHT_TO_LEFT:\n\t\t\t\tswitch (textAlignHorizontal) {\n\t\t\t\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\t\t\t\tmoveTextFull(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\t\t\t\tmoveTextHalf(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\t\t\t\t// DO NOTHING\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n};\n"]}
1
+ {"version":3,"file":"build-text.js","sourceRoot":"","sources":["../../../../../src/main/typescript/wcardinal/ui/shape/variant/build-text.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix, Point, TextureUvs } from \"pixi.js\";\nimport { UtilCharacterIterator } from \"../../util/util-character-iterator\";\nimport { EShape } from \"../e-shape\";\nimport { EShapeStrokeStyle } from \"../e-shape-stroke-style\";\nimport {\n\tEShapeTextAtlas,\n\tEShapeTextAtlasCharacter,\n\tEShapeTextStyle,\n\tEShapeTextWeight\n} from \"../e-shape-text\";\nimport { EShapeTextAlignHorizontal } from \"../e-shape-text-align-horizontal\";\nimport { EShapeTextAlignVertical } from \"../e-shape-text-align-vertical\";\nimport { EShapeTextDirection } from \"../e-shape-text-direction\";\nimport { toLength } from \"./to-length\";\nimport { toScaleInvariant } from \"./to-scale-invariant\";\nimport { toPackedI4x64 } from \"./to-packed\";\n\nexport const TEXT_VERTEX_COUNT = 4;\nexport const TEXT_VERTEX_COUNT_SHIFT = 2;\nexport const TEXT_INDEX_COUNT = 2;\nexport const TEXT_INDEX_COUNT_SHIFT = 1;\nexport const TEXT_FMIN: number = 0.00001;\nconst TEXT_WORK_POINT: Point = new Point();\n\nexport const toTextBufferCount = (shape: EShape): number => {\n\tconst l = shape.text.plength;\n\treturn ((l >> 3) + (0 < (l & 0x7) ? 1 : 0)) << 3;\n};\n\nexport const buildTextIndex = (\n\tindices: Uint16Array | Uint32Array,\n\tvoffset: number,\n\tioffset: number,\n\ticount: number\n): void => {\n\tlet ii = ioffset * 3 - 1;\n\tconst iimax = (ioffset + icount) * 3 - 1;\n\tlet iv = voffset;\n\tfor (; ii < iimax; ) {\n\t\tindices[++ii] = iv;\n\t\tindices[++ii] = iv + 1;\n\t\tindices[++ii] = iv + 3;\n\n\t\tindices[++ii] = iv + 1;\n\t\tindices[++ii] = iv + 2;\n\t\tindices[++ii] = iv + 3;\n\t\tiv += 4;\n\t}\n};\n\nexport const buildTextStep = (\n\tsteps: Float32Array,\n\tvoffset: number,\n\tvcount: number,\n\ttextAtlas: EShapeTextAtlas | undefined,\n\ttextSize: number,\n\ttextOutlineWidth: number,\n\ttextWeight: EShapeTextWeight,\n\tscaleX: number,\n\tscaleY: number\n): void => {\n\tlet is = voffset * 6 - 1;\n\tconst ismax = (voffset + vcount) * 6 - 1;\n\tconst scaleInvariant = toScaleInvariant(EShapeStrokeStyle.NONE);\n\tconst e = toPackedI4x64(2, scaleInvariant, 1, 1);\n\tif (textAtlas != null) {\n\t\tconst scale = textAtlas.font.size / (textSize * (scaleX + scaleY) * 0.5);\n\t\tconst position = textWeight === EShapeTextWeight.NORMAL ? 0.0 : 0.05;\n\t\tfor (; is < ismax; ) {\n\t\t\tsteps[++is] = textOutlineWidth;\n\t\t\tsteps[++is] = e;\n\t\t\tsteps[++is] = scale;\n\t\t\tsteps[++is] = 0;\n\t\t\tsteps[++is] = position;\n\t\t\tsteps[++is] = 0;\n\t\t}\n\t} else {\n\t\tfor (; is < ismax; ) {\n\t\t\tsteps[++is] = 0;\n\t\t\tsteps[++is] = e;\n\t\t\tsteps[++is] = 0;\n\t\t\tsteps[++is] = 0;\n\t\t\tsteps[++is] = 0;\n\t\t\tsteps[++is] = 0;\n\t\t}\n\t}\n};\n\nconst getTextBBox = (\n\thalign: EShapeTextAlignHorizontal,\n\tvalign: EShapeTextAlignVertical,\n\thoffset: number,\n\tvoffset: number,\n\thpadding: number,\n\tvpadding: number,\n\twidth: number,\n\theight: number,\n\tx0: number,\n\ty0: number,\n\tx1: number,\n\ty1: number,\n\tx2: number,\n\ty2: number,\n\tx3: number,\n\ty3: number,\n\thnx: number,\n\thny: number,\n\tvnx: number,\n\tvny: number,\n\tresult: Point\n): void => {\n\tswitch (halign) {\n\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\tswitch (valign) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tresult.x = x0 + hnx * (hoffset + hpadding) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y0 + hny * (hoffset + hpadding) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x0 + x3) +\n\t\t\t\t\t\thnx * (hoffset + hpadding) +\n\t\t\t\t\t\tvnx * (voffset - 0.5 * height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y0 + y3) +\n\t\t\t\t\t\thny * (hoffset + hpadding) +\n\t\t\t\t\t\tvny * (voffset - 0.5 * height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx3 + hnx * (hoffset + hpadding) + vnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty3 + hny * (hoffset + hpadding) + vny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx0 + hnx * (hoffset + hpadding) + vnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty0 + hny * (hoffset + hpadding) + vny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tresult.x = x3 + hnx * (hoffset + hpadding) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y3 + hny * (hoffset + hpadding) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\tswitch (valign) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x0 + x1) +\n\t\t\t\t\t\thnx * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvnx * (voffset + vpadding);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y0 + y1) +\n\t\t\t\t\t\thny * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x0 + x2) +\n\t\t\t\t\t\thnx * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvnx * (voffset - 0.5 * height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y0 + y2) +\n\t\t\t\t\t\thny * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvny * (voffset - 0.5 * height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x3 + x2) +\n\t\t\t\t\t\thnx * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y3 + y2) +\n\t\t\t\t\t\thny * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x0 + x1) +\n\t\t\t\t\t\thnx * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y0 + y1) +\n\t\t\t\t\t\thny * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x3 + x2) +\n\t\t\t\t\t\thnx * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvnx * (voffset + vpadding);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y3 + y2) +\n\t\t\t\t\t\thny * (hoffset - 0.5 * width) +\n\t\t\t\t\t\tvny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\tswitch (valign) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tresult.x = x1 + hnx * (hoffset - hpadding - width) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y1 + hny * (hoffset - hpadding - width) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x1 + x2) +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - 0.5 * height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y1 + y2) +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - 0.5 * height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx2 +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty2 +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx1 +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty1 +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tresult.x = x2 + hnx * (hoffset - hpadding - width) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y2 + hny * (hoffset - hpadding - width) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\tswitch (valign) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tresult.x = x0 + hnx * (hoffset - hpadding - width) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y0 + hny * (hoffset - hpadding - width) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x0 + x3) +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - 0.5 * height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y0 + y3) +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - 0.5 * height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx3 +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty3 +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx0 +\n\t\t\t\t\t\thnx * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty0 +\n\t\t\t\t\t\thny * (hoffset - hpadding - width) +\n\t\t\t\t\t\tvny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tresult.x = x3 + hnx * (hoffset - hpadding - width) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y3 + hny * (hoffset - hpadding - width) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\tswitch (valign) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tresult.x = x1 + hnx * (hoffset + hpadding) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y1 + hny * (hoffset + hpadding) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\t0.5 * (x1 + x2) +\n\t\t\t\t\t\thnx * (hoffset + hpadding) +\n\t\t\t\t\t\tvnx * (voffset - 0.5 * height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\t0.5 * (y1 + y2) +\n\t\t\t\t\t\thny * (hoffset + hpadding) +\n\t\t\t\t\t\tvny * (voffset - 0.5 * height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx2 + hnx * (hoffset + hpadding) + vnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty2 + hny * (hoffset + hpadding) + vny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tresult.x =\n\t\t\t\t\t\tx1 + hnx * (hoffset + hpadding) + vnx * (voffset - vpadding - height);\n\t\t\t\t\tresult.y =\n\t\t\t\t\t\ty1 + hny * (hoffset + hpadding) + vny * (voffset - vpadding - height);\n\t\t\t\t\tbreak;\n\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tresult.x = x2 + hnx * (hoffset + hpadding) + vnx * (voffset + vpadding);\n\t\t\t\t\tresult.y = y2 + hny * (hoffset + hpadding) + vny * (voffset + vpadding);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t}\n};\n\nconst rotateAlignHorizontalRight = (align: EShapeTextAlignHorizontal): EShapeTextAlignVertical => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\treturn EShapeTextAlignVertical.BOTTOM;\n\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\treturn EShapeTextAlignVertical.MIDDLE;\n\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\treturn EShapeTextAlignVertical.TOP;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_BOTTOM;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_TOP;\n\t}\n};\n\nconst rotateAlignVerticalRight = (align: EShapeTextAlignVertical): EShapeTextAlignHorizontal => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\treturn EShapeTextAlignHorizontal.LEFT;\n\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\treturn EShapeTextAlignHorizontal.CENTER;\n\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\treturn EShapeTextAlignHorizontal.RIGHT;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_LEFT;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_RIGHT;\n\t}\n};\n\nconst rotateAlignHorizontalLeft = (align: EShapeTextAlignHorizontal): EShapeTextAlignVertical => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\treturn EShapeTextAlignVertical.TOP;\n\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\treturn EShapeTextAlignVertical.MIDDLE;\n\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\treturn EShapeTextAlignVertical.BOTTOM;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_TOP;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_BOTTOM;\n\t}\n};\n\nconst rotateAlignVerticalLeft = (align: EShapeTextAlignVertical): EShapeTextAlignHorizontal => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\treturn EShapeTextAlignHorizontal.RIGHT;\n\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\treturn EShapeTextAlignHorizontal.CENTER;\n\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\treturn EShapeTextAlignHorizontal.LEFT;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_RIGHT;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_LEFT;\n\t}\n};\n\nconst invertAlignHorizontal = (align: EShapeTextAlignHorizontal): EShapeTextAlignHorizontal => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\treturn EShapeTextAlignHorizontal.RIGHT;\n\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\treturn EShapeTextAlignHorizontal.CENTER;\n\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\treturn EShapeTextAlignHorizontal.LEFT;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_RIGHT;\n\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\treturn EShapeTextAlignHorizontal.OUTSIDE_LEFT;\n\t}\n};\n\nconst invertAlignVertical = (align: EShapeTextAlignVertical): EShapeTextAlignVertical => {\n\tswitch (align) {\n\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\treturn EShapeTextAlignVertical.BOTTOM;\n\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\treturn EShapeTextAlignVertical.MIDDLE;\n\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\treturn EShapeTextAlignVertical.TOP;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_BOTTOM;\n\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\treturn EShapeTextAlignVertical.OUTSIDE_TOP;\n\t}\n};\n\nexport const buildTextVertex = (\n\tvertices: Float32Array,\n\tuvs: Float32Array,\n\tvoffset: number,\n\tvcount: number,\n\toriginX: number,\n\toriginY: number,\n\tsizeX: number,\n\tsizeY: number,\n\ttextAtlas: EShapeTextAtlas,\n\ttextSize: number,\n\ttextValue: string,\n\ttextStyle: EShapeTextStyle,\n\ttextAlignHorizontal: EShapeTextAlignHorizontal,\n\ttextAlignVertical: EShapeTextAlignVertical,\n\ttextOffsetHorizontal: number,\n\ttextOffsetVertical: number,\n\ttextSpacingHorizontal: number,\n\ttextSpacingVertical: number,\n\ttextDirection: EShapeTextDirection,\n\ttextPaddingHorizontal: number,\n\ttextPaddingVertical: number,\n\ttextClipping: boolean,\n\ttextFitting: boolean,\n\ttextWorld: number[],\n\ttextureUvs: TextureUvs,\n\tinternalTransform: Matrix\n): void => {\n\t// Calculate the transformed positions\n\t//\n\t// 0 1\n\t// |---------------|\n\t// | |\n\t// |3 |2\n\t// |---------------|\n\t//\n\tconst sx = sizeX * 0.5;\n\tconst sy = sizeY * 0.5;\n\n\tconst a = internalTransform.a;\n\tconst b = internalTransform.b;\n\tconst c = internalTransform.c;\n\tconst d = internalTransform.d;\n\tconst tx = internalTransform.tx;\n\tconst ty = internalTransform.ty;\n\n\tconst ltx = originX - sx;\n\tconst lty = originY - sy;\n\tconst rtx = originX + sx;\n\tconst rty = originY - sy;\n\tconst rbx = originX + sx;\n\tconst rby = originY + sy;\n\tconst x0 = a * ltx + c * lty + tx;\n\tconst y0 = b * ltx + d * lty + ty;\n\tconst x1 = a * rtx + c * rty + tx;\n\tconst y1 = b * rtx + d * rty + ty;\n\tconst x2 = a * rbx + c * rby + tx;\n\tconst y2 = b * rbx + d * rby + ty;\n\tconst x3 = x0 + (x2 - x1);\n\tconst y3 = y0 + (y2 - y1);\n\n\t// Horizontal normal\n\tconst hl = toLength(x0, y0, x1, y1);\n\tlet hnl = toLength(0, 0, a, b);\n\tlet hnx = 1;\n\tlet hny = 0;\n\tif (TEXT_FMIN < hnl) {\n\t\tconst hnli = 1 / hnl;\n\t\thnx = a * hnli;\n\t\thny = b * hnli;\n\t}\n\n\t// Vertical normal\n\tconst vl = toLength(x0, y0, x3, y3);\n\tlet vnl = toLength(0, 0, c, d);\n\tlet vnx = 0;\n\tlet vny = 1;\n\tif (TEXT_FMIN < hnl) {\n\t\tconst vnli = 1 / vnl;\n\t\tvnx = c * vnli;\n\t\tvny = d * vnli;\n\t}\n\n\tconst work = TEXT_WORK_POINT;\n\tswitch (textDirection) {\n\t\tcase EShapeTextDirection.LEFT_TO_RIGHT:\n\t\t\t// DO NOTHING\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.TOP_TO_BOTTOM:\n\t\t\twork.set(vnx, vny);\n\t\t\tvnx = -hnx;\n\t\t\tvny = -hny;\n\t\t\thnx = work.x;\n\t\t\thny = work.y;\n\n\t\t\twork.x = vnl;\n\t\t\tvnl = hnl;\n\t\t\thnl = work.x;\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.BOTTOM_TO_TOP:\n\t\t\twork.set(vnx, vny);\n\t\t\tvnx = hnx;\n\t\t\tvny = hny;\n\t\t\thnx = -work.x;\n\t\t\thny = -work.y;\n\n\t\t\twork.x = vnl;\n\t\t\tvnl = hnl;\n\t\t\thnl = work.x;\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.RIGHT_TO_LEFT:\n\t\t\thnx = -hnx;\n\t\t\thny = -hny;\n\t\t\tvnx = -vnx;\n\t\t\tvny = -vny;\n\t\t\tbreak;\n\t}\n\n\t// Calculate the width / height\n\tlet width = 0;\n\tlet height = 0;\n\tlet heightChar = 0;\n\tlet textSizeY = textSize * vnl;\n\tlet lineHeight = Math.max(0, textSize + textSpacingVertical) * vnl;\n\tlet lineWidth = 0;\n\tlet lineCount = 1;\n\tconst textAtlasCharacters = textAtlas.characters;\n\tconst iterator = UtilCharacterIterator.from(textValue);\n\tlet advancePrevious = 0;\n\twhile (iterator.hasNext()) {\n\t\tconst character = iterator.next();\n\t\tif (character !== \"\\n\") {\n\t\t\tif (0 < advancePrevious) {\n\t\t\t\tlineWidth += Math.max(0, advancePrevious + textSpacingHorizontal);\n\t\t\t}\n\t\t\tconst data = textAtlasCharacters[character];\n\t\t\tif (data) {\n\t\t\t\tadvancePrevious = data.advance;\n\t\t\t\theightChar = data.height;\n\t\t\t} else {\n\t\t\t\tadvancePrevious = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tlineWidth += advancePrevious;\n\t\t\tadvancePrevious = 0;\n\t\t\twidth = Math.max(width, lineWidth);\n\t\t\tlineWidth = 0;\n\t\t\theight += lineHeight;\n\t\t\tlineCount += 1;\n\t\t}\n\t}\n\tlineWidth += advancePrevious;\n\twidth = Math.max(width, lineWidth);\n\theight += textSizeY;\n\tlineWidth = 0;\n\n\tif (textFitting && isIn(textAlignHorizontal, textAlignVertical)) {\n\t\tlet w0 = 0;\n\t\tlet h0 = 0;\n\t\tswitch (textDirection) {\n\t\t\tcase EShapeTextDirection.LEFT_TO_RIGHT:\n\t\t\tcase EShapeTextDirection.RIGHT_TO_LEFT:\n\t\t\t\tw0 = Math.max(0, hl - textPaddingHorizontal * 2);\n\t\t\t\th0 = Math.max(0, vl - textPaddingVertical * 2);\n\t\t\t\tbreak;\n\t\t\tcase EShapeTextDirection.TOP_TO_BOTTOM:\n\t\t\tcase EShapeTextDirection.BOTTOM_TO_TOP:\n\t\t\t\tw0 = Math.max(0, vl - textPaddingVertical * 2);\n\t\t\t\th0 = Math.max(0, hl - textPaddingHorizontal * 2);\n\t\t\t\tbreak;\n\t\t}\n\t\tconst w1 = width * hnl * (textSize / textAtlas.font.size);\n\t\tconst h1 = height;\n\t\tconst s = Math.min(1, Math.min(w0 / w1, h0 / h1));\n\t\ttextSize *= s;\n\t\ttextSizeY *= s;\n\t\tlineHeight *= s;\n\t\theight *= s;\n\t}\n\n\tconst scaleZ = textSize / textAtlas.font.size;\n\tconst scaleX = hnl * scaleZ;\n\tconst scaleY = vnl * scaleZ;\n\twidth *= scaleX;\n\theightChar *= scaleY;\n\n\t//\n\tlet tx0 = 0;\n\tlet ty0 = 0;\n\tlet lineWidthMaximum = width;\n\tswitch (textDirection) {\n\t\tcase EShapeTextDirection.LEFT_TO_RIGHT:\n\t\t\tgetTextBBox(\n\t\t\t\ttextAlignHorizontal,\n\t\t\t\ttextAlignVertical,\n\t\t\t\ttextOffsetHorizontal,\n\t\t\t\ttextOffsetVertical,\n\t\t\t\ttextPaddingHorizontal,\n\t\t\t\ttextPaddingVertical,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tx0,\n\t\t\t\ty0,\n\t\t\t\tx1,\n\t\t\t\ty1,\n\t\t\t\tx2,\n\t\t\t\ty2,\n\t\t\t\tx3,\n\t\t\t\ty3,\n\t\t\t\thnx,\n\t\t\t\thny,\n\t\t\t\tvnx,\n\t\t\t\tvny,\n\t\t\t\twork\n\t\t\t);\n\t\t\ttx0 = work.x;\n\t\t\tty0 = work.y;\n\t\t\tif (textClipping && isIn(textAlignHorizontal, textAlignVertical)) {\n\t\t\t\tlineWidthMaximum = hl - textPaddingHorizontal * 2;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.TOP_TO_BOTTOM:\n\t\t\tgetTextBBox(\n\t\t\t\trotateAlignVerticalRight(textAlignVertical),\n\t\t\t\trotateAlignHorizontalRight(textAlignHorizontal),\n\t\t\t\ttextOffsetVertical,\n\t\t\t\ttextOffsetHorizontal,\n\t\t\t\ttextPaddingVertical,\n\t\t\t\ttextPaddingHorizontal,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tx1,\n\t\t\t\ty1,\n\t\t\t\tx2,\n\t\t\t\ty2,\n\t\t\t\tx3,\n\t\t\t\ty3,\n\t\t\t\tx0,\n\t\t\t\ty0,\n\t\t\t\thnx,\n\t\t\t\thny,\n\t\t\t\tvnx,\n\t\t\t\tvny,\n\t\t\t\twork\n\t\t\t);\n\t\t\ttx0 = work.x;\n\t\t\tty0 = work.y;\n\t\t\tif (textClipping && isIn(textAlignHorizontal, textAlignVertical)) {\n\t\t\t\tlineWidthMaximum = vl - textPaddingVertical * 2;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.BOTTOM_TO_TOP:\n\t\t\tgetTextBBox(\n\t\t\t\trotateAlignVerticalLeft(textAlignVertical),\n\t\t\t\trotateAlignHorizontalLeft(textAlignHorizontal),\n\t\t\t\ttextOffsetVertical,\n\t\t\t\ttextOffsetHorizontal,\n\t\t\t\ttextPaddingVertical,\n\t\t\t\ttextPaddingHorizontal,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tx3,\n\t\t\t\ty3,\n\t\t\t\tx0,\n\t\t\t\ty0,\n\t\t\t\tx1,\n\t\t\t\ty1,\n\t\t\t\tx2,\n\t\t\t\ty2,\n\t\t\t\thnx,\n\t\t\t\thny,\n\t\t\t\tvnx,\n\t\t\t\tvny,\n\t\t\t\twork\n\t\t\t);\n\t\t\ttx0 = work.x;\n\t\t\tty0 = work.y;\n\t\t\tif (textClipping && isIn(textAlignHorizontal, textAlignVertical)) {\n\t\t\t\tlineWidthMaximum = vl - textPaddingVertical * 2;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.RIGHT_TO_LEFT:\n\t\t\tgetTextBBox(\n\t\t\t\tinvertAlignHorizontal(textAlignHorizontal),\n\t\t\t\tinvertAlignVertical(textAlignVertical),\n\t\t\t\ttextOffsetHorizontal,\n\t\t\t\ttextOffsetVertical,\n\t\t\t\ttextPaddingHorizontal,\n\t\t\t\ttextPaddingVertical,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tx2,\n\t\t\t\ty2,\n\t\t\t\tx3,\n\t\t\t\ty3,\n\t\t\t\tx0,\n\t\t\t\ty0,\n\t\t\t\tx1,\n\t\t\t\ty1,\n\t\t\t\thnx,\n\t\t\t\thny,\n\t\t\t\tvnx,\n\t\t\t\tvny,\n\t\t\t\twork\n\t\t\t);\n\t\t\ttx0 = work.x;\n\t\t\tty0 = work.y;\n\t\t\tif (textClipping && isIn(textAlignHorizontal, textAlignVertical)) {\n\t\t\t\tlineWidthMaximum = hl - textPaddingHorizontal * 2;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\t//\n\tif (lineWidthMaximum < width) {\n\t\tconst dwidth = (width - lineWidthMaximum) * 0.5;\n\t\ttextWorld[0] = tx0 + hnx * dwidth;\n\t\ttextWorld[1] = ty0 + hny * dwidth;\n\t\ttextWorld[2] = hnx;\n\t\ttextWorld[3] = hny;\n\t\ttextWorld[4] = vnx;\n\t\ttextWorld[5] = vny;\n\t\ttextWorld[6] = lineWidthMaximum;\n\t\ttextWorld[7] = height;\n\t\ttextWorld[8] = hnl;\n\t\ttextWorld[9] = vnl;\n\t} else {\n\t\ttextWorld[0] = tx0;\n\t\ttextWorld[1] = ty0;\n\t\ttextWorld[2] = hnx;\n\t\ttextWorld[3] = hny;\n\t\ttextWorld[4] = vnx;\n\t\ttextWorld[5] = vny;\n\t\ttextWorld[6] = width;\n\t\ttextWorld[7] = height;\n\t\ttextWorld[8] = hnl;\n\t\ttextWorld[9] = vnl;\n\t}\n\n\t// Texture\n\tconst uvx0 = textureUvs.x0;\n\tconst uvx1 = textureUvs.x1;\n\tconst uvx3 = textureUvs.x3;\n\tconst uvy0 = textureUvs.y0;\n\tconst uvy1 = textureUvs.y1;\n\tconst uvy3 = textureUvs.y3;\n\n\tconst duvx01 = uvx1 - uvx0;\n\tconst duvy01 = uvy1 - uvy0;\n\tconst duvx03 = uvx3 - uvx0;\n\tconst duvy03 = uvy3 - uvy0;\n\n\t// Vertices & UVs\n\tconst lhx = lineHeight * vnx;\n\tconst lhy = lineHeight * vny;\n\n\tconst snx = scaleX * hnx;\n\tconst sny = scaleX * hny;\n\n\tconst offsetY = (heightChar - textSizeY) * 0.5;\n\tconst oyx = offsetY * vnx;\n\tconst oyy = offsetY * vny;\n\n\tconst offsetItalic = textStyle === EShapeTextStyle.NORMAL ? 0 : textSize * 0.25;\n\tlet bx0 = tx0 - oyx + offsetItalic * snx;\n\tlet by0 = ty0 - oyy + offsetItalic * sny;\n\tlet bx3 = tx0 + oyx + textSizeY * vnx;\n\tlet by3 = ty0 + oyy + textSizeY * vny;\n\tlet cx0 = bx0;\n\tlet cy0 = by0;\n\tlet cx3 = bx3;\n\tlet cy3 = by3;\n\n\tlineWidth = 0;\n\tadvancePrevious = 0;\n\titerator.position = 0;\n\tlineCount = 0;\n\tlet iv = voffset * 2;\n\tfor (; iterator.hasNext(); iv += 8) {\n\t\tconst character = iterator.next();\n\t\tif (character !== \"\\n\") {\n\t\t\tconst lineWidthPrevious = lineWidth;\n\t\t\tif (0 < advancePrevious) {\n\t\t\t\tlineWidth += Math.max(0, advancePrevious + textSpacingHorizontal);\n\t\t\t}\n\n\t\t\tconst ax = lineWidth * snx;\n\t\t\tconst ay = lineWidth * sny;\n\t\t\tcx0 = bx0 + ax;\n\t\t\tcy0 = by0 + ay;\n\t\t\tcx3 = bx3 + ax;\n\t\t\tcy3 = by3 + ay;\n\n\t\t\tconst data = textAtlasCharacters[character];\n\t\t\tlineCount += 1;\n\t\t\tif (data) {\n\t\t\t\tconst advance = data.advance;\n\t\t\t\tif (lineWidthMaximum < (lineWidth + advance) * scaleX) {\n\t\t\t\t\tconst dots = textAtlasCharacters[\"...\"];\n\t\t\t\t\tif (dots) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t1 < lineCount &&\n\t\t\t\t\t\t\tlineWidthMaximum < (lineWidth + dots.advance) * scaleX\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tlineWidth = lineWidthPrevious;\n\t\t\t\t\t\t\tiv -= 8;\n\t\t\t\t\t\t\tlineCount -= 1;\n\t\t\t\t\t\t\tconst bx = lineWidth * snx;\n\t\t\t\t\t\t\tconst by = lineWidth * sny;\n\t\t\t\t\t\t\tcx0 = bx0 + bx;\n\t\t\t\t\t\t\tcy0 = by0 + by;\n\t\t\t\t\t\t\tcx3 = bx3 + bx;\n\t\t\t\t\t\t\tcy3 = by3 + by;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tadvancePrevious = dots.advance;\n\n\t\t\t\t\t\twriteCharacter(\n\t\t\t\t\t\t\tvertices,\n\t\t\t\t\t\t\tuvs,\n\t\t\t\t\t\t\tiv,\n\t\t\t\t\t\t\tdots,\n\t\t\t\t\t\t\ttextAtlas,\n\t\t\t\t\t\t\tsnx,\n\t\t\t\t\t\t\tsny,\n\t\t\t\t\t\t\tcx0,\n\t\t\t\t\t\t\tcy0,\n\t\t\t\t\t\t\tcx3,\n\t\t\t\t\t\t\tcy3,\n\t\t\t\t\t\t\tduvx01,\n\t\t\t\t\t\t\tduvy01,\n\t\t\t\t\t\t\tduvx03,\n\t\t\t\t\t\t\tduvy03,\n\t\t\t\t\t\t\tuvx0,\n\t\t\t\t\t\t\tuvy0\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfor (iv += 8; true; iv += 8) {\n\t\t\t\t\t\t\tif (iterator.hasNext() && iterator.advance(\"\\n\")) {\n\t\t\t\t\t\t\t\twriteCharacterEmpty(\n\t\t\t\t\t\t\t\t\tvertices,\n\t\t\t\t\t\t\t\t\tuvs,\n\t\t\t\t\t\t\t\t\tiv,\n\t\t\t\t\t\t\t\t\tcx0,\n\t\t\t\t\t\t\t\t\tcy0,\n\t\t\t\t\t\t\t\t\tcx3,\n\t\t\t\t\t\t\t\t\tcy3,\n\t\t\t\t\t\t\t\t\tuvx0,\n\t\t\t\t\t\t\t\t\tuvy0,\n\t\t\t\t\t\t\t\t\tuvx3,\n\t\t\t\t\t\t\t\t\tuvy3\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tlineCount += 1;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tiv -= 8;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadvancePrevious = advance;\n\n\t\t\t\t\t\twriteCharacterEmpty(\n\t\t\t\t\t\t\tvertices,\n\t\t\t\t\t\t\tuvs,\n\t\t\t\t\t\t\tiv,\n\t\t\t\t\t\t\tcx0,\n\t\t\t\t\t\t\tcy0,\n\t\t\t\t\t\t\tcx3,\n\t\t\t\t\t\t\tcy3,\n\t\t\t\t\t\t\tuvx0,\n\t\t\t\t\t\t\tuvy0,\n\t\t\t\t\t\t\tuvx3,\n\t\t\t\t\t\t\tuvy3\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tadvancePrevious = advance;\n\n\t\t\t\t\twriteCharacter(\n\t\t\t\t\t\tvertices,\n\t\t\t\t\t\tuvs,\n\t\t\t\t\t\tiv,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\ttextAtlas,\n\t\t\t\t\t\tsnx,\n\t\t\t\t\t\tsny,\n\t\t\t\t\t\tcx0,\n\t\t\t\t\t\tcy0,\n\t\t\t\t\t\tcx3,\n\t\t\t\t\t\tcy3,\n\t\t\t\t\t\tduvx01,\n\t\t\t\t\t\tduvy01,\n\t\t\t\t\t\tduvx03,\n\t\t\t\t\t\tduvy03,\n\t\t\t\t\t\tuvx0,\n\t\t\t\t\t\tuvy0\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tadvancePrevious = 0;\n\n\t\t\t\twriteCharacterEmpty(vertices, uvs, iv, cx0, cy0, cx3, cy3, uvx0, uvy0, uvx3, uvy3);\n\t\t\t}\n\t\t} else {\n\t\t\tlineWidth += advancePrevious;\n\t\t\tadvancePrevious = 0;\n\n\t\t\tbx0 += lhx;\n\t\t\tby0 += lhy;\n\t\t\tbx3 += lhx;\n\t\t\tby3 += lhy;\n\t\t\tcx0 = bx0;\n\t\t\tcy0 = by0;\n\t\t\tcx3 = bx3;\n\t\t\tcy3 = by3;\n\n\t\t\twriteCharacterEmpty(vertices, uvs, iv, cx0, cy0, cx3, cy3, uvx0, uvy0, uvx3, uvy3);\n\n\t\t\tadjustTextAlignment(\n\t\t\t\tvertices,\n\t\t\t\thnx,\n\t\t\t\thny,\n\t\t\t\tlineCount,\n\t\t\t\tiv,\n\t\t\t\twidth - lineWidth * scaleX,\n\t\t\t\ttextDirection,\n\t\t\t\ttextAlignHorizontal,\n\t\t\t\ttextAlignVertical\n\t\t\t);\n\t\t\tlineWidth = 0;\n\t\t\tlineCount = 0;\n\t\t}\n\t}\n\n\tlineWidth += advancePrevious;\n\tadjustTextAlignment(\n\t\tvertices,\n\t\thnx,\n\t\thny,\n\t\tlineCount,\n\t\tiv,\n\t\twidth - lineWidth * scaleX,\n\t\ttextDirection,\n\t\ttextAlignHorizontal,\n\t\ttextAlignVertical\n\t);\n\n\tfor (const ivmax = (voffset + vcount) * 2; iv < ivmax; iv += 2) {\n\t\tvertices[iv + 0] = tx0;\n\t\tvertices[iv + 1] = ty0;\n\t\tuvs[iv + 0] = uvx0;\n\t\tuvs[iv + 1] = uvy0;\n\t}\n};\n\nconst isIn = (\n\ttextAlignHorizontal: EShapeTextAlignHorizontal,\n\ttextAlignVertical: EShapeTextAlignVertical\n): boolean => {\n\tswitch (textAlignHorizontal) {\n\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\tswitch (textAlignVertical) {\n\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\treturn true;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn false;\n};\n\nconst writeCharacterEmpty = (\n\tvertices: Float32Array,\n\tuvs: Float32Array,\n\tiv: number,\n\tcx0: number,\n\tcy0: number,\n\tcx3: number,\n\tcy3: number,\n\tuvx0: number,\n\tuvy0: number,\n\tuvx3: number,\n\tuvy3: number\n): void => {\n\tvertices[iv + 0] = cx0;\n\tvertices[iv + 1] = cy0;\n\tvertices[iv + 2] = cx0;\n\tvertices[iv + 3] = cy0;\n\tvertices[iv + 4] = cx3;\n\tvertices[iv + 5] = cy3;\n\tvertices[iv + 6] = cx3;\n\tvertices[iv + 7] = cy3;\n\n\tuvs[iv + 0] = uvx0;\n\tuvs[iv + 1] = uvy0;\n\tuvs[iv + 2] = uvx0;\n\tuvs[iv + 3] = uvy0;\n\tuvs[iv + 4] = uvx3;\n\tuvs[iv + 5] = uvy3;\n\tuvs[iv + 6] = uvx3;\n\tuvs[iv + 7] = uvy3;\n};\n\nconst writeCharacter = (\n\tvertices: Float32Array,\n\tuvs: Float32Array,\n\tiv: number,\n\tdata: EShapeTextAtlasCharacter,\n\tatlas: EShapeTextAtlas,\n\tsnx: number,\n\tsny: number,\n\tcx0: number,\n\tcy0: number,\n\tcx3: number,\n\tcy3: number,\n\tduvx01: number,\n\tduvy01: number,\n\tduvx03: number,\n\tduvy03: number,\n\tuvx0: number,\n\tuvy0: number\n): void => {\n\t// Vertices\n\tconst dataOffsetX = data.x - data.origin.x;\n\tconst dataWidth = data.width;\n\tconst dx0 = dataOffsetX * snx;\n\tconst dy0 = dataOffsetX * sny;\n\tconst dx1 = (dataOffsetX + dataWidth) * snx;\n\tconst dy1 = (dataOffsetX + dataWidth) * sny;\n\tvertices[iv + 0] = cx0 + dx0;\n\tvertices[iv + 1] = cy0 + dy0;\n\tvertices[iv + 2] = cx0 + dx1;\n\tvertices[iv + 3] = cy0 + dy1;\n\tvertices[iv + 4] = cx3 + dx1;\n\tvertices[iv + 5] = cy3 + dy1;\n\tvertices[iv + 6] = cx3 + dx0;\n\tvertices[iv + 7] = cy3 + dy0;\n\n\t// UVs\n\tconst px0 = data.x / atlas.width;\n\tconst py0 = data.y / atlas.height;\n\tconst px1 = (data.x + data.width) / atlas.width;\n\tconst py1 = (data.y + data.height) / atlas.height;\n\n\tconst dux0 = duvx01 * px0;\n\tconst duy0 = duvy01 * px0;\n\tconst dux1 = duvx01 * px1;\n\tconst duy1 = duvy01 * px1;\n\n\tconst dvx0 = duvx03 * py0;\n\tconst dvy0 = duvy03 * py0;\n\tconst dvx1 = duvx03 * py1;\n\tconst dvy1 = duvy03 * py1;\n\tuvs[iv + 0] = uvx0 + dux0 + dvx0;\n\tuvs[iv + 1] = uvy0 + duy0 + dvy0;\n\tuvs[iv + 2] = uvx0 + dux1 + dvx0;\n\tuvs[iv + 3] = uvy0 + duy1 + dvy0;\n\tuvs[iv + 4] = uvx0 + dux1 + dvx1;\n\tuvs[iv + 5] = uvy0 + duy1 + dvy1;\n\tuvs[iv + 6] = uvx0 + dux0 + dvx1;\n\tuvs[iv + 7] = uvy0 + duy0 + dvy1;\n};\n\nconst moveText = (\n\tvertices: Float32Array,\n\tvertexIndex: number,\n\ttextCount: number,\n\tdx: number,\n\tdy: number\n): void => {\n\tlet iv = vertexIndex - 8 * textCount - 1;\n\tfor (let i = 0; i < textCount; ++i) {\n\t\tvertices[++iv] += dx;\n\t\tvertices[++iv] += dy;\n\t\tvertices[++iv] += dx;\n\t\tvertices[++iv] += dy;\n\t\tvertices[++iv] += dx;\n\t\tvertices[++iv] += dy;\n\t\tvertices[++iv] += dx;\n\t\tvertices[++iv] += dy;\n\t}\n};\n\nconst moveTextHalf = (\n\tvertices: Float32Array,\n\tvertexIndex: number,\n\ttextCount: number,\n\toffset: number,\n\tnx: number,\n\tny: number\n): void => {\n\toffset *= 0.5;\n\tmoveText(vertices, vertexIndex, textCount, offset * nx, offset * ny);\n};\n\nconst moveTextFull = (\n\tvertices: Float32Array,\n\tvertexIndex: number,\n\ttextCount: number,\n\toffset: number,\n\tnx: number,\n\tny: number\n): void => {\n\tmoveText(vertices, vertexIndex, textCount, offset * nx, offset * ny);\n};\n\nconst adjustTextAlignment = (\n\tvertices: Float32Array,\n\tnx: number,\n\tny: number,\n\tlineCount: number,\n\tvertexIndex: number,\n\toffset: number,\n\ttextDirection: EShapeTextDirection,\n\ttextAlignHorizontal: EShapeTextAlignHorizontal,\n\ttextAlignVertical: EShapeTextAlignVertical\n): void => {\n\tif (TEXT_FMIN < offset) {\n\t\tswitch (textDirection) {\n\t\t\tcase EShapeTextDirection.LEFT_TO_RIGHT:\n\t\t\t\tswitch (textAlignHorizontal) {\n\t\t\t\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\t\t\t\t// DO NOTHING\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\t\t\t\tmoveTextHalf(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\t\t\t\tmoveTextFull(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase EShapeTextDirection.TOP_TO_BOTTOM:\n\t\t\t\tswitch (textAlignVertical) {\n\t\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\t\t// DO NOTHING\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\t\tmoveTextHalf(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\t\tmoveTextFull(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase EShapeTextDirection.BOTTOM_TO_TOP:\n\t\t\t\tswitch (textAlignVertical) {\n\t\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_BOTTOM:\n\t\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\t\tmoveTextFull(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\t\tmoveTextHalf(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignVertical.OUTSIDE_TOP:\n\t\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\t\t// DO NOTHING\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase EShapeTextDirection.RIGHT_TO_LEFT:\n\t\t\t\tswitch (textAlignHorizontal) {\n\t\t\t\t\tcase EShapeTextAlignHorizontal.OUTSIDE_RIGHT:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\t\t\t\tmoveTextFull(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\t\t\t\tmoveTextHalf(vertices, vertexIndex, lineCount, offset, nx, ny);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EShapeTextAlignHorizontal.OUTSIDE_LEFT:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\t\t\t\t// DO NOTHING\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n};\n"]}