@wcardinal/wcardinal-ui 0.201.0 → 0.202.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 (208) hide show
  1. package/dist/types/wcardinal/ui/d-diagram-base.d.ts +1 -0
  2. package/dist/types/wcardinal/ui/d-diagram-canvas-data-impl.d.ts +7 -4
  3. package/dist/types/wcardinal/ui/d-diagram-canvas-data.d.ts +7 -4
  4. package/dist/types/wcardinal/ui/d-diagram-data-extended-impl.d.ts +2 -1
  5. package/dist/types/wcardinal/ui/d-diagram-data-impl.d.ts +7 -4
  6. package/dist/types/wcardinal/ui/d-diagram-data-private-impl.d.ts +2 -1
  7. package/dist/types/wcardinal/ui/d-diagram-data-protected-impl.d.ts +2 -1
  8. package/dist/types/wcardinal/ui/d-diagram-data-remote-impl.d.ts +1 -1
  9. package/dist/types/wcardinal/ui/d-diagram-data-remote.d.ts +1 -1
  10. package/dist/types/wcardinal/ui/d-diagram-data-scoped.d.ts +2 -1
  11. package/dist/types/wcardinal/ui/d-diagram-data.d.ts +5 -2
  12. package/dist/types/wcardinal/ui/d-diagram-serialized.d.ts +4 -0
  13. package/dist/types/wcardinal/ui/d-table-body-cell-color.d.ts +1 -1
  14. package/dist/types/wcardinal/ui/d-table-body-cell-options.d.ts +18 -0
  15. package/dist/types/wcardinal/ui/d-table-body-cell-select-dialog.d.ts +1 -1
  16. package/dist/types/wcardinal/ui/d-table-body-cell-select-promise.d.ts +1 -1
  17. package/dist/types/wcardinal/ui/d-table-body-cell-time.d.ts +1 -1
  18. package/dist/types/wcardinal/ui/d-table-body-cells.d.ts +7 -5
  19. package/dist/types/wcardinal/ui/d-table-body-row.d.ts +6 -4
  20. package/dist/types/wcardinal/ui/d-table-body.d.ts +2 -0
  21. package/dist/types/wcardinal/ui/d-table-column-editing.d.ts +16 -0
  22. package/dist/types/wcardinal/ui/d-table-column-formatter.d.ts +1 -0
  23. package/dist/types/wcardinal/ui/d-table-column-getter.d.ts +1 -0
  24. package/dist/types/wcardinal/ui/d-table-column-renderable.d.ts +1 -0
  25. package/dist/types/wcardinal/ui/d-table-column-selecting.d.ts +25 -0
  26. package/dist/types/wcardinal/ui/d-table-column-setter.d.ts +1 -0
  27. package/dist/types/wcardinal/ui/d-table-column-sorting.d.ts +9 -0
  28. package/dist/types/wcardinal/ui/d-table-column-state.d.ts +11 -0
  29. package/dist/types/wcardinal/ui/d-table-column-type.d.ts +18 -0
  30. package/dist/types/wcardinal/ui/d-table-column.d.ts +33 -101
  31. package/dist/types/wcardinal/ui/index.d.ts +10 -0
  32. package/dist/types/wcardinal/ui/shape/action/e-shape-action-runtimes.d.ts +7 -15
  33. package/dist/types/wcardinal/ui/shape/e-shape-data-impl.d.ts +7 -0
  34. package/dist/types/wcardinal/ui/shape/e-shape-data-scoped-impl.d.ts +2 -1
  35. package/dist/types/wcardinal/ui/shape/e-shape-data-scoped.d.ts +2 -1
  36. package/dist/types/wcardinal/ui/shape/e-shape-data-value-formatter.d.ts +1 -0
  37. package/dist/types/wcardinal/ui/shape/e-shape-data-value-impl.d.ts +10 -1
  38. package/dist/types/wcardinal/ui/shape/e-shape-data-value-state.d.ts +32 -0
  39. package/dist/types/wcardinal/ui/shape/e-shape-data-value.d.ts +6 -1
  40. package/dist/types/wcardinal/ui/shape/e-shape-data.d.ts +4 -0
  41. package/dist/types/wcardinal/ui/shape/index.d.ts +2 -0
  42. package/dist/types/wcardinal/ui/shape/variant/build-text.d.ts +2 -1
  43. package/dist/types/wcardinal/ui/shape/variant/builder-text.d.ts +2 -0
  44. package/dist/types/wcardinal/ui/shape/variant/e-shape-embedded-layer.d.ts +1 -1
  45. package/dist/types/wcardinal/ui/shape/variant/e-shape-embedded.d.ts +1 -1
  46. package/dist/types/wcardinal/ui/shape/variant/e-shape-group-viewer.d.ts +2 -4
  47. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-table-header-cell.d.ts +2 -0
  48. package/dist/types/wcardinal/ui/theme/white/d-theme-white-table-header-cell.d.ts +2 -0
  49. package/dist/types/wcardinal/ui/util/index.d.ts +3 -0
  50. package/dist/types/wcardinal/ui/util/is-object.d.ts +1 -0
  51. package/dist/types/wcardinal/ui/util/to-cloned.d.ts +1 -0
  52. package/dist/types/wcardinal/ui/util/to-merged.d.ts +1 -0
  53. package/dist/wcardinal/ui/d-controller-focus-impl.js +0 -2
  54. package/dist/wcardinal/ui/d-controller-focus-impl.js.map +1 -1
  55. package/dist/wcardinal/ui/d-diagram-base.js.map +1 -1
  56. package/dist/wcardinal/ui/d-diagram-canvas-data-impl.js +50 -16
  57. package/dist/wcardinal/ui/d-diagram-canvas-data-impl.js.map +1 -1
  58. package/dist/wcardinal/ui/d-diagram-canvas-data.js.map +1 -1
  59. package/dist/wcardinal/ui/d-diagram-data-extended-impl.js +2 -2
  60. package/dist/wcardinal/ui/d-diagram-data-extended-impl.js.map +1 -1
  61. package/dist/wcardinal/ui/d-diagram-data-impl.js +22 -8
  62. package/dist/wcardinal/ui/d-diagram-data-impl.js.map +1 -1
  63. package/dist/wcardinal/ui/d-diagram-data-private-impl.js +2 -2
  64. package/dist/wcardinal/ui/d-diagram-data-private-impl.js.map +1 -1
  65. package/dist/wcardinal/ui/d-diagram-data-protected-impl.js +2 -2
  66. package/dist/wcardinal/ui/d-diagram-data-protected-impl.js.map +1 -1
  67. package/dist/wcardinal/ui/d-diagram-data-remote-impl.js +1 -1
  68. package/dist/wcardinal/ui/d-diagram-data-remote-impl.js.map +1 -1
  69. package/dist/wcardinal/ui/d-diagram-data-remote.js.map +1 -1
  70. package/dist/wcardinal/ui/d-diagram-data-scoped.js.map +1 -1
  71. package/dist/wcardinal/ui/d-diagram-data.js.map +1 -1
  72. package/dist/wcardinal/ui/d-diagram-serialized.js.map +1 -1
  73. package/dist/wcardinal/ui/d-table-body-cell-action-menu.js +1 -3
  74. package/dist/wcardinal/ui/d-table-body-cell-action-menu.js.map +1 -1
  75. package/dist/wcardinal/ui/d-table-body-cell-check.js +2 -4
  76. package/dist/wcardinal/ui/d-table-body-cell-check.js.map +1 -1
  77. package/dist/wcardinal/ui/d-table-body-cell-color.js +17 -19
  78. package/dist/wcardinal/ui/d-table-body-cell-color.js.map +1 -1
  79. package/dist/wcardinal/ui/d-table-body-cell-date.js +1 -3
  80. package/dist/wcardinal/ui/d-table-body-cell-date.js.map +1 -1
  81. package/dist/wcardinal/ui/d-table-body-cell-datetime.js +2 -4
  82. package/dist/wcardinal/ui/d-table-body-cell-datetime.js.map +1 -1
  83. package/dist/wcardinal/ui/d-table-body-cell-index.js +1 -3
  84. package/dist/wcardinal/ui/d-table-body-cell-index.js.map +1 -1
  85. package/dist/wcardinal/ui/d-table-body-cell-input-integer.js +1 -3
  86. package/dist/wcardinal/ui/d-table-body-cell-input-integer.js.map +1 -1
  87. package/dist/wcardinal/ui/d-table-body-cell-input-real.js +1 -3
  88. package/dist/wcardinal/ui/d-table-body-cell-input-real.js.map +1 -1
  89. package/dist/wcardinal/ui/d-table-body-cell-input-text.js +1 -3
  90. package/dist/wcardinal/ui/d-table-body-cell-input-text.js.map +1 -1
  91. package/dist/wcardinal/ui/d-table-body-cell-input-tree.js +1 -3
  92. package/dist/wcardinal/ui/d-table-body-cell-input-tree.js.map +1 -1
  93. package/dist/wcardinal/ui/d-table-body-cell-options.js +6 -0
  94. package/dist/wcardinal/ui/d-table-body-cell-options.js.map +1 -0
  95. package/dist/wcardinal/ui/d-table-body-cell-select-dialog.js +1 -3
  96. package/dist/wcardinal/ui/d-table-body-cell-select-dialog.js.map +1 -1
  97. package/dist/wcardinal/ui/d-table-body-cell-select-menu.js +1 -3
  98. package/dist/wcardinal/ui/d-table-body-cell-select-menu.js.map +1 -1
  99. package/dist/wcardinal/ui/d-table-body-cell-select-multiple.js +1 -3
  100. package/dist/wcardinal/ui/d-table-body-cell-select-multiple.js.map +1 -1
  101. package/dist/wcardinal/ui/d-table-body-cell-select-promise.js +1 -3
  102. package/dist/wcardinal/ui/d-table-body-cell-select-promise.js.map +1 -1
  103. package/dist/wcardinal/ui/d-table-body-cell-text.js +1 -3
  104. package/dist/wcardinal/ui/d-table-body-cell-text.js.map +1 -1
  105. package/dist/wcardinal/ui/d-table-body-cell-time.js +1 -3
  106. package/dist/wcardinal/ui/d-table-body-cell-time.js.map +1 -1
  107. package/dist/wcardinal/ui/d-table-body-cell-tree.js +1 -2
  108. package/dist/wcardinal/ui/d-table-body-cell-tree.js.map +1 -1
  109. package/dist/wcardinal/ui/d-table-body-cells.js +13 -5
  110. package/dist/wcardinal/ui/d-table-body-cells.js.map +1 -1
  111. package/dist/wcardinal/ui/d-table-body-row.js +43 -39
  112. package/dist/wcardinal/ui/d-table-body-row.js.map +1 -1
  113. package/dist/wcardinal/ui/d-table-body.js +2 -1
  114. package/dist/wcardinal/ui/d-table-body.js.map +1 -1
  115. package/dist/wcardinal/ui/d-table-column-editing.js +6 -0
  116. package/dist/wcardinal/ui/d-table-column-editing.js.map +1 -0
  117. package/dist/wcardinal/ui/d-table-column-formatter.js +6 -0
  118. package/dist/wcardinal/ui/d-table-column-formatter.js.map +1 -0
  119. package/dist/wcardinal/ui/d-table-column-getter.js +6 -0
  120. package/dist/wcardinal/ui/d-table-column-getter.js.map +1 -0
  121. package/dist/wcardinal/ui/d-table-column-renderable.js +6 -0
  122. package/dist/wcardinal/ui/d-table-column-renderable.js.map +1 -0
  123. package/dist/wcardinal/ui/d-table-column-selecting.js +6 -0
  124. package/dist/wcardinal/ui/d-table-column-selecting.js.map +1 -0
  125. package/dist/wcardinal/ui/d-table-column-setter.js +6 -0
  126. package/dist/wcardinal/ui/d-table-column-setter.js.map +1 -0
  127. package/dist/wcardinal/ui/d-table-column-sorting.js +6 -0
  128. package/dist/wcardinal/ui/d-table-column-sorting.js.map +1 -0
  129. package/dist/wcardinal/ui/d-table-column-state.js +6 -0
  130. package/dist/wcardinal/ui/d-table-column-state.js.map +1 -0
  131. package/dist/wcardinal/ui/d-table-column-type.js +22 -0
  132. package/dist/wcardinal/ui/d-table-column-type.js.map +1 -0
  133. package/dist/wcardinal/ui/d-table-column.js +1 -17
  134. package/dist/wcardinal/ui/d-table-column.js.map +1 -1
  135. package/dist/wcardinal/ui/d-table.js +23 -1
  136. package/dist/wcardinal/ui/d-table.js.map +1 -1
  137. package/dist/wcardinal/ui/index.js +10 -0
  138. package/dist/wcardinal/ui/index.js.map +1 -1
  139. package/dist/wcardinal/ui/shape/action/e-shape-action-expressions.js +2 -0
  140. package/dist/wcardinal/ui/shape/action/e-shape-action-expressions.js.map +1 -1
  141. package/dist/wcardinal/ui/shape/action/e-shape-action-runtime-misc-write-both.js +2 -2
  142. package/dist/wcardinal/ui/shape/action/e-shape-action-runtime-misc-write-both.js.map +1 -1
  143. package/dist/wcardinal/ui/shape/action/e-shape-action-runtime-misc-write-local.js +1 -1
  144. package/dist/wcardinal/ui/shape/action/e-shape-action-runtime-misc-write-local.js.map +1 -1
  145. package/dist/wcardinal/ui/shape/action/e-shape-action-runtime-misc-write-remote.js +1 -1
  146. package/dist/wcardinal/ui/shape/action/e-shape-action-runtime-misc-write-remote.js.map +1 -1
  147. package/dist/wcardinal/ui/shape/action/e-shape-action-runtimes.js +30 -29
  148. package/dist/wcardinal/ui/shape/action/e-shape-action-runtimes.js.map +1 -1
  149. package/dist/wcardinal/ui/shape/action/e-shape-action-value-on-input-actions.js +4 -4
  150. package/dist/wcardinal/ui/shape/action/e-shape-action-value-on-input-actions.js.map +1 -1
  151. package/dist/wcardinal/ui/shape/e-shape-data-impl.js +57 -0
  152. package/dist/wcardinal/ui/shape/e-shape-data-impl.js.map +1 -1
  153. package/dist/wcardinal/ui/shape/e-shape-data-scoped-impl.js +5 -1
  154. package/dist/wcardinal/ui/shape/e-shape-data-scoped-impl.js.map +1 -1
  155. package/dist/wcardinal/ui/shape/e-shape-data-scoped.js.map +1 -1
  156. package/dist/wcardinal/ui/shape/e-shape-data-value-formatter.js +6 -0
  157. package/dist/wcardinal/ui/shape/e-shape-data-value-formatter.js.map +1 -0
  158. package/dist/wcardinal/ui/shape/e-shape-data-value-impl.js +211 -56
  159. package/dist/wcardinal/ui/shape/e-shape-data-value-impl.js.map +1 -1
  160. package/dist/wcardinal/ui/shape/e-shape-data-value-state.js +36 -0
  161. package/dist/wcardinal/ui/shape/e-shape-data-value-state.js.map +1 -0
  162. package/dist/wcardinal/ui/shape/e-shape-data-value.js.map +1 -1
  163. package/dist/wcardinal/ui/shape/e-shape-data.js.map +1 -1
  164. package/dist/wcardinal/ui/shape/index.js +2 -0
  165. package/dist/wcardinal/ui/shape/index.js.map +1 -1
  166. package/dist/wcardinal/ui/shape/variant/build-text.js +84 -63
  167. package/dist/wcardinal/ui/shape/variant/build-text.js.map +1 -1
  168. package/dist/wcardinal/ui/shape/variant/builder-text.js +18 -3
  169. package/dist/wcardinal/ui/shape/variant/builder-text.js.map +1 -1
  170. package/dist/wcardinal/ui/shape/variant/deserialize-embedded-layer.js +2 -3
  171. package/dist/wcardinal/ui/shape/variant/deserialize-embedded-layer.js.map +1 -1
  172. package/dist/wcardinal/ui/shape/variant/deserialize-embedded.js +4 -3
  173. package/dist/wcardinal/ui/shape/variant/deserialize-embedded.js.map +1 -1
  174. package/dist/wcardinal/ui/shape/variant/e-shape-base.js +3 -1
  175. package/dist/wcardinal/ui/shape/variant/e-shape-base.js.map +1 -1
  176. package/dist/wcardinal/ui/shape/variant/e-shape-embedded-layer.js +3 -3
  177. package/dist/wcardinal/ui/shape/variant/e-shape-embedded-layer.js.map +1 -1
  178. package/dist/wcardinal/ui/shape/variant/e-shape-embedded.js +3 -3
  179. package/dist/wcardinal/ui/shape/variant/e-shape-embedded.js.map +1 -1
  180. package/dist/wcardinal/ui/shape/variant/e-shape-embeddeds.js +1 -1
  181. package/dist/wcardinal/ui/shape/variant/e-shape-embeddeds.js.map +1 -1
  182. package/dist/wcardinal/ui/shape/variant/e-shape-group-viewer.js +4 -18
  183. package/dist/wcardinal/ui/shape/variant/e-shape-group-viewer.js.map +1 -1
  184. package/dist/wcardinal/ui/theme/dark/d-theme-dark-table-header-cell.js +11 -0
  185. package/dist/wcardinal/ui/theme/dark/d-theme-dark-table-header-cell.js.map +1 -1
  186. package/dist/wcardinal/ui/theme/white/d-theme-white-table-header-cell.js +11 -0
  187. package/dist/wcardinal/ui/theme/white/d-theme-white-table-header-cell.js.map +1 -1
  188. package/dist/wcardinal/ui/util/dynamic-sdf-font-generator.js +1 -1
  189. package/dist/wcardinal/ui/util/dynamic-sdf-font-generator.js.map +1 -1
  190. package/dist/wcardinal/ui/util/index.js +3 -0
  191. package/dist/wcardinal/ui/util/index.js.map +1 -1
  192. package/dist/wcardinal/ui/util/is-object.js +13 -0
  193. package/dist/wcardinal/ui/util/is-object.js.map +1 -0
  194. package/dist/wcardinal/ui/util/to-cloned.js +32 -0
  195. package/dist/wcardinal/ui/util/to-cloned.js.map +1 -0
  196. package/dist/wcardinal/ui/util/to-merged.js +45 -0
  197. package/dist/wcardinal/ui/util/to-merged.js.map +1 -0
  198. package/dist/wcardinal-ui-theme-dark.js +12 -1
  199. package/dist/wcardinal-ui-theme-dark.min.js +2 -2
  200. package/dist/wcardinal-ui-theme-dark.min.js.map +1 -1
  201. package/dist/wcardinal-ui-theme-white.js +12 -1
  202. package/dist/wcardinal-ui-theme-white.min.js +2 -2
  203. package/dist/wcardinal-ui-theme-white.min.js.map +1 -1
  204. package/dist/wcardinal-ui.cjs.js +1390 -954
  205. package/dist/wcardinal-ui.js +1596 -1182
  206. package/dist/wcardinal-ui.min.js +2 -2
  207. package/dist/wcardinal-ui.min.js.map +1 -1
  208. package/package.json +1 -1
