@babylonjs/gui 5.0.0-beta.9 → 5.0.0-rc.10
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.
- package/2D/adtInstrumentation.d.ts +52 -52
- package/2D/adtInstrumentation.js +126 -126
- package/2D/adtInstrumentation.js.map +1 -1
- package/2D/advancedDynamicTexture.d.ts +449 -412
- package/2D/advancedDynamicTexture.js +1318 -1239
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/button.d.ts +135 -97
- package/2D/controls/button.js +276 -238
- package/2D/controls/button.js.map +1 -1
- package/2D/controls/checkbox.d.ts +59 -51
- package/2D/controls/checkbox.js +188 -178
- package/2D/controls/checkbox.js.map +1 -1
- package/2D/controls/colorpicker.d.ts +103 -90
- package/2D/controls/colorpicker.js +1417 -1400
- package/2D/controls/colorpicker.js.map +1 -1
- package/2D/controls/container.d.ts +175 -130
- package/2D/controls/container.js +570 -525
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/control.d.ts +866 -743
- package/2D/controls/control.js +2433 -2308
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/displayGrid.d.ts +53 -55
- package/2D/controls/displayGrid.js +245 -245
- package/2D/controls/displayGrid.js.map +1 -1
- package/2D/controls/ellipse.d.ts +21 -21
- package/2D/controls/ellipse.js +85 -85
- package/2D/controls/ellipse.js.map +1 -1
- package/2D/controls/focusableButton.d.ts +59 -52
- package/2D/controls/focusableButton.js +99 -92
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/focusableControl.d.ts +34 -34
- package/2D/controls/focusableControl.js +1 -1
- package/2D/controls/focusableControl.js.map +1 -1
- package/2D/controls/grid.d.ts +139 -135
- package/2D/controls/grid.js +529 -525
- package/2D/controls/grid.js.map +1 -1
- package/2D/controls/image.d.ts +204 -197
- package/2D/controls/image.js +887 -879
- package/2D/controls/image.js.map +1 -1
- package/2D/controls/index.d.ts +29 -29
- package/2D/controls/index.js +29 -29
- package/2D/controls/index.js.map +1 -1
- package/2D/controls/inputPassword.d.ts +9 -8
- package/2D/controls/inputPassword.js +28 -25
- package/2D/controls/inputPassword.js.map +1 -1
- package/2D/controls/inputText.d.ts +201 -180
- package/2D/controls/inputText.js +1119 -1095
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/line.d.ts +66 -66
- package/2D/controls/line.js +271 -271
- package/2D/controls/line.js.map +1 -1
- package/2D/controls/multiLine.d.ts +75 -77
- package/2D/controls/multiLine.js +262 -262
- package/2D/controls/multiLine.js.map +1 -1
- package/2D/controls/radioButton.d.ts +49 -49
- package/2D/controls/radioButton.js +205 -205
- package/2D/controls/radioButton.js.map +1 -1
- package/2D/controls/rectangle.d.ts +29 -29
- package/2D/controls/rectangle.js +150 -150
- package/2D/controls/rectangle.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewer.d.ts +182 -175
- package/2D/controls/scrollViewers/scrollViewer.js +677 -676
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +57 -45
- package/2D/controls/scrollViewers/scrollViewerWindow.js +278 -263
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
- package/2D/controls/selector.d.ts +263 -209
- package/2D/controls/selector.js +692 -629
- package/2D/controls/selector.js.map +1 -1
- package/2D/controls/sliders/baseSlider.d.ts +82 -78
- package/2D/controls/sliders/baseSlider.js +347 -343
- package/2D/controls/sliders/baseSlider.js.map +1 -1
- package/2D/controls/sliders/imageBasedSlider.d.ts +49 -47
- package/2D/controls/sliders/imageBasedSlider.js +192 -188
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
- package/2D/controls/sliders/imageScrollBar.d.ts +65 -61
- package/2D/controls/sliders/imageScrollBar.js +263 -256
- package/2D/controls/sliders/imageScrollBar.js.map +1 -1
- package/2D/controls/sliders/scrollBar.d.ts +38 -34
- package/2D/controls/sliders/scrollBar.js +143 -136
- package/2D/controls/sliders/scrollBar.js.map +1 -1
- package/2D/controls/sliders/slider.d.ts +35 -37
- package/2D/controls/sliders/slider.js +271 -271
- package/2D/controls/sliders/slider.js.map +1 -1
- package/2D/controls/stackPanel.d.ts +64 -56
- package/2D/controls/stackPanel.js +246 -236
- package/2D/controls/stackPanel.js.map +1 -1
- package/2D/controls/statics.d.ts +6 -6
- package/2D/controls/statics.js +49 -47
- package/2D/controls/statics.js.map +1 -1
- package/2D/controls/textBlock.d.ts +175 -171
- package/2D/controls/textBlock.js +603 -588
- package/2D/controls/textBlock.js.map +1 -1
- package/2D/controls/textWrapper.d.ts +13 -13
- package/2D/controls/textWrapper.js +101 -101
- package/2D/controls/textWrapper.js.map +1 -1
- package/2D/controls/toggleButton.d.ts +117 -83
- package/2D/controls/toggleButton.js +268 -234
- package/2D/controls/toggleButton.js.map +1 -1
- package/2D/controls/virtualKeyboard.d.ts +96 -96
- package/2D/controls/virtualKeyboard.js +256 -256
- package/2D/controls/virtualKeyboard.js.map +1 -1
- package/2D/index.d.ts +9 -9
- package/2D/index.js +10 -9
- package/2D/index.js.map +1 -1
- package/2D/math2D.d.ts +117 -117
- package/2D/math2D.js +221 -221
- package/2D/math2D.js.map +1 -1
- package/2D/measure.d.ts +77 -77
- package/2D/measure.js +139 -149
- package/2D/measure.js.map +1 -1
- package/2D/multiLinePoint.d.ts +47 -47
- package/2D/multiLinePoint.js +127 -127
- package/2D/multiLinePoint.js.map +1 -1
- package/2D/style.d.ts +46 -46
- package/2D/style.js +97 -97
- package/2D/style.js.map +1 -1
- package/2D/valueAndUnit.d.ts +89 -89
- package/2D/valueAndUnit.js +226 -222
- package/2D/valueAndUnit.js.map +1 -1
- package/2D/xmlLoader.d.ts +60 -60
- package/2D/xmlLoader.js +348 -341
- package/2D/xmlLoader.js.map +1 -1
- package/3D/behaviors/defaultBehavior.d.ts +73 -73
- package/3D/behaviors/defaultBehavior.js +121 -121
- package/3D/behaviors/defaultBehavior.js.map +1 -1
- package/3D/controls/abstractButton3D.d.ts +15 -15
- package/3D/controls/abstractButton3D.js +25 -25
- package/3D/controls/abstractButton3D.js.map +1 -1
- package/3D/controls/button3D.d.ts +30 -30
- package/3D/controls/button3D.js +93 -93
- package/3D/controls/button3D.js.map +1 -1
- package/3D/controls/container3D.d.ts +72 -72
- package/3D/controls/container3D.js +139 -140
- package/3D/controls/container3D.js.map +1 -1
- package/3D/controls/contentDisplay3D.d.ts +30 -30
- package/3D/controls/contentDisplay3D.js +79 -78
- package/3D/controls/contentDisplay3D.js.map +1 -1
- package/3D/controls/control3D.d.ts +201 -165
- package/3D/controls/control3D.js +445 -408
- package/3D/controls/control3D.js.map +1 -1
- package/3D/controls/cylinderPanel.d.ts +17 -17
- package/3D/controls/cylinderPanel.js +66 -66
- package/3D/controls/cylinderPanel.js.map +1 -1
- package/3D/controls/handMenu.d.ts +28 -28
- package/3D/controls/handMenu.js +47 -47
- package/3D/controls/handMenu.js.map +1 -1
- package/3D/controls/holographicBackplate.d.ts +49 -48
- package/3D/controls/holographicBackplate.js +120 -120
- package/3D/controls/holographicBackplate.js.map +1 -1
- package/3D/controls/holographicButton.d.ts +84 -83
- package/3D/controls/holographicButton.js +339 -338
- package/3D/controls/holographicButton.js.map +1 -1
- package/3D/controls/holographicSlate.d.ts +131 -118
- package/3D/controls/holographicSlate.js +431 -369
- package/3D/controls/holographicSlate.js.map +1 -1
- package/3D/controls/index.d.ts +21 -21
- package/3D/controls/index.js +21 -21
- package/3D/controls/index.js.map +1 -1
- package/3D/controls/meshButton3D.d.ts +21 -21
- package/3D/controls/meshButton3D.js +62 -61
- package/3D/controls/meshButton3D.js.map +1 -1
- package/3D/controls/nearMenu.d.ts +44 -44
- package/3D/controls/nearMenu.js +114 -112
- package/3D/controls/nearMenu.js.map +1 -1
- package/3D/controls/planePanel.d.ts +9 -9
- package/3D/controls/planePanel.js +36 -36
- package/3D/controls/planePanel.js.map +1 -1
- package/3D/controls/scatterPanel.d.ts +18 -18
- package/3D/controls/scatterPanel.js +108 -108
- package/3D/controls/scatterPanel.js.map +1 -1
- package/3D/controls/slider3D.d.ts +81 -80
- package/3D/controls/slider3D.js +268 -267
- package/3D/controls/slider3D.js.map +1 -1
- package/3D/controls/spherePanel.d.ts +17 -17
- package/3D/controls/spherePanel.js +67 -67
- package/3D/controls/spherePanel.js.map +1 -1
- package/3D/controls/stackPanel3D.d.ts +22 -22
- package/3D/controls/stackPanel3D.js +107 -107
- package/3D/controls/stackPanel3D.js.map +1 -1
- package/3D/controls/touchButton3D.d.ts +80 -64
- package/3D/controls/touchButton3D.js +233 -188
- package/3D/controls/touchButton3D.js.map +1 -1
- package/3D/controls/touchHolographicButton.d.ts +110 -104
- package/3D/controls/touchHolographicButton.js +445 -432
- package/3D/controls/touchHolographicButton.js.map +1 -1
- package/3D/controls/touchHolographicMenu.d.ts +61 -61
- package/3D/controls/touchHolographicMenu.js +149 -148
- package/3D/controls/touchHolographicMenu.js.map +1 -1
- package/3D/controls/touchMeshButton3D.d.ts +21 -22
- package/3D/controls/touchMeshButton3D.js +62 -62
- package/3D/controls/touchMeshButton3D.js.map +1 -1
- package/3D/controls/volumeBasedPanel.d.ts +53 -52
- package/3D/controls/volumeBasedPanel.js +174 -174
- package/3D/controls/volumeBasedPanel.js.map +1 -1
- package/3D/gizmos/gizmoHandle.d.ts +108 -108
- package/3D/gizmos/gizmoHandle.js +209 -209
- package/3D/gizmos/gizmoHandle.js.map +1 -1
- package/3D/gizmos/index.d.ts +2 -2
- package/3D/gizmos/index.js +2 -2
- package/3D/gizmos/index.js.map +1 -1
- package/3D/gizmos/slateGizmo.d.ts +57 -59
- package/3D/gizmos/slateGizmo.js +369 -363
- package/3D/gizmos/slateGizmo.js.map +1 -1
- package/3D/gui3DManager.d.ts +94 -94
- package/3D/gui3DManager.js +257 -257
- package/3D/gui3DManager.js.map +1 -1
- package/3D/index.d.ts +5 -5
- package/3D/index.js +6 -5
- package/3D/index.js.map +1 -1
- package/3D/materials/fluent/fluentMaterial.d.ts +91 -90
- package/3D/materials/fluent/fluentMaterial.js +292 -281
- package/3D/materials/fluent/fluentMaterial.js.map +1 -1
- package/3D/materials/fluent/index.d.ts +1 -1
- package/3D/materials/fluent/index.js +1 -1
- package/3D/materials/fluent/index.js.map +1 -1
- package/3D/materials/fluent/shaders/fluent.fragment.d.ts +5 -5
- package/3D/materials/fluent/shaders/fluent.fragment.js +8 -6
- package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -1
- package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -5
- package/3D/materials/fluent/shaders/fluent.vertex.js +8 -6
- package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -1
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +155 -154
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +469 -434
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
- package/3D/materials/fluentBackplate/index.d.ts +1 -1
- package/3D/materials/fluentBackplate/index.js +1 -1
- package/3D/materials/fluentBackplate/index.js.map +1 -1
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -5
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +8 -6
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -1
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -5
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +8 -6
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -1
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +190 -189
- package/3D/materials/fluentButton/fluentButtonMaterial.js +539 -537
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
- package/3D/materials/fluentButton/index.d.ts +1 -1
- package/3D/materials/fluentButton/index.js +1 -1
- package/3D/materials/fluentButton/index.js.map +1 -1
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -5
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +8 -6
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -1
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -5
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +8 -6
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -1
- package/3D/materials/fluentMaterial.d.ts +4 -4
- package/3D/materials/fluentMaterial.js +4 -4
- package/3D/materials/fluentMaterial.js.map +1 -1
- package/3D/materials/handle/handleMaterial.d.ts +68 -68
- package/3D/materials/handle/handleMaterial.js +126 -126
- package/3D/materials/handle/handleMaterial.js.map +1 -1
- package/3D/materials/handle/index.d.ts +1 -1
- package/3D/materials/handle/index.js +1 -1
- package/3D/materials/handle/index.js.map +1 -1
- package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -5
- package/3D/materials/handle/shaders/handle.fragment.js +8 -6
- package/3D/materials/handle/shaders/handle.fragment.js.map +1 -1
- package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -5
- package/3D/materials/handle/shaders/handle.vertex.js +8 -6
- package/3D/materials/handle/shaders/handle.vertex.js.map +1 -1
- package/3D/materials/index.d.ts +5 -5
- package/3D/materials/index.js +6 -5
- package/3D/materials/index.js.map +1 -1
- package/3D/materials/mrdl/index.d.ts +3 -3
- package/3D/materials/mrdl/index.js +3 -3
- package/3D/materials/mrdl/index.js.map +1 -1
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +148 -147
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +436 -409
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +334 -333
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +851 -786
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +334 -333
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +851 -786
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +8 -6
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +8 -6
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +8 -6
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +8 -6
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +8 -6
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +8 -6
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -1
- package/3D/vector3WithInfo.d.ts +16 -16
- package/3D/vector3WithInfo.js +23 -23
- package/3D/vector3WithInfo.js.map +1 -1
- package/index.d.ts +2 -2
- package/index.js +3 -2
- package/index.js.map +1 -1
- package/legacy/legacy.d.ts +1 -1
- package/legacy/legacy.js +14 -13
- package/legacy/legacy.js.map +1 -1
- package/package.json +21 -328
- package/readme.md +2 -2
package/2D/controls/textBlock.js
CHANGED
|
@@ -1,589 +1,604 @@
|
|
|
1
|
-
import { __decorate, __extends } from "tslib";
|
|
2
|
-
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
3
|
-
import { ValueAndUnit } from "../valueAndUnit
|
|
4
|
-
import { Control } from "./control
|
|
5
|
-
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
6
|
-
import { serialize } from
|
|
7
|
-
import { EngineStore } from "@babylonjs/core/Engines/engineStore.js";
|
|
8
|
-
/**
|
|
9
|
-
* Enum that determines the text-wrapping mode to use.
|
|
10
|
-
*/
|
|
11
|
-
export var TextWrapping;
|
|
12
|
-
(function (TextWrapping) {
|
|
13
|
-
/**
|
|
14
|
-
* Clip the text when it's larger than Control.width; this is the default mode.
|
|
15
|
-
*/
|
|
16
|
-
TextWrapping[TextWrapping["Clip"] = 0] = "Clip";
|
|
17
|
-
/**
|
|
18
|
-
* Wrap the text word-wise, i.e. try to add line-breaks at word boundary to fit within Control.width.
|
|
19
|
-
*/
|
|
20
|
-
TextWrapping[TextWrapping["WordWrap"] = 1] = "WordWrap";
|
|
21
|
-
/**
|
|
22
|
-
* Ellipsize the text, i.e. shrink with trailing … when text is larger than Control.width.
|
|
23
|
-
*/
|
|
24
|
-
TextWrapping[TextWrapping["Ellipsis"] = 2] = "Ellipsis";
|
|
25
|
-
/**
|
|
26
|
-
* Wrap the text word-wise and clip the text when the text's height is larger than the Control.height, and shrink the last line with trailing … .
|
|
27
|
-
*/
|
|
28
|
-
TextWrapping[TextWrapping["WordWrapEllipsis"] = 3] = "WordWrapEllipsis";
|
|
29
|
-
})(TextWrapping || (TextWrapping = {}));
|
|
30
|
-
/**
|
|
31
|
-
* Class used to create text block control
|
|
32
|
-
*/
|
|
33
|
-
var TextBlock = /** @class */ (function (_super) {
|
|
34
|
-
__extends(TextBlock, _super);
|
|
35
|
-
/**
|
|
36
|
-
* Creates a new TextBlock object
|
|
37
|
-
* @param name defines the name of the control
|
|
38
|
-
* @param text defines the text to display (
|
|
39
|
-
*/
|
|
40
|
-
function TextBlock(
|
|
41
|
-
/**
|
|
42
|
-
* Defines the name of the control
|
|
43
|
-
*/
|
|
44
|
-
name, text) {
|
|
45
|
-
if (text === void 0) { text = ""; }
|
|
46
|
-
var _this = _super.call(this, name) || this;
|
|
47
|
-
_this.name = name;
|
|
48
|
-
_this._text = "";
|
|
49
|
-
_this._textWrapping = TextWrapping.Clip;
|
|
50
|
-
_this._textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_CENTER;
|
|
51
|
-
_this._textVerticalAlignment = Control.VERTICAL_ALIGNMENT_CENTER;
|
|
52
|
-
_this._resizeToFit = false;
|
|
53
|
-
_this._lineSpacing = new ValueAndUnit(0);
|
|
54
|
-
_this._outlineWidth = 0;
|
|
55
|
-
_this._outlineColor = "white";
|
|
56
|
-
_this._underline = false;
|
|
57
|
-
_this._lineThrough = false;
|
|
58
|
-
/**
|
|
59
|
-
* An event triggered after the text is changed
|
|
60
|
-
*/
|
|
61
|
-
_this.onTextChangedObservable = new Observable();
|
|
62
|
-
/**
|
|
63
|
-
* An event triggered after the text was broken up into lines
|
|
64
|
-
*/
|
|
65
|
-
_this.onLinesReadyObservable = new Observable();
|
|
66
|
-
_this.text = text;
|
|
67
|
-
return _this;
|
|
68
|
-
}
|
|
69
|
-
Object.defineProperty(TextBlock.prototype, "lines", {
|
|
70
|
-
/**
|
|
71
|
-
* Return the line list (you may need to use the onLinesReadyObservable to make sure the list is ready)
|
|
72
|
-
*/
|
|
73
|
-
get: function () {
|
|
74
|
-
return this._lines;
|
|
75
|
-
},
|
|
76
|
-
enumerable: false,
|
|
77
|
-
configurable: true
|
|
78
|
-
});
|
|
79
|
-
Object.defineProperty(TextBlock.prototype, "resizeToFit", {
|
|
80
|
-
/**
|
|
81
|
-
* Gets or sets an boolean indicating that the TextBlock will be resized to fit container
|
|
82
|
-
*/
|
|
83
|
-
get: function () {
|
|
84
|
-
return this._resizeToFit;
|
|
85
|
-
},
|
|
86
|
-
/**
|
|
87
|
-
* Gets or sets an boolean indicating that the TextBlock will be resized to fit container
|
|
88
|
-
*/
|
|
89
|
-
set: function (value) {
|
|
90
|
-
if (this._resizeToFit === value) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
this._resizeToFit = value;
|
|
94
|
-
if (this._resizeToFit) {
|
|
95
|
-
this._width.ignoreAdaptiveScaling = true;
|
|
96
|
-
this._height.ignoreAdaptiveScaling = true;
|
|
97
|
-
}
|
|
98
|
-
this._markAsDirty();
|
|
99
|
-
},
|
|
100
|
-
enumerable: false,
|
|
101
|
-
configurable: true
|
|
102
|
-
});
|
|
103
|
-
Object.defineProperty(TextBlock.prototype, "textWrapping", {
|
|
104
|
-
/**
|
|
105
|
-
* Gets or sets a boolean indicating if text must be wrapped
|
|
106
|
-
*/
|
|
107
|
-
get: function () {
|
|
108
|
-
return this._textWrapping;
|
|
109
|
-
},
|
|
110
|
-
/**
|
|
111
|
-
* Gets or sets a boolean indicating if text must be wrapped
|
|
112
|
-
*/
|
|
113
|
-
set: function (value) {
|
|
114
|
-
if (this._textWrapping === value) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
this._textWrapping = +value;
|
|
118
|
-
this._markAsDirty();
|
|
119
|
-
},
|
|
120
|
-
enumerable: false,
|
|
121
|
-
configurable: true
|
|
122
|
-
});
|
|
123
|
-
Object.defineProperty(TextBlock.prototype, "text", {
|
|
124
|
-
/**
|
|
125
|
-
* Gets or sets text to display
|
|
126
|
-
*/
|
|
127
|
-
get: function () {
|
|
128
|
-
return this._text;
|
|
129
|
-
},
|
|
130
|
-
/**
|
|
131
|
-
* Gets or sets text to display
|
|
132
|
-
*/
|
|
133
|
-
set: function (value) {
|
|
134
|
-
if (this._text === value) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
this._text = value + ""; // Making sure it is a text
|
|
138
|
-
this._markAsDirty();
|
|
139
|
-
this.onTextChangedObservable.notifyObservers(this);
|
|
140
|
-
},
|
|
141
|
-
enumerable: false,
|
|
142
|
-
configurable: true
|
|
143
|
-
});
|
|
144
|
-
Object.defineProperty(TextBlock.prototype, "textHorizontalAlignment", {
|
|
145
|
-
/**
|
|
146
|
-
* Gets or sets text horizontal alignment (BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_CENTER by default)
|
|
147
|
-
*/
|
|
148
|
-
get: function () {
|
|
149
|
-
return this._textHorizontalAlignment;
|
|
150
|
-
},
|
|
151
|
-
/**
|
|
152
|
-
* Gets or sets text horizontal alignment (BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_CENTER by default)
|
|
153
|
-
*/
|
|
154
|
-
set: function (value) {
|
|
155
|
-
if (this._textHorizontalAlignment === value) {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
this._textHorizontalAlignment = value;
|
|
159
|
-
this._markAsDirty();
|
|
160
|
-
},
|
|
161
|
-
enumerable: false,
|
|
162
|
-
configurable: true
|
|
163
|
-
});
|
|
164
|
-
Object.defineProperty(TextBlock.prototype, "textVerticalAlignment", {
|
|
165
|
-
/**
|
|
166
|
-
* Gets or sets text vertical alignment (BABYLON.GUI.Control.VERTICAL_ALIGNMENT_CENTER by default)
|
|
167
|
-
*/
|
|
168
|
-
get: function () {
|
|
169
|
-
return this._textVerticalAlignment;
|
|
170
|
-
},
|
|
171
|
-
/**
|
|
172
|
-
* Gets or sets text vertical alignment (BABYLON.GUI.Control.VERTICAL_ALIGNMENT_CENTER by default)
|
|
173
|
-
*/
|
|
174
|
-
set: function (value) {
|
|
175
|
-
if (this._textVerticalAlignment === value) {
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
this._textVerticalAlignment = value;
|
|
179
|
-
this._markAsDirty();
|
|
180
|
-
},
|
|
181
|
-
enumerable: false,
|
|
182
|
-
configurable: true
|
|
183
|
-
});
|
|
184
|
-
Object.defineProperty(TextBlock.prototype, "lineSpacing", {
|
|
185
|
-
/**
|
|
186
|
-
* Gets or sets line spacing value
|
|
187
|
-
*/
|
|
188
|
-
get: function () {
|
|
189
|
-
return this._lineSpacing.toString(this._host);
|
|
190
|
-
},
|
|
191
|
-
/**
|
|
192
|
-
* Gets or sets line spacing value
|
|
193
|
-
*/
|
|
194
|
-
set: function (value) {
|
|
195
|
-
if (this._lineSpacing.fromString(value)) {
|
|
196
|
-
this._markAsDirty();
|
|
197
|
-
}
|
|
198
|
-
},
|
|
199
|
-
enumerable: false,
|
|
200
|
-
configurable: true
|
|
201
|
-
});
|
|
202
|
-
Object.defineProperty(TextBlock.prototype, "outlineWidth", {
|
|
203
|
-
/**
|
|
204
|
-
* Gets or sets outlineWidth of the text to display
|
|
205
|
-
*/
|
|
206
|
-
get: function () {
|
|
207
|
-
return this._outlineWidth;
|
|
208
|
-
},
|
|
209
|
-
/**
|
|
210
|
-
* Gets or sets outlineWidth of the text to display
|
|
211
|
-
*/
|
|
212
|
-
set: function (value) {
|
|
213
|
-
if (this._outlineWidth === value) {
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
this._outlineWidth = value;
|
|
217
|
-
this._markAsDirty();
|
|
218
|
-
},
|
|
219
|
-
enumerable: false,
|
|
220
|
-
configurable: true
|
|
221
|
-
});
|
|
222
|
-
Object.defineProperty(TextBlock.prototype, "underline", {
|
|
223
|
-
/**
|
|
224
|
-
* Gets or sets a boolean indicating that text must have underline
|
|
225
|
-
*/
|
|
226
|
-
get: function () {
|
|
227
|
-
return this._underline;
|
|
228
|
-
},
|
|
229
|
-
/**
|
|
230
|
-
* Gets or sets a boolean indicating that text must have underline
|
|
231
|
-
*/
|
|
232
|
-
set: function (value) {
|
|
233
|
-
if (this._underline === value) {
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
this._underline = value;
|
|
237
|
-
this._markAsDirty();
|
|
238
|
-
},
|
|
239
|
-
enumerable: false,
|
|
240
|
-
configurable: true
|
|
241
|
-
});
|
|
242
|
-
Object.defineProperty(TextBlock.prototype, "lineThrough", {
|
|
243
|
-
/**
|
|
244
|
-
* Gets or sets an boolean indicating that text must be crossed out
|
|
245
|
-
*/
|
|
246
|
-
get: function () {
|
|
247
|
-
return this._lineThrough;
|
|
248
|
-
},
|
|
249
|
-
/**
|
|
250
|
-
* Gets or sets an boolean indicating that text must be crossed out
|
|
251
|
-
*/
|
|
252
|
-
set: function (value) {
|
|
253
|
-
if (this._lineThrough === value) {
|
|
254
|
-
return;
|
|
255
|
-
}
|
|
256
|
-
this._lineThrough = value;
|
|
257
|
-
this._markAsDirty();
|
|
258
|
-
},
|
|
259
|
-
enumerable: false,
|
|
260
|
-
configurable: true
|
|
261
|
-
});
|
|
262
|
-
Object.defineProperty(TextBlock.prototype, "outlineColor", {
|
|
263
|
-
/**
|
|
264
|
-
* Gets or sets outlineColor of the text to display
|
|
265
|
-
*/
|
|
266
|
-
get: function () {
|
|
267
|
-
return this._outlineColor;
|
|
268
|
-
},
|
|
269
|
-
/**
|
|
270
|
-
* Gets or sets outlineColor of the text to display
|
|
271
|
-
*/
|
|
272
|
-
set: function (value) {
|
|
273
|
-
if (this._outlineColor === value) {
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
this._outlineColor = value;
|
|
277
|
-
this._markAsDirty();
|
|
278
|
-
},
|
|
279
|
-
enumerable: false,
|
|
280
|
-
configurable: true
|
|
281
|
-
});
|
|
282
|
-
TextBlock.prototype._getTypeName = function () {
|
|
283
|
-
return "TextBlock";
|
|
284
|
-
};
|
|
285
|
-
TextBlock.prototype._processMeasures = function (parentMeasure, context) {
|
|
286
|
-
if (!this._fontOffset || this.isDirty) {
|
|
287
|
-
this._fontOffset = Control._GetFontOffset(context.font);
|
|
288
|
-
}
|
|
289
|
-
_super.prototype._processMeasures.call(this, parentMeasure, context);
|
|
290
|
-
// Prepare lines
|
|
291
|
-
this._lines = this._breakLines(this._currentMeasure.width, this._currentMeasure.height, context);
|
|
292
|
-
this.onLinesReadyObservable.notifyObservers(this);
|
|
293
|
-
var maxLineWidth = 0;
|
|
294
|
-
for (var i = 0; i < this._lines.length; i++) {
|
|
295
|
-
var line = this._lines[i];
|
|
296
|
-
if (line.width > maxLineWidth) {
|
|
297
|
-
maxLineWidth = line.width;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
if (this._resizeToFit) {
|
|
301
|
-
if (this._textWrapping === TextWrapping.Clip) {
|
|
302
|
-
var newWidth = (this._paddingLeftInPixels + this._paddingRightInPixels + maxLineWidth) | 0;
|
|
303
|
-
if (newWidth !== this._width.internalValue) {
|
|
304
|
-
this._width.updateInPlace(newWidth, ValueAndUnit.UNITMODE_PIXEL);
|
|
305
|
-
this._rebuildLayout = true;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
var newHeight = (this._paddingTopInPixels + this._paddingBottomInPixels + this._fontOffset.height * this._lines.length) | 0;
|
|
309
|
-
if (this._lines.length > 0 && this._lineSpacing.internalValue !== 0) {
|
|
310
|
-
var lineSpacing = 0;
|
|
311
|
-
if (this._lineSpacing.isPixel) {
|
|
312
|
-
lineSpacing = this._lineSpacing.getValue(this._host);
|
|
313
|
-
}
|
|
314
|
-
else {
|
|
315
|
-
lineSpacing = this._lineSpacing.getValue(this._host) * this._height.getValueInPixel(this._host, this._cachedParentMeasure.height);
|
|
316
|
-
}
|
|
317
|
-
newHeight += (this._lines.length - 1) * lineSpacing;
|
|
318
|
-
}
|
|
319
|
-
if (newHeight !== this._height.internalValue) {
|
|
320
|
-
this._height.updateInPlace(newHeight, ValueAndUnit.UNITMODE_PIXEL);
|
|
321
|
-
this._rebuildLayout = true;
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
};
|
|
325
|
-
TextBlock.prototype._drawText = function (text, textWidth, y, context) {
|
|
326
|
-
var width = this._currentMeasure.width;
|
|
327
|
-
var x = 0;
|
|
328
|
-
switch (this._textHorizontalAlignment) {
|
|
329
|
-
case Control.HORIZONTAL_ALIGNMENT_LEFT:
|
|
330
|
-
x = 0;
|
|
331
|
-
break;
|
|
332
|
-
case Control.HORIZONTAL_ALIGNMENT_RIGHT:
|
|
333
|
-
x = width - textWidth;
|
|
334
|
-
break;
|
|
335
|
-
case Control.HORIZONTAL_ALIGNMENT_CENTER:
|
|
336
|
-
x = (width - textWidth) / 2;
|
|
337
|
-
break;
|
|
338
|
-
}
|
|
339
|
-
if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
|
|
340
|
-
context.shadowColor = this.shadowColor;
|
|
341
|
-
context.shadowBlur = this.shadowBlur;
|
|
342
|
-
context.shadowOffsetX = this.shadowOffsetX;
|
|
343
|
-
context.shadowOffsetY = this.shadowOffsetY;
|
|
344
|
-
}
|
|
345
|
-
if (this.outlineWidth) {
|
|
346
|
-
context.strokeText(text, this._currentMeasure.left + x, y);
|
|
347
|
-
}
|
|
348
|
-
context.fillText(text, this._currentMeasure.left + x, y);
|
|
349
|
-
if (this._underline) {
|
|
350
|
-
context.beginPath();
|
|
351
|
-
context.lineWidth = Math.round(this.fontSizeInPixels * 0.05);
|
|
352
|
-
context.moveTo(this._currentMeasure.left + x, y + 3);
|
|
353
|
-
context.lineTo(this._currentMeasure.left + x + textWidth, y + 3);
|
|
354
|
-
context.stroke();
|
|
355
|
-
context.closePath();
|
|
356
|
-
}
|
|
357
|
-
if (this._lineThrough) {
|
|
358
|
-
context.beginPath();
|
|
359
|
-
context.lineWidth = Math.round(this.fontSizeInPixels * 0.05);
|
|
360
|
-
context.moveTo(this._currentMeasure.left + x, y - this.fontSizeInPixels / 3);
|
|
361
|
-
context.lineTo(this._currentMeasure.left + x + textWidth, y - this.fontSizeInPixels / 3);
|
|
362
|
-
context.stroke();
|
|
363
|
-
context.closePath();
|
|
364
|
-
}
|
|
365
|
-
};
|
|
366
|
-
/**
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
context.
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
__decorate([
|
|
571
|
-
serialize()
|
|
572
|
-
], TextBlock.prototype, "
|
|
573
|
-
__decorate([
|
|
574
|
-
serialize()
|
|
575
|
-
], TextBlock.prototype, "
|
|
576
|
-
__decorate([
|
|
577
|
-
serialize()
|
|
578
|
-
], TextBlock.prototype, "
|
|
579
|
-
__decorate([
|
|
580
|
-
serialize()
|
|
581
|
-
], TextBlock.prototype, "
|
|
582
|
-
__decorate([
|
|
583
|
-
serialize()
|
|
584
|
-
], TextBlock.prototype, "
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
1
|
+
import { __decorate, __extends } from "tslib";
|
|
2
|
+
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
3
|
+
import { ValueAndUnit } from "../valueAndUnit";
|
|
4
|
+
import { Control } from "./control";
|
|
5
|
+
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
6
|
+
import { serialize } from "@babylonjs/core/Misc/decorators.js";
|
|
7
|
+
import { EngineStore } from "@babylonjs/core/Engines/engineStore.js";
|
|
8
|
+
/**
|
|
9
|
+
* Enum that determines the text-wrapping mode to use.
|
|
10
|
+
*/
|
|
11
|
+
export var TextWrapping;
|
|
12
|
+
(function (TextWrapping) {
|
|
13
|
+
/**
|
|
14
|
+
* Clip the text when it's larger than Control.width; this is the default mode.
|
|
15
|
+
*/
|
|
16
|
+
TextWrapping[TextWrapping["Clip"] = 0] = "Clip";
|
|
17
|
+
/**
|
|
18
|
+
* Wrap the text word-wise, i.e. try to add line-breaks at word boundary to fit within Control.width.
|
|
19
|
+
*/
|
|
20
|
+
TextWrapping[TextWrapping["WordWrap"] = 1] = "WordWrap";
|
|
21
|
+
/**
|
|
22
|
+
* Ellipsize the text, i.e. shrink with trailing … when text is larger than Control.width.
|
|
23
|
+
*/
|
|
24
|
+
TextWrapping[TextWrapping["Ellipsis"] = 2] = "Ellipsis";
|
|
25
|
+
/**
|
|
26
|
+
* Wrap the text word-wise and clip the text when the text's height is larger than the Control.height, and shrink the last line with trailing … .
|
|
27
|
+
*/
|
|
28
|
+
TextWrapping[TextWrapping["WordWrapEllipsis"] = 3] = "WordWrapEllipsis";
|
|
29
|
+
})(TextWrapping || (TextWrapping = {}));
|
|
30
|
+
/**
|
|
31
|
+
* Class used to create text block control
|
|
32
|
+
*/
|
|
33
|
+
var TextBlock = /** @class */ (function (_super) {
|
|
34
|
+
__extends(TextBlock, _super);
|
|
35
|
+
/**
|
|
36
|
+
* Creates a new TextBlock object
|
|
37
|
+
* @param name defines the name of the control
|
|
38
|
+
* @param text defines the text to display (empty string by default)
|
|
39
|
+
*/
|
|
40
|
+
function TextBlock(
|
|
41
|
+
/**
|
|
42
|
+
* Defines the name of the control
|
|
43
|
+
*/
|
|
44
|
+
name, text) {
|
|
45
|
+
if (text === void 0) { text = ""; }
|
|
46
|
+
var _this = _super.call(this, name) || this;
|
|
47
|
+
_this.name = name;
|
|
48
|
+
_this._text = "";
|
|
49
|
+
_this._textWrapping = TextWrapping.Clip;
|
|
50
|
+
_this._textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_CENTER;
|
|
51
|
+
_this._textVerticalAlignment = Control.VERTICAL_ALIGNMENT_CENTER;
|
|
52
|
+
_this._resizeToFit = false;
|
|
53
|
+
_this._lineSpacing = new ValueAndUnit(0);
|
|
54
|
+
_this._outlineWidth = 0;
|
|
55
|
+
_this._outlineColor = "white";
|
|
56
|
+
_this._underline = false;
|
|
57
|
+
_this._lineThrough = false;
|
|
58
|
+
/**
|
|
59
|
+
* An event triggered after the text is changed
|
|
60
|
+
*/
|
|
61
|
+
_this.onTextChangedObservable = new Observable();
|
|
62
|
+
/**
|
|
63
|
+
* An event triggered after the text was broken up into lines
|
|
64
|
+
*/
|
|
65
|
+
_this.onLinesReadyObservable = new Observable();
|
|
66
|
+
_this.text = text;
|
|
67
|
+
return _this;
|
|
68
|
+
}
|
|
69
|
+
Object.defineProperty(TextBlock.prototype, "lines", {
|
|
70
|
+
/**
|
|
71
|
+
* Return the line list (you may need to use the onLinesReadyObservable to make sure the list is ready)
|
|
72
|
+
*/
|
|
73
|
+
get: function () {
|
|
74
|
+
return this._lines;
|
|
75
|
+
},
|
|
76
|
+
enumerable: false,
|
|
77
|
+
configurable: true
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(TextBlock.prototype, "resizeToFit", {
|
|
80
|
+
/**
|
|
81
|
+
* Gets or sets an boolean indicating that the TextBlock will be resized to fit container
|
|
82
|
+
*/
|
|
83
|
+
get: function () {
|
|
84
|
+
return this._resizeToFit;
|
|
85
|
+
},
|
|
86
|
+
/**
|
|
87
|
+
* Gets or sets an boolean indicating that the TextBlock will be resized to fit container
|
|
88
|
+
*/
|
|
89
|
+
set: function (value) {
|
|
90
|
+
if (this._resizeToFit === value) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this._resizeToFit = value;
|
|
94
|
+
if (this._resizeToFit) {
|
|
95
|
+
this._width.ignoreAdaptiveScaling = true;
|
|
96
|
+
this._height.ignoreAdaptiveScaling = true;
|
|
97
|
+
}
|
|
98
|
+
this._markAsDirty();
|
|
99
|
+
},
|
|
100
|
+
enumerable: false,
|
|
101
|
+
configurable: true
|
|
102
|
+
});
|
|
103
|
+
Object.defineProperty(TextBlock.prototype, "textWrapping", {
|
|
104
|
+
/**
|
|
105
|
+
* Gets or sets a boolean indicating if text must be wrapped
|
|
106
|
+
*/
|
|
107
|
+
get: function () {
|
|
108
|
+
return this._textWrapping;
|
|
109
|
+
},
|
|
110
|
+
/**
|
|
111
|
+
* Gets or sets a boolean indicating if text must be wrapped
|
|
112
|
+
*/
|
|
113
|
+
set: function (value) {
|
|
114
|
+
if (this._textWrapping === value) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
this._textWrapping = +value;
|
|
118
|
+
this._markAsDirty();
|
|
119
|
+
},
|
|
120
|
+
enumerable: false,
|
|
121
|
+
configurable: true
|
|
122
|
+
});
|
|
123
|
+
Object.defineProperty(TextBlock.prototype, "text", {
|
|
124
|
+
/**
|
|
125
|
+
* Gets or sets text to display
|
|
126
|
+
*/
|
|
127
|
+
get: function () {
|
|
128
|
+
return this._text;
|
|
129
|
+
},
|
|
130
|
+
/**
|
|
131
|
+
* Gets or sets text to display
|
|
132
|
+
*/
|
|
133
|
+
set: function (value) {
|
|
134
|
+
if (this._text === value) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
this._text = value + ""; // Making sure it is a text
|
|
138
|
+
this._markAsDirty();
|
|
139
|
+
this.onTextChangedObservable.notifyObservers(this);
|
|
140
|
+
},
|
|
141
|
+
enumerable: false,
|
|
142
|
+
configurable: true
|
|
143
|
+
});
|
|
144
|
+
Object.defineProperty(TextBlock.prototype, "textHorizontalAlignment", {
|
|
145
|
+
/**
|
|
146
|
+
* Gets or sets text horizontal alignment (BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_CENTER by default)
|
|
147
|
+
*/
|
|
148
|
+
get: function () {
|
|
149
|
+
return this._textHorizontalAlignment;
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* Gets or sets text horizontal alignment (BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_CENTER by default)
|
|
153
|
+
*/
|
|
154
|
+
set: function (value) {
|
|
155
|
+
if (this._textHorizontalAlignment === value) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this._textHorizontalAlignment = value;
|
|
159
|
+
this._markAsDirty();
|
|
160
|
+
},
|
|
161
|
+
enumerable: false,
|
|
162
|
+
configurable: true
|
|
163
|
+
});
|
|
164
|
+
Object.defineProperty(TextBlock.prototype, "textVerticalAlignment", {
|
|
165
|
+
/**
|
|
166
|
+
* Gets or sets text vertical alignment (BABYLON.GUI.Control.VERTICAL_ALIGNMENT_CENTER by default)
|
|
167
|
+
*/
|
|
168
|
+
get: function () {
|
|
169
|
+
return this._textVerticalAlignment;
|
|
170
|
+
},
|
|
171
|
+
/**
|
|
172
|
+
* Gets or sets text vertical alignment (BABYLON.GUI.Control.VERTICAL_ALIGNMENT_CENTER by default)
|
|
173
|
+
*/
|
|
174
|
+
set: function (value) {
|
|
175
|
+
if (this._textVerticalAlignment === value) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
this._textVerticalAlignment = value;
|
|
179
|
+
this._markAsDirty();
|
|
180
|
+
},
|
|
181
|
+
enumerable: false,
|
|
182
|
+
configurable: true
|
|
183
|
+
});
|
|
184
|
+
Object.defineProperty(TextBlock.prototype, "lineSpacing", {
|
|
185
|
+
/**
|
|
186
|
+
* Gets or sets line spacing value
|
|
187
|
+
*/
|
|
188
|
+
get: function () {
|
|
189
|
+
return this._lineSpacing.toString(this._host);
|
|
190
|
+
},
|
|
191
|
+
/**
|
|
192
|
+
* Gets or sets line spacing value
|
|
193
|
+
*/
|
|
194
|
+
set: function (value) {
|
|
195
|
+
if (this._lineSpacing.fromString(value)) {
|
|
196
|
+
this._markAsDirty();
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
enumerable: false,
|
|
200
|
+
configurable: true
|
|
201
|
+
});
|
|
202
|
+
Object.defineProperty(TextBlock.prototype, "outlineWidth", {
|
|
203
|
+
/**
|
|
204
|
+
* Gets or sets outlineWidth of the text to display
|
|
205
|
+
*/
|
|
206
|
+
get: function () {
|
|
207
|
+
return this._outlineWidth;
|
|
208
|
+
},
|
|
209
|
+
/**
|
|
210
|
+
* Gets or sets outlineWidth of the text to display
|
|
211
|
+
*/
|
|
212
|
+
set: function (value) {
|
|
213
|
+
if (this._outlineWidth === value) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
this._outlineWidth = value;
|
|
217
|
+
this._markAsDirty();
|
|
218
|
+
},
|
|
219
|
+
enumerable: false,
|
|
220
|
+
configurable: true
|
|
221
|
+
});
|
|
222
|
+
Object.defineProperty(TextBlock.prototype, "underline", {
|
|
223
|
+
/**
|
|
224
|
+
* Gets or sets a boolean indicating that text must have underline
|
|
225
|
+
*/
|
|
226
|
+
get: function () {
|
|
227
|
+
return this._underline;
|
|
228
|
+
},
|
|
229
|
+
/**
|
|
230
|
+
* Gets or sets a boolean indicating that text must have underline
|
|
231
|
+
*/
|
|
232
|
+
set: function (value) {
|
|
233
|
+
if (this._underline === value) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
this._underline = value;
|
|
237
|
+
this._markAsDirty();
|
|
238
|
+
},
|
|
239
|
+
enumerable: false,
|
|
240
|
+
configurable: true
|
|
241
|
+
});
|
|
242
|
+
Object.defineProperty(TextBlock.prototype, "lineThrough", {
|
|
243
|
+
/**
|
|
244
|
+
* Gets or sets an boolean indicating that text must be crossed out
|
|
245
|
+
*/
|
|
246
|
+
get: function () {
|
|
247
|
+
return this._lineThrough;
|
|
248
|
+
},
|
|
249
|
+
/**
|
|
250
|
+
* Gets or sets an boolean indicating that text must be crossed out
|
|
251
|
+
*/
|
|
252
|
+
set: function (value) {
|
|
253
|
+
if (this._lineThrough === value) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
this._lineThrough = value;
|
|
257
|
+
this._markAsDirty();
|
|
258
|
+
},
|
|
259
|
+
enumerable: false,
|
|
260
|
+
configurable: true
|
|
261
|
+
});
|
|
262
|
+
Object.defineProperty(TextBlock.prototype, "outlineColor", {
|
|
263
|
+
/**
|
|
264
|
+
* Gets or sets outlineColor of the text to display
|
|
265
|
+
*/
|
|
266
|
+
get: function () {
|
|
267
|
+
return this._outlineColor;
|
|
268
|
+
},
|
|
269
|
+
/**
|
|
270
|
+
* Gets or sets outlineColor of the text to display
|
|
271
|
+
*/
|
|
272
|
+
set: function (value) {
|
|
273
|
+
if (this._outlineColor === value) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
this._outlineColor = value;
|
|
277
|
+
this._markAsDirty();
|
|
278
|
+
},
|
|
279
|
+
enumerable: false,
|
|
280
|
+
configurable: true
|
|
281
|
+
});
|
|
282
|
+
TextBlock.prototype._getTypeName = function () {
|
|
283
|
+
return "TextBlock";
|
|
284
|
+
};
|
|
285
|
+
TextBlock.prototype._processMeasures = function (parentMeasure, context) {
|
|
286
|
+
if (!this._fontOffset || this.isDirty) {
|
|
287
|
+
this._fontOffset = Control._GetFontOffset(context.font);
|
|
288
|
+
}
|
|
289
|
+
_super.prototype._processMeasures.call(this, parentMeasure, context);
|
|
290
|
+
// Prepare lines
|
|
291
|
+
this._lines = this._breakLines(this._currentMeasure.width, this._currentMeasure.height, context);
|
|
292
|
+
this.onLinesReadyObservable.notifyObservers(this);
|
|
293
|
+
var maxLineWidth = 0;
|
|
294
|
+
for (var i = 0; i < this._lines.length; i++) {
|
|
295
|
+
var line = this._lines[i];
|
|
296
|
+
if (line.width > maxLineWidth) {
|
|
297
|
+
maxLineWidth = line.width;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
if (this._resizeToFit) {
|
|
301
|
+
if (this._textWrapping === TextWrapping.Clip) {
|
|
302
|
+
var newWidth = (this._paddingLeftInPixels + this._paddingRightInPixels + maxLineWidth) | 0;
|
|
303
|
+
if (newWidth !== this._width.internalValue) {
|
|
304
|
+
this._width.updateInPlace(newWidth, ValueAndUnit.UNITMODE_PIXEL);
|
|
305
|
+
this._rebuildLayout = true;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
var newHeight = (this._paddingTopInPixels + this._paddingBottomInPixels + this._fontOffset.height * this._lines.length) | 0;
|
|
309
|
+
if (this._lines.length > 0 && this._lineSpacing.internalValue !== 0) {
|
|
310
|
+
var lineSpacing = 0;
|
|
311
|
+
if (this._lineSpacing.isPixel) {
|
|
312
|
+
lineSpacing = this._lineSpacing.getValue(this._host);
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
lineSpacing = this._lineSpacing.getValue(this._host) * this._height.getValueInPixel(this._host, this._cachedParentMeasure.height);
|
|
316
|
+
}
|
|
317
|
+
newHeight += (this._lines.length - 1) * lineSpacing;
|
|
318
|
+
}
|
|
319
|
+
if (newHeight !== this._height.internalValue) {
|
|
320
|
+
this._height.updateInPlace(newHeight, ValueAndUnit.UNITMODE_PIXEL);
|
|
321
|
+
this._rebuildLayout = true;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
TextBlock.prototype._drawText = function (text, textWidth, y, context) {
|
|
326
|
+
var width = this._currentMeasure.width;
|
|
327
|
+
var x = 0;
|
|
328
|
+
switch (this._textHorizontalAlignment) {
|
|
329
|
+
case Control.HORIZONTAL_ALIGNMENT_LEFT:
|
|
330
|
+
x = 0;
|
|
331
|
+
break;
|
|
332
|
+
case Control.HORIZONTAL_ALIGNMENT_RIGHT:
|
|
333
|
+
x = width - textWidth;
|
|
334
|
+
break;
|
|
335
|
+
case Control.HORIZONTAL_ALIGNMENT_CENTER:
|
|
336
|
+
x = (width - textWidth) / 2;
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
|
|
340
|
+
context.shadowColor = this.shadowColor;
|
|
341
|
+
context.shadowBlur = this.shadowBlur;
|
|
342
|
+
context.shadowOffsetX = this.shadowOffsetX;
|
|
343
|
+
context.shadowOffsetY = this.shadowOffsetY;
|
|
344
|
+
}
|
|
345
|
+
if (this.outlineWidth) {
|
|
346
|
+
context.strokeText(text, this._currentMeasure.left + x, y);
|
|
347
|
+
}
|
|
348
|
+
context.fillText(text, this._currentMeasure.left + x, y);
|
|
349
|
+
if (this._underline) {
|
|
350
|
+
context.beginPath();
|
|
351
|
+
context.lineWidth = Math.round(this.fontSizeInPixels * 0.05);
|
|
352
|
+
context.moveTo(this._currentMeasure.left + x, y + 3);
|
|
353
|
+
context.lineTo(this._currentMeasure.left + x + textWidth, y + 3);
|
|
354
|
+
context.stroke();
|
|
355
|
+
context.closePath();
|
|
356
|
+
}
|
|
357
|
+
if (this._lineThrough) {
|
|
358
|
+
context.beginPath();
|
|
359
|
+
context.lineWidth = Math.round(this.fontSizeInPixels * 0.05);
|
|
360
|
+
context.moveTo(this._currentMeasure.left + x, y - this.fontSizeInPixels / 3);
|
|
361
|
+
context.lineTo(this._currentMeasure.left + x + textWidth, y - this.fontSizeInPixels / 3);
|
|
362
|
+
context.stroke();
|
|
363
|
+
context.closePath();
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
/**
|
|
367
|
+
* @param context
|
|
368
|
+
* @hidden
|
|
369
|
+
*/
|
|
370
|
+
TextBlock.prototype._draw = function (context) {
|
|
371
|
+
context.save();
|
|
372
|
+
this._applyStates(context);
|
|
373
|
+
// Render lines
|
|
374
|
+
this._renderLines(context);
|
|
375
|
+
context.restore();
|
|
376
|
+
};
|
|
377
|
+
TextBlock.prototype._applyStates = function (context) {
|
|
378
|
+
_super.prototype._applyStates.call(this, context);
|
|
379
|
+
if (this.outlineWidth) {
|
|
380
|
+
context.lineWidth = this.outlineWidth;
|
|
381
|
+
context.strokeStyle = this.outlineColor;
|
|
382
|
+
context.lineJoin = "miter";
|
|
383
|
+
context.miterLimit = 2;
|
|
384
|
+
}
|
|
385
|
+
};
|
|
386
|
+
TextBlock.prototype._breakLines = function (refWidth, refHeight, context) {
|
|
387
|
+
var lines = [];
|
|
388
|
+
var _lines = this.text.split("\n");
|
|
389
|
+
if (this._textWrapping === TextWrapping.Ellipsis) {
|
|
390
|
+
for (var _i = 0, _lines_1 = _lines; _i < _lines_1.length; _i++) {
|
|
391
|
+
var _line = _lines_1[_i];
|
|
392
|
+
lines.push(this._parseLineEllipsis(_line, refWidth, context));
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
else if (this._textWrapping === TextWrapping.WordWrap) {
|
|
396
|
+
for (var _a = 0, _lines_2 = _lines; _a < _lines_2.length; _a++) {
|
|
397
|
+
var _line = _lines_2[_a];
|
|
398
|
+
lines.push.apply(lines, this._parseLineWordWrap(_line, refWidth, context));
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
else if (this._textWrapping === TextWrapping.WordWrapEllipsis) {
|
|
402
|
+
for (var _b = 0, _lines_3 = _lines; _b < _lines_3.length; _b++) {
|
|
403
|
+
var _line = _lines_3[_b];
|
|
404
|
+
lines.push.apply(lines, this._parseLineWordWrapEllipsis(_line, refWidth, refHeight, context));
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
for (var _c = 0, _lines_4 = _lines; _c < _lines_4.length; _c++) {
|
|
409
|
+
var _line = _lines_4[_c];
|
|
410
|
+
lines.push(this._parseLine(_line, context));
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
return lines;
|
|
414
|
+
};
|
|
415
|
+
TextBlock.prototype._parseLine = function (line, context) {
|
|
416
|
+
if (line === void 0) { line = ""; }
|
|
417
|
+
var textMetrics = context.measureText(line);
|
|
418
|
+
var lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
|
|
419
|
+
return { text: line, width: lineWidth };
|
|
420
|
+
};
|
|
421
|
+
//Calculate how many characters approximately we need to remove
|
|
422
|
+
TextBlock.prototype._getCharsToRemove = function (lineWidth, width, lineLength) {
|
|
423
|
+
var diff = lineWidth > width ? lineWidth - width : 0;
|
|
424
|
+
// This isn't exact unless the font is monospaced
|
|
425
|
+
var charWidth = lineWidth / lineLength;
|
|
426
|
+
var removeChars = Math.max(Math.floor(diff / charWidth), 1);
|
|
427
|
+
return removeChars;
|
|
428
|
+
};
|
|
429
|
+
TextBlock.prototype._parseLineEllipsis = function (line, width, context) {
|
|
430
|
+
if (line === void 0) { line = ""; }
|
|
431
|
+
var textMetrics = context.measureText(line);
|
|
432
|
+
var lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
|
|
433
|
+
var removeChars = this._getCharsToRemove(lineWidth, width, line.length);
|
|
434
|
+
// unicode support. split('') does not work with unicode!
|
|
435
|
+
// make sure Array.from is available
|
|
436
|
+
var characters = Array.from && Array.from(line);
|
|
437
|
+
if (!characters) {
|
|
438
|
+
// no array.from, use the old method
|
|
439
|
+
while (line.length > 2 && lineWidth > width) {
|
|
440
|
+
line = line.slice(0, -removeChars);
|
|
441
|
+
textMetrics = context.measureText(line + "…");
|
|
442
|
+
lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
|
|
443
|
+
removeChars = this._getCharsToRemove(lineWidth, width, line.length);
|
|
444
|
+
}
|
|
445
|
+
// Add on the end
|
|
446
|
+
line += "…";
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
while (characters.length && lineWidth > width) {
|
|
450
|
+
characters.splice(characters.length - removeChars, removeChars);
|
|
451
|
+
line = "".concat(characters.join(""), "\u2026");
|
|
452
|
+
textMetrics = context.measureText(line);
|
|
453
|
+
lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
|
|
454
|
+
removeChars = this._getCharsToRemove(lineWidth, width, line.length);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
return { text: line, width: lineWidth };
|
|
458
|
+
};
|
|
459
|
+
TextBlock.prototype._parseLineWordWrap = function (line, width, context) {
|
|
460
|
+
if (line === void 0) { line = ""; }
|
|
461
|
+
var lines = [];
|
|
462
|
+
var words = this.wordSplittingFunction ? this.wordSplittingFunction(line) : line.split(" ");
|
|
463
|
+
var textMetrics = context.measureText(line);
|
|
464
|
+
var lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
|
|
465
|
+
for (var n = 0; n < words.length; n++) {
|
|
466
|
+
var testLine = n > 0 ? line + " " + words[n] : words[0];
|
|
467
|
+
var metrics = context.measureText(testLine);
|
|
468
|
+
var testWidth = Math.abs(metrics.actualBoundingBoxLeft) + Math.abs(metrics.actualBoundingBoxRight);
|
|
469
|
+
if (testWidth > width && n > 0) {
|
|
470
|
+
lines.push({ text: line, width: lineWidth });
|
|
471
|
+
line = words[n];
|
|
472
|
+
textMetrics = context.measureText(line);
|
|
473
|
+
lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
lineWidth = testWidth;
|
|
477
|
+
line = testLine;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
lines.push({ text: line, width: lineWidth });
|
|
481
|
+
return lines;
|
|
482
|
+
};
|
|
483
|
+
TextBlock.prototype._parseLineWordWrapEllipsis = function (line, width, height, context) {
|
|
484
|
+
if (line === void 0) { line = ""; }
|
|
485
|
+
var lines = this._parseLineWordWrap(line, width, context);
|
|
486
|
+
for (var n = 1; n <= lines.length; n++) {
|
|
487
|
+
var currentHeight = this._computeHeightForLinesOf(n);
|
|
488
|
+
if (currentHeight > height && n > 1) {
|
|
489
|
+
var lastLine = lines[n - 2];
|
|
490
|
+
var currentLine = lines[n - 1];
|
|
491
|
+
lines[n - 2] = this._parseLineEllipsis("".concat(lastLine.text + currentLine.text), width, context);
|
|
492
|
+
var linesToRemove = lines.length - n + 1;
|
|
493
|
+
for (var i = 0; i < linesToRemove; i++) {
|
|
494
|
+
lines.pop();
|
|
495
|
+
}
|
|
496
|
+
return lines;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
return lines;
|
|
500
|
+
};
|
|
501
|
+
TextBlock.prototype._renderLines = function (context) {
|
|
502
|
+
var height = this._currentMeasure.height;
|
|
503
|
+
var rootY = 0;
|
|
504
|
+
switch (this._textVerticalAlignment) {
|
|
505
|
+
case Control.VERTICAL_ALIGNMENT_TOP:
|
|
506
|
+
rootY = this._fontOffset.ascent;
|
|
507
|
+
break;
|
|
508
|
+
case Control.VERTICAL_ALIGNMENT_BOTTOM:
|
|
509
|
+
rootY = height - this._fontOffset.height * (this._lines.length - 1) - this._fontOffset.descent;
|
|
510
|
+
break;
|
|
511
|
+
case Control.VERTICAL_ALIGNMENT_CENTER:
|
|
512
|
+
rootY = this._fontOffset.ascent + (height - this._fontOffset.height * this._lines.length) / 2;
|
|
513
|
+
break;
|
|
514
|
+
}
|
|
515
|
+
rootY += this._currentMeasure.top;
|
|
516
|
+
for (var i = 0; i < this._lines.length; i++) {
|
|
517
|
+
var line = this._lines[i];
|
|
518
|
+
if (i !== 0 && this._lineSpacing.internalValue !== 0) {
|
|
519
|
+
if (this._lineSpacing.isPixel) {
|
|
520
|
+
rootY += this._lineSpacing.getValue(this._host);
|
|
521
|
+
}
|
|
522
|
+
else {
|
|
523
|
+
rootY = rootY + this._lineSpacing.getValue(this._host) * this._height.getValueInPixel(this._host, this._cachedParentMeasure.height);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
this._drawText(line.text, line.width, rootY, context);
|
|
527
|
+
rootY += this._fontOffset.height;
|
|
528
|
+
}
|
|
529
|
+
};
|
|
530
|
+
TextBlock.prototype._computeHeightForLinesOf = function (lineCount) {
|
|
531
|
+
var newHeight = this._paddingTopInPixels + this._paddingBottomInPixels + this._fontOffset.height * lineCount;
|
|
532
|
+
if (lineCount > 0 && this._lineSpacing.internalValue !== 0) {
|
|
533
|
+
var lineSpacing = 0;
|
|
534
|
+
if (this._lineSpacing.isPixel) {
|
|
535
|
+
lineSpacing = this._lineSpacing.getValue(this._host);
|
|
536
|
+
}
|
|
537
|
+
else {
|
|
538
|
+
lineSpacing = this._lineSpacing.getValue(this._host) * this._height.getValueInPixel(this._host, this._cachedParentMeasure.height);
|
|
539
|
+
}
|
|
540
|
+
newHeight += (lineCount - 1) * lineSpacing;
|
|
541
|
+
}
|
|
542
|
+
return newHeight;
|
|
543
|
+
};
|
|
544
|
+
/**
|
|
545
|
+
* Given a width constraint applied on the text block, find the expected height
|
|
546
|
+
* @returns expected height
|
|
547
|
+
*/
|
|
548
|
+
TextBlock.prototype.computeExpectedHeight = function () {
|
|
549
|
+
var _a;
|
|
550
|
+
if (this.text && this.widthInPixels) {
|
|
551
|
+
// Should abstract platform instead of using LastCreatedEngine
|
|
552
|
+
var context_1 = (_a = EngineStore.LastCreatedEngine) === null || _a === void 0 ? void 0 : _a.createCanvas(0, 0).getContext("2d");
|
|
553
|
+
if (context_1) {
|
|
554
|
+
this._applyStates(context_1);
|
|
555
|
+
if (!this._fontOffset) {
|
|
556
|
+
this._fontOffset = Control._GetFontOffset(context_1.font);
|
|
557
|
+
}
|
|
558
|
+
var lines = this._lines
|
|
559
|
+
? this._lines
|
|
560
|
+
: this._breakLines(this.widthInPixels - this._paddingLeftInPixels - this._paddingRightInPixels, this.heightInPixels - this._paddingTopInPixels - this._paddingBottomInPixels, context_1);
|
|
561
|
+
return this._computeHeightForLinesOf(lines.length);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
return 0;
|
|
565
|
+
};
|
|
566
|
+
TextBlock.prototype.dispose = function () {
|
|
567
|
+
_super.prototype.dispose.call(this);
|
|
568
|
+
this.onTextChangedObservable.clear();
|
|
569
|
+
};
|
|
570
|
+
__decorate([
|
|
571
|
+
serialize()
|
|
572
|
+
], TextBlock.prototype, "resizeToFit", null);
|
|
573
|
+
__decorate([
|
|
574
|
+
serialize()
|
|
575
|
+
], TextBlock.prototype, "textWrapping", null);
|
|
576
|
+
__decorate([
|
|
577
|
+
serialize()
|
|
578
|
+
], TextBlock.prototype, "text", null);
|
|
579
|
+
__decorate([
|
|
580
|
+
serialize()
|
|
581
|
+
], TextBlock.prototype, "textHorizontalAlignment", null);
|
|
582
|
+
__decorate([
|
|
583
|
+
serialize()
|
|
584
|
+
], TextBlock.prototype, "textVerticalAlignment", null);
|
|
585
|
+
__decorate([
|
|
586
|
+
serialize()
|
|
587
|
+
], TextBlock.prototype, "lineSpacing", null);
|
|
588
|
+
__decorate([
|
|
589
|
+
serialize()
|
|
590
|
+
], TextBlock.prototype, "outlineWidth", null);
|
|
591
|
+
__decorate([
|
|
592
|
+
serialize()
|
|
593
|
+
], TextBlock.prototype, "underline", null);
|
|
594
|
+
__decorate([
|
|
595
|
+
serialize()
|
|
596
|
+
], TextBlock.prototype, "lineThrough", null);
|
|
597
|
+
__decorate([
|
|
598
|
+
serialize()
|
|
599
|
+
], TextBlock.prototype, "outlineColor", null);
|
|
600
|
+
return TextBlock;
|
|
601
|
+
}(Control));
|
|
602
|
+
export { TextBlock };
|
|
603
|
+
RegisterClass("BABYLON.GUI.TextBlock", TextBlock);
|
|
589
604
|
//# sourceMappingURL=textBlock.js.map
|