@wcardinal/wcardinal-ui 0.425.0 → 0.427.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 (65) hide show
  1. package/dist/types/wcardinal/ui/d-dynamic-text-geometry.d.ts +14 -3
  2. package/dist/types/wcardinal/ui/d-pane.d.ts +4 -4
  3. package/dist/types/wcardinal/ui/shape/e-shape-text.d.ts +3 -1
  4. package/dist/types/wcardinal/ui/shape/variant/build-text.d.ts +1 -1
  5. package/dist/types/wcardinal/ui/shape/variant/e-shape-text-impl.d.ts +6 -1
  6. package/dist/types/wcardinal/ui/util/character.d.ts +8 -0
  7. package/dist/types/wcardinal/ui/util/dynamic-font-atlas-character.d.ts +1 -0
  8. package/dist/types/wcardinal/ui/util/dynamic-font-atlas-characters.d.ts +1 -1
  9. package/dist/types/wcardinal/ui/util/dynamic-font-atlas.d.ts +5 -7
  10. package/dist/types/wcardinal/ui/util/dynamic-sdf-font-atlas.d.ts +4 -5
  11. package/dist/types/wcardinal/ui/util/dynamic-sdf-font-atlases.d.ts +2 -2
  12. package/dist/types/wcardinal/ui/util/index.d.ts +1 -0
  13. package/dist/types/wcardinal/ui/util/util-character-iterator.d.ts +0 -8
  14. package/dist/wcardinal/ui/d-dynamic-text-geometry.js +56 -49
  15. package/dist/wcardinal/ui/d-dynamic-text-geometry.js.map +1 -1
  16. package/dist/wcardinal/ui/d-dynamic-text-measure.js +11 -11
  17. package/dist/wcardinal/ui/d-dynamic-text-measure.js.map +1 -1
  18. package/dist/wcardinal/ui/d-pane.js +9 -21
  19. package/dist/wcardinal/ui/d-pane.js.map +1 -1
  20. package/dist/wcardinal/ui/shape/e-shape-renderer.js +3 -3
  21. package/dist/wcardinal/ui/shape/e-shape-renderer.js.map +1 -1
  22. package/dist/wcardinal/ui/shape/e-shape-text.js.map +1 -1
  23. package/dist/wcardinal/ui/shape/variant/build-text.js +13 -14
  24. package/dist/wcardinal/ui/shape/variant/build-text.js.map +1 -1
  25. package/dist/wcardinal/ui/shape/variant/builder-text.js +1 -1
  26. package/dist/wcardinal/ui/shape/variant/builder-text.js.map +1 -1
  27. package/dist/wcardinal/ui/shape/variant/e-shape-text-impl.js +88 -13
  28. package/dist/wcardinal/ui/shape/variant/e-shape-text-impl.js.map +1 -1
  29. package/dist/wcardinal/ui/util/character.js +13 -0
  30. package/dist/wcardinal/ui/util/character.js.map +1 -0
  31. package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js +2 -1
  32. package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js.map +1 -1
  33. package/dist/wcardinal/ui/util/dynamic-font-atlas-characters.js.map +1 -1
  34. package/dist/wcardinal/ui/util/dynamic-font-atlas.js +124 -108
  35. package/dist/wcardinal/ui/util/dynamic-font-atlas.js.map +1 -1
  36. package/dist/wcardinal/ui/util/dynamic-font-atlases.js +2 -1
  37. package/dist/wcardinal/ui/util/dynamic-font-atlases.js.map +1 -1
  38. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js +99 -112
  39. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js.map +1 -1
  40. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlases.js +18 -26
  41. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlases.js.map +1 -1
  42. package/dist/wcardinal/ui/util/index.js +1 -0
  43. package/dist/wcardinal/ui/util/index.js.map +1 -1
  44. package/dist/wcardinal/ui/util/util-character-iterator.js +0 -17
  45. package/dist/wcardinal/ui/util/util-character-iterator.js.map +1 -1
  46. package/dist/wcardinal-ui-theme-dark-en-us.js +1 -1
  47. package/dist/wcardinal-ui-theme-dark-en-us.min.js +1 -1
  48. package/dist/wcardinal-ui-theme-dark-ja-jp.js +1 -1
  49. package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +1 -1
  50. package/dist/wcardinal-ui-theme-dark.js +1 -1
  51. package/dist/wcardinal-ui-theme-dark.min.js +1 -1
  52. package/dist/wcardinal-ui-theme-white-en-us.js +1 -1
  53. package/dist/wcardinal-ui-theme-white-en-us.min.js +1 -1
  54. package/dist/wcardinal-ui-theme-white-ja-jp.js +1 -1
  55. package/dist/wcardinal-ui-theme-white-ja-jp.min.js +1 -1
  56. package/dist/wcardinal-ui-theme-white.js +1 -1
  57. package/dist/wcardinal-ui-theme-white.min.js +1 -1
  58. package/dist/wcardinal-ui.cjs.js +508 -450
  59. package/dist/wcardinal-ui.js +508 -450
  60. package/dist/wcardinal-ui.min.js +2 -2
  61. package/dist/wcardinal-ui.min.js.map +1 -1
  62. package/package.json +1 -1
  63. package/dist/types/wcardinal/ui/util/ascii.d.ts +0 -1
  64. package/dist/wcardinal/ui/util/ascii.js +0 -6
  65. package/dist/wcardinal/ui/util/ascii.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"e-shape-text-impl.js","sourceRoot":"","sources":["../../../../../src/main/typescript/wcardinal/ui/shape/variant/e-shape-text-impl.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Texture } from \"pixi.js\";\nimport { DDiagramSerializedText } from \"../../d-diagram-serialized\";\nimport { DeepPartial } from \"../../util/deep-partial\";\nimport { EShapeResourceManagerDeserialization } from \"../e-shape-resource-manager-deserialization\";\nimport { EShapeResourceManagerSerialization } from \"../e-shape-resource-manager-serialization\";\nimport {\n\tEShapeText,\n\tEShapeTextAtlas,\n\tEShapeTextLike,\n\tEShapeTextStyle,\n\tEShapeTextWeight\n} from \"../e-shape-text\";\nimport { EShapeTextAlign } from \"../e-shape-text-align\";\nimport { EShapeTextAlignHorizontal } from \"../e-shape-text-align-horizontal\";\nimport { EShapeTextAlignVertical } from \"../e-shape-text-align-vertical\";\nimport { EShapeTextDirection } from \"../e-shape-text-direction\";\nimport { EShapeTextOffset } from \"../e-shape-text-offset\";\nimport { EShapeTextOutline } from \"../e-shape-text-outline\";\nimport { EShapeTextAlignImpl } from \"./e-shape-text-align-impl\";\nimport { EShapeTextImplParent } from \"./e-shape-text-impl-parent\";\nimport { EShapeTextOffsetImpl } from \"./e-shape-text-offset-impl\";\nimport { EShapeTextOutlineImpl } from \"./e-shape-text-outline-impl\";\n\nexport class EShapeTextImpl implements EShapeText {\n\tprotected _parent: EShapeTextImplParent;\n\tprotected _enable: boolean;\n\tprotected _value: string;\n\tprotected _length: number;\n\tprotected _plength: number;\n\tprotected _family: string;\n\tprotected _color: number;\n\tprotected _alpha: number;\n\tprotected _size: number;\n\tprotected _weight: EShapeTextWeight;\n\treadonly align: EShapeTextAlign;\n\treadonly offset: EShapeTextOffset;\n\tprotected _style: EShapeTextStyle;\n\treadonly outline: EShapeTextOutline;\n\treadonly spacing: EShapeTextOffset;\n\tprotected _direction: EShapeTextDirection;\n\treadonly padding: EShapeTextOffset;\n\tprotected _clipping: boolean;\n\tprotected _fitting: boolean;\n\n\ttexture?: Texture; // Used for rendering and updated when rendered\n\tatlas?: EShapeTextAtlas; // Used for rendering and updated when rendered\n\tworld?: number[]; // Updated when rendered\n\n\tconstructor(\n\t\tparent: EShapeTextImplParent,\n\t\tvalue: string,\n\t\tcolor: number,\n\t\talpha: number,\n\t\tfamily: string,\n\t\tsize: number\n\t) {\n\t\tthis._parent = parent;\n\t\tthis._enable = true;\n\t\tthis._value = value;\n\t\tthis._plength = this._length = value.length;\n\t\tthis._color = color;\n\t\tthis._alpha = alpha;\n\t\tthis._family = family;\n\t\tthis._size = size;\n\t\tthis._weight = EShapeTextWeight.NORMAL;\n\t\tthis.align = new EShapeTextAlignImpl(\n\t\t\tparent,\n\t\t\tEShapeTextAlignHorizontal.CENTER,\n\t\t\tEShapeTextAlignVertical.MIDDLE\n\t\t);\n\t\tthis.offset = new EShapeTextOffsetImpl(parent, 0, 0);\n\t\tthis._style = EShapeTextStyle.NORMAL;\n\t\tthis.spacing = new EShapeTextOffsetImpl(parent, 0, 0);\n\t\tthis.outline = new EShapeTextOutlineImpl(parent, false, 0xffffff, 1.0, 0.5);\n\t\tthis._direction = EShapeTextDirection.LEFT_TO_RIGHT;\n\t\tthis.padding = new EShapeTextOffsetImpl(parent, 10, 10);\n\t\tthis._clipping = false;\n\t\tthis._fitting = false;\n\t}\n\n\tget enable(): boolean {\n\t\treturn this._enable;\n\t}\n\n\tset enable(enable: boolean) {\n\t\tif (this._enable !== enable) {\n\t\t\tthis._enable = enable;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget value(): string {\n\t\treturn this._value;\n\t}\n\n\tset value(value: string) {\n\t\tif (this._value !== value) {\n\t\t\tthis._value = value;\n\t\t\tconst length = value.length;\n\t\t\tthis._length = length;\n\t\t\tif (this._plength < length) {\n\t\t\t\tthis._plength = length;\n\t\t\t}\n\t\t\tif (this.isCompatible(value)) {\n\t\t\t\tthis._parent.updateUploaded();\n\t\t\t} else {\n\t\t\t\tthis.atlas = undefined;\n\t\t\t\tthis._parent.toDirty();\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected isCompatible(value: string): boolean {\n\t\t// Compatibility check\n\t\tconst parent = this._parent;\n\t\tconst uploaded = parent.uploaded;\n\t\tif (uploaded == null || !uploaded.isCompatible(parent)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Character code check\n\t\tconst atlas = this.atlas;\n\t\tconst characters = atlas && atlas.characters;\n\t\tif (characters != null) {\n\t\t\tfor (let i = 0, imax = value.length; i < imax; ++i) {\n\t\t\t\tconst char = value[i];\n\t\t\t\tif (!(char in characters)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tget length(): number {\n\t\treturn this._length;\n\t}\n\n\tget plength(): number {\n\t\treturn this._plength;\n\t}\n\n\tget family(): string {\n\t\treturn this._family;\n\t}\n\n\tset family(family: string) {\n\t\tif (this._family !== family) {\n\t\t\tthis._family = family;\n\t\t\tthis._parent.toDirty();\n\t\t}\n\t}\n\n\tget color(): number {\n\t\treturn this._color;\n\t}\n\n\tset color(color: number) {\n\t\tif (this._color !== color) {\n\t\t\tthis._color = color;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget alpha(): number {\n\t\treturn this._alpha;\n\t}\n\n\tset alpha(alpha: number) {\n\t\tif (this._alpha !== alpha) {\n\t\t\tthis._alpha = alpha;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget size(): number {\n\t\treturn this._size;\n\t}\n\n\tset size(size: number) {\n\t\tif (this._size !== size) {\n\t\t\tthis._size = size;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget weight(): EShapeTextWeight {\n\t\treturn this._weight;\n\t}\n\n\tset weight(weight: EShapeTextWeight) {\n\t\tif (this._weight !== weight) {\n\t\t\tthis._weight = weight;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget style(): EShapeTextStyle {\n\t\treturn this._style;\n\t}\n\n\tset style(style: EShapeTextStyle) {\n\t\tif (this._style !== style) {\n\t\t\tthis._style = style;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget direction(): EShapeTextDirection {\n\t\treturn this._direction;\n\t}\n\n\tset direction(direction: EShapeTextDirection) {\n\t\tif (this._direction !== direction) {\n\t\t\tthis._direction = direction;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget clipping(): boolean {\n\t\treturn this._clipping;\n\t}\n\n\tset clipping(clipping: boolean) {\n\t\tif (this._clipping !== clipping) {\n\t\t\tthis._clipping = clipping;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget fitting(): boolean {\n\t\treturn this._fitting;\n\t}\n\n\tset fitting(fitting: boolean) {\n\t\tif (this._fitting !== fitting) {\n\t\t\tthis._fitting = fitting;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tcopy(target?: DeepPartial<EShapeTextLike>): this {\n\t\tif (target) {\n\t\t\tthis.set(\n\t\t\t\ttarget.value,\n\t\t\t\ttarget.color,\n\t\t\t\ttarget.alpha,\n\t\t\t\ttarget.family,\n\t\t\t\ttarget.size,\n\t\t\t\ttarget.weight,\n\t\t\t\ttarget.style,\n\t\t\t\ttarget.direction,\n\t\t\t\ttarget.clipping,\n\t\t\t\ttarget.fitting\n\t\t\t);\n\t\t\tthis.align.copy(target.align);\n\t\t\tthis.offset.copy(target.offset);\n\t\t\tthis.outline.copy(target.outline);\n\t\t\tthis.spacing.copy(target.spacing);\n\t\t\tthis.padding.copy(target.padding);\n\t\t}\n\t\treturn this;\n\t}\n\n\tset(\n\t\tvalue?: string,\n\t\tcolor?: number,\n\t\talpha?: number,\n\t\tfamily?: string,\n\t\tsize?: number,\n\t\tweight?: EShapeTextWeight,\n\t\tstyle?: EShapeTextStyle,\n\t\tdirection?: EShapeTextDirection,\n\t\tclipping?: boolean,\n\t\tfitting?: boolean\n\t): this {\n\t\tlet isChangedDirty = false;\n\t\tlet isChangedUploaded = false;\n\n\t\tif (value != null && this._value !== value) {\n\t\t\tthis._value = value;\n\t\t\tconst length = value.length;\n\t\t\tthis._length = length;\n\t\t\tif (this._plength < length) {\n\t\t\t\tthis._plength = length;\n\t\t\t}\n\t\t\tif (this.isCompatible(value)) {\n\t\t\t\tisChangedUploaded = true;\n\t\t\t} else {\n\t\t\t\tthis.atlas = undefined;\n\t\t\t\tisChangedDirty = true;\n\t\t\t}\n\t\t}\n\n\t\tif (color != null && this._color !== color) {\n\t\t\tthis._color = color;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (alpha != null && this._alpha !== alpha) {\n\t\t\tthis._alpha = alpha;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (family != null && this._family !== family) {\n\t\t\tthis._family = family;\n\t\t\tisChangedDirty = true;\n\t\t}\n\n\t\tif (size != null && this._size !== size) {\n\t\t\tthis._size = size;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (weight != null && this._weight !== weight) {\n\t\t\tthis._weight = weight;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (style != null && this._style !== style) {\n\t\t\tthis._style = style;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (direction != null && this._direction !== direction) {\n\t\t\tthis._direction = direction;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (clipping != null && this._clipping !== clipping) {\n\t\t\tthis._clipping = clipping;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (fitting != null && this._fitting !== fitting) {\n\t\t\tthis._fitting = fitting;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (isChangedDirty) {\n\t\t\tthis._parent.toDirty();\n\t\t} else if (isChangedUploaded) {\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttoObject(): EShapeTextLike {\n\t\treturn {\n\t\t\tvalue: this._value,\n\t\t\tcolor: this._color,\n\t\t\talpha: this._alpha,\n\t\t\tfamily: this._family,\n\t\t\tsize: this._size,\n\t\t\tweight: this._weight,\n\t\t\talign: this.align.toObject(),\n\t\t\toffset: this.offset.toObject(),\n\t\t\tstyle: this._style,\n\t\t\toutline: this.outline.toObject(),\n\t\t\tdirection: this._direction,\n\t\t\tspacing: this.spacing.toObject(),\n\t\t\tpadding: this.padding.toObject(),\n\t\t\tclipping: this._clipping,\n\t\t\tfitting: this._fitting\n\t\t};\n\t}\n\n\tserialize(manager: EShapeResourceManagerSerialization): number {\n\t\tconst valueId = manager.addResource(this._value);\n\t\tconst familyId = manager.addResource(this._family);\n\t\tconst alignId = this.align.serialize(manager);\n\t\tconst offsetId = this.offset.serialize(manager);\n\t\tconst outlineId = this.outline.serialize(manager);\n\t\tconst spacingId = this.spacing.serialize(manager);\n\t\tconst paddingId = this.padding.serialize(manager);\n\t\tconst clipping = this._clipping ? 1 : 0;\n\t\tconst fitting = this._fitting ? 1 : 0;\n\t\tconst serialized =\n\t\t\t`[${valueId},${this._color},${this._alpha},${familyId},${this._size},` +\n\t\t\t`${this._weight},${alignId},${offsetId},${this._style},${outlineId},` +\n\t\t\t`${spacingId},${this._direction},${paddingId},${clipping},${fitting}]`;\n\t\treturn manager.addResource(serialized);\n\t}\n\n\tdeserialize(target: number, manager: EShapeResourceManagerDeserialization): void {\n\t\tconst resources = manager.resources;\n\t\tif (0 <= target && target < resources.length) {\n\t\t\tlet parsed = manager.getText(target);\n\t\t\tif (parsed == null) {\n\t\t\t\tparsed = JSON.parse(resources[target]) as DDiagramSerializedText;\n\t\t\t\tmanager.setText(target, parsed);\n\t\t\t}\n\t\t\tthis.set(\n\t\t\t\tresources[parsed[0]] || \"\",\n\t\t\t\tparsed[1],\n\t\t\t\tparsed[2],\n\t\t\t\tresources[parsed[3]] || \"auto\",\n\t\t\t\tparsed[4],\n\t\t\t\tparsed[5],\n\t\t\t\tparsed[8],\n\t\t\t\tparsed[11],\n\t\t\t\t!!parsed[13],\n\t\t\t\t!!parsed[14]\n\t\t\t);\n\t\t\tthis.align.deserialize(parsed[6], manager);\n\t\t\tthis.offset.deserialize(parsed[7], manager);\n\t\t\tthis.outline.deserialize(parsed[9], manager);\n\t\t\tthis.spacing.deserialize(parsed[10], manager);\n\t\t\tthis.padding.deserialize(parsed[12], manager);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"e-shape-text-impl.js","sourceRoot":"","sources":["../../../../../src/main/typescript/wcardinal/ui/shape/variant/e-shape-text-impl.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Texture } from \"pixi.js\";\nimport { DDiagramSerializedText } from \"../../d-diagram-serialized\";\nimport { DeepPartial } from \"../../util/deep-partial\";\nimport { EShapeResourceManagerDeserialization } from \"../e-shape-resource-manager-deserialization\";\nimport { EShapeResourceManagerSerialization } from \"../e-shape-resource-manager-serialization\";\nimport {\n\tEShapeText,\n\tEShapeTextAtlas,\n\tEShapeTextLike,\n\tEShapeTextStyle,\n\tEShapeTextWeight\n} from \"../e-shape-text\";\nimport { EShapeTextAlign } from \"../e-shape-text-align\";\nimport { EShapeTextAlignHorizontal } from \"../e-shape-text-align-horizontal\";\nimport { EShapeTextAlignVertical } from \"../e-shape-text-align-vertical\";\nimport { EShapeTextDirection } from \"../e-shape-text-direction\";\nimport { EShapeTextOffset } from \"../e-shape-text-offset\";\nimport { EShapeTextOutline } from \"../e-shape-text-outline\";\nimport { EShapeTextAlignImpl } from \"./e-shape-text-align-impl\";\nimport { EShapeTextImplParent } from \"./e-shape-text-impl-parent\";\nimport { EShapeTextOffsetImpl } from \"./e-shape-text-offset-impl\";\nimport { EShapeTextOutlineImpl } from \"./e-shape-text-outline-impl\";\n\nexport class EShapeTextImpl implements EShapeText {\n\tprotected _parent: EShapeTextImplParent;\n\tprotected _enable: boolean;\n\tprotected _value: string;\n\tprotected _length: number;\n\tprotected _plength: number;\n\tprotected _family: string;\n\tprotected _color: number;\n\tprotected _alpha: number;\n\tprotected _size: number;\n\tprotected _weight: EShapeTextWeight;\n\treadonly align: EShapeTextAlign;\n\treadonly offset: EShapeTextOffset;\n\tprotected _style: EShapeTextStyle;\n\treadonly outline: EShapeTextOutline;\n\treadonly spacing: EShapeTextOffset;\n\tprotected _direction: EShapeTextDirection;\n\treadonly padding: EShapeTextOffset;\n\tprotected _clipping: boolean;\n\tprotected _fitting: boolean;\n\n\ttexture?: Texture; // Used for rendering and updated when rendered\n\tatlas?: EShapeTextAtlas; // Used for rendering and updated when rendered\n\tprotected _characters: string[];\n\tprotected _nacharacters: string[];\n\tworld?: number[]; // Updated when rendered\n\n\tconstructor(\n\t\tparent: EShapeTextImplParent,\n\t\tvalue: string,\n\t\tcolor: number,\n\t\talpha: number,\n\t\tfamily: string,\n\t\tsize: number\n\t) {\n\t\tthis._parent = parent;\n\t\tthis._enable = true;\n\t\tthis._value = value;\n\t\tthis._plength = this._length = value.length;\n\t\tthis._color = color;\n\t\tthis._alpha = alpha;\n\t\tthis._family = family;\n\t\tthis._size = size;\n\t\tthis._weight = EShapeTextWeight.NORMAL;\n\t\tthis.align = new EShapeTextAlignImpl(\n\t\t\tparent,\n\t\t\tEShapeTextAlignHorizontal.CENTER,\n\t\t\tEShapeTextAlignVertical.MIDDLE\n\t\t);\n\t\tthis.offset = new EShapeTextOffsetImpl(parent, 0, 0);\n\t\tthis._style = EShapeTextStyle.NORMAL;\n\t\tthis.spacing = new EShapeTextOffsetImpl(parent, 0, 0);\n\t\tthis.outline = new EShapeTextOutlineImpl(parent, false, 0xffffff, 1.0, 0.5);\n\t\tthis._direction = EShapeTextDirection.LEFT_TO_RIGHT;\n\t\tthis.padding = new EShapeTextOffsetImpl(parent, 10, 10);\n\t\tthis._clipping = false;\n\t\tthis._fitting = false;\n\t\tthis._characters = [];\n\t\tthis._nacharacters = [];\n\t\tthis.updateCharacters(value);\n\t}\n\n\tget enable(): boolean {\n\t\treturn this._enable;\n\t}\n\n\tset enable(enable: boolean) {\n\t\tif (this._enable !== enable) {\n\t\t\tthis._enable = enable;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget value(): string {\n\t\treturn this._value;\n\t}\n\n\tset value(value: string) {\n\t\tif (this._value !== value) {\n\t\t\tthis._value = value;\n\t\t\tconst length = value.length;\n\t\t\tthis._length = length;\n\t\t\tif (this._plength < length) {\n\t\t\t\tthis._plength = length;\n\t\t\t}\n\t\t\tthis.updateCharacters(value);\n\t\t\tif (this.isCompatible()) {\n\t\t\t\tthis._parent.updateUploaded();\n\t\t\t} else {\n\t\t\t\tthis.atlas = undefined;\n\t\t\t\tthis._parent.toDirty();\n\t\t\t}\n\t\t}\n\t}\n\n\tget characters(): string[] {\n\t\treturn this._characters;\n\t}\n\n\tget nacharacters(): string[] {\n\t\treturn this._nacharacters;\n\t}\n\n\tprotected updateCharacters(value: string): void {\n\t\tconst characters = this._characters;\n\t\tconst charactersLength = characters.length;\n\t\tlet icharacters = 0;\n\t\tconst nacharacters = this._nacharacters;\n\t\tconst nacharactersLength = nacharacters.length;\n\t\tlet inacharacters = 0;\n\t\tfor (let i = 0, imax = value.length; i < imax; ) {\n\t\t\tif (value.charCodeAt(i) <= 0xff) {\n\t\t\t\t// Add an ASCII character\n\t\t\t\tconst ac = value.substring(i, i + 1);\n\t\t\t\tif (icharacters < charactersLength) {\n\t\t\t\t\tcharacters[icharacters] = ac;\n\t\t\t\t} else {\n\t\t\t\t\tcharacters.push(ac);\n\t\t\t\t}\n\t\t\t\ticharacters += 1;\n\t\t\t\ti += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet j = i + 1;\n\t\t\tfor (; j < imax; ++j) {\n\t\t\t\tconst cc = value.charCodeAt(j);\n\t\t\t\tif ((0xdc00 <= cc && cc <= 0xdfff) || (0xfe00 <= cc && cc <= 0xfe0f)) {\n\t\t\t\t\t// Low surrogate\n\t\t\t\t\t// Variation selector\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Add an non-ascii character\n\t\t\tconst nac = value.substring(i, j);\n\t\t\tif (icharacters < charactersLength) {\n\t\t\t\tcharacters[icharacters] = nac;\n\t\t\t} else {\n\t\t\t\tcharacters.push(nac);\n\t\t\t}\n\t\t\ticharacters += 1;\n\t\t\tif (inacharacters < nacharactersLength) {\n\t\t\t\tnacharacters[inacharacters] = nac;\n\t\t\t} else {\n\t\t\t\tnacharacters.push(nac);\n\t\t\t}\n\t\t\tinacharacters += 1;\n\t\t\t// Go to the next\n\t\t\ti = j;\n\t\t}\n\t\tif (icharacters < charactersLength) {\n\t\t\tcharacters.length = icharacters;\n\t\t}\n\t\tif (inacharacters < nacharactersLength) {\n\t\t\tnacharacters.length = inacharacters;\n\t\t}\n\t}\n\n\tprotected isCompatible(): boolean {\n\t\t// Compatibility check\n\t\tconst parent = this._parent;\n\t\tconst uploaded = parent.uploaded;\n\t\tif (uploaded == null || !uploaded.isCompatible(parent)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Character code check\n\t\tconst atlas = this.atlas;\n\t\tif (atlas == null) {\n\t\t\treturn false;\n\t\t}\n\t\tconst atlasCharacters = atlas.characters;\n\t\tconst nacharacters = this._nacharacters;\n\t\tfor (let i = 0, imax = nacharacters.length; i < imax; ++i) {\n\t\t\tif (!atlasCharacters.has(nacharacters[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Done\n\t\treturn true;\n\t}\n\n\tget length(): number {\n\t\treturn this._length;\n\t}\n\n\tget plength(): number {\n\t\treturn this._plength;\n\t}\n\n\tget family(): string {\n\t\treturn this._family;\n\t}\n\n\tset family(family: string) {\n\t\tif (this._family !== family) {\n\t\t\tthis._family = family;\n\t\t\tthis._parent.toDirty();\n\t\t}\n\t}\n\n\tget color(): number {\n\t\treturn this._color;\n\t}\n\n\tset color(color: number) {\n\t\tif (this._color !== color) {\n\t\t\tthis._color = color;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget alpha(): number {\n\t\treturn this._alpha;\n\t}\n\n\tset alpha(alpha: number) {\n\t\tif (this._alpha !== alpha) {\n\t\t\tthis._alpha = alpha;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget size(): number {\n\t\treturn this._size;\n\t}\n\n\tset size(size: number) {\n\t\tif (this._size !== size) {\n\t\t\tthis._size = size;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget weight(): EShapeTextWeight {\n\t\treturn this._weight;\n\t}\n\n\tset weight(weight: EShapeTextWeight) {\n\t\tif (this._weight !== weight) {\n\t\t\tthis._weight = weight;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget style(): EShapeTextStyle {\n\t\treturn this._style;\n\t}\n\n\tset style(style: EShapeTextStyle) {\n\t\tif (this._style !== style) {\n\t\t\tthis._style = style;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget direction(): EShapeTextDirection {\n\t\treturn this._direction;\n\t}\n\n\tset direction(direction: EShapeTextDirection) {\n\t\tif (this._direction !== direction) {\n\t\t\tthis._direction = direction;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget clipping(): boolean {\n\t\treturn this._clipping;\n\t}\n\n\tset clipping(clipping: boolean) {\n\t\tif (this._clipping !== clipping) {\n\t\t\tthis._clipping = clipping;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tget fitting(): boolean {\n\t\treturn this._fitting;\n\t}\n\n\tset fitting(fitting: boolean) {\n\t\tif (this._fitting !== fitting) {\n\t\t\tthis._fitting = fitting;\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\t}\n\n\tcopy(target?: DeepPartial<EShapeTextLike>): this {\n\t\tif (target) {\n\t\t\tthis.set(\n\t\t\t\ttarget.value,\n\t\t\t\ttarget.color,\n\t\t\t\ttarget.alpha,\n\t\t\t\ttarget.family,\n\t\t\t\ttarget.size,\n\t\t\t\ttarget.weight,\n\t\t\t\ttarget.style,\n\t\t\t\ttarget.direction,\n\t\t\t\ttarget.clipping,\n\t\t\t\ttarget.fitting\n\t\t\t);\n\t\t\tthis.align.copy(target.align);\n\t\t\tthis.offset.copy(target.offset);\n\t\t\tthis.outline.copy(target.outline);\n\t\t\tthis.spacing.copy(target.spacing);\n\t\t\tthis.padding.copy(target.padding);\n\t\t}\n\t\treturn this;\n\t}\n\n\tset(\n\t\tvalue?: string,\n\t\tcolor?: number,\n\t\talpha?: number,\n\t\tfamily?: string,\n\t\tsize?: number,\n\t\tweight?: EShapeTextWeight,\n\t\tstyle?: EShapeTextStyle,\n\t\tdirection?: EShapeTextDirection,\n\t\tclipping?: boolean,\n\t\tfitting?: boolean\n\t): this {\n\t\tlet isChangedDirty = false;\n\t\tlet isChangedUploaded = false;\n\n\t\tif (value != null && this._value !== value) {\n\t\t\tthis._value = value;\n\t\t\tconst length = value.length;\n\t\t\tthis._length = length;\n\t\t\tif (this._plength < length) {\n\t\t\t\tthis._plength = length;\n\t\t\t}\n\t\t\tthis.updateCharacters(value);\n\t\t\tif (this.isCompatible()) {\n\t\t\t\tisChangedUploaded = true;\n\t\t\t} else {\n\t\t\t\tthis.atlas = undefined;\n\t\t\t\tisChangedDirty = true;\n\t\t\t}\n\t\t}\n\n\t\tif (color != null && this._color !== color) {\n\t\t\tthis._color = color;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (alpha != null && this._alpha !== alpha) {\n\t\t\tthis._alpha = alpha;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (family != null && this._family !== family) {\n\t\t\tthis._family = family;\n\t\t\tisChangedDirty = true;\n\t\t}\n\n\t\tif (size != null && this._size !== size) {\n\t\t\tthis._size = size;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (weight != null && this._weight !== weight) {\n\t\t\tthis._weight = weight;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (style != null && this._style !== style) {\n\t\t\tthis._style = style;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (direction != null && this._direction !== direction) {\n\t\t\tthis._direction = direction;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (clipping != null && this._clipping !== clipping) {\n\t\t\tthis._clipping = clipping;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (fitting != null && this._fitting !== fitting) {\n\t\t\tthis._fitting = fitting;\n\t\t\tisChangedUploaded = true;\n\t\t}\n\n\t\tif (isChangedDirty) {\n\t\t\tthis._parent.toDirty();\n\t\t} else if (isChangedUploaded) {\n\t\t\tthis._parent.updateUploaded();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttoObject(): EShapeTextLike {\n\t\treturn {\n\t\t\tvalue: this._value,\n\t\t\tcolor: this._color,\n\t\t\talpha: this._alpha,\n\t\t\tfamily: this._family,\n\t\t\tsize: this._size,\n\t\t\tweight: this._weight,\n\t\t\talign: this.align.toObject(),\n\t\t\toffset: this.offset.toObject(),\n\t\t\tstyle: this._style,\n\t\t\toutline: this.outline.toObject(),\n\t\t\tdirection: this._direction,\n\t\t\tspacing: this.spacing.toObject(),\n\t\t\tpadding: this.padding.toObject(),\n\t\t\tclipping: this._clipping,\n\t\t\tfitting: this._fitting\n\t\t};\n\t}\n\n\tserialize(manager: EShapeResourceManagerSerialization): number {\n\t\tconst valueId = manager.addResource(this._value);\n\t\tconst familyId = manager.addResource(this._family);\n\t\tconst alignId = this.align.serialize(manager);\n\t\tconst offsetId = this.offset.serialize(manager);\n\t\tconst outlineId = this.outline.serialize(manager);\n\t\tconst spacingId = this.spacing.serialize(manager);\n\t\tconst paddingId = this.padding.serialize(manager);\n\t\tconst clipping = this._clipping ? 1 : 0;\n\t\tconst fitting = this._fitting ? 1 : 0;\n\t\tconst serialized =\n\t\t\t`[${valueId},${this._color},${this._alpha},${familyId},${this._size},` +\n\t\t\t`${this._weight},${alignId},${offsetId},${this._style},${outlineId},` +\n\t\t\t`${spacingId},${this._direction},${paddingId},${clipping},${fitting}]`;\n\t\treturn manager.addResource(serialized);\n\t}\n\n\tdeserialize(target: number, manager: EShapeResourceManagerDeserialization): void {\n\t\tconst resources = manager.resources;\n\t\tif (0 <= target && target < resources.length) {\n\t\t\tlet parsed = manager.getText(target);\n\t\t\tif (parsed == null) {\n\t\t\t\tparsed = JSON.parse(resources[target]) as DDiagramSerializedText;\n\t\t\t\tmanager.setText(target, parsed);\n\t\t\t}\n\t\t\tthis.set(\n\t\t\t\tresources[parsed[0]] || \"\",\n\t\t\t\tparsed[1],\n\t\t\t\tparsed[2],\n\t\t\t\tresources[parsed[3]] || \"auto\",\n\t\t\t\tparsed[4],\n\t\t\t\tparsed[5],\n\t\t\t\tparsed[8],\n\t\t\t\tparsed[11],\n\t\t\t\t!!parsed[13],\n\t\t\t\t!!parsed[14]\n\t\t\t);\n\t\t\tthis.align.deserialize(parsed[6], manager);\n\t\t\tthis.offset.deserialize(parsed[7], manager);\n\t\t\tthis.outline.deserialize(parsed[9], manager);\n\t\t\tthis.spacing.deserialize(parsed[10], manager);\n\t\t\tthis.padding.deserialize(parsed[12], manager);\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,13 @@