@@ -39,11 +39,13 @@ export * from "./e-shape-data-scoped-impl";
39
39
  export * from "./e-shape-data-scoped";
40
40
  export * from "./e-shape-data-value-extension";
41
41
  export * from "./e-shape-data-value-extensions";
42
+ export * from "./e-shape-data-value-formatter";
42
43
  export * from "./e-shape-data-value-impl";
43
44
  export * from "./e-shape-data-value-order";
44
45
  export * from "./e-shape-data-value-range-impl";
45
46
  export * from "./e-shape-data-value-range";
46
47
  export * from "./e-shape-data-value-scope";
48
+ export * from "./e-shape-data-value-state";
47
49
  export * from "./e-shape-data-value-type";
48
50
  export * from "./e-shape-data-value";
49
51
  export * from "./e-shape-data";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/shape/index.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport * from \"./action\";\nexport * from \"./load\";\nexport * from \"./variant\";\nexport * from \"./e-shape-acceptor-impl\";\nexport * from \"./e-shape-acceptor-type\";\nexport * from \"./e-shape-acceptor\";\nexport * from \"./e-shape-acceptors\";\nexport * from \"./e-shape-buffer-unit-builder\";\nexport * from \"./e-shape-buffer-unit\";\nexport * from \"./e-shape-buffer\";\nexport * from \"./e-shape-capabilities\";\nexport * from \"./e-shape-capability\";\nexport * from \"./e-shape-connector-bodies\";\nexport * from \"./e-shape-connector-body-impl\";\nexport * from \"./e-shape-connector-body\";\nexport * from \"./e-shape-connector-container-impl\";\nexport * from \"./e-shape-connector-container\";\nexport * from \"./e-shape-connector-edge-acceptor-impl\";\nexport * from \"./e-shape-connector-edge-acceptor\";\nexport * from \"./e-shape-connector-edge-container-impl\";\nexport * from \"./e-shape-connector-edge-container\";\nexport * from \"./e-shape-connector-edge-impl\";\nexport * from \"./e-shape-connector-edge\";\nexport * from \"./e-shape-connector\";\nexport * from \"./e-shape-connectors\";\nexport * from \"./e-shape-container\";\nexport * from \"./e-shape-copy-part\";\nexport * from \"./e-shape-corner\";\nexport * from \"./e-shape-data-impl\";\nexport * from \"./e-shape-data-mapper-impl\";\nexport * from \"./e-shape-data-mapper\";\nexport * from \"./e-shape-data-mapping-impl\";\nexport * from \"./e-shape-data-mapping\";\nexport * from \"./e-shape-data-scoped-impl\";\nexport * from \"./e-shape-data-scoped\";\nexport * from \"./e-shape-data-value-extension\";\nexport * from \"./e-shape-data-value-extensions\";\nexport * from \"./e-shape-data-value-impl\";\nexport * from \"./e-shape-data-value-order\";\nexport * from \"./e-shape-data-value-range-impl\";\nexport * from \"./e-shape-data-value-range\";\nexport * from \"./e-shape-data-value-scope\";\nexport * from \"./e-shape-data-value-type\";\nexport * from \"./e-shape-data-value\";\nexport * from \"./e-shape-data\";\nexport * from \"./e-shape-defaults\";\nexport * from \"./e-shape-deleter\";\nexport * from \"./e-shape-deserializers\";\nexport * from \"./e-shape-editor\";\nexport * from \"./e-shape-fill\";\nexport * from \"./e-shape-gradient\";\nexport * from \"./e-shape-layer-container\";\nexport * from \"./e-shape-layer-state\";\nexport * from \"./e-shape-layer\";\nexport * from \"./e-shape-layout\";\nexport * from \"./e-shape-points-formatted\";\nexport * from \"./e-shape-points-formatter-curve\";\nexport * from \"./e-shape-points-formatter\";\nexport * from \"./e-shape-points-marker-base\";\nexport * from \"./e-shape-points-marker-container-impl-noop\";\nexport * from \"./e-shape-points-marker-container-impl\";\nexport * from \"./e-shape-points-marker-container\";\nexport * from \"./e-shape-points-marker-head\";\nexport * from \"./e-shape-points-marker-noop\";\nexport * from \"./e-shape-points-marker-tail\";\nexport * from \"./e-shape-points-marker-type\";\nexport * from \"./e-shape-points-marker\";\nexport * from \"./e-shape-points-style\";\nexport * from \"./e-shape-points-styles\";\nexport * from \"./e-shape-points\";\nexport * from \"./e-shape-renderer-iterator-datum\";\nexport * from \"./e-shape-renderer-iterator\";\nexport * from \"./e-shape-renderer\";\nexport * from \"./e-shape-resource-manager-deserialization\";\nexport * from \"./e-shape-resource-manager-serialization\";\nexport * from \"./e-shape-runtime\";\nexport * from \"./e-shape-runtimes\";\nexport * from \"./e-shape-search\";\nexport * from \"./e-shape-state-set-impl-observable\";\nexport * from \"./e-shape-state-set\";\nexport * from \"./e-shape-state\";\nexport * from \"./e-shape-stroke-side\";\nexport * from \"./e-shape-stroke-style\";\nexport * from \"./e-shape-stroke\";\nexport * from \"./e-shape-text-align-horizontal\";\nexport * from \"./e-shape-text-align-vertical\";\nexport * from \"./e-shape-text-align\";\nexport * from \"./e-shape-text-direction\";\nexport * from \"./e-shape-text-offset\";\nexport * from \"./e-shape-text-outline\";\nexport * from \"./e-shape-text\";\nexport * from \"./e-shape-transform-parent\";\nexport * from \"./e-shape-transform\";\nexport * from \"./e-shape-transforms\";\nexport * from \"./e-shape-type\";\nexport * from \"./e-shape-uploaded-constructor\";\nexport * from \"./e-shape-uploaded\";\nexport * from \"./e-shape-uploadeds\";\nexport * from \"./e-shape-uuid-mapping-impl\";\nexport * from \"./e-shape-uuid-mapping\";\nexport * from \"./e-shape\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/shape/index.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport * from \"./action\";\nexport * from \"./load\";\nexport * from \"./variant\";\nexport * from \"./e-shape-acceptor-impl\";\nexport * from \"./e-shape-acceptor-type\";\nexport * from \"./e-shape-acceptor\";\nexport * from \"./e-shape-acceptors\";\nexport * from \"./e-shape-buffer-unit-builder\";\nexport * from \"./e-shape-buffer-unit\";\nexport * from \"./e-shape-buffer\";\nexport * from \"./e-shape-capabilities\";\nexport * from \"./e-shape-capability\";\nexport * from \"./e-shape-connector-bodies\";\nexport * from \"./e-shape-connector-body-impl\";\nexport * from \"./e-shape-connector-body\";\nexport * from \"./e-shape-connector-container-impl\";\nexport * from \"./e-shape-connector-container\";\nexport * from \"./e-shape-connector-edge-acceptor-impl\";\nexport * from \"./e-shape-connector-edge-acceptor\";\nexport * from \"./e-shape-connector-edge-container-impl\";\nexport * from \"./e-shape-connector-edge-container\";\nexport * from \"./e-shape-connector-edge-impl\";\nexport * from \"./e-shape-connector-edge\";\nexport * from \"./e-shape-connector\";\nexport * from \"./e-shape-connectors\";\nexport * from \"./e-shape-container\";\nexport * from \"./e-shape-copy-part\";\nexport * from \"./e-shape-corner\";\nexport * from \"./e-shape-data-impl\";\nexport * from \"./e-shape-data-mapper-impl\";\nexport * from \"./e-shape-data-mapper\";\nexport * from \"./e-shape-data-mapping-impl\";\nexport * from \"./e-shape-data-mapping\";\nexport * from \"./e-shape-data-scoped-impl\";\nexport * from \"./e-shape-data-scoped\";\nexport * from \"./e-shape-data-value-extension\";\nexport * from \"./e-shape-data-value-extensions\";\nexport * from \"./e-shape-data-value-formatter\";\nexport * from \"./e-shape-data-value-impl\";\nexport * from \"./e-shape-data-value-order\";\nexport * from \"./e-shape-data-value-range-impl\";\nexport * from \"./e-shape-data-value-range\";\nexport * from \"./e-shape-data-value-scope\";\nexport * from \"./e-shape-data-value-state\";\nexport * from \"./e-shape-data-value-type\";\nexport * from \"./e-shape-data-value\";\nexport * from \"./e-shape-data\";\nexport * from \"./e-shape-defaults\";\nexport * from \"./e-shape-deleter\";\nexport * from \"./e-shape-deserializers\";\nexport * from \"./e-shape-editor\";\nexport * from \"./e-shape-fill\";\nexport * from \"./e-shape-gradient\";\nexport * from \"./e-shape-layer-container\";\nexport * from \"./e-shape-layer-state\";\nexport * from \"./e-shape-layer\";\nexport * from \"./e-shape-layout\";\nexport * from \"./e-shape-points-formatted\";\nexport * from \"./e-shape-points-formatter-curve\";\nexport * from \"./e-shape-points-formatter\";\nexport * from \"./e-shape-points-marker-base\";\nexport * from \"./e-shape-points-marker-container-impl-noop\";\nexport * from \"./e-shape-points-marker-container-impl\";\nexport * from \"./e-shape-points-marker-container\";\nexport * from \"./e-shape-points-marker-head\";\nexport * from \"./e-shape-points-marker-noop\";\nexport * from \"./e-shape-points-marker-tail\";\nexport * from \"./e-shape-points-marker-type\";\nexport * from \"./e-shape-points-marker\";\nexport * from \"./e-shape-points-style\";\nexport * from \"./e-shape-points-styles\";\nexport * from \"./e-shape-points\";\nexport * from \"./e-shape-renderer-iterator-datum\";\nexport * from \"./e-shape-renderer-iterator\";\nexport * from \"./e-shape-renderer\";\nexport * from \"./e-shape-resource-manager-deserialization\";\nexport * from \"./e-shape-resource-manager-serialization\";\nexport * from \"./e-shape-runtime\";\nexport * from \"./e-shape-runtimes\";\nexport * from \"./e-shape-search\";\nexport * from \"./e-shape-state-set-impl-observable\";\nexport * from \"./e-shape-state-set\";\nexport * from \"./e-shape-state\";\nexport * from \"./e-shape-stroke-side\";\nexport * from \"./e-shape-stroke-style\";\nexport * from \"./e-shape-stroke\";\nexport * from \"./e-shape-text-align-horizontal\";\nexport * from \"./e-shape-text-align-vertical\";\nexport * from \"./e-shape-text-align\";\nexport * from \"./e-shape-text-direction\";\nexport * from \"./e-shape-text-offset\";\nexport * from \"./e-shape-text-outline\";\nexport * from \"./e-shape-text\";\nexport * from \"./e-shape-transform-parent\";\nexport * from \"./e-shape-transform\";\nexport * from \"./e-shape-transforms\";\nexport * from \"./e-shape-type\";\nexport * from \"./e-shape-uploaded-constructor\";\nexport * from \"./e-shape-uploaded\";\nexport * from \"./e-shape-uploadeds\";\nexport * from \"./e-shape-uuid-mapping-impl\";\nexport * from \"./e-shape-uuid-mapping\";\nexport * from \"./e-shape\";\n"]}
@@ -9,7 +9,7 @@ import { toLength } from "./to-length";
9
9
  import { toScaleInvariant } from "./to-scale-invariant";
10
10
  export var TEXT_VERTEX_COUNT = 4;
11
11
  export var TEXT_INDEX_COUNT = 2;
12
- var TEXT_FMIN = 0.00001;
12
+ export var TEXT_FMIN = 0.00001;
13
13
  var TEXT_WORK_POINT = new Point();
14
14
  export var toTextBufferCount = function (shape) {
15
15
  return Math.ceil(shape.text.value.length / 12) * 12;
@@ -37,12 +37,12 @@ export var buildTextIndex = function (indices, voffset, ioffset, icount) {
37
37
  iv += 4;
38
38
  }
39
39
  };
40
- export var buildTextStep = function (steps, voffset, vcount, textAtlas, textSize, textOutlineWidth, textWeight) {
40
+ export var buildTextStep = function (steps, voffset, vcount, textAtlas, textSize, textOutlineWidth, textWeight, scaleX, scaleY) {
41
41
  var is = voffset * 6 - 1;
42
42
  var ismax = (voffset + vcount) * 6 - 1;
43
43
  var scaleInvariant = toScaleInvariant(EShapeStrokeStyle.NONE);
44
44
  if (textAtlas != null) {
45
- var scale = textAtlas.font.size / textSize;
45
+ var scale = textAtlas.font.size / (textSize * (scaleX + scaleY) * 0.5);
46
46
  var position = textWeight === EShapeTextWeight.NORMAL ? 0.0 : 0.05;
47
47
  for (; is < ismax;) {
48
48
  steps[++is] = textOutlineWidth;
@@ -274,19 +274,6 @@ var getTextBBox = function (halign, valign, hoffset, voffset, hpadding, vpadding
274
274
  break;
275
275
  }
276
276
  };
277
- var toNormalized = function (dx, dy, defx, defy, result) {
278
- var d = dx * dx + dy * dy;
279
- if (TEXT_FMIN < d) {
280
- var l = Math.sqrt(d);
281
- var li = 1 / l;
282
- result.set(dx * li, dy * li);
283
- return l;
284
- }
285
- else {
286
- result.set(defx, defy);
287
- return 0;
288
- }
289
- };
290
277
  var rotateAlignHorizontalRight = function (align) {
291
278
  switch (align) {
292
279
  case EShapeTextAlignHorizontal.LEFT:
@@ -354,36 +341,78 @@ export var buildTextVertex = function (vertices, uvs, voffset, vcount, originX,
354
341
  //
355
342
  var sx = sizeX * 0.5;
356
343
  var sy = sizeY * 0.5;
357
- var work = TEXT_WORK_POINT;
358
- work.set(originX - sx, originY - sy);
359
- internalTransform.apply(work, work);
360
- var x0 = work.x;
361
- var y0 = work.y;
362
- work.set(originX + sx, originY - sy);
363
- internalTransform.apply(work, work);
364
- var x1 = work.x;
365
- var y1 = work.y;
366
- work.set(originX + sx, originY + sy);
367
- internalTransform.apply(work, work);
368
- var x2 = work.x;
369
- var y2 = work.y;
344
+ var a = internalTransform.a;
345
+ var b = internalTransform.b;
346
+ var c = internalTransform.c;
347
+ var d = internalTransform.d;
348
+ var tx = internalTransform.tx;
349
+ var ty = internalTransform.ty;
350
+ var ltx = originX - sx;
351
+ var lty = originY - sy;
352
+ var rtx = originX + sx;
353
+ var rty = originY - sy;
354
+ var rbx = originX + sx;
355
+ var rby = originY + sy;
356
+ var x0 = a * ltx + c * lty + tx;
357
+ var y0 = b * ltx + d * lty + ty;
358
+ var x1 = a * rtx + c * rty + tx;
359
+ var y1 = b * rtx + d * rty + ty;
360
+ var x2 = a * rbx + c * rby + tx;
361
+ var y2 = b * rbx + d * rby + ty;
370
362
  var x3 = x0 + (x2 - x1);
371
363
  var y3 = y0 + (y2 - y1);
372
364
  // Horizontal normal
373
365
  var hl = toLength(x0, y0, x1, y1);
374
- toNormalized(internalTransform.a, internalTransform.b, 1, 0, work);
375
- var hnx = work.x;
376
- var hny = work.y;
366
+ var hnl = toLength(0, 0, a, b);
367
+ var hnx = 1;
368
+ var hny = 0;
369
+ if (TEXT_FMIN < hnl) {
370
+ var hnli = 1 / hnl;
371
+ hnx = a * hnli;
372
+ hny = b * hnli;
373
+ }
377
374
  // Vertical normal
378
375
  var vl = toLength(x0, y0, x3, y3);
379
- toNormalized(internalTransform.c, internalTransform.d, 0, 1, work);
380
- var vnx = work.x;
381
- var vny = work.y;
376
+ var vnl = toLength(0, 0, c, d);
377
+ var vnx = 0;
378
+ var vny = 1;
379
+ if (TEXT_FMIN < hnl) {
380
+ var vnli = 1 / vnl;
381
+ vnx = c * vnli;
382
+ vny = d * vnli;
383
+ }
384
+ var work = TEXT_WORK_POINT;
385
+ switch (textDirection) {
386
+ case EShapeTextDirection.LEFT_TO_RIGHT:
387
+ // DO NOTHING
388
+ break;
389
+ case EShapeTextDirection.TOP_TO_BOTTOM:
390
+ work.set(vnx, vny);
391
+ vnx = -hnx;
392
+ vny = -hny;
393
+ hnx = work.x;
394
+ hny = work.y;
395
+ work.x = vnl;
396
+ vnl = hnl;
397
+ hnl = work.x;
398
+ break;
399
+ case EShapeTextDirection.BOTTOM_TO_TOP:
400
+ work.set(vnx, vny);
401
+ vnx = hnx;
402
+ vny = hny;
403
+ hnx = -work.x;
404
+ hny = -work.y;
405
+ work.x = vnl;
406
+ vnl = hnl;
407
+ hnl = work.x;
408
+ break;
409
+ }
382
410
  // Calculate the width / height
383
411
  var width = 0;
384
412
  var height = 0;
385
413
  var heightChar = 0;
386
- var lineHeight = Math.max(0, textSize + textSpacingVertical);
414
+ var textSizeY = textSize * vnl;
415
+ var lineHeight = Math.max(0, textSize + textSpacingVertical) * vnl;
387
416
  var lineWidth = 0;
388
417
  var textAtlasCharacters = textAtlas.characters;
389
418
  var iterator = UtilCharacterIterator.from(textValue);
@@ -411,12 +440,14 @@ export var buildTextVertex = function (vertices, uvs, voffset, vcount, originX,
411
440
  height += lineHeight;
412
441
  }
413
442
  }
414
- var scale = textSize / textAtlas.font.size;
443
+ var scaleZ = textSize / textAtlas.font.size;
444
+ var scaleX = hnl * scaleZ;
445
+ var scaleY = vnl * scaleZ;
415
446
  lineWidth += advancePrevious;
416
- width = Math.max(width, lineWidth) * scale;
447
+ width = Math.max(width, lineWidth) * scaleX;
417
448
  lineWidth = 0;
418
- heightChar *= scale;
419
- height += textSize;
449
+ heightChar *= scaleY;
450
+ height += textSizeY;
420
451
  //
421
452
  var tx0 = 0;
422
453
  var ty0 = 0;
@@ -443,13 +474,6 @@ export var buildTextVertex = function (vertices, uvs, voffset, vcount, originX,
443
474
  }
444
475
  break;
445
476
  case EShapeTextDirection.TOP_TO_BOTTOM:
446
- // Swap normals
447
- work.set(vnx, vny);
448
- vnx = -hnx;
449
- vny = -hny;
450
- hnx = work.x;
451
- hny = work.y;
452
- // Get text bbox
453
477
  getTextBBox(rotateAlignVerticalRight(textAlignVertical), rotateAlignHorizontalRight(textAlignHorizontal), textOffsetVertical, textOffsetHorizontal, textPaddingVertical, textPaddingHorizontal, width, height, x1, y1, x2, y2, x3, y3, x0, y0, hnx, hny, vnx, vny, work);
454
478
  tx0 = work.x;
455
479
  ty0 = work.y;
@@ -470,13 +494,6 @@ export var buildTextVertex = function (vertices, uvs, voffset, vcount, originX,
470
494
  }
471
495
  break;
472
496
  case EShapeTextDirection.BOTTOM_TO_TOP:
473
- // Swap normals
474
- work.set(vnx, vny);
475
- vnx = hnx;
476
- vny = hny;
477
- hnx = -work.x;
478
- hny = -work.y;
479
- // Get text bbox
480
497
  getTextBBox(rotateAlignVerticalLeft(textAlignVertical), rotateAlignHorizontalLeft(textAlignHorizontal), textOffsetVertical, textOffsetHorizontal, textPaddingVertical, textPaddingHorizontal, width, height, x3, y3, x0, y0, x1, y1, x2, y2, hnx, hny, vnx, vny, work);
481
498
  tx0 = work.x;
482
499
  ty0 = work.y;
@@ -508,6 +525,8 @@ export var buildTextVertex = function (vertices, uvs, voffset, vcount, originX,
508
525
  textWorld[5] = vny;
509
526
  textWorld[6] = lineWidthMaximum;
510
527
  textWorld[7] = height;
528
+ textWorld[8] = hnl;
529
+ textWorld[9] = vnl;
511
530
  }
512
531
  else {
513
532
  textWorld[0] = tx0;
@@ -518,6 +537,8 @@ export var buildTextVertex = function (vertices, uvs, voffset, vcount, originX,
518
537
  textWorld[5] = vny;
519
538
  textWorld[6] = width;
520
539
  textWorld[7] = height;
540
+ textWorld[8] = hnl;
541
+ textWorld[9] = vnl;
521
542
  }
522
543
  // Texture
523
544
  var uvx0 = textureUvs.x0;
@@ -533,16 +554,16 @@ export var buildTextVertex = function (vertices, uvs, voffset, vcount, originX,
533
554
  // Vertices & UVs
534
555
  var lhx = lineHeight * vnx;
535
556
  var lhy = lineHeight * vny;
536
- var snx = scale * hnx;
537
- var sny = scale * hny;
538
- var offsetY = (heightChar - textSize) * 0.5;
557
+ var snx = scaleX * hnx;
558
+ var sny = scaleX * hny;
559
+ var offsetY = (heightChar - textSizeY) * 0.5;
539
560
  var oyx = offsetY * vnx;
540
561
  var oyy = offsetY * vny;
541
562
  var offsetItalic = textStyle === EShapeTextStyle.NORMAL ? 0 : textSize * 0.25;
542
563
  var bx0 = tx0 - oyx + offsetItalic * snx;
543
564
  var by0 = ty0 - oyy + offsetItalic * sny;
544
- var bx3 = tx0 + oyx + textSize * vnx;
545
- var by3 = ty0 + oyy + textSize * vny;
565
+ var bx3 = tx0 + oyx + textSizeY * vnx;
566
+ var by3 = ty0 + oyy + textSizeY * vny;
546
567
  var cx0 = bx0;
547
568
  var cy0 = by0;
548
569
  var cx3 = bx3;
@@ -569,11 +590,11 @@ export var buildTextVertex = function (vertices, uvs, voffset, vcount, originX,
569
590
  lineCount += 1;
570
591
  if (data) {
571
592
  var advance = data.advance;
572
- if (lineWidthMaximum < (lineWidth + advance) * scale) {
593
+ if (lineWidthMaximum < (lineWidth + advance) * scaleX) {
573
594
  var dots = textAtlasCharacters["..."];
574
595
  if (dots) {
575
596
  if (1 < lineCount &&
576
- lineWidthMaximum < (lineWidth + dots.advance) * scale) {
597
+ lineWidthMaximum < (lineWidth + dots.advance) * scaleX) {
577
598
  lineWidth = lineWidthPrevious;
578
599
  iv -= 8;
579
600
  lineCount -= 1;
@@ -624,13 +645,13 @@ export var buildTextVertex = function (vertices, uvs, voffset, vcount, originX,
624
645
  cx3 = bx3;
625
646
  cy3 = by3;
626
647
  writeCharacterEmpty(vertices, uvs, iv, cx0, cy0, cx3, cy3, uvx0, uvy0, uvx3, uvy3);
627
- adjustTextAlignment(vertices, hnx, hny, lineCount, iv, width - lineWidth * scale, textDirection, textAlignHorizontal, textAlignVertical);
648
+ adjustTextAlignment(vertices, hnx, hny, lineCount, iv, width - lineWidth * scaleX, textDirection, textAlignHorizontal, textAlignVertical);
628
649
  lineWidth = 0;
629
650
  lineCount = 0;
630
651
  }
631
652
  }
632
653
  lineWidth += advancePrevious;
633
- adjustTextAlignment(vertices, hnx, hny, lineCount, iv, width - lineWidth * scale, textDirection, textAlignHorizontal, textAlignVertical);
654
+ adjustTextAlignment(vertices, hnx, hny, lineCount, iv, width - lineWidth * scaleX, textDirection, textAlignHorizontal, textAlignVertical);
634
655
  for (var ivmax = (voffset + vcount) * 2; iv < ivmax; iv += 2) {
635
656
  vertices[iv + 0] = tx0;
636
657
  vertices[iv + 1] = ty0;
@@ -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_INDEX_COUNT = 2;\nconst TEXT_FMIN: number = 0.00001;\nconst TEXT_WORK_POINT: Point = new Point();\n\nexport const toTextBufferCount = (shape: EShape): number => {\n\treturn Math.ceil(shape.text.value.length / 12) * 12;\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): 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;\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 toNormalized = (\n\tdx: number,\n\tdy: number,\n\tdefx: number,\n\tdefy: number,\n\tresult: Point\n): number => {\n\tconst d = dx * dx + dy * dy;\n\tif (TEXT_FMIN < d) {\n\t\tconst l = Math.sqrt(d);\n\t\tconst li = 1 / l;\n\t\tresult.set(dx * li, dy * li);\n\t\treturn l;\n\t} else {\n\t\tresult.set(defx, defy);\n\t\treturn 0;\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\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\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\tconst work = TEXT_WORK_POINT;\n\twork.set(originX - sx, originY - sy);\n\tinternalTransform.apply(work, work);\n\tconst x0 = work.x;\n\tconst y0 = work.y;\n\twork.set(originX + sx, originY - sy);\n\tinternalTransform.apply(work, work);\n\tconst x1 = work.x;\n\tconst y1 = work.y;\n\twork.set(originX + sx, originY + sy);\n\tinternalTransform.apply(work, work);\n\tconst x2 = work.x;\n\tconst y2 = work.y;\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\ttoNormalized(internalTransform.a, internalTransform.b, 1, 0, work);\n\tlet hnx = work.x;\n\tlet hny = work.y;\n\n\t// Vertical normal\n\tconst vl = toLength(x0, y0, x3, y3);\n\ttoNormalized(internalTransform.c, internalTransform.d, 0, 1, work);\n\tlet vnx = work.x;\n\tlet vny = work.y;\n\n\t// Calculate the width / height\n\tlet width = 0;\n\tlet height = 0;\n\tlet heightChar = 0;\n\tconst lineHeight = Math.max(0, textSize + textSpacingVertical);\n\tlet lineWidth = 0;\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}\n\t}\n\n\tconst scale = textSize / textAtlas.font.size;\n\tlineWidth += advancePrevious;\n\twidth = Math.max(width, lineWidth) * scale;\n\tlineWidth = 0;\n\theightChar *= scale;\n\theight += textSize;\n\n\t//\n\tlet tx0 = 0;\n\tlet ty0 = 0;\n\tlet lineWidthMaximum = NaN;\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) {\n\t\t\t\tswitch (textAlignHorizontal) {\n\t\t\t\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\t\t\t\tswitch (textAlignVertical) {\n\t\t\t\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\t\t\t\tlineWidthMaximum = hl - textPaddingHorizontal * 2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.TOP_TO_BOTTOM:\n\t\t\t// Swap normals\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\t// Get text bbox\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) {\n\t\t\t\tswitch (textAlignVertical) {\n\t\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\t\tswitch (textAlignHorizontal) {\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\t\t\t\t\t\tlineWidthMaximum = vl - textPaddingVertical * 2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase EShapeTextDirection.BOTTOM_TO_TOP:\n\t\t\t// Swap normals\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\t// Get text bbox\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) {\n\t\t\t\tswitch (textAlignVertical) {\n\t\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\t\tswitch (textAlignHorizontal) {\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\t\t\t\t\t\tlineWidthMaximum = vl - textPaddingVertical * 2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\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} 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}\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 = scale * hnx;\n\tconst sny = scale * hny;\n\n\tconst offsetY = (heightChar - textSize) * 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 + textSize * vnx;\n\tlet by3 = ty0 + oyy + textSize * 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\tlet lineCount = 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) * scale) {\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) * scale\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 * scale,\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 * scale,\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 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}\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\";\n\nexport const TEXT_VERTEX_COUNT = 4;\nexport const TEXT_INDEX_COUNT = 2;\nexport const TEXT_FMIN: number = 0.00001;\nconst TEXT_WORK_POINT: Point = new Point();\n\nexport const toTextBufferCount = (shape: EShape): number => {\n\treturn Math.ceil(shape.text.value.length / 12) * 12;\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\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\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}\n\n\t// Calculate the width / height\n\tlet width = 0;\n\tlet height = 0;\n\tlet heightChar = 0;\n\tconst textSizeY = textSize * vnl;\n\tconst lineHeight = Math.max(0, textSize + textSpacingVertical) * vnl;\n\tlet lineWidth = 0;\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}\n\t}\n\n\tconst scaleZ = textSize / textAtlas.font.size;\n\tconst scaleX = hnl * scaleZ;\n\tconst scaleY = vnl * scaleZ;\n\tlineWidth += advancePrevious;\n\twidth = Math.max(width, lineWidth) * scaleX;\n\tlineWidth = 0;\n\theightChar *= scaleY;\n\theight += textSizeY;\n\n\t//\n\tlet tx0 = 0;\n\tlet ty0 = 0;\n\tlet lineWidthMaximum = NaN;\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) {\n\t\t\t\tswitch (textAlignHorizontal) {\n\t\t\t\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\t\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\t\t\t\tswitch (textAlignVertical) {\n\t\t\t\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\t\t\t\tlineWidthMaximum = hl - textPaddingHorizontal * 2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\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) {\n\t\t\t\tswitch (textAlignVertical) {\n\t\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\t\tswitch (textAlignHorizontal) {\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\t\t\t\t\t\tlineWidthMaximum = vl - textPaddingVertical * 2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\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) {\n\t\t\t\tswitch (textAlignVertical) {\n\t\t\t\t\tcase EShapeTextAlignVertical.TOP:\n\t\t\t\t\tcase EShapeTextAlignVertical.MIDDLE:\n\t\t\t\t\tcase EShapeTextAlignVertical.BOTTOM:\n\t\t\t\t\t\tswitch (textAlignHorizontal) {\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.LEFT:\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.CENTER:\n\t\t\t\t\t\t\tcase EShapeTextAlignHorizontal.RIGHT:\n\t\t\t\t\t\t\t\tlineWidthMaximum = vl - textPaddingVertical * 2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\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\tlet lineCount = 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 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}\n\t}\n};\n"]}