1
+ /*
2
+ * Copyright (C) 2019 Toshiba Corporation
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ export var Character = {
6
+ ASCII: "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",
7
+ SPACE: " ",
8
+ TAB: "\t",
9
+ SOFT_TAB: " ",
10
+ DOTS: "...",
11
+ NEW_LINE: "\n"
12
+ };
13
+ //# sourceMappingURL=character.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/character.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,IAAM,SAAS,GAAG;IACxB,KAAK,EAAE,kGAAkG;IACzG,KAAK,EAAE,GAAG;IACV,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,MAAM;IAChB,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,IAAI;CACL,CAAC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const Character = {\n\tASCII: \"!\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\",\n\tSPACE: \" \",\n\tTAB: \"\\t\",\n\tSOFT_TAB: \" \",\n\tDOTS: \"...\",\n\tNEW_LINE: \"\\n\"\n} as const;\n"]}
@@ -6,7 +6,7 @@ import { DynamicFontAtlasCharacterOrigin } from "./dynamic-font-atlas-chaaracter
6
6
  var DynamicFontAtlasCharacter = /** @class */ (function () {
7
7
  function DynamicFontAtlasCharacter(type, character, x, y, width, height, advance) {
8
8
  this.ref = 1;
9
- this.life = 10;
9
+ this.life = DynamicFontAtlasCharacter.LIFE;
10
10
  this.character = character;
11
11
  this.x = x;
12
12
  this.y = y;
@@ -16,6 +16,7 @@ var DynamicFontAtlasCharacter = /** @class */ (function () {
16
16
  this.origin = new DynamicFontAtlasCharacterOrigin(0, 0);
17
17
  this.type = type;
18
18
  }
19
+ DynamicFontAtlasCharacter.LIFE = 10;
19
20
  return DynamicFontAtlasCharacter;
20
21
  }());
21
22
  export { DynamicFontAtlasCharacter };
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-font-atlas-character.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-font-atlas-character.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AAGzF;IAYC,mCACC,IAAmC,EACnC,SAAiB,EACjB,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,OAAe;QAEf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IACF,gCAAC;AAAD,CAAC,AAhCD,IAgCC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DynamicFontAtlasCharacterOrigin } from \"./dynamic-font-atlas-chaaracter-origin\";\nimport { DynamicFontAtlasCharacterType } from \"./dynamic-font-atlas-character-type\";\n\nexport class DynamicFontAtlasCharacter {\n\tref: number;\n\tlife: number;\n\tcharacter: string;\n\tx: number;\n\ty: number;\n\twidth: number;\n\theight: number;\n\tadvance: number;\n\torigin: DynamicFontAtlasCharacterOrigin;\n\ttype: DynamicFontAtlasCharacterType;\n\n\tconstructor(\n\t\ttype: DynamicFontAtlasCharacterType,\n\t\tcharacter: string,\n\t\tx: number,\n\t\ty: number,\n\t\twidth: number,\n\t\theight: number,\n\t\tadvance: number\n\t) {\n\t\tthis.ref = 1;\n\t\tthis.life = 10;\n\t\tthis.character = character;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.advance = advance;\n\t\tthis.origin = new DynamicFontAtlasCharacterOrigin(0, 0);\n\t\tthis.type = type;\n\t}\n}\n"]}
1
+ {"version":3,"file":"dynamic-font-atlas-character.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-font-atlas-character.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AAGzF;IAcC,mCACC,IAAmC,EACnC,SAAiB,EACjB,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,OAAe;QAEf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAhCM,8BAAI,GAAG,EAAE,CAAC;IAiClB,gCAAC;CAAA,AAlCD,IAkCC;SAlCY,yBAAyB","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DynamicFontAtlasCharacterOrigin } from \"./dynamic-font-atlas-chaaracter-origin\";\nimport { DynamicFontAtlasCharacterType } from \"./dynamic-font-atlas-character-type\";\n\nexport class DynamicFontAtlasCharacter {\n\tstatic LIFE = 10;\n\n\tref: number;\n\tlife: number;\n\tcharacter: string;\n\tx: number;\n\ty: number;\n\twidth: number;\n\theight: number;\n\tadvance: number;\n\torigin: DynamicFontAtlasCharacterOrigin;\n\ttype: DynamicFontAtlasCharacterType;\n\n\tconstructor(\n\t\ttype: DynamicFontAtlasCharacterType,\n\t\tcharacter: string,\n\t\tx: number,\n\t\ty: number,\n\t\twidth: number,\n\t\theight: number,\n\t\tadvance: number\n\t) {\n\t\tthis.ref = 1;\n\t\tthis.life = DynamicFontAtlasCharacter.LIFE;\n\t\tthis.character = character;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.advance = advance;\n\t\tthis.origin = new DynamicFontAtlasCharacterOrigin(0, 0);\n\t\tthis.type = type;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-font-atlas-characters.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-font-atlas-characters.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DynamicFontAtlasCharacter } from \"./dynamic-font-atlas-character\";\n\nexport type DynamicFontAtlasCharacters = Record<string, DynamicFontAtlasCharacter>;\n"]}
1
+ {"version":3,"file":"dynamic-font-atlas-characters.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-font-atlas-characters.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DynamicFontAtlasCharacter } from \"./dynamic-font-atlas-character\";\n\nexport type DynamicFontAtlasCharacters = Map<string, DynamicFontAtlasCharacter>;\n"]}
@@ -3,11 +3,10 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { MIPMAP_MODES, SCALE_MODES, Texture } from "pixi.js";
6
- import { ASCII_CHARACTERS } from "./ascii";
6
+ import { Character } from "./character";
7
7
  import { DynamicFontAtlasCharacter } from "./dynamic-font-atlas-character";
8
8
  import { DynamicFontAtlasCharacterType } from "./dynamic-font-atlas-character-type";
9
9
  import { DynamicFontAtlasFont } from "./dynamic-font-atlas-font";
10
- import { UtilCharacterIterator } from "./util-character-iterator";
11
10
  import { UtilFont } from "./util-font";
12
11
  var DynamicFontAtlas = /** @class */ (function () {
13
12
  function DynamicFontAtlas(fontId, fontSize, fontColor, resolution) {
@@ -17,26 +16,26 @@ var DynamicFontAtlas = /** @class */ (function () {
17
16
  var padding = this.toPadding(fontSize);
18
17
  this._padding = padding;
19
18
  this._font = new DynamicFontAtlasFont(fontId, fontSize, fontColor, padding);
20
- this._characters = {};
21
- this._length = 0;
22
19
  this._unrefCount = 0;
23
20
  this._width = 1;
24
21
  this._height = 1;
25
- this._revision = 0;
26
22
  this._revisionUpdated = 0;
27
23
  this._texture = Texture.from(this._canvas, {
28
24
  mipmap: MIPMAP_MODES.OFF,
29
25
  resolution: resolution,
30
26
  scaleMode: SCALE_MODES.NEAREST
31
27
  });
32
- var characters = this._characters;
33
- this.add_(" ", " ", characters, DynamicFontAtlasCharacterType.SPACE_R);
34
- this.add_("\t", " ", characters, DynamicFontAtlasCharacterType.SPACE_R);
35
- this.add_("...", "...", characters, DynamicFontAtlasCharacterType.LETTER_RNB);
36
- for (var i = 0, imax = ASCII_CHARACTERS.length; i < imax; ++i) {
37
- var char = ASCII_CHARACTERS[i];
38
- this.add_(char, char, characters, DynamicFontAtlasCharacterType.LETTER_RNB);
28
+ var characters = new Map();
29
+ characters.set(Character.SPACE, this.newChar(Character.SPACE, DynamicFontAtlasCharacterType.SPACE_R));
30
+ characters.set(Character.TAB, this.newChar(Character.SOFT_TAB, DynamicFontAtlasCharacterType.SPACE_R));
31
+ characters.set(Character.DOTS, this.newChar(Character.DOTS, DynamicFontAtlasCharacterType.LETTER_RNB));
32
+ for (var i = 0, imax = Character.ASCII.length; i < imax; ++i) {
33
+ var ac = Character.ASCII[i];
34
+ characters.set(ac, this.newChar(ac, DynamicFontAtlasCharacterType.LETTER_RNB));
39
35
  }
36
+ this._characters = characters;
37
+ this._createds = new Map();
38
+ this._revision = 1;
40
39
  }
41
40
  DynamicFontAtlas.prototype.toPadding = function (fontSize) {
42
41
  return Math.max(3, Math.ceil(fontSize * 0.2));
@@ -90,86 +89,106 @@ var DynamicFontAtlas = /** @class */ (function () {
90
89
  enumerable: false,
91
90
  configurable: true
92
91
  });
93
- DynamicFontAtlas.prototype.add_ = function (id, character, characters, type) {
94
- if (!this.isIgnored(character)) {
95
- var data = characters[id];
96
- if (data != null) {
97
- if (!(data.type & DynamicFontAtlasCharacterType.RESERVED)) {
98
- if (data.ref === 0) {
92
+ DynamicFontAtlas.prototype.newChar = function (character, type) {
93
+ var advance = this.getAdvance(character);
94
+ var padding = this._padding;
95
+ var width = Math.ceil(padding + advance + padding);
96
+ var height = this.font.height;
97
+ return new DynamicFontAtlasCharacter(type, character, -width, // Setting X and Y to zeros leads to render the character at the UV coordinate (0, 0).
98
+ -height, width, height, advance);
99
+ };
100
+ DynamicFontAtlas.prototype.add = function (characters, type) {
101
+ var cs = this._characters;
102
+ var cds = this._createds;
103
+ for (var i = 0, imax = characters.length; i < imax;) {
104
+ if (characters.charCodeAt(i) <= 0xff) {
105
+ // Ignore ASCII characters
106
+ i += 1;
107
+ continue;
108
+ }
109
+ var j = i + 1;
110
+ for (; j < imax; ++j) {
111
+ var cc = characters.charCodeAt(j);
112
+ if ((0xdc00 <= cc && cc <= 0xdfff) || (0xfe00 <= cc && cc <= 0xfe0f)) {
113
+ // Low surrogate
114
+ // Variation selector
115
+ continue;
116
+ }
117
+ break;
118
+ }
119
+ // Increment the reference count or create a new one
120
+ var nac = characters.substring(i, j);
121
+ var c = cs.get(nac);
122
+ if (c != null) {
123
+ if (!(c.type & DynamicFontAtlasCharacterType.RESERVED)) {
124
+ if (c.ref === 0) {
99
125
  this._unrefCount -= 1;
100
126
  }
101
- data.ref += 1;
127
+ c.ref += 1;
102
128
  }
103
129
  }
104
130
  else {
105
- var advance = this.getAdvance(character);
106
- var padding = this._padding;
107
- var width = Math.ceil(padding + advance + padding);
108
- var height = this.font.height;
109
- characters[id] = new DynamicFontAtlasCharacter(type, character, -width, // Setting X and Y to zeros leads to render the letter at the UV coordinate (0, 0).
110
- -height, width, height, advance);
111
- this._length += 1;
131
+ var cd = cds.get(nac);
132
+ if (cd != null) {
133
+ cd.ref = 1;
134
+ cs.set(nac, cd);
135
+ }
136
+ else {
137
+ var newCharacter = this.newChar(nac, type);
138
+ cs.set(nac, newCharacter);
139
+ cds.set(nac, newCharacter);
140
+ }
112
141
  this._revision += 1;
113
142
  }
143
+ // Go to the next
144
+ i = j;
114
145
  }
115
146
  };
116
- DynamicFontAtlas.prototype.isIgnored = function (character) {
117
- switch (character) {
118
- case "\n": // Line feed
119
- return true;
120
- case "\r": // Carriage return
121
- return true;
122
- case "\v": // Vertical tab
123
- return true;
124
- case "\f": // Form feed
125
- return true;
126
- case "\u0085": // Next line
127
- return true;
128
- }
129
- return false;
130
- };
131
- DynamicFontAtlas.prototype.remove_ = function (id, characters) {
132
- var data = characters[id];
133
- if (data != null) {
134
- if (!(data.type & DynamicFontAtlasCharacterType.RESERVED) && 0 < data.ref) {
135
- data.ref -= 1;
136
- if (data.ref === 0) {
147
+ DynamicFontAtlas.prototype.remove = function (characters) {
148
+ var cs = this._characters;
149
+ for (var i = 0, imax = characters.length; i < imax;) {
150
+ if (characters.charCodeAt(i) <= 0xff) {
151
+ // Ignore ASCII characters
152
+ i += 1;
153
+ continue;
154
+ }
155
+ var j = i + 1;
156
+ for (; j < imax; ++j) {
157
+ var cc = characters.charCodeAt(j);
158
+ if ((0xdc00 <= cc && cc <= 0xdfff) || (0xfe00 <= cc && cc <= 0xfe0f)) {
159
+ // Low surrogate
160
+ // Variation selector
161
+ continue;
162
+ }
163
+ break;
164
+ }
165
+ // Decrement the reference count
166
+ var nac = characters.substring(i, j);
167
+ var c = cs.get(nac);
168
+ if (c != null && 0 < c.ref && !(c.type & DynamicFontAtlasCharacterType.RESERVED)) {
169
+ c.ref -= 1;
170
+ if (c.ref === 0) {
137
171
  this._unrefCount += 1;
138
172
  }
139
173
  }
174
+ // Go to the next
175
+ i = j;
140
176
  }
141
177
  };
142
- DynamicFontAtlas.prototype.cleanup_ = function () {
143
- if (this._length >> 1 <= this._unrefCount) {
144
- var characters = this._characters;
145
- for (var character in characters) {
146
- if (characters[character].ref <= 0) {
147
- delete characters[character];
178
+ DynamicFontAtlas.prototype.cleanup = function () {
179
+ var characters = this._characters;
180
+ if (characters.size >> 1 <= this._unrefCount) {
181
+ characters.forEach(function (char, id) {
182
+ if (char.ref <= 0) {
183
+ characters.delete(id);
148
184
  }
149
- }
150
- this._length -= this._unrefCount;
185
+ });
151
186
  this._revision += 1;
152
187
  this._unrefCount = 0;
153
188
  }
154
189
  };
155
- DynamicFontAtlas.prototype.add = function (targets, type) {
156
- if (type === void 0) { type = DynamicFontAtlasCharacterType.LETTER; }
157
- var characters = this._characters;
158
- var iterator = UtilCharacterIterator.from(targets);
159
- while (iterator.hasNext()) {
160
- var character = iterator.next();
161
- this.add_(character, character, characters, type);
162
- }
163
- };
164
- DynamicFontAtlas.prototype.remove = function (targets) {
165
- var characters = this._characters;
166
- var iterator = UtilCharacterIterator.from(targets);
167
- while (iterator.hasNext()) {
168
- this.remove_(iterator.next(), characters);
169
- }
170
- };
171
190
  DynamicFontAtlas.prototype.get = function (id) {
172
- return this._characters[id];
191
+ return this._characters.get(id);
173
192
  };
174
193
  DynamicFontAtlas.prototype.getAdvance = function (target) {
175
194
  var context = this.getContext();
@@ -208,52 +227,50 @@ var DynamicFontAtlas = /** @class */ (function () {
208
227
  return context;
209
228
  };
210
229
  DynamicFontAtlas.prototype.update = function () {
211
- this.cleanup_();
230
+ this.cleanup();
212
231
  if (this._revisionUpdated < this._revision) {
213
232
  this._revisionUpdated = this._revision;
214
233
  var canvas = this._canvas;
215
234
  if (canvas != null) {
216
235
  var font = this._font;
217
- var fontHeight = font.height;
236
+ var fontHeight_1 = font.height;
218
237
  var characters = this._characters;
219
- var width = (this._width = this.toPowerOf2(Math.ceil(Math.sqrt(this._length)) * fontHeight));
220
- var offsetX = this._padding;
221
- var x = 0;
222
- var y = 0;
223
- for (var key in characters) {
224
- var character = characters[key];
225
- if (width <= x + character.width) {
226
- x = 0;
227
- y += fontHeight;
238
+ var width_1 = (this._width = this.toPowerOf2(Math.ceil(Math.sqrt(characters.size)) * fontHeight_1));
239
+ var offsetX_1 = this._padding;
240
+ var x_1 = 0;
241
+ var y_1 = 0;
242
+ characters.forEach(function (character) {
243
+ if (width_1 <= x_1 + character.width) {
244
+ x_1 = 0;
245
+ y_1 += fontHeight_1;
228
246
  }
229
- character.x = x;
230
- character.y = y;
231
- character.origin.x = x + offsetX;
232
- x += character.width;
233
- }
234
- var height = (this._height = y + fontHeight);
247
+ character.x = x_1;
248
+ character.y = y_1;
249
+ character.origin.x = x_1 + offsetX_1;
250
+ x_1 += character.width;
251
+ });
252
+ var height = (this._height = y_1 + fontHeight_1);
235
253
  // Make an input canvas
236
254
  // Here, we need to reset the context because
237
255
  // context settings will be lost when we set the width/height.
238
256
  var baseTexture = this._texture.baseTexture;
239
257
  var resolution = baseTexture.resolution;
240
- var realWidth = Math.ceil(width * resolution);
258
+ var realWidth = Math.ceil(width_1 * resolution);
241
259
  var realHeight = Math.ceil(height * resolution);
242
260
  canvas.width = realWidth;
243
261
  canvas.height = realHeight;
244
- var context = this.getContext();
245
- if (context != null) {
246
- UtilFont.measure(context, font);
247
- var offsetY = Math.round((fontHeight - (font.ascent + font.descent)) * 0.5 + font.ascent);
248
- context.save();
249
- context.scale(resolution, resolution);
250
- context.clearRect(0, 0, width, height);
251
- for (var key in characters) {
252
- var character = characters[key];
253
- character.origin.y = character.y + offsetY;
254
- context.fillText(key, character.origin.x, character.origin.y);
255
- }
256
- context.restore();
262
+ var context_1 = this.getContext();
263
+ if (context_1 != null) {
264
+ UtilFont.measure(context_1, font);
265
+ var offsetY_1 = Math.round((fontHeight_1 - (font.ascent + font.descent)) * 0.5 + font.ascent);
266
+ context_1.save();
267
+ context_1.scale(resolution, resolution);
268
+ context_1.clearRect(0, 0, width_1, height);
269
+ characters.forEach(function (character) {
270
+ character.origin.y = character.y + offsetY_1;
271
+ context_1.fillText(character.character, character.origin.x, character.origin.y);
272
+ });
273
+ context_1.restore();
257
274
  }
258
275
  baseTexture.setRealSize(realWidth, realHeight);
259
276
  return true;
@@ -269,7 +286,7 @@ var DynamicFontAtlas = /** @class */ (function () {
269
286
  };
270
287
  Object.defineProperty(DynamicFontAtlas.prototype, "length", {
271
288
  get: function () {
272
- return this._length;
289
+ return this._characters.size;
273
290
  },
274
291
  enumerable: false,
275
292
  configurable: true
@@ -279,10 +296,9 @@ var DynamicFontAtlas = /** @class */ (function () {
279
296
  if (canvas != null) {
280
297
  this._canvas = null;
281
298
  }
282
- var characters = this._characters;
283
- for (var character in characters) {
284
- delete characters[character];
285
- }
299
+ this._characters.clear();
300
+ this._createds.clear();
301
+ this._unrefCount = 0;
286
302
  };
287
303
  DynamicFontAtlas.prototype.toPowerOf2 = function (size) {
288
304
  var result = 32;
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-font-atlas.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-font-atlas.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MIPMAP_MODES, SCALE_MODES, Texture } from \"pixi.js\";\nimport { ASCII_CHARACTERS } from \"./ascii\";\nimport { DynamicFontAtlasCharacter } from \"./dynamic-font-atlas-character\";\nimport { DynamicFontAtlasCharacterType } from \"./dynamic-font-atlas-character-type\";\nimport { DynamicFontAtlasCharacters } from \"./dynamic-font-atlas-characters\";\nimport { DynamicFontAtlasFont } from \"./dynamic-font-atlas-font\";\nimport { UtilCharacterIterator } from \"./util-character-iterator\";\nimport { UtilFont } from \"./util-font\";\n\nexport class DynamicFontAtlas {\n\tprotected _id: string;\n\tprotected _canvas: HTMLCanvasElement | null;\n\tprotected _context: CanvasRenderingContext2D | null;\n\tprotected _font: DynamicFontAtlasFont;\n\tprotected _characters: DynamicFontAtlasCharacters;\n\tprotected _length: number;\n\tprotected _unrefCount: number;\n\tprotected _width: number;\n\tprotected _height: number;\n\tprotected _revision: number;\n\tprotected _revisionUpdated: number;\n\tprotected _texture: Texture;\n\tprotected _padding: number;\n\n\tconstructor(fontId: string, fontSize: number, fontColor: number, resolution: number) {\n\t\tthis._id = fontId;\n\t\tthis._canvas = document.createElement(\"canvas\");\n\t\tthis._context = null;\n\t\tconst padding = this.toPadding(fontSize);\n\t\tthis._padding = padding;\n\t\tthis._font = new DynamicFontAtlasFont(fontId, fontSize, fontColor, padding);\n\t\tthis._characters = {};\n\t\tthis._length = 0;\n\t\tthis._unrefCount = 0;\n\t\tthis._width = 1;\n\t\tthis._height = 1;\n\t\tthis._revision = 0;\n\t\tthis._revisionUpdated = 0;\n\t\tthis._texture = Texture.from(this._canvas, {\n\t\t\tmipmap: MIPMAP_MODES.OFF,\n\t\t\tresolution,\n\t\t\tscaleMode: SCALE_MODES.NEAREST\n\t\t});\n\n\t\tconst characters = this._characters;\n\t\tthis.add_(\" \", \" \", characters, DynamicFontAtlasCharacterType.SPACE_R);\n\t\tthis.add_(\"\\t\", \" \", characters, DynamicFontAtlasCharacterType.SPACE_R);\n\t\tthis.add_(\"...\", \"...\", characters, DynamicFontAtlasCharacterType.LETTER_RNB);\n\t\tfor (let i = 0, imax = ASCII_CHARACTERS.length; i < imax; ++i) {\n\t\t\tconst char = ASCII_CHARACTERS[i];\n\t\t\tthis.add_(char, char, characters, DynamicFontAtlasCharacterType.LETTER_RNB);\n\t\t}\n\t}\n\n\tprotected toPadding(fontSize: number): number {\n\t\treturn Math.max(3, Math.ceil(fontSize * 0.2));\n\t}\n\n\tget id(): string {\n\t\treturn this._id;\n\t}\n\n\tget font(): DynamicFontAtlasFont {\n\t\treturn this._font;\n\t}\n\n\tget width(): number {\n\t\treturn this._width;\n\t}\n\n\tget height(): number {\n\t\treturn this._height;\n\t}\n\n\tget canvas(): HTMLCanvasElement | null {\n\t\treturn this._canvas;\n\t}\n\n\tget characters(): DynamicFontAtlasCharacters {\n\t\treturn this._characters;\n\t}\n\n\tget texture(): Texture {\n\t\treturn this._texture;\n\t}\n\n\tprotected add_(\n\t\tid: string,\n\t\tcharacter: string,\n\t\tcharacters: DynamicFontAtlasCharacters,\n\t\ttype: DynamicFontAtlasCharacterType\n\t): void {\n\t\tif (!this.isIgnored(character)) {\n\t\t\tconst data = characters[id];\n\t\t\tif (data != null) {\n\t\t\t\tif (!(data.type & DynamicFontAtlasCharacterType.RESERVED)) {\n\t\t\t\t\tif (data.ref === 0) {\n\t\t\t\t\t\tthis._unrefCount -= 1;\n\t\t\t\t\t}\n\t\t\t\t\tdata.ref += 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst advance = this.getAdvance(character);\n\t\t\t\tconst padding = this._padding;\n\t\t\t\tconst width = Math.ceil(padding + advance + padding);\n\t\t\t\tconst height = this.font.height;\n\t\t\t\tcharacters[id] = new DynamicFontAtlasCharacter(\n\t\t\t\t\ttype,\n\t\t\t\t\tcharacter,\n\t\t\t\t\t-width, // Setting X and Y to zeros leads to render the letter at the UV coordinate (0, 0).\n\t\t\t\t\t-height,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tadvance\n\t\t\t\t);\n\t\t\t\tthis._length += 1;\n\t\t\t\tthis._revision += 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected isIgnored(character: string): boolean {\n\t\tswitch (character) {\n\t\t\tcase \"\\n\": // Line feed\n\t\t\t\treturn true;\n\t\t\tcase \"\\r\": // Carriage return\n\t\t\t\treturn true;\n\t\t\tcase \"\\v\": // Vertical tab\n\t\t\t\treturn true;\n\t\t\tcase \"\\f\": // Form feed\n\t\t\t\treturn true;\n\t\t\tcase \"\\u0085\": // Next line\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected remove_(id: string, characters: DynamicFontAtlasCharacters): void {\n\t\tconst data = characters[id];\n\t\tif (data != null) {\n\t\t\tif (!(data.type & DynamicFontAtlasCharacterType.RESERVED) && 0 < data.ref) {\n\t\t\t\tdata.ref -= 1;\n\t\t\t\tif (data.ref === 0) {\n\t\t\t\t\tthis._unrefCount += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected cleanup_(): void {\n\t\tif (this._length >> 1 <= this._unrefCount) {\n\t\t\tconst characters = this._characters;\n\t\t\tfor (const character in characters) {\n\t\t\t\tif (characters[character].ref <= 0) {\n\t\t\t\t\tdelete characters[character];\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._length -= this._unrefCount;\n\t\t\tthis._revision += 1;\n\t\t\tthis._unrefCount = 0;\n\t\t}\n\t}\n\n\tadd(\n\t\ttargets: string,\n\t\ttype: DynamicFontAtlasCharacterType = DynamicFontAtlasCharacterType.LETTER\n\t): void {\n\t\tconst characters = this._characters;\n\t\tconst iterator = UtilCharacterIterator.from(targets);\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tthis.add_(character, character, characters, type);\n\t\t}\n\t}\n\n\tremove(targets: string): void {\n\t\tconst characters = this._characters;\n\t\tconst iterator = UtilCharacterIterator.from(targets);\n\t\twhile (iterator.hasNext()) {\n\t\t\tthis.remove_(iterator.next(), characters);\n\t\t}\n\t}\n\n\tget(id: string): DynamicFontAtlasCharacter | undefined {\n\t\treturn this._characters[id];\n\t}\n\n\tgetAdvance(target: string): number {\n\t\tconst context = this.getContext();\n\t\tif (context != null) {\n\t\t\treturn context.measureText(target).width;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tgetContext(): CanvasRenderingContext2D | null {\n\t\tlet context = this._context;\n\t\tif (context == null) {\n\t\t\tconst canvas = this._canvas;\n\t\t\tif (canvas != null) {\n\t\t\t\tcontext = this._context = canvas.getContext(\"2d\", { alpha: true });\n\t\t\t\tif (context == null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst font = this._font;\n\t\tif (context.font !== font.id) {\n\t\t\tcontext.font = font.id;\n\t\t\tfont.id = context.font;\n\t\t\tcontext.textAlign = \"left\";\n\t\t\tcontext.textBaseline = \"alphabetic\";\n\t\t\tcontext.lineWidth = 0;\n\t\t\tcontext.lineCap = \"round\";\n\t\t\tcontext.lineJoin = \"miter\";\n\t\t\tcontext.miterLimit = 10;\n\t\t\tcontext.fillStyle = font.color;\n\t\t\tcontext.strokeStyle = \"#0000ff\";\n\t\t}\n\t\treturn context;\n\t}\n\n\tupdate(): boolean {\n\t\tthis.cleanup_();\n\n\t\tif (this._revisionUpdated < this._revision) {\n\t\t\tthis._revisionUpdated = this._revision;\n\n\t\t\tconst canvas = this._canvas;\n\t\t\tif (canvas != null) {\n\t\t\t\tconst font = this._font;\n\t\t\t\tconst fontHeight = font.height;\n\t\t\t\tconst characters = this._characters;\n\t\t\t\tconst width = (this._width = this.toPowerOf2(\n\t\t\t\t\tMath.ceil(Math.sqrt(this._length)) * fontHeight\n\t\t\t\t));\n\n\t\t\t\tconst offsetX = this._padding;\n\t\t\t\tlet x = 0;\n\t\t\t\tlet y = 0;\n\t\t\t\tfor (const key in characters) {\n\t\t\t\t\tconst character = characters[key];\n\t\t\t\t\tif (width <= x + character.width) {\n\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\ty += fontHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tcharacter.x = x;\n\t\t\t\t\tcharacter.y = y;\n\t\t\t\t\tcharacter.origin.x = x + offsetX;\n\n\t\t\t\t\tx += character.width;\n\t\t\t\t}\n\t\t\t\tconst height = (this._height = y + fontHeight);\n\n\t\t\t\t// Make an input canvas\n\t\t\t\t// Here, we need to reset the context because\n\t\t\t\t// context settings will be lost when we set the width/height.\n\t\t\t\tconst baseTexture = this._texture.baseTexture;\n\t\t\t\tconst resolution = baseTexture.resolution;\n\t\t\t\tconst realWidth = Math.ceil(width * resolution);\n\t\t\t\tconst realHeight = Math.ceil(height * resolution);\n\t\t\t\tcanvas.width = realWidth;\n\t\t\t\tcanvas.height = realHeight;\n\t\t\t\tconst context = this.getContext();\n\t\t\t\tif (context != null) {\n\t\t\t\t\tUtilFont.measure(context, font);\n\t\t\t\t\tconst offsetY = Math.round(\n\t\t\t\t\t\t(fontHeight - (font.ascent + font.descent)) * 0.5 + font.ascent\n\t\t\t\t\t);\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.scale(resolution, resolution);\n\t\t\t\t\tcontext.clearRect(0, 0, width, height);\n\t\t\t\t\tfor (const key in characters) {\n\t\t\t\t\t\tconst character = characters[key];\n\t\t\t\t\t\tcharacter.origin.y = character.y + offsetY;\n\t\t\t\t\t\tcontext.fillText(key, character.origin.x, character.origin.y);\n\t\t\t\t\t}\n\t\t\t\t\tcontext.restore();\n\t\t\t\t}\n\t\t\t\tbaseTexture.setRealSize(realWidth, realHeight);\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetRevision(): number {\n\t\treturn this._revision;\n\t}\n\n\tgetRevisionUpdate(): number {\n\t\treturn this._revisionUpdated;\n\t}\n\n\tget length(): number {\n\t\treturn this._length;\n\t}\n\n\tdestroy(): void {\n\t\tconst canvas = this._canvas;\n\t\tif (canvas != null) {\n\t\t\tthis._canvas = null;\n\t\t}\n\n\t\tconst characters = this._characters;\n\t\tfor (const character in characters) {\n\t\t\tdelete characters[character];\n\t\t}\n\t}\n\n\ttoPowerOf2(size: number): number {\n\t\tlet result = 32;\n\t\twhile (result < size) {\n\t\t\tresult <<= 1;\n\t\t}\n\t\treturn result;\n\t}\n}\n"]}
1
+ {"version":3,"file":"dynamic-font-atlas.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/dynamic-font-atlas.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MIPMAP_MODES, SCALE_MODES, Texture } from \"pixi.js\";\nimport { Character } from \"./character\";\nimport { DynamicFontAtlasCharacter } from \"./dynamic-font-atlas-character\";\nimport { DynamicFontAtlasCharacterType } from \"./dynamic-font-atlas-character-type\";\nimport { DynamicFontAtlasCharacters } from \"./dynamic-font-atlas-characters\";\nimport { DynamicFontAtlasFont } from \"./dynamic-font-atlas-font\";\nimport { UtilFont } from \"./util-font\";\n\nexport class DynamicFontAtlas {\n\tprotected _id: string;\n\tprotected _canvas: HTMLCanvasElement | null;\n\tprotected _context: CanvasRenderingContext2D | null;\n\tprotected _font: DynamicFontAtlasFont;\n\tprotected _characters: DynamicFontAtlasCharacters;\n\tprotected _createds: DynamicFontAtlasCharacters;\n\tprotected _unrefCount: number;\n\tprotected _width: number;\n\tprotected _height: number;\n\tprotected _revision: number;\n\tprotected _revisionUpdated: number;\n\tprotected _texture: Texture;\n\tprotected _padding: number;\n\n\tconstructor(fontId: string, fontSize: number, fontColor: number, resolution: number) {\n\t\tthis._id = fontId;\n\t\tthis._canvas = document.createElement(\"canvas\");\n\t\tthis._context = null;\n\t\tconst padding = this.toPadding(fontSize);\n\t\tthis._padding = padding;\n\t\tthis._font = new DynamicFontAtlasFont(fontId, fontSize, fontColor, padding);\n\t\tthis._unrefCount = 0;\n\t\tthis._width = 1;\n\t\tthis._height = 1;\n\t\tthis._revisionUpdated = 0;\n\t\tthis._texture = Texture.from(this._canvas, {\n\t\t\tmipmap: MIPMAP_MODES.OFF,\n\t\t\tresolution,\n\t\t\tscaleMode: SCALE_MODES.NEAREST\n\t\t});\n\n\t\tconst characters = new Map<string, DynamicFontAtlasCharacter>();\n\t\tcharacters.set(\n\t\t\tCharacter.SPACE,\n\t\t\tthis.newChar(Character.SPACE, DynamicFontAtlasCharacterType.SPACE_R)\n\t\t);\n\t\tcharacters.set(\n\t\t\tCharacter.TAB,\n\t\t\tthis.newChar(Character.SOFT_TAB, DynamicFontAtlasCharacterType.SPACE_R)\n\t\t);\n\t\tcharacters.set(\n\t\t\tCharacter.DOTS,\n\t\t\tthis.newChar(Character.DOTS, DynamicFontAtlasCharacterType.LETTER_RNB)\n\t\t);\n\t\tfor (let i = 0, imax = Character.ASCII.length; i < imax; ++i) {\n\t\t\tconst ac = Character.ASCII[i];\n\t\t\tcharacters.set(ac, this.newChar(ac, DynamicFontAtlasCharacterType.LETTER_RNB));\n\t\t}\n\t\tthis._characters = characters;\n\t\tthis._createds = new Map<string, DynamicFontAtlasCharacter>();\n\t\tthis._revision = 1;\n\t}\n\n\tprotected toPadding(fontSize: number): number {\n\t\treturn Math.max(3, Math.ceil(fontSize * 0.2));\n\t}\n\n\tget id(): string {\n\t\treturn this._id;\n\t}\n\n\tget font(): DynamicFontAtlasFont {\n\t\treturn this._font;\n\t}\n\n\tget width(): number {\n\t\treturn this._width;\n\t}\n\n\tget height(): number {\n\t\treturn this._height;\n\t}\n\n\tget canvas(): HTMLCanvasElement | null {\n\t\treturn this._canvas;\n\t}\n\n\tget characters(): DynamicFontAtlasCharacters {\n\t\treturn this._characters;\n\t}\n\n\tget texture(): Texture {\n\t\treturn this._texture;\n\t}\n\n\tprotected newChar(\n\t\tcharacter: string,\n\t\ttype: DynamicFontAtlasCharacterType\n\t): DynamicFontAtlasCharacter {\n\t\tconst advance = this.getAdvance(character);\n\t\tconst padding = this._padding;\n\t\tconst width = Math.ceil(padding + advance + padding);\n\t\tconst height = this.font.height;\n\t\treturn new DynamicFontAtlasCharacter(\n\t\t\ttype,\n\t\t\tcharacter,\n\t\t\t-width, // Setting X and Y to zeros leads to render the character at the UV coordinate (0, 0).\n\t\t\t-height,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tadvance\n\t\t);\n\t}\n\n\tadd(characters: string, type: DynamicFontAtlasCharacterType): void {\n\t\tconst cs = this._characters;\n\t\tconst cds = this._createds;\n\t\tfor (let i = 0, imax = characters.length; i < imax; ) {\n\t\t\tif (characters.charCodeAt(i) <= 0xff) {\n\t\t\t\t// Ignore ASCII characters\n\t\t\t\ti += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet j = i + 1;\n\t\t\tfor (; j < imax; ++j) {\n\t\t\t\tconst cc = characters.charCodeAt(j);\n\t\t\t\tif ((0xdc00 <= cc && cc <= 0xdfff) || (0xfe00 <= cc && cc <= 0xfe0f)) {\n\t\t\t\t\t// Low surrogate\n\t\t\t\t\t// Variation selector\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Increment the reference count or create a new one\n\t\t\tconst nac = characters.substring(i, j);\n\t\t\tconst c = cs.get(nac);\n\t\t\tif (c != null) {\n\t\t\t\tif (!(c.type & DynamicFontAtlasCharacterType.RESERVED)) {\n\t\t\t\t\tif (c.ref === 0) {\n\t\t\t\t\t\tthis._unrefCount -= 1;\n\t\t\t\t\t}\n\t\t\t\t\tc.ref += 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst cd = cds.get(nac);\n\t\t\t\tif (cd != null) {\n\t\t\t\t\tcd.ref = 1;\n\t\t\t\t\tcs.set(nac, cd);\n\t\t\t\t} else {\n\t\t\t\t\tconst newCharacter = this.newChar(nac, type);\n\t\t\t\t\tcs.set(nac, newCharacter);\n\t\t\t\t\tcds.set(nac, newCharacter);\n\t\t\t\t}\n\t\t\t\tthis._revision += 1;\n\t\t\t}\n\t\t\t// Go to the next\n\t\t\ti = j;\n\t\t}\n\t}\n\n\tremove(characters: string): void {\n\t\tconst cs = this._characters;\n\t\tfor (let i = 0, imax = characters.length; i < imax; ) {\n\t\t\tif (characters.charCodeAt(i) <= 0xff) {\n\t\t\t\t// Ignore ASCII characters\n\t\t\t\ti += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet j = i + 1;\n\t\t\tfor (; j < imax; ++j) {\n\t\t\t\tconst cc = characters.charCodeAt(j);\n\t\t\t\tif ((0xdc00 <= cc && cc <= 0xdfff) || (0xfe00 <= cc && cc <= 0xfe0f)) {\n\t\t\t\t\t// Low surrogate\n\t\t\t\t\t// Variation selector\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Decrement the reference count\n\t\t\tconst nac = characters.substring(i, j);\n\t\t\tconst c = cs.get(nac);\n\t\t\tif (c != null && 0 < c.ref && !(c.type & DynamicFontAtlasCharacterType.RESERVED)) {\n\t\t\t\tc.ref -= 1;\n\t\t\t\tif (c.ref === 0) {\n\t\t\t\t\tthis._unrefCount += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Go to the next\n\t\t\ti = j;\n\t\t}\n\t}\n\n\tprotected cleanup(): void {\n\t\tconst characters = this._characters;\n\t\tif (characters.size >> 1 <= this._unrefCount) {\n\t\t\tcharacters.forEach((char, id) => {\n\t\t\t\tif (char.ref <= 0) {\n\t\t\t\t\tcharacters.delete(id);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis._revision += 1;\n\t\t\tthis._unrefCount = 0;\n\t\t}\n\t}\n\n\tget(id: string): DynamicFontAtlasCharacter | undefined {\n\t\treturn this._characters.get(id);\n\t}\n\n\tgetAdvance(target: string): number {\n\t\tconst context = this.getContext();\n\t\tif (context != null) {\n\t\t\treturn context.measureText(target).width;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tgetContext(): CanvasRenderingContext2D | null {\n\t\tlet context = this._context;\n\t\tif (context == null) {\n\t\t\tconst canvas = this._canvas;\n\t\t\tif (canvas != null) {\n\t\t\t\tcontext = this._context = canvas.getContext(\"2d\", { alpha: true });\n\t\t\t\tif (context == null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst font = this._font;\n\t\tif (context.font !== font.id) {\n\t\t\tcontext.font = font.id;\n\t\t\tfont.id = context.font;\n\t\t\tcontext.textAlign = \"left\";\n\t\t\tcontext.textBaseline = \"alphabetic\";\n\t\t\tcontext.lineWidth = 0;\n\t\t\tcontext.lineCap = \"round\";\n\t\t\tcontext.lineJoin = \"miter\";\n\t\t\tcontext.miterLimit = 10;\n\t\t\tcontext.fillStyle = font.color;\n\t\t\tcontext.strokeStyle = \"#0000ff\";\n\t\t}\n\t\treturn context;\n\t}\n\n\tupdate(): boolean {\n\t\tthis.cleanup();\n\n\t\tif (this._revisionUpdated < this._revision) {\n\t\t\tthis._revisionUpdated = this._revision;\n\n\t\t\tconst canvas = this._canvas;\n\t\t\tif (canvas != null) {\n\t\t\t\tconst font = this._font;\n\t\t\t\tconst fontHeight = font.height;\n\t\t\t\tconst characters = this._characters;\n\t\t\t\tconst width = (this._width = this.toPowerOf2(\n\t\t\t\t\tMath.ceil(Math.sqrt(characters.size)) * fontHeight\n\t\t\t\t));\n\n\t\t\t\tconst offsetX = this._padding;\n\t\t\t\tlet x = 0;\n\t\t\t\tlet y = 0;\n\t\t\t\tcharacters.forEach((character) => {\n\t\t\t\t\tif (width <= x + character.width) {\n\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\ty += fontHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tcharacter.x = x;\n\t\t\t\t\tcharacter.y = y;\n\t\t\t\t\tcharacter.origin.x = x + offsetX;\n\n\t\t\t\t\tx += character.width;\n\t\t\t\t});\n\t\t\t\tconst height = (this._height = y + fontHeight);\n\n\t\t\t\t// Make an input canvas\n\t\t\t\t// Here, we need to reset the context because\n\t\t\t\t// context settings will be lost when we set the width/height.\n\t\t\t\tconst baseTexture = this._texture.baseTexture;\n\t\t\t\tconst resolution = baseTexture.resolution;\n\t\t\t\tconst realWidth = Math.ceil(width * resolution);\n\t\t\t\tconst realHeight = Math.ceil(height * resolution);\n\t\t\t\tcanvas.width = realWidth;\n\t\t\t\tcanvas.height = realHeight;\n\t\t\t\tconst context = this.getContext();\n\t\t\t\tif (context != null) {\n\t\t\t\t\tUtilFont.measure(context, font);\n\t\t\t\t\tconst offsetY = Math.round(\n\t\t\t\t\t\t(fontHeight - (font.ascent + font.descent)) * 0.5 + font.ascent\n\t\t\t\t\t);\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.scale(resolution, resolution);\n\t\t\t\t\tcontext.clearRect(0, 0, width, height);\n\t\t\t\t\tcharacters.forEach((character) => {\n\t\t\t\t\t\tcharacter.origin.y = character.y + offsetY;\n\t\t\t\t\t\tcontext.fillText(\n\t\t\t\t\t\t\tcharacter.character,\n\t\t\t\t\t\t\tcharacter.origin.x,\n\t\t\t\t\t\t\tcharacter.origin.y\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\tcontext.restore();\n\t\t\t\t}\n\t\t\t\tbaseTexture.setRealSize(realWidth, realHeight);\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetRevision(): number {\n\t\treturn this._revision;\n\t}\n\n\tgetRevisionUpdate(): number {\n\t\treturn this._revisionUpdated;\n\t}\n\n\tget length(): number {\n\t\treturn this._characters.size;\n\t}\n\n\tdestroy(): void {\n\t\tconst canvas = this._canvas;\n\t\tif (canvas != null) {\n\t\t\tthis._canvas = null;\n\t\t}\n\t\tthis._characters.clear();\n\t\tthis._createds.clear();\n\t\tthis._unrefCount = 0;\n\t}\n\n\ttoPowerOf2(size: number): number {\n\t\tlet result = 32;\n\t\twhile (result < size) {\n\t\t\tresult <<= 1;\n\t\t}\n\t\treturn result;\n\t}\n}\n"]}
@@ -3,6 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { DynamicFontAtlas } from "./dynamic-font-atlas";
6
+ import { DynamicFontAtlasCharacterType } from "./dynamic-font-atlas-character-type";
6
7
  var update = function (atlas) {
7
8
  atlas.update();
8
9
  };
@@ -36,7 +37,7 @@ var DynamicFontAtlases = /** @class */ (function () {
36
37
  atlas = new DynamicFontAtlas(fontId, fontSize, fontColor, this._resolution);
37
38
  colorToAtlas.set(fontColor, atlas);
38
39
  }
39
- atlas.add(targets);
40
+ atlas.add(targets, DynamicFontAtlasCharacterType.LETTER);
40
41
  };
41
42
  DynamicFontAtlases.prototype.remove = function (fontId, fontColor, targets) {
42
43
  var colorToAtlas = this._atlases.get(fontId);