@babylonjs/gui 9.24.0 → 9.26.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.
- package/2D/controls/colorpicker.pure.js +2 -2
- package/2D/controls/colorpicker.pure.js.map +1 -1
- package/2D/controls/container.pure.d.ts +9 -0
- package/2D/controls/container.pure.js +14 -2
- package/2D/controls/container.pure.js.map +1 -1
- package/2D/controls/control.pure.d.ts +26 -1
- package/2D/controls/control.pure.js +104 -71
- package/2D/controls/control.pure.js.map +1 -1
- package/2D/controls/flexPanel.d.ts +1 -0
- package/2D/controls/flexPanel.js +4 -0
- package/2D/controls/flexPanel.js.map +1 -0
- package/2D/controls/flexPanel.pure.d.ts +91 -0
- package/2D/controls/flexPanel.pure.js +318 -0
- package/2D/controls/flexPanel.pure.js.map +1 -0
- package/2D/controls/index.d.ts +1 -0
- package/2D/controls/index.js +1 -0
- package/2D/controls/index.js.map +1 -1
- package/2D/controls/inputText.pure.js +7 -6
- package/2D/controls/inputText.pure.js.map +1 -1
- package/2D/controls/inputTextArea.pure.js +14 -13
- package/2D/controls/inputTextArea.pure.js.map +1 -1
- package/2D/controls/line.pure.js +9 -9
- package/2D/controls/line.pure.js.map +1 -1
- package/2D/controls/pure.d.ts +1 -0
- package/2D/controls/pure.js +1 -0
- package/2D/controls/pure.js.map +1 -1
- package/2D/controls/sliders/baseSlider.js +11 -11
- package/2D/controls/sliders/baseSlider.js.map +1 -1
- package/2D/controls/sliders/imageScrollBar.js +3 -3
- package/2D/controls/sliders/imageScrollBar.js.map +1 -1
- package/2D/controls/sliders/scrollBar.pure.js +3 -3
- package/2D/controls/sliders/scrollBar.pure.js.map +1 -1
- package/2D/controls/stackPanel.pure.js +1 -1
- package/2D/controls/stackPanel.pure.js.map +1 -1
- package/2D/controls/textBlock.pure.js +10 -10
- package/2D/controls/textBlock.pure.js.map +1 -1
- package/2D/multiLinePoint.js +2 -2
- package/2D/multiLinePoint.js.map +1 -1
- package/2D/valueAndUnit.d.ts +15 -3
- package/2D/valueAndUnit.js +36 -11
- package/2D/valueAndUnit.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line.pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/line.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { type Observer } from \"core/Misc/observable\";\r\nimport { Vector3, Matrix } from \"core/Maths/math.vector.pure\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { type Scene } from \"core/scene\";\r\n\r\nimport { Control } from \"./control.pure\";\r\nimport { ValueAndUnit } from \"../valueAndUnit\";\r\nimport { type Measure } from \"../measure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\n\r\n/** Class used to render 2D lines */\r\nexport class Line extends Control {\r\n private _lineWidth = 1;\r\n /** @internal */\r\n public _x1 = new ValueAndUnit(0);\r\n /** @internal */\r\n public _y1 = new ValueAndUnit(0);\r\n /** @internal */\r\n public _x2 = new ValueAndUnit(0);\r\n /** @internal */\r\n public _y2 = new ValueAndUnit(0);\r\n private _dash = new Array<number>();\r\n private _connectedControl: Control;\r\n private _connectedControlDirtyObserver: Nullable<Observer<Control>>;\r\n\r\n /** Gets or sets the dash pattern */\r\n @serialize()\r\n public get dash(): Array<number> {\r\n return this._dash;\r\n }\r\n\r\n public set dash(value: Array<number>) {\r\n if (this._dash === value) {\r\n return;\r\n }\r\n\r\n this._dash = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets the control connected with the line end */\r\n public get connectedControl(): Control {\r\n return this._connectedControl;\r\n }\r\n\r\n public set connectedControl(value: Control) {\r\n // Don't allow circular references, and no-op if the same control is assigned\r\n if (this._connectedControl === value || (value instanceof Line && value._connectedControl === (this as Control))) {\r\n return;\r\n }\r\n\r\n if (this._connectedControlDirtyObserver && this._connectedControl) {\r\n this._connectedControl.onDirtyObservable.remove(this._connectedControlDirtyObserver);\r\n this._connectedControlDirtyObserver = null;\r\n }\r\n\r\n if (value) {\r\n this._connectedControlDirtyObserver = value.onDirtyObservable.add(() => this._markAsDirty());\r\n }\r\n\r\n this._connectedControl = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets start coordinates on X axis */\r\n @serialize()\r\n public get x1(): string | number {\r\n return this._x1.toString(this._host);\r\n }\r\n\r\n public set x1(value: string | number) {\r\n if (this._x1.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._x1.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets start coordinates on Y axis */\r\n @serialize()\r\n public get y1(): string | number {\r\n return this._y1.toString(this._host);\r\n }\r\n\r\n public set y1(value: string | number) {\r\n if (this._y1.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._y1.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets end coordinates on X axis */\r\n @serialize()\r\n public get x2(): string | number {\r\n return this._x2.toString(this._host);\r\n }\r\n\r\n public set x2(value: string | number) {\r\n if (this._x2.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._x2.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets end coordinates on Y axis */\r\n @serialize()\r\n public get y2(): string | number {\r\n return this._y2.toString(this._host);\r\n }\r\n\r\n public set y2(value: string | number) {\r\n if (this._y2.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._y2.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets line width */\r\n @serialize()\r\n public get lineWidth(): number {\r\n return this._lineWidth;\r\n }\r\n\r\n public set lineWidth(value: number) {\r\n if (this._lineWidth === value) {\r\n return;\r\n }\r\n\r\n this._lineWidth = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets horizontal alignment */\r\n public override set horizontalAlignment(value: number) {\r\n return;\r\n }\r\n\r\n /** Gets or sets vertical alignment */\r\n public override set verticalAlignment(value: number) {\r\n return;\r\n }\r\n\r\n /** @internal */\r\n public get _effectiveX2(): number {\r\n return (this._connectedControl ? this._connectedControl.centerX - this._cachedParentMeasure.left : 0) + this._x2.getValue(this._host);\r\n }\r\n\r\n /** @internal */\r\n public get _effectiveY2(): number {\r\n return (this._connectedControl ? this._connectedControl.centerY - this._cachedParentMeasure.top : 0) + this._y2.getValue(this._host);\r\n }\r\n\r\n /**\r\n * Creates a new Line\r\n * @param name defines the control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n\r\n this._automaticSize = true;\r\n\r\n this.isHitTestVisible = false;\r\n this._horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n this._verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP;\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"Line\";\r\n }\r\n\r\n public override _draw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX * this._host.idealRatio;\r\n context.shadowOffsetY = this.shadowOffsetY * this._host.idealRatio;\r\n }\r\n\r\n this._applyStates(context);\r\n context.strokeStyle = this._getColor(context);\r\n context.lineWidth = this._lineWidth;\r\n context.setLineDash(this._dash);\r\n\r\n context.beginPath();\r\n context.moveTo(this._cachedParentMeasure.left + this._x1.getValue(this._host), this._cachedParentMeasure.top + this._y1.getValue(this._host));\r\n\r\n context.lineTo(this._cachedParentMeasure.left + this._effectiveX2, this._cachedParentMeasure.top + this._effectiveY2);\r\n context.stroke();\r\n\r\n context.restore();\r\n }\r\n\r\n public override _measure(): void {\r\n // Width / Height\r\n this._currentMeasure.width = Math.abs(this._x1.getValue(this._host) - this._effectiveX2) + this._lineWidth;\r\n this._currentMeasure.height = Math.abs(this._y1.getValue(this._host) - this._effectiveY2) + this._lineWidth;\r\n }\r\n\r\n protected override _preMeasure(parentMeasure: Measure): void {\r\n this._cachedParentMeasure.copyFrom(parentMeasure);\r\n }\r\n\r\n public override _layout(parentMeasure: Measure, context: ICanvasRenderingContext): boolean {\r\n if (this._connectedControl) {\r\n // If we have a connected control, we need to let it layout first so we can ensure our layout math uses its latest position\r\n this._connectedControl._layout(parentMeasure, context);\r\n }\r\n return super._layout(parentMeasure, context);\r\n }\r\n\r\n protected override _computeAlignment(parentMeasure: Measure): void {\r\n this._currentMeasure.left = parentMeasure.left + Math.min(this._x1.getValue(this._host), this._effectiveX2) - this._lineWidth / 2;\r\n this._currentMeasure.top = parentMeasure.top + Math.min(this._y1.getValue(this._host), this._effectiveY2) - this._lineWidth / 2;\r\n }\r\n\r\n /**\r\n * Move one end of the line given 3D cartesian coordinates.\r\n * @param position Targeted world position\r\n * @param scene Scene\r\n * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.\r\n */\r\n public override moveToVector3(position: Vector3, scene: Scene, end: boolean = false): void {\r\n if (!this._host || this.parent !== this._host._rootContainer) {\r\n Tools.Error(\"Cannot move a control to a vector3 if the control is not at root level\");\r\n return;\r\n }\r\n\r\n const globalViewport = this._host._getGlobalViewport();\r\n const projectedPosition = Vector3.Project(position, Matrix.IdentityReadOnly, scene.getTransformMatrix(), globalViewport);\r\n\r\n this._moveToProjectedPosition(projectedPosition, end);\r\n\r\n if (projectedPosition.z < 0 || projectedPosition.z > 1) {\r\n this.notRenderable = true;\r\n return;\r\n }\r\n this.notRenderable = false;\r\n }\r\n\r\n /**\r\n * Move one end of the line to a position in screen absolute space.\r\n * @param projectedPosition Position in screen absolute space (X, Y)\r\n * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.\r\n */\r\n public override _moveToProjectedPosition(projectedPosition: Vector3, end: boolean = false): void {\r\n const x: string = projectedPosition.x + this._linkOffsetX.getValue(this._host) + \"px\";\r\n const y: string = projectedPosition.y + this._linkOffsetY.getValue(this._host) + \"px\";\r\n\r\n if (end) {\r\n this.x2 = x;\r\n this.y2 = y;\r\n this._x2.ignoreAdaptiveScaling = true;\r\n this._y2.ignoreAdaptiveScaling = true;\r\n } else {\r\n this.x1 = x;\r\n this.y1 = y;\r\n this._x1.ignoreAdaptiveScaling = true;\r\n this._y1.ignoreAdaptiveScaling = true;\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the Line class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterLine(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.Line\", Line);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"line.pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/line.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { type Observer } from \"core/Misc/observable\";\r\nimport { Vector3, Matrix } from \"core/Maths/math.vector.pure\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { type Scene } from \"core/scene\";\r\n\r\nimport { Control } from \"./control.pure\";\r\nimport { ValueAndUnit } from \"../valueAndUnit\";\r\nimport { type Measure } from \"../measure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\n\r\n/** Class used to render 2D lines */\r\nexport class Line extends Control {\r\n private _lineWidth = 1;\r\n /** @internal */\r\n public _x1 = new ValueAndUnit(0);\r\n /** @internal */\r\n public _y1 = new ValueAndUnit(0);\r\n /** @internal */\r\n public _x2 = new ValueAndUnit(0);\r\n /** @internal */\r\n public _y2 = new ValueAndUnit(0);\r\n private _dash = new Array<number>();\r\n private _connectedControl: Control;\r\n private _connectedControlDirtyObserver: Nullable<Observer<Control>>;\r\n\r\n /** Gets or sets the dash pattern */\r\n @serialize()\r\n public get dash(): Array<number> {\r\n return this._dash;\r\n }\r\n\r\n public set dash(value: Array<number>) {\r\n if (this._dash === value) {\r\n return;\r\n }\r\n\r\n this._dash = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets the control connected with the line end */\r\n public get connectedControl(): Control {\r\n return this._connectedControl;\r\n }\r\n\r\n public set connectedControl(value: Control) {\r\n // Don't allow circular references, and no-op if the same control is assigned\r\n if (this._connectedControl === value || (value instanceof Line && value._connectedControl === (this as Control))) {\r\n return;\r\n }\r\n\r\n if (this._connectedControlDirtyObserver && this._connectedControl) {\r\n this._connectedControl.onDirtyObservable.remove(this._connectedControlDirtyObserver);\r\n this._connectedControlDirtyObserver = null;\r\n }\r\n\r\n if (value) {\r\n this._connectedControlDirtyObserver = value.onDirtyObservable.add(() => this._markAsDirty());\r\n }\r\n\r\n this._connectedControl = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets start coordinates on X axis */\r\n @serialize()\r\n public get x1(): string | number {\r\n return this._x1.toString(this._host);\r\n }\r\n\r\n public set x1(value: string | number) {\r\n if (this._x1.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._x1.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets start coordinates on Y axis */\r\n @serialize()\r\n public get y1(): string | number {\r\n return this._y1.toString(this._host);\r\n }\r\n\r\n public set y1(value: string | number) {\r\n if (this._y1.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._y1.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets end coordinates on X axis */\r\n @serialize()\r\n public get x2(): string | number {\r\n return this._x2.toString(this._host);\r\n }\r\n\r\n public set x2(value: string | number) {\r\n if (this._x2.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._x2.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets end coordinates on Y axis */\r\n @serialize()\r\n public get y2(): string | number {\r\n return this._y2.toString(this._host);\r\n }\r\n\r\n public set y2(value: string | number) {\r\n if (this._y2.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._y2.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets line width */\r\n @serialize()\r\n public get lineWidth(): number {\r\n return this._lineWidth;\r\n }\r\n\r\n public set lineWidth(value: number) {\r\n if (this._lineWidth === value) {\r\n return;\r\n }\r\n\r\n this._lineWidth = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets horizontal alignment */\r\n public override set horizontalAlignment(value: number) {\r\n return;\r\n }\r\n\r\n /** Gets or sets vertical alignment */\r\n public override set verticalAlignment(value: number) {\r\n return;\r\n }\r\n\r\n /** @internal */\r\n public get _effectiveX2(): number {\r\n return (this._connectedControl ? this._connectedControl.centerX - this._cachedParentMeasure.left : 0) + this._getValueInPixel(this._x2, 1);\r\n }\r\n\r\n /** @internal */\r\n public get _effectiveY2(): number {\r\n return (this._connectedControl ? this._connectedControl.centerY - this._cachedParentMeasure.top : 0) + this._getValueInPixel(this._y2, 1);\r\n }\r\n\r\n /**\r\n * Creates a new Line\r\n * @param name defines the control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n\r\n this._automaticSize = true;\r\n\r\n this.isHitTestVisible = false;\r\n this._horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n this._verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP;\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"Line\";\r\n }\r\n\r\n public override _draw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX * this._host.idealRatio;\r\n context.shadowOffsetY = this.shadowOffsetY * this._host.idealRatio;\r\n }\r\n\r\n this._applyStates(context);\r\n context.strokeStyle = this._getColor(context);\r\n context.lineWidth = this._lineWidth;\r\n context.setLineDash(this._dash);\r\n\r\n context.beginPath();\r\n context.moveTo(this._cachedParentMeasure.left + this._getValueInPixel(this._x1, 1), this._cachedParentMeasure.top + this._getValueInPixel(this._y1, 1));\r\n\r\n context.lineTo(this._cachedParentMeasure.left + this._effectiveX2, this._cachedParentMeasure.top + this._effectiveY2);\r\n context.stroke();\r\n\r\n context.restore();\r\n }\r\n\r\n public override _measure(): void {\r\n // Width / Height\r\n this._currentMeasure.width = Math.abs(this._getValueInPixel(this._x1, 1) - this._effectiveX2) + this._lineWidth;\r\n this._currentMeasure.height = Math.abs(this._getValueInPixel(this._y1, 1) - this._effectiveY2) + this._lineWidth;\r\n }\r\n\r\n protected override _preMeasure(parentMeasure: Measure): void {\r\n this._cachedParentMeasure.copyFrom(parentMeasure);\r\n }\r\n\r\n public override _layout(parentMeasure: Measure, context: ICanvasRenderingContext): boolean {\r\n if (this._connectedControl) {\r\n // If we have a connected control, we need to let it layout first so we can ensure our layout math uses its latest position\r\n this._connectedControl._layout(parentMeasure, context);\r\n }\r\n return super._layout(parentMeasure, context);\r\n }\r\n\r\n protected override _computeAlignment(parentMeasure: Measure): void {\r\n this._currentMeasure.left = parentMeasure.left + Math.min(this._getValueInPixel(this._x1, 1), this._effectiveX2) - this._lineWidth / 2;\r\n this._currentMeasure.top = parentMeasure.top + Math.min(this._getValueInPixel(this._y1, 1), this._effectiveY2) - this._lineWidth / 2;\r\n }\r\n\r\n /**\r\n * Move one end of the line given 3D cartesian coordinates.\r\n * @param position Targeted world position\r\n * @param scene Scene\r\n * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.\r\n */\r\n public override moveToVector3(position: Vector3, scene: Scene, end: boolean = false): void {\r\n if (!this._host || this.parent !== this._host._rootContainer) {\r\n Tools.Error(\"Cannot move a control to a vector3 if the control is not at root level\");\r\n return;\r\n }\r\n\r\n const globalViewport = this._host._getGlobalViewport();\r\n const projectedPosition = Vector3.Project(position, Matrix.IdentityReadOnly, scene.getTransformMatrix(), globalViewport);\r\n\r\n this._moveToProjectedPosition(projectedPosition, end);\r\n\r\n if (projectedPosition.z < 0 || projectedPosition.z > 1) {\r\n this.notRenderable = true;\r\n return;\r\n }\r\n this.notRenderable = false;\r\n }\r\n\r\n /**\r\n * Move one end of the line to a position in screen absolute space.\r\n * @param projectedPosition Position in screen absolute space (X, Y)\r\n * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.\r\n */\r\n public override _moveToProjectedPosition(projectedPosition: Vector3, end: boolean = false): void {\r\n const x: string = projectedPosition.x + this._getValueInPixel(this._linkOffsetX, 1) + \"px\";\r\n const y: string = projectedPosition.y + this._getValueInPixel(this._linkOffsetY, 1) + \"px\";\r\n\r\n if (end) {\r\n this.x2 = x;\r\n this.y2 = y;\r\n this._x2.ignoreAdaptiveScaling = true;\r\n this._y2.ignoreAdaptiveScaling = true;\r\n } else {\r\n this.x1 = x;\r\n this.y1 = y;\r\n this._x1.ignoreAdaptiveScaling = true;\r\n this._y1.ignoreAdaptiveScaling = true;\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the Line class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterLine(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.Line\", Line);\r\n}\r\n"]}
|
package/2D/controls/pure.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from "./ellipse.pure.js";
|
|
|
8
8
|
export * from "./focusableButton.pure.js";
|
|
9
9
|
export * from "./focusableControl.js";
|
|
10
10
|
export * from "./grid.pure.js";
|
|
11
|
+
export * from "./flexPanel.pure.js";
|
|
11
12
|
export * from "./image.pure.js";
|
|
12
13
|
export * from "./inputText.pure.js";
|
|
13
14
|
export * from "./inputTextArea.pure.js";
|
package/2D/controls/pure.js
CHANGED
|
@@ -8,6 +8,7 @@ export * from "./ellipse.pure.js";
|
|
|
8
8
|
export * from "./focusableButton.pure.js";
|
|
9
9
|
export * from "./focusableControl.js";
|
|
10
10
|
export * from "./grid.pure.js";
|
|
11
|
+
export * from "./flexPanel.pure.js";
|
|
11
12
|
export * from "./image.pure.js";
|
|
12
13
|
export * from "./inputText.pure.js";
|
|
13
14
|
export * from "./inputTextArea.pure.js";
|
package/2D/controls/pure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mCAAmC,CAAC;AAClD,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./button.pure\";\nexport * from \"./checkbox.pure\";\nexport * from \"./colorpicker.pure\";\nexport * from \"./container.pure\";\nexport * from \"./control.pure\";\nexport * from \"./ellipse.pure\";\nexport * from \"./focusableButton.pure\";\nexport * from \"./focusableControl\";\nexport * from \"./grid.pure\";\nexport * from \"./image.pure\";\nexport * from \"./inputText.pure\";\nexport * from \"./inputTextArea.pure\";\nexport * from \"./inputPassword.pure\";\nexport * from \"./line.pure\";\nexport * from \"./multiLine.pure\";\nexport * from \"./radioButton.pure\";\nexport * from \"./stackPanel.pure\";\nexport * from \"./selector\";\nexport * from \"./scrollViewers/scrollViewer.pure\";\nexport * from \"./textBlock.pure\";\nexport * from \"./textWrapper\";\nexport * from \"./toggleButton.pure\";\nexport * from \"./virtualKeyboard.pure\";\nexport * from \"./rectangle.pure\";\nexport * from \"./displayGrid.pure\";\nexport * from \"./sliders/baseSlider\";\nexport * from \"./sliders/slider.pure\";\nexport * from \"./sliders/imageBasedSlider.pure\";\nexport * from \"./sliders/scrollBar.pure\";\nexport * from \"./sliders/imageScrollBar\";\nexport * from \"./statics.pure\";\nexport * from \"./gradient/BaseGradient\";\nexport * from \"./gradient/LinearGradient.pure\";\nexport * from \"./gradient/RadialGradient.pure\";\nexport * from \"./gradient/pure\";\nexport * from \"./scrollViewers/pure\";\nexport * from \"./sliders/pure\";\n"]}
|
|
1
|
+
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mCAAmC,CAAC;AAClD,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./button.pure\";\nexport * from \"./checkbox.pure\";\nexport * from \"./colorpicker.pure\";\nexport * from \"./container.pure\";\nexport * from \"./control.pure\";\nexport * from \"./ellipse.pure\";\nexport * from \"./focusableButton.pure\";\nexport * from \"./focusableControl\";\nexport * from \"./grid.pure\";\nexport * from \"./flexPanel.pure\";\nexport * from \"./image.pure\";\nexport * from \"./inputText.pure\";\nexport * from \"./inputTextArea.pure\";\nexport * from \"./inputPassword.pure\";\nexport * from \"./line.pure\";\nexport * from \"./multiLine.pure\";\nexport * from \"./radioButton.pure\";\nexport * from \"./stackPanel.pure\";\nexport * from \"./selector\";\nexport * from \"./scrollViewers/scrollViewer.pure\";\nexport * from \"./textBlock.pure\";\nexport * from \"./textWrapper\";\nexport * from \"./toggleButton.pure\";\nexport * from \"./virtualKeyboard.pure\";\nexport * from \"./rectangle.pure\";\nexport * from \"./displayGrid.pure\";\nexport * from \"./sliders/baseSlider\";\nexport * from \"./sliders/slider.pure\";\nexport * from \"./sliders/imageBasedSlider.pure\";\nexport * from \"./sliders/scrollBar.pure\";\nexport * from \"./sliders/imageScrollBar\";\nexport * from \"./statics.pure\";\nexport * from \"./gradient/BaseGradient\";\nexport * from \"./gradient/LinearGradient.pure\";\nexport * from \"./gradient/RadialGradient.pure\";\nexport * from \"./gradient/pure\";\nexport * from \"./scrollViewers/pure\";\nexport * from \"./sliders/pure\";\n"]}
|
|
@@ -49,7 +49,7 @@ let BaseSlider = (() => {
|
|
|
49
49
|
}
|
|
50
50
|
/** Gets main bar offset in pixels*/
|
|
51
51
|
get barOffsetInPixels() {
|
|
52
|
-
return this.
|
|
52
|
+
return this._getValueInPixel(this._barOffset, this._cachedParentMeasure.width);
|
|
53
53
|
}
|
|
54
54
|
set barOffset(value) {
|
|
55
55
|
if (this._barOffset.toString(this._host) === value) {
|
|
@@ -65,7 +65,7 @@ let BaseSlider = (() => {
|
|
|
65
65
|
}
|
|
66
66
|
/** Gets thumb width in pixels */
|
|
67
67
|
get thumbWidthInPixels() {
|
|
68
|
-
return this.
|
|
68
|
+
return this._getValueInPixel(this._thumbWidth, this._cachedParentMeasure.width);
|
|
69
69
|
}
|
|
70
70
|
set thumbWidth(value) {
|
|
71
71
|
if (this._thumbWidth.toString(this._host) === value) {
|
|
@@ -172,19 +172,19 @@ let BaseSlider = (() => {
|
|
|
172
172
|
let thumbThickness = 0;
|
|
173
173
|
switch (type) {
|
|
174
174
|
case "circle":
|
|
175
|
-
if (this._thumbWidth.
|
|
176
|
-
thumbThickness = Math.max(this.
|
|
175
|
+
if (!this._thumbWidth.isPercentage) {
|
|
176
|
+
thumbThickness = Math.max(this._getValueInPixel(this._thumbWidth, 1), this._backgroundBoxThickness);
|
|
177
177
|
}
|
|
178
178
|
else {
|
|
179
|
-
thumbThickness = this._backgroundBoxThickness * this.
|
|
179
|
+
thumbThickness = this._backgroundBoxThickness * this._getValueInPixel(this._thumbWidth, 1);
|
|
180
180
|
}
|
|
181
181
|
break;
|
|
182
182
|
case "rectangle":
|
|
183
|
-
if (this._thumbWidth.
|
|
184
|
-
thumbThickness = Math.min(this.
|
|
183
|
+
if (!this._thumbWidth.isPercentage) {
|
|
184
|
+
thumbThickness = Math.min(this._getValueInPixel(this._thumbWidth, 1), this._backgroundBoxThickness);
|
|
185
185
|
}
|
|
186
186
|
else {
|
|
187
|
-
thumbThickness = this._backgroundBoxThickness * this.
|
|
187
|
+
thumbThickness = this._backgroundBoxThickness * this._getValueInPixel(this._thumbWidth, 1);
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
190
|
return thumbThickness;
|
|
@@ -207,11 +207,11 @@ let BaseSlider = (() => {
|
|
|
207
207
|
Logger.Error("Height should be greater than width");
|
|
208
208
|
return;
|
|
209
209
|
}
|
|
210
|
-
if (this._barOffset.
|
|
211
|
-
this._effectiveBarOffset = Math.min(this.
|
|
210
|
+
if (!this._barOffset.isPercentage) {
|
|
211
|
+
this._effectiveBarOffset = Math.min(this._getValueInPixel(this._barOffset, 1), this._backgroundBoxThickness);
|
|
212
212
|
}
|
|
213
213
|
else {
|
|
214
|
-
this._effectiveBarOffset = this._backgroundBoxThickness * this.
|
|
214
|
+
this._effectiveBarOffset = this._backgroundBoxThickness * this._getValueInPixel(this._barOffset, 1);
|
|
215
215
|
}
|
|
216
216
|
this._backgroundBoxThickness -= this._effectiveBarOffset * 2;
|
|
217
217
|
if (this.isVertical) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseSlider.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/2D/controls/sliders/baseSlider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"core/Misc/observable\";\r\nimport { type Vector2 } from \"core/Maths/math.vector\";\r\n\r\nimport { Control } from \"../control.pure\";\r\nimport { ValueAndUnit } from \"../../valueAndUnit\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Class used to create slider controls\r\n */\r\nexport class BaseSlider extends Control {\r\n protected _thumbWidth = new ValueAndUnit(20, ValueAndUnit.UNITMODE_PIXEL, false);\r\n private _minimum = 0;\r\n private _maximum = 100;\r\n private _value = 50;\r\n private _isVertical = false;\r\n protected _barOffset = new ValueAndUnit(5, ValueAndUnit.UNITMODE_PIXEL, false);\r\n private _isThumbClamped = false;\r\n protected _displayThumb = true;\r\n private _step = 0;\r\n\r\n private _lastPointerDownId = -1;\r\n\r\n // Shared rendering info\r\n protected _effectiveBarOffset = 0;\r\n protected _renderLeft: number;\r\n protected _renderTop: number;\r\n protected _renderWidth: number;\r\n protected _renderHeight: number;\r\n protected _backgroundBoxLength: number;\r\n protected _backgroundBoxThickness: number;\r\n protected _effectiveThumbThickness: number;\r\n\r\n /** Observable raised when the slider value changes */\r\n public onValueChangedObservable = new Observable<number>();\r\n\r\n /** Gets or sets a boolean indicating if the thumb must be rendered */\r\n @serialize()\r\n public get displayThumb(): boolean {\r\n return this._displayThumb;\r\n }\r\n\r\n public set displayThumb(value: boolean) {\r\n if (this._displayThumb === value) {\r\n return;\r\n }\r\n\r\n this._displayThumb = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets a step to apply to values (0 by default) */\r\n @serialize()\r\n public get step(): number {\r\n return this._step;\r\n }\r\n\r\n public set step(value: number) {\r\n if (this._step === value) {\r\n return;\r\n }\r\n\r\n this._step = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets main bar offset (ie. the margin applied to the value bar) */\r\n @serialize()\r\n public get barOffset(): string | number {\r\n return this._barOffset.toString(this._host);\r\n }\r\n\r\n /** Gets main bar offset in pixels*/\r\n public get barOffsetInPixels(): number {\r\n return this._barOffset.getValueInPixel(this._host, this._cachedParentMeasure.width);\r\n }\r\n\r\n public set barOffset(value: string | number) {\r\n if (this._barOffset.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._barOffset.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets thumb width */\r\n @serialize()\r\n public get thumbWidth(): string | number {\r\n return this._thumbWidth.toString(this._host);\r\n }\r\n\r\n /** Gets thumb width in pixels */\r\n public get thumbWidthInPixels(): number {\r\n return this._thumbWidth.getValueInPixel(this._host, this._cachedParentMeasure.width);\r\n }\r\n\r\n public set thumbWidth(value: string | number) {\r\n if (this._thumbWidth.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._thumbWidth.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets minimum value */\r\n @serialize()\r\n public get minimum(): number {\r\n return this._minimum;\r\n }\r\n\r\n public set minimum(value: number) {\r\n if (this._minimum === value) {\r\n return;\r\n }\r\n\r\n this._minimum = value;\r\n this._markAsDirty();\r\n\r\n this.value = Math.max(Math.min(this.value, this._maximum), this._minimum);\r\n }\r\n\r\n /** Gets or sets maximum value */\r\n @serialize()\r\n public get maximum(): number {\r\n return this._maximum;\r\n }\r\n\r\n public set maximum(value: number) {\r\n if (this._maximum === value) {\r\n return;\r\n }\r\n\r\n this._maximum = value;\r\n this._markAsDirty();\r\n\r\n this.value = Math.max(Math.min(this.value, this._maximum), this._minimum);\r\n }\r\n\r\n /** Gets or sets current value */\r\n @serialize()\r\n public get value(): number {\r\n return this._value;\r\n }\r\n\r\n public set value(value: number) {\r\n value = Math.max(Math.min(value, this._maximum), this._minimum);\r\n\r\n if (this._value === value) {\r\n return;\r\n }\r\n\r\n this._value = value;\r\n this._markAsDirty();\r\n this.onValueChangedObservable.notifyObservers(this._value, undefined, this, this);\r\n }\r\n\r\n /**Gets or sets a boolean indicating if the slider should be vertical or horizontal */\r\n @serialize()\r\n public get isVertical(): boolean {\r\n return this._isVertical;\r\n }\r\n\r\n public set isVertical(value: boolean) {\r\n if (this._isVertical === value) {\r\n return;\r\n }\r\n\r\n this._isVertical = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets a value indicating if the thumb can go over main bar extends */\r\n @serialize()\r\n public get isThumbClamped(): boolean {\r\n return this._isThumbClamped;\r\n }\r\n\r\n public set isThumbClamped(value: boolean) {\r\n if (this._isThumbClamped === value) {\r\n return;\r\n }\r\n\r\n this._isThumbClamped = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Creates a new BaseSlider\r\n * @param name defines the control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n\r\n this.isPointerBlocker = true;\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"BaseSlider\";\r\n }\r\n\r\n protected _getThumbPosition() {\r\n if (this.isVertical) {\r\n return ((this.maximum - this.value) / (this.maximum - this.minimum)) * this._backgroundBoxLength;\r\n }\r\n\r\n return ((this.value - this.minimum) / (this.maximum - this.minimum)) * this._backgroundBoxLength;\r\n }\r\n\r\n protected _getThumbThickness(type: string): number {\r\n let thumbThickness = 0;\r\n switch (type) {\r\n case \"circle\":\r\n if (this._thumbWidth.isPixel) {\r\n thumbThickness = Math.max(this._thumbWidth.getValue(this._host), this._backgroundBoxThickness);\r\n } else {\r\n thumbThickness = this._backgroundBoxThickness * this._thumbWidth.getValue(this._host);\r\n }\r\n break;\r\n case \"rectangle\":\r\n if (this._thumbWidth.isPixel) {\r\n thumbThickness = Math.min(this._thumbWidth.getValue(this._host), this._backgroundBoxThickness);\r\n } else {\r\n thumbThickness = this._backgroundBoxThickness * this._thumbWidth.getValue(this._host);\r\n }\r\n }\r\n return thumbThickness;\r\n }\r\n\r\n protected _prepareRenderingData(type: string) {\r\n // Main bar\r\n this._effectiveBarOffset = 0;\r\n this._renderLeft = this._currentMeasure.left;\r\n this._renderTop = this._currentMeasure.top;\r\n this._renderWidth = this._currentMeasure.width;\r\n this._renderHeight = this._currentMeasure.height;\r\n\r\n this._backgroundBoxLength = Math.max(this._currentMeasure.width, this._currentMeasure.height);\r\n this._backgroundBoxThickness = Math.min(this._currentMeasure.width, this._currentMeasure.height);\r\n this._effectiveThumbThickness = this._getThumbThickness(type);\r\n\r\n if (this.displayThumb) {\r\n this._backgroundBoxLength -= this._effectiveThumbThickness;\r\n }\r\n //throw error when height is less than width for vertical slider\r\n if (this.isVertical && this._currentMeasure.height < this._currentMeasure.width) {\r\n Logger.Error(\"Height should be greater than width\");\r\n return;\r\n }\r\n if (this._barOffset.isPixel) {\r\n this._effectiveBarOffset = Math.min(this._barOffset.getValue(this._host), this._backgroundBoxThickness);\r\n } else {\r\n this._effectiveBarOffset = this._backgroundBoxThickness * this._barOffset.getValue(this._host);\r\n }\r\n\r\n this._backgroundBoxThickness -= this._effectiveBarOffset * 2;\r\n\r\n if (this.isVertical) {\r\n this._renderLeft += this._effectiveBarOffset;\r\n if (!this.isThumbClamped && this.displayThumb) {\r\n this._renderTop += this._effectiveThumbThickness / 2;\r\n }\r\n\r\n this._renderHeight = this._backgroundBoxLength;\r\n this._renderWidth = this._backgroundBoxThickness;\r\n } else {\r\n this._renderTop += this._effectiveBarOffset;\r\n if (!this.isThumbClamped && this.displayThumb) {\r\n this._renderLeft += this._effectiveThumbThickness / 2;\r\n }\r\n this._renderHeight = this._backgroundBoxThickness;\r\n this._renderWidth = this._backgroundBoxLength;\r\n }\r\n }\r\n\r\n // Events\r\n private _pointerIsDown = false;\r\n\r\n /**\r\n * @internal\r\n */\r\n protected _updateValueFromPointer(x: number, y: number): void {\r\n this._invertTransformMatrix.transformCoordinates(x, y, this._transformedPosition);\r\n x = this._transformedPosition.x;\r\n y = this._transformedPosition.y;\r\n\r\n let value: number;\r\n if (this._isVertical) {\r\n value = this._minimum + (1 - (y - this._currentMeasure.top) / this._currentMeasure.height) * (this._maximum - this._minimum);\r\n } else {\r\n value = this._minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this._maximum - this._minimum);\r\n }\r\n this.value = this._step ? Math.round(value / this._step) * this._step : value;\r\n }\r\n\r\n public override _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi)) {\r\n return false;\r\n }\r\n\r\n if (this.isReadOnly) {\r\n return true;\r\n }\r\n\r\n this._pointerIsDown = true;\r\n\r\n this._updateValueFromPointer(coordinates.x, coordinates.y);\r\n this._host._capturingControl[pointerId] = this;\r\n this._lastPointerDownId = pointerId;\r\n return true;\r\n }\r\n\r\n public override _onPointerMove(target: Control, coordinates: Vector2, pointerId: number, pi: PointerInfoBase): void {\r\n // Only listen to pointer move events coming from the last pointer to click on the element (To support dual vr controller interaction)\r\n if (pointerId != this._lastPointerDownId) {\r\n return;\r\n }\r\n\r\n if (this._pointerIsDown && !this.isReadOnly) {\r\n this._updateValueFromPointer(coordinates.x, coordinates.y);\r\n }\r\n super._onPointerMove(target, coordinates, pointerId, pi);\r\n }\r\n\r\n public override _onPointerUp(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, notifyClick: boolean): void {\r\n this._pointerIsDown = false;\r\n\r\n delete this._host._capturingControl[pointerId];\r\n super._onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick);\r\n }\r\n\r\n public override _onCanvasBlur(): void {\r\n this._forcePointerUp();\r\n super._onCanvasBlur();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"baseSlider.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/2D/controls/sliders/baseSlider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"core/Misc/observable\";\r\nimport { type Vector2 } from \"core/Maths/math.vector\";\r\n\r\nimport { Control } from \"../control.pure\";\r\nimport { ValueAndUnit } from \"../../valueAndUnit\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Class used to create slider controls\r\n */\r\nexport class BaseSlider extends Control {\r\n protected _thumbWidth = new ValueAndUnit(20, ValueAndUnit.UNITMODE_PIXEL, false);\r\n private _minimum = 0;\r\n private _maximum = 100;\r\n private _value = 50;\r\n private _isVertical = false;\r\n protected _barOffset = new ValueAndUnit(5, ValueAndUnit.UNITMODE_PIXEL, false);\r\n private _isThumbClamped = false;\r\n protected _displayThumb = true;\r\n private _step = 0;\r\n\r\n private _lastPointerDownId = -1;\r\n\r\n // Shared rendering info\r\n protected _effectiveBarOffset = 0;\r\n protected _renderLeft: number;\r\n protected _renderTop: number;\r\n protected _renderWidth: number;\r\n protected _renderHeight: number;\r\n protected _backgroundBoxLength: number;\r\n protected _backgroundBoxThickness: number;\r\n protected _effectiveThumbThickness: number;\r\n\r\n /** Observable raised when the slider value changes */\r\n public onValueChangedObservable = new Observable<number>();\r\n\r\n /** Gets or sets a boolean indicating if the thumb must be rendered */\r\n @serialize()\r\n public get displayThumb(): boolean {\r\n return this._displayThumb;\r\n }\r\n\r\n public set displayThumb(value: boolean) {\r\n if (this._displayThumb === value) {\r\n return;\r\n }\r\n\r\n this._displayThumb = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets a step to apply to values (0 by default) */\r\n @serialize()\r\n public get step(): number {\r\n return this._step;\r\n }\r\n\r\n public set step(value: number) {\r\n if (this._step === value) {\r\n return;\r\n }\r\n\r\n this._step = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets main bar offset (ie. the margin applied to the value bar) */\r\n @serialize()\r\n public get barOffset(): string | number {\r\n return this._barOffset.toString(this._host);\r\n }\r\n\r\n /** Gets main bar offset in pixels*/\r\n public get barOffsetInPixels(): number {\r\n return this._getValueInPixel(this._barOffset, this._cachedParentMeasure.width);\r\n }\r\n\r\n public set barOffset(value: string | number) {\r\n if (this._barOffset.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._barOffset.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets thumb width */\r\n @serialize()\r\n public get thumbWidth(): string | number {\r\n return this._thumbWidth.toString(this._host);\r\n }\r\n\r\n /** Gets thumb width in pixels */\r\n public get thumbWidthInPixels(): number {\r\n return this._getValueInPixel(this._thumbWidth, this._cachedParentMeasure.width);\r\n }\r\n\r\n public set thumbWidth(value: string | number) {\r\n if (this._thumbWidth.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._thumbWidth.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets minimum value */\r\n @serialize()\r\n public get minimum(): number {\r\n return this._minimum;\r\n }\r\n\r\n public set minimum(value: number) {\r\n if (this._minimum === value) {\r\n return;\r\n }\r\n\r\n this._minimum = value;\r\n this._markAsDirty();\r\n\r\n this.value = Math.max(Math.min(this.value, this._maximum), this._minimum);\r\n }\r\n\r\n /** Gets or sets maximum value */\r\n @serialize()\r\n public get maximum(): number {\r\n return this._maximum;\r\n }\r\n\r\n public set maximum(value: number) {\r\n if (this._maximum === value) {\r\n return;\r\n }\r\n\r\n this._maximum = value;\r\n this._markAsDirty();\r\n\r\n this.value = Math.max(Math.min(this.value, this._maximum), this._minimum);\r\n }\r\n\r\n /** Gets or sets current value */\r\n @serialize()\r\n public get value(): number {\r\n return this._value;\r\n }\r\n\r\n public set value(value: number) {\r\n value = Math.max(Math.min(value, this._maximum), this._minimum);\r\n\r\n if (this._value === value) {\r\n return;\r\n }\r\n\r\n this._value = value;\r\n this._markAsDirty();\r\n this.onValueChangedObservable.notifyObservers(this._value, undefined, this, this);\r\n }\r\n\r\n /**Gets or sets a boolean indicating if the slider should be vertical or horizontal */\r\n @serialize()\r\n public get isVertical(): boolean {\r\n return this._isVertical;\r\n }\r\n\r\n public set isVertical(value: boolean) {\r\n if (this._isVertical === value) {\r\n return;\r\n }\r\n\r\n this._isVertical = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets a value indicating if the thumb can go over main bar extends */\r\n @serialize()\r\n public get isThumbClamped(): boolean {\r\n return this._isThumbClamped;\r\n }\r\n\r\n public set isThumbClamped(value: boolean) {\r\n if (this._isThumbClamped === value) {\r\n return;\r\n }\r\n\r\n this._isThumbClamped = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Creates a new BaseSlider\r\n * @param name defines the control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n\r\n this.isPointerBlocker = true;\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"BaseSlider\";\r\n }\r\n\r\n protected _getThumbPosition() {\r\n if (this.isVertical) {\r\n return ((this.maximum - this.value) / (this.maximum - this.minimum)) * this._backgroundBoxLength;\r\n }\r\n\r\n return ((this.value - this.minimum) / (this.maximum - this.minimum)) * this._backgroundBoxLength;\r\n }\r\n\r\n protected _getThumbThickness(type: string): number {\r\n let thumbThickness = 0;\r\n switch (type) {\r\n case \"circle\":\r\n if (!this._thumbWidth.isPercentage) {\r\n thumbThickness = Math.max(this._getValueInPixel(this._thumbWidth, 1), this._backgroundBoxThickness);\r\n } else {\r\n thumbThickness = this._backgroundBoxThickness * this._getValueInPixel(this._thumbWidth, 1);\r\n }\r\n break;\r\n case \"rectangle\":\r\n if (!this._thumbWidth.isPercentage) {\r\n thumbThickness = Math.min(this._getValueInPixel(this._thumbWidth, 1), this._backgroundBoxThickness);\r\n } else {\r\n thumbThickness = this._backgroundBoxThickness * this._getValueInPixel(this._thumbWidth, 1);\r\n }\r\n }\r\n return thumbThickness;\r\n }\r\n\r\n protected _prepareRenderingData(type: string) {\r\n // Main bar\r\n this._effectiveBarOffset = 0;\r\n this._renderLeft = this._currentMeasure.left;\r\n this._renderTop = this._currentMeasure.top;\r\n this._renderWidth = this._currentMeasure.width;\r\n this._renderHeight = this._currentMeasure.height;\r\n\r\n this._backgroundBoxLength = Math.max(this._currentMeasure.width, this._currentMeasure.height);\r\n this._backgroundBoxThickness = Math.min(this._currentMeasure.width, this._currentMeasure.height);\r\n this._effectiveThumbThickness = this._getThumbThickness(type);\r\n\r\n if (this.displayThumb) {\r\n this._backgroundBoxLength -= this._effectiveThumbThickness;\r\n }\r\n //throw error when height is less than width for vertical slider\r\n if (this.isVertical && this._currentMeasure.height < this._currentMeasure.width) {\r\n Logger.Error(\"Height should be greater than width\");\r\n return;\r\n }\r\n if (!this._barOffset.isPercentage) {\r\n this._effectiveBarOffset = Math.min(this._getValueInPixel(this._barOffset, 1), this._backgroundBoxThickness);\r\n } else {\r\n this._effectiveBarOffset = this._backgroundBoxThickness * this._getValueInPixel(this._barOffset, 1);\r\n }\r\n\r\n this._backgroundBoxThickness -= this._effectiveBarOffset * 2;\r\n\r\n if (this.isVertical) {\r\n this._renderLeft += this._effectiveBarOffset;\r\n if (!this.isThumbClamped && this.displayThumb) {\r\n this._renderTop += this._effectiveThumbThickness / 2;\r\n }\r\n\r\n this._renderHeight = this._backgroundBoxLength;\r\n this._renderWidth = this._backgroundBoxThickness;\r\n } else {\r\n this._renderTop += this._effectiveBarOffset;\r\n if (!this.isThumbClamped && this.displayThumb) {\r\n this._renderLeft += this._effectiveThumbThickness / 2;\r\n }\r\n this._renderHeight = this._backgroundBoxThickness;\r\n this._renderWidth = this._backgroundBoxLength;\r\n }\r\n }\r\n\r\n // Events\r\n private _pointerIsDown = false;\r\n\r\n /**\r\n * @internal\r\n */\r\n protected _updateValueFromPointer(x: number, y: number): void {\r\n this._invertTransformMatrix.transformCoordinates(x, y, this._transformedPosition);\r\n x = this._transformedPosition.x;\r\n y = this._transformedPosition.y;\r\n\r\n let value: number;\r\n if (this._isVertical) {\r\n value = this._minimum + (1 - (y - this._currentMeasure.top) / this._currentMeasure.height) * (this._maximum - this._minimum);\r\n } else {\r\n value = this._minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this._maximum - this._minimum);\r\n }\r\n this.value = this._step ? Math.round(value / this._step) * this._step : value;\r\n }\r\n\r\n public override _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi)) {\r\n return false;\r\n }\r\n\r\n if (this.isReadOnly) {\r\n return true;\r\n }\r\n\r\n this._pointerIsDown = true;\r\n\r\n this._updateValueFromPointer(coordinates.x, coordinates.y);\r\n this._host._capturingControl[pointerId] = this;\r\n this._lastPointerDownId = pointerId;\r\n return true;\r\n }\r\n\r\n public override _onPointerMove(target: Control, coordinates: Vector2, pointerId: number, pi: PointerInfoBase): void {\r\n // Only listen to pointer move events coming from the last pointer to click on the element (To support dual vr controller interaction)\r\n if (pointerId != this._lastPointerDownId) {\r\n return;\r\n }\r\n\r\n if (this._pointerIsDown && !this.isReadOnly) {\r\n this._updateValueFromPointer(coordinates.x, coordinates.y);\r\n }\r\n super._onPointerMove(target, coordinates, pointerId, pi);\r\n }\r\n\r\n public override _onPointerUp(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, notifyClick: boolean): void {\r\n this._pointerIsDown = false;\r\n\r\n delete this._host._capturingControl[pointerId];\r\n super._onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick);\r\n }\r\n\r\n public override _onCanvasBlur(): void {\r\n this._forcePointerUp();\r\n super._onCanvasBlur();\r\n }\r\n}\r\n"]}
|
|
@@ -159,11 +159,11 @@ let ImageScrollBar = (() => {
|
|
|
159
159
|
}
|
|
160
160
|
_getThumbThickness() {
|
|
161
161
|
let thumbThickness;
|
|
162
|
-
if (this._thumbWidth.
|
|
163
|
-
thumbThickness = this.
|
|
162
|
+
if (!this._thumbWidth.isPercentage) {
|
|
163
|
+
thumbThickness = this._getValueInPixel(this._thumbWidth, 1);
|
|
164
164
|
}
|
|
165
165
|
else {
|
|
166
|
-
thumbThickness = this._backgroundBoxThickness * this.
|
|
166
|
+
thumbThickness = this._backgroundBoxThickness * this._getValueInPixel(this._thumbWidth, 1);
|
|
167
167
|
}
|
|
168
168
|
return thumbThickness;
|
|
169
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageScrollBar.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/2D/controls/sliders/imageScrollBar.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Vector2 } from \"core/Maths/math.vector\";\r\nimport { BaseSlider } from \"./baseSlider\";\r\nimport { type Control } from \"../control\";\r\nimport { type Image } from \"../image\";\r\nimport { Measure } from \"../../measure\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\n\r\n/**\r\n * Class used to create slider controls\r\n */\r\nexport class ImageScrollBar extends BaseSlider {\r\n private _backgroundBaseImage: Image;\r\n private _backgroundImage: Image;\r\n private _thumbImage: Image;\r\n private _thumbBaseImage: Image;\r\n private _thumbLength: number = 0.5;\r\n private _thumbHeight: number = 1;\r\n private _barImageHeight: number = 1;\r\n private _tempMeasure = new Measure(0, 0, 0, 0);\r\n private _invertScrollDirection = false;\r\n\r\n /** Number of 90° rotation to apply on the images when in vertical mode */\r\n @serialize()\r\n public num90RotationInVerticalMode = 1;\r\n\r\n /** Inverts the scrolling direction (default: false) */\r\n @serialize()\r\n public get invertScrollDirection() {\r\n return this._invertScrollDirection;\r\n }\r\n\r\n public set invertScrollDirection(invert: boolean) {\r\n this._invertScrollDirection = invert;\r\n }\r\n\r\n /**\r\n * Gets or sets the image used to render the background for horizontal bar\r\n */\r\n public get backgroundImage(): Image {\r\n return this._backgroundBaseImage;\r\n }\r\n\r\n public set backgroundImage(value: Image) {\r\n if (this._backgroundBaseImage === value) {\r\n return;\r\n }\r\n\r\n this._backgroundBaseImage = value;\r\n\r\n if (this.isVertical && this.num90RotationInVerticalMode !== 0) {\r\n if (!value.isLoaded) {\r\n value.onImageLoadedObservable.addOnce(() => {\r\n const rotatedValue = value._rotate90(this.num90RotationInVerticalMode, true);\r\n this._backgroundImage = rotatedValue;\r\n if (!rotatedValue.isLoaded) {\r\n rotatedValue.onImageLoadedObservable.addOnce(() => {\r\n this._markAsDirty();\r\n });\r\n }\r\n this._markAsDirty();\r\n });\r\n } else {\r\n this._backgroundImage = value._rotate90(this.num90RotationInVerticalMode, true);\r\n this._markAsDirty();\r\n }\r\n } else {\r\n this._backgroundImage = value;\r\n if (value && !value.isLoaded) {\r\n value.onImageLoadedObservable.addOnce(() => {\r\n this._markAsDirty();\r\n });\r\n }\r\n\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Gets or sets the image used to render the thumb\r\n */\r\n public get thumbImage(): Image {\r\n return this._thumbBaseImage;\r\n }\r\n\r\n public set thumbImage(value: Image) {\r\n if (this._thumbBaseImage === value) {\r\n return;\r\n }\r\n\r\n this._thumbBaseImage = value;\r\n\r\n if (this.isVertical && this.num90RotationInVerticalMode !== 0) {\r\n if (!value.isLoaded) {\r\n value.onImageLoadedObservable.addOnce(() => {\r\n const rotatedValue = value._rotate90(-this.num90RotationInVerticalMode, true);\r\n this._thumbImage = rotatedValue;\r\n if (!rotatedValue.isLoaded) {\r\n rotatedValue.onImageLoadedObservable.addOnce(() => {\r\n this._markAsDirty();\r\n });\r\n }\r\n this._markAsDirty();\r\n });\r\n } else {\r\n this._thumbImage = value._rotate90(-this.num90RotationInVerticalMode, true);\r\n this._markAsDirty();\r\n }\r\n } else {\r\n this._thumbImage = value;\r\n if (value && !value.isLoaded) {\r\n value.onImageLoadedObservable.addOnce(() => {\r\n this._markAsDirty();\r\n });\r\n }\r\n\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Gets or sets the length of the thumb\r\n */\r\n public get thumbLength(): number {\r\n return this._thumbLength;\r\n }\r\n\r\n public set thumbLength(value: number) {\r\n if (this._thumbLength === value) {\r\n return;\r\n }\r\n\r\n this._thumbLength = value;\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets the height of the thumb\r\n */\r\n public get thumbHeight(): number {\r\n return this._thumbHeight;\r\n }\r\n\r\n public set thumbHeight(value: number) {\r\n if (this._thumbHeight === value) {\r\n return;\r\n }\r\n\r\n this._thumbHeight = value;\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets the height of the bar image\r\n */\r\n public get barImageHeight(): number {\r\n return this._barImageHeight;\r\n }\r\n\r\n public set barImageHeight(value: number) {\r\n if (this._barImageHeight === value) {\r\n return;\r\n }\r\n\r\n this._barImageHeight = value;\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Creates a new ImageScrollBar\r\n * @param name defines the control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"ImageScrollBar\";\r\n }\r\n\r\n protected override _getThumbThickness(): number {\r\n let thumbThickness: number;\r\n if (this._thumbWidth.isPixel) {\r\n thumbThickness = this._thumbWidth.getValue(this._host);\r\n } else {\r\n thumbThickness = this._backgroundBoxThickness * this._thumbWidth.getValue(this._host);\r\n }\r\n return thumbThickness;\r\n }\r\n\r\n public override _draw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n this._applyStates(context);\r\n\r\n this._prepareRenderingData(\"rectangle\");\r\n const thumbPosition = this._getThumbPosition();\r\n const left = this._renderLeft;\r\n const top = this._renderTop;\r\n const width = this._renderWidth;\r\n const height = this._renderHeight;\r\n\r\n // Background\r\n if (this._backgroundImage) {\r\n this._tempMeasure.copyFromFloats(left, top, width, height);\r\n if (this.isVertical) {\r\n this._tempMeasure.copyFromFloats(left + width * (1 - this._barImageHeight) * 0.5, this._currentMeasure.top, width * this._barImageHeight, height);\r\n this._tempMeasure.height += this._effectiveThumbThickness;\r\n this._backgroundImage._currentMeasure.copyFrom(this._tempMeasure);\r\n } else {\r\n this._tempMeasure.copyFromFloats(this._currentMeasure.left, top + height * (1 - this._barImageHeight) * 0.5, width, height * this._barImageHeight);\r\n this._tempMeasure.width += this._effectiveThumbThickness;\r\n this._backgroundImage._currentMeasure.copyFrom(this._tempMeasure);\r\n }\r\n this._backgroundImage._draw(context);\r\n }\r\n\r\n // Thumb\r\n if (this.isVertical) {\r\n this._tempMeasure.copyFromFloats(\r\n left - this._effectiveBarOffset + this._currentMeasure.width * (1 - this._thumbHeight) * 0.5,\r\n this._currentMeasure.top + thumbPosition,\r\n this._currentMeasure.width * this._thumbHeight,\r\n this._effectiveThumbThickness\r\n );\r\n } else {\r\n this._tempMeasure.copyFromFloats(\r\n this._currentMeasure.left + thumbPosition,\r\n this._currentMeasure.top + this._currentMeasure.height * (1 - this._thumbHeight) * 0.5,\r\n this._effectiveThumbThickness,\r\n this._currentMeasure.height * this._thumbHeight\r\n );\r\n }\r\n\r\n if (this._thumbImage) {\r\n this._thumbImage._currentMeasure.copyFrom(this._tempMeasure);\r\n this._thumbImage._draw(context);\r\n }\r\n\r\n context.restore();\r\n }\r\n\r\n private _first: boolean;\r\n private _originX: number;\r\n private _originY: number;\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _updateValueFromPointer(x: number, y: number): void {\r\n this._invertTransformMatrix.transformCoordinates(x, y, this._transformedPosition);\r\n x = this._transformedPosition.x;\r\n y = this._transformedPosition.y;\r\n\r\n const sign = this._invertScrollDirection ? -1 : 1;\r\n\r\n if (this._first) {\r\n this._first = false;\r\n this._originX = x;\r\n this._originY = y;\r\n\r\n // Check if move is required\r\n if (\r\n x < this._tempMeasure.left ||\r\n x > this._tempMeasure.left + this._tempMeasure.width ||\r\n y < this._tempMeasure.top ||\r\n y > this._tempMeasure.top + this._tempMeasure.height\r\n ) {\r\n if (this.isVertical) {\r\n this.value = this.minimum + (1 - (y - this._currentMeasure.top) / this._currentMeasure.height) * (this.maximum - this.minimum);\r\n } else {\r\n this.value = this.minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this.maximum - this.minimum);\r\n }\r\n }\r\n }\r\n\r\n // Delta mode\r\n let delta: number;\r\n if (this.isVertical) {\r\n delta = -((y - this._originY) / (this._currentMeasure.height - this._effectiveThumbThickness));\r\n } else {\r\n delta = (x - this._originX) / (this._currentMeasure.width - this._effectiveThumbThickness);\r\n }\r\n\r\n this.value += sign * delta * (this.maximum - this.minimum);\r\n\r\n this._originX = x;\r\n this._originY = y;\r\n }\r\n\r\n public override _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n this._first = true;\r\n\r\n return super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"imageScrollBar.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/2D/controls/sliders/imageScrollBar.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Vector2 } from \"core/Maths/math.vector\";\r\nimport { BaseSlider } from \"./baseSlider\";\r\nimport { type Control } from \"../control\";\r\nimport { type Image } from \"../image\";\r\nimport { Measure } from \"../../measure\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\n\r\n/**\r\n * Class used to create slider controls\r\n */\r\nexport class ImageScrollBar extends BaseSlider {\r\n private _backgroundBaseImage: Image;\r\n private _backgroundImage: Image;\r\n private _thumbImage: Image;\r\n private _thumbBaseImage: Image;\r\n private _thumbLength: number = 0.5;\r\n private _thumbHeight: number = 1;\r\n private _barImageHeight: number = 1;\r\n private _tempMeasure = new Measure(0, 0, 0, 0);\r\n private _invertScrollDirection = false;\r\n\r\n /** Number of 90° rotation to apply on the images when in vertical mode */\r\n @serialize()\r\n public num90RotationInVerticalMode = 1;\r\n\r\n /** Inverts the scrolling direction (default: false) */\r\n @serialize()\r\n public get invertScrollDirection() {\r\n return this._invertScrollDirection;\r\n }\r\n\r\n public set invertScrollDirection(invert: boolean) {\r\n this._invertScrollDirection = invert;\r\n }\r\n\r\n /**\r\n * Gets or sets the image used to render the background for horizontal bar\r\n */\r\n public get backgroundImage(): Image {\r\n return this._backgroundBaseImage;\r\n }\r\n\r\n public set backgroundImage(value: Image) {\r\n if (this._backgroundBaseImage === value) {\r\n return;\r\n }\r\n\r\n this._backgroundBaseImage = value;\r\n\r\n if (this.isVertical && this.num90RotationInVerticalMode !== 0) {\r\n if (!value.isLoaded) {\r\n value.onImageLoadedObservable.addOnce(() => {\r\n const rotatedValue = value._rotate90(this.num90RotationInVerticalMode, true);\r\n this._backgroundImage = rotatedValue;\r\n if (!rotatedValue.isLoaded) {\r\n rotatedValue.onImageLoadedObservable.addOnce(() => {\r\n this._markAsDirty();\r\n });\r\n }\r\n this._markAsDirty();\r\n });\r\n } else {\r\n this._backgroundImage = value._rotate90(this.num90RotationInVerticalMode, true);\r\n this._markAsDirty();\r\n }\r\n } else {\r\n this._backgroundImage = value;\r\n if (value && !value.isLoaded) {\r\n value.onImageLoadedObservable.addOnce(() => {\r\n this._markAsDirty();\r\n });\r\n }\r\n\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Gets or sets the image used to render the thumb\r\n */\r\n public get thumbImage(): Image {\r\n return this._thumbBaseImage;\r\n }\r\n\r\n public set thumbImage(value: Image) {\r\n if (this._thumbBaseImage === value) {\r\n return;\r\n }\r\n\r\n this._thumbBaseImage = value;\r\n\r\n if (this.isVertical && this.num90RotationInVerticalMode !== 0) {\r\n if (!value.isLoaded) {\r\n value.onImageLoadedObservable.addOnce(() => {\r\n const rotatedValue = value._rotate90(-this.num90RotationInVerticalMode, true);\r\n this._thumbImage = rotatedValue;\r\n if (!rotatedValue.isLoaded) {\r\n rotatedValue.onImageLoadedObservable.addOnce(() => {\r\n this._markAsDirty();\r\n });\r\n }\r\n this._markAsDirty();\r\n });\r\n } else {\r\n this._thumbImage = value._rotate90(-this.num90RotationInVerticalMode, true);\r\n this._markAsDirty();\r\n }\r\n } else {\r\n this._thumbImage = value;\r\n if (value && !value.isLoaded) {\r\n value.onImageLoadedObservable.addOnce(() => {\r\n this._markAsDirty();\r\n });\r\n }\r\n\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Gets or sets the length of the thumb\r\n */\r\n public get thumbLength(): number {\r\n return this._thumbLength;\r\n }\r\n\r\n public set thumbLength(value: number) {\r\n if (this._thumbLength === value) {\r\n return;\r\n }\r\n\r\n this._thumbLength = value;\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets the height of the thumb\r\n */\r\n public get thumbHeight(): number {\r\n return this._thumbHeight;\r\n }\r\n\r\n public set thumbHeight(value: number) {\r\n if (this._thumbHeight === value) {\r\n return;\r\n }\r\n\r\n this._thumbHeight = value;\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets the height of the bar image\r\n */\r\n public get barImageHeight(): number {\r\n return this._barImageHeight;\r\n }\r\n\r\n public set barImageHeight(value: number) {\r\n if (this._barImageHeight === value) {\r\n return;\r\n }\r\n\r\n this._barImageHeight = value;\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Creates a new ImageScrollBar\r\n * @param name defines the control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"ImageScrollBar\";\r\n }\r\n\r\n protected override _getThumbThickness(): number {\r\n let thumbThickness: number;\r\n if (!this._thumbWidth.isPercentage) {\r\n thumbThickness = this._getValueInPixel(this._thumbWidth, 1);\r\n } else {\r\n thumbThickness = this._backgroundBoxThickness * this._getValueInPixel(this._thumbWidth, 1);\r\n }\r\n return thumbThickness;\r\n }\r\n\r\n public override _draw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n this._applyStates(context);\r\n\r\n this._prepareRenderingData(\"rectangle\");\r\n const thumbPosition = this._getThumbPosition();\r\n const left = this._renderLeft;\r\n const top = this._renderTop;\r\n const width = this._renderWidth;\r\n const height = this._renderHeight;\r\n\r\n // Background\r\n if (this._backgroundImage) {\r\n this._tempMeasure.copyFromFloats(left, top, width, height);\r\n if (this.isVertical) {\r\n this._tempMeasure.copyFromFloats(left + width * (1 - this._barImageHeight) * 0.5, this._currentMeasure.top, width * this._barImageHeight, height);\r\n this._tempMeasure.height += this._effectiveThumbThickness;\r\n this._backgroundImage._currentMeasure.copyFrom(this._tempMeasure);\r\n } else {\r\n this._tempMeasure.copyFromFloats(this._currentMeasure.left, top + height * (1 - this._barImageHeight) * 0.5, width, height * this._barImageHeight);\r\n this._tempMeasure.width += this._effectiveThumbThickness;\r\n this._backgroundImage._currentMeasure.copyFrom(this._tempMeasure);\r\n }\r\n this._backgroundImage._draw(context);\r\n }\r\n\r\n // Thumb\r\n if (this.isVertical) {\r\n this._tempMeasure.copyFromFloats(\r\n left - this._effectiveBarOffset + this._currentMeasure.width * (1 - this._thumbHeight) * 0.5,\r\n this._currentMeasure.top + thumbPosition,\r\n this._currentMeasure.width * this._thumbHeight,\r\n this._effectiveThumbThickness\r\n );\r\n } else {\r\n this._tempMeasure.copyFromFloats(\r\n this._currentMeasure.left + thumbPosition,\r\n this._currentMeasure.top + this._currentMeasure.height * (1 - this._thumbHeight) * 0.5,\r\n this._effectiveThumbThickness,\r\n this._currentMeasure.height * this._thumbHeight\r\n );\r\n }\r\n\r\n if (this._thumbImage) {\r\n this._thumbImage._currentMeasure.copyFrom(this._tempMeasure);\r\n this._thumbImage._draw(context);\r\n }\r\n\r\n context.restore();\r\n }\r\n\r\n private _first: boolean;\r\n private _originX: number;\r\n private _originY: number;\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _updateValueFromPointer(x: number, y: number): void {\r\n this._invertTransformMatrix.transformCoordinates(x, y, this._transformedPosition);\r\n x = this._transformedPosition.x;\r\n y = this._transformedPosition.y;\r\n\r\n const sign = this._invertScrollDirection ? -1 : 1;\r\n\r\n if (this._first) {\r\n this._first = false;\r\n this._originX = x;\r\n this._originY = y;\r\n\r\n // Check if move is required\r\n if (\r\n x < this._tempMeasure.left ||\r\n x > this._tempMeasure.left + this._tempMeasure.width ||\r\n y < this._tempMeasure.top ||\r\n y > this._tempMeasure.top + this._tempMeasure.height\r\n ) {\r\n if (this.isVertical) {\r\n this.value = this.minimum + (1 - (y - this._currentMeasure.top) / this._currentMeasure.height) * (this.maximum - this.minimum);\r\n } else {\r\n this.value = this.minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this.maximum - this.minimum);\r\n }\r\n }\r\n }\r\n\r\n // Delta mode\r\n let delta: number;\r\n if (this.isVertical) {\r\n delta = -((y - this._originY) / (this._currentMeasure.height - this._effectiveThumbThickness));\r\n } else {\r\n delta = (x - this._originX) / (this._currentMeasure.width - this._effectiveThumbThickness);\r\n }\r\n\r\n this.value += sign * delta * (this.maximum - this.minimum);\r\n\r\n this._originX = x;\r\n this._originY = y;\r\n }\r\n\r\n public override _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n this._first = true;\r\n\r\n return super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi);\r\n }\r\n}\r\n"]}
|
|
@@ -73,11 +73,11 @@ let ScrollBar = (() => {
|
|
|
73
73
|
}
|
|
74
74
|
_getThumbThickness() {
|
|
75
75
|
let thumbThickness;
|
|
76
|
-
if (this._thumbWidth.
|
|
77
|
-
thumbThickness = this.
|
|
76
|
+
if (!this._thumbWidth.isPercentage) {
|
|
77
|
+
thumbThickness = this._getValueInPixel(this._thumbWidth, 1);
|
|
78
78
|
}
|
|
79
79
|
else {
|
|
80
|
-
thumbThickness = this._backgroundBoxThickness * this.
|
|
80
|
+
thumbThickness = this._backgroundBoxThickness * this._getValueInPixel(this._thumbWidth, 1);
|
|
81
81
|
}
|
|
82
82
|
return thumbThickness;
|
|
83
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollBar.pure.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/2D/controls/sliders/scrollBar.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Vector2 } from \"core/Maths/math.vector.pure\";\r\nimport { BaseSlider } from \"./baseSlider\";\r\nimport { type Control } from \"../control.pure\";\r\nimport { Measure } from \"../../measure\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\nimport { type Nullable } from \"core/types\";\r\nimport { type BaseGradient } from \"../gradient/BaseGradient\";\r\nimport { type AdvancedDynamicTexture } from \"gui/2D/advancedDynamicTexture\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\n\r\n/**\r\n * Class used to create slider controls\r\n */\r\nexport class ScrollBar extends BaseSlider {\r\n private _background = \"black\";\r\n private _borderColor = \"white\";\r\n private _tempMeasure = new Measure(0, 0, 0, 0);\r\n private _invertScrollDirection = false;\r\n private _backgroundGradient: Nullable<BaseGradient> = null;\r\n\r\n /** Gets or sets border color */\r\n @serialize()\r\n public get borderColor(): string {\r\n return this._borderColor;\r\n }\r\n\r\n public set borderColor(value: string) {\r\n if (this._borderColor === value) {\r\n return;\r\n }\r\n\r\n this._borderColor = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background color */\r\n @serialize()\r\n public get background(): string {\r\n return this._background;\r\n }\r\n\r\n public set background(value: string) {\r\n if (this._background === value) {\r\n return;\r\n }\r\n\r\n this._background = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background gradient. Takes precedence over gradient. */\r\n public get backgroundGradient(): Nullable<BaseGradient> {\r\n return this._backgroundGradient;\r\n }\r\n\r\n public set backgroundGradient(value: Nullable<BaseGradient>) {\r\n if (this._backgroundGradient === value) {\r\n return;\r\n }\r\n\r\n this._backgroundGradient = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Inverts the scrolling direction (default: false) */\r\n @serialize()\r\n public get invertScrollDirection() {\r\n return this._invertScrollDirection;\r\n }\r\n\r\n public set invertScrollDirection(invert: boolean) {\r\n this._invertScrollDirection = invert;\r\n }\r\n\r\n /**\r\n * Creates a new Slider\r\n * @param name defines the control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"Scrollbar\";\r\n }\r\n\r\n protected override _getThumbThickness(): number {\r\n let thumbThickness: number;\r\n if (this._thumbWidth.isPixel) {\r\n thumbThickness = this._thumbWidth.getValue(this._host);\r\n } else {\r\n thumbThickness = this._backgroundBoxThickness * this._thumbWidth.getValue(this._host);\r\n }\r\n return thumbThickness;\r\n }\r\n\r\n private _getBackgroundColor(context: ICanvasRenderingContext) {\r\n return this._backgroundGradient ? this._backgroundGradient.getCanvasGradient(context) : this._background;\r\n }\r\n\r\n public override _draw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n this._applyStates(context);\r\n this._prepareRenderingData(\"rectangle\");\r\n const left = this._renderLeft;\r\n\r\n const thumbPosition = this._getThumbPosition();\r\n context.fillStyle = this._getBackgroundColor(context);\r\n\r\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n\r\n // Value bar\r\n context.fillStyle = this._getColor(context);\r\n\r\n // Thumb\r\n if (this.isVertical) {\r\n this._tempMeasure.left = left - this._effectiveBarOffset;\r\n this._tempMeasure.top = this._currentMeasure.top + thumbPosition;\r\n this._tempMeasure.width = this._currentMeasure.width;\r\n this._tempMeasure.height = this._effectiveThumbThickness;\r\n } else {\r\n this._tempMeasure.left = this._currentMeasure.left + thumbPosition;\r\n this._tempMeasure.top = this._currentMeasure.top;\r\n this._tempMeasure.width = this._effectiveThumbThickness;\r\n this._tempMeasure.height = this._currentMeasure.height;\r\n }\r\n\r\n context.fillRect(this._tempMeasure.left, this._tempMeasure.top, this._tempMeasure.width, this._tempMeasure.height);\r\n\r\n context.restore();\r\n }\r\n\r\n private _first: boolean;\r\n private _originX: number;\r\n private _originY: number;\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _updateValueFromPointer(x: number, y: number): void {\r\n this._invertTransformMatrix.transformCoordinates(x, y, this._transformedPosition);\r\n x = this._transformedPosition.x;\r\n y = this._transformedPosition.y;\r\n\r\n const sign = this._invertScrollDirection ? -1 : 1;\r\n\r\n if (this._first) {\r\n this._first = false;\r\n this._originX = x;\r\n this._originY = y;\r\n\r\n // Check if move is required\r\n if (\r\n x < this._tempMeasure.left ||\r\n x > this._tempMeasure.left + this._tempMeasure.width ||\r\n y < this._tempMeasure.top ||\r\n y > this._tempMeasure.top + this._tempMeasure.height\r\n ) {\r\n if (this.isVertical) {\r\n this.value = this.minimum + (1 - (y - this._currentMeasure.top) / this._currentMeasure.height) * (this.maximum - this.minimum);\r\n } else {\r\n this.value = this.minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this.maximum - this.minimum);\r\n }\r\n }\r\n }\r\n\r\n // Delta mode\r\n let delta: number;\r\n if (this.isVertical) {\r\n delta = -((y - this._originY) / (this._currentMeasure.height - this._effectiveThumbThickness));\r\n } else {\r\n delta = (x - this._originX) / (this._currentMeasure.width - this._effectiveThumbThickness);\r\n }\r\n\r\n this.value += sign * delta * (this.maximum - this.minimum);\r\n\r\n this._originX = x;\r\n this._originY = y;\r\n }\r\n\r\n public override _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n this._first = true;\r\n\r\n return super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi);\r\n }\r\n\r\n public override serialize(serializationObject: any) {\r\n super.serialize(serializationObject);\r\n\r\n if (this.backgroundGradient) {\r\n serializationObject.backgroundGradient = {};\r\n this.backgroundGradient.serialize(serializationObject.backgroundGradient);\r\n }\r\n }\r\n\r\n public override _parseFromContent(serializationObject: any, host: AdvancedDynamicTexture) {\r\n super._parseFromContent(serializationObject, host);\r\n\r\n if (serializationObject.backgroundGradient) {\r\n const className = Tools.Instantiate(\"BABYLON.GUI.\" + serializationObject.backgroundGradient.className);\r\n this.backgroundGradient = new className();\r\n this.backgroundGradient!.parse(serializationObject.backgroundGradient);\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the ScrollBar class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterScrollBar(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.Scrollbar\", ScrollBar);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"scrollBar.pure.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/2D/controls/sliders/scrollBar.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Vector2 } from \"core/Maths/math.vector.pure\";\r\nimport { BaseSlider } from \"./baseSlider\";\r\nimport { type Control } from \"../control.pure\";\r\nimport { Measure } from \"../../measure\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\nimport { type Nullable } from \"core/types\";\r\nimport { type BaseGradient } from \"../gradient/BaseGradient\";\r\nimport { type AdvancedDynamicTexture } from \"gui/2D/advancedDynamicTexture\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\n\r\n/**\r\n * Class used to create slider controls\r\n */\r\nexport class ScrollBar extends BaseSlider {\r\n private _background = \"black\";\r\n private _borderColor = \"white\";\r\n private _tempMeasure = new Measure(0, 0, 0, 0);\r\n private _invertScrollDirection = false;\r\n private _backgroundGradient: Nullable<BaseGradient> = null;\r\n\r\n /** Gets or sets border color */\r\n @serialize()\r\n public get borderColor(): string {\r\n return this._borderColor;\r\n }\r\n\r\n public set borderColor(value: string) {\r\n if (this._borderColor === value) {\r\n return;\r\n }\r\n\r\n this._borderColor = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background color */\r\n @serialize()\r\n public get background(): string {\r\n return this._background;\r\n }\r\n\r\n public set background(value: string) {\r\n if (this._background === value) {\r\n return;\r\n }\r\n\r\n this._background = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background gradient. Takes precedence over gradient. */\r\n public get backgroundGradient(): Nullable<BaseGradient> {\r\n return this._backgroundGradient;\r\n }\r\n\r\n public set backgroundGradient(value: Nullable<BaseGradient>) {\r\n if (this._backgroundGradient === value) {\r\n return;\r\n }\r\n\r\n this._backgroundGradient = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Inverts the scrolling direction (default: false) */\r\n @serialize()\r\n public get invertScrollDirection() {\r\n return this._invertScrollDirection;\r\n }\r\n\r\n public set invertScrollDirection(invert: boolean) {\r\n this._invertScrollDirection = invert;\r\n }\r\n\r\n /**\r\n * Creates a new Slider\r\n * @param name defines the control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"Scrollbar\";\r\n }\r\n\r\n protected override _getThumbThickness(): number {\r\n let thumbThickness: number;\r\n if (!this._thumbWidth.isPercentage) {\r\n thumbThickness = this._getValueInPixel(this._thumbWidth, 1);\r\n } else {\r\n thumbThickness = this._backgroundBoxThickness * this._getValueInPixel(this._thumbWidth, 1);\r\n }\r\n return thumbThickness;\r\n }\r\n\r\n private _getBackgroundColor(context: ICanvasRenderingContext) {\r\n return this._backgroundGradient ? this._backgroundGradient.getCanvasGradient(context) : this._background;\r\n }\r\n\r\n public override _draw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n this._applyStates(context);\r\n this._prepareRenderingData(\"rectangle\");\r\n const left = this._renderLeft;\r\n\r\n const thumbPosition = this._getThumbPosition();\r\n context.fillStyle = this._getBackgroundColor(context);\r\n\r\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n\r\n // Value bar\r\n context.fillStyle = this._getColor(context);\r\n\r\n // Thumb\r\n if (this.isVertical) {\r\n this._tempMeasure.left = left - this._effectiveBarOffset;\r\n this._tempMeasure.top = this._currentMeasure.top + thumbPosition;\r\n this._tempMeasure.width = this._currentMeasure.width;\r\n this._tempMeasure.height = this._effectiveThumbThickness;\r\n } else {\r\n this._tempMeasure.left = this._currentMeasure.left + thumbPosition;\r\n this._tempMeasure.top = this._currentMeasure.top;\r\n this._tempMeasure.width = this._effectiveThumbThickness;\r\n this._tempMeasure.height = this._currentMeasure.height;\r\n }\r\n\r\n context.fillRect(this._tempMeasure.left, this._tempMeasure.top, this._tempMeasure.width, this._tempMeasure.height);\r\n\r\n context.restore();\r\n }\r\n\r\n private _first: boolean;\r\n private _originX: number;\r\n private _originY: number;\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _updateValueFromPointer(x: number, y: number): void {\r\n this._invertTransformMatrix.transformCoordinates(x, y, this._transformedPosition);\r\n x = this._transformedPosition.x;\r\n y = this._transformedPosition.y;\r\n\r\n const sign = this._invertScrollDirection ? -1 : 1;\r\n\r\n if (this._first) {\r\n this._first = false;\r\n this._originX = x;\r\n this._originY = y;\r\n\r\n // Check if move is required\r\n if (\r\n x < this._tempMeasure.left ||\r\n x > this._tempMeasure.left + this._tempMeasure.width ||\r\n y < this._tempMeasure.top ||\r\n y > this._tempMeasure.top + this._tempMeasure.height\r\n ) {\r\n if (this.isVertical) {\r\n this.value = this.minimum + (1 - (y - this._currentMeasure.top) / this._currentMeasure.height) * (this.maximum - this.minimum);\r\n } else {\r\n this.value = this.minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this.maximum - this.minimum);\r\n }\r\n }\r\n }\r\n\r\n // Delta mode\r\n let delta: number;\r\n if (this.isVertical) {\r\n delta = -((y - this._originY) / (this._currentMeasure.height - this._effectiveThumbThickness));\r\n } else {\r\n delta = (x - this._originX) / (this._currentMeasure.width - this._effectiveThumbThickness);\r\n }\r\n\r\n this.value += sign * delta * (this.maximum - this.minimum);\r\n\r\n this._originX = x;\r\n this._originY = y;\r\n }\r\n\r\n public override _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n this._first = true;\r\n\r\n return super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi);\r\n }\r\n\r\n public override serialize(serializationObject: any) {\r\n super.serialize(serializationObject);\r\n\r\n if (this.backgroundGradient) {\r\n serializationObject.backgroundGradient = {};\r\n this.backgroundGradient.serialize(serializationObject.backgroundGradient);\r\n }\r\n }\r\n\r\n public override _parseFromContent(serializationObject: any, host: AdvancedDynamicTexture) {\r\n super._parseFromContent(serializationObject, host);\r\n\r\n if (serializationObject.backgroundGradient) {\r\n const className = Tools.Instantiate(\"BABYLON.GUI.\" + serializationObject.backgroundGradient.className);\r\n this.backgroundGradient = new className();\r\n this.backgroundGradient!.parse(serializationObject.backgroundGradient);\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the ScrollBar class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterScrollBar(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.Scrollbar\", ScrollBar);\r\n}\r\n"]}
|
|
@@ -215,7 +215,7 @@ let StackPanel = (() => {
|
|
|
215
215
|
}
|
|
216
216
|
return true;
|
|
217
217
|
}
|
|
218
|
-
return this.getDimension(dim).
|
|
218
|
+
return !this.getDimension(dim).isPercentage || this._getAdaptDimTo(dim);
|
|
219
219
|
}
|
|
220
220
|
/**
|
|
221
221
|
* Serializes the current control
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stackPanel.pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/stackPanel.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { Container } from \"./container.pure\";\r\nimport { type Measure } from \"../measure\";\r\nimport { Control } from \"./control.pure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type AdvancedDynamicTexture } from \"../advancedDynamicTexture\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Class used to create a 2D stack panel container\r\n */\r\nexport class StackPanel extends Container {\r\n private _isVertical = true;\r\n private _manualWidth = false;\r\n private _manualHeight = false;\r\n private _doNotTrackManualChanges = false;\r\n private _spacing = 0;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that layout warnings should be ignored\r\n */\r\n @serialize()\r\n public ignoreLayoutWarnings = false;\r\n\r\n /** Gets or sets a boolean indicating if the stack panel is vertical or horizontal*/\r\n @serialize()\r\n public get isVertical(): boolean {\r\n return this._isVertical;\r\n }\r\n\r\n public set isVertical(value: boolean) {\r\n if (this._isVertical === value) {\r\n return;\r\n }\r\n\r\n this._isVertical = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets the spacing (in pixels) between each child.\r\n */\r\n @serialize()\r\n public get spacing(): number {\r\n return this._spacing;\r\n }\r\n\r\n public set spacing(value: number) {\r\n if (this._spacing === value) {\r\n return;\r\n }\r\n\r\n this._spacing = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets panel width.\r\n * This value should not be set when in horizontal mode as it will be computed automatically\r\n */\r\n @serialize()\r\n public override set width(value: string | number) {\r\n if (!this._doNotTrackManualChanges) {\r\n this._manualWidth = true;\r\n }\r\n\r\n if (this._width.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._width.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n public override get width(): string | number {\r\n return this._width.toString(this._host);\r\n }\r\n\r\n /**\r\n * Gets or sets panel height.\r\n * This value should not be set when in vertical mode as it will be computed automatically\r\n */\r\n @serialize()\r\n public override set height(value: string | number) {\r\n if (!this._doNotTrackManualChanges) {\r\n this._manualHeight = true;\r\n }\r\n\r\n if (this._height.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._height.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n public override get height(): string | number {\r\n return this._height.toString(this._host);\r\n }\r\n\r\n /**\r\n * Creates a new StackPanel\r\n * @param name defines control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"StackPanel\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _preMeasure(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n for (const child of this._children) {\r\n if (this._isVertical) {\r\n child.verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP;\r\n } else {\r\n child.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n }\r\n }\r\n\r\n super._preMeasure(parentMeasure, context);\r\n }\r\n\r\n protected override _additionalProcessing(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n super._additionalProcessing(parentMeasure, context);\r\n\r\n this._measureForChildren.copyFrom(parentMeasure);\r\n\r\n this._measureForChildren.left = this._currentMeasure.left;\r\n this._measureForChildren.top = this._currentMeasure.top;\r\n\r\n if (!this.isVertical || this._manualWidth) {\r\n this._measureForChildren.width = this._currentMeasure.width;\r\n }\r\n\r\n if (this.isVertical || this._manualHeight) {\r\n this._measureForChildren.height = this._currentMeasure.height;\r\n }\r\n }\r\n\r\n protected override _postMeasure(): void {\r\n let stackWidth = 0;\r\n let stackHeight = 0;\r\n const childrenCount = this._children.length;\r\n\r\n // Calculate scaled spacing using idealRatio (same pattern as shadowOffset)\r\n const scaledSpacing = this._spacing * this._host.idealRatio;\r\n\r\n for (let index = 0; index < childrenCount; index++) {\r\n const child = this._children[index];\r\n if (!child.isVisible || child.notRenderable) {\r\n continue;\r\n }\r\n\r\n if (this._isVertical) {\r\n const top = stackHeight + \"px\";\r\n if (child.top !== top) {\r\n child.top = top;\r\n this._rebuildLayout = true;\r\n child._top.ignoreAdaptiveScaling = true;\r\n }\r\n\r\n if (!this.ignoreLayoutWarnings && !child.isDimensionFullyDefined(\"height\")) {\r\n Logger.Warn(`Control (Name:${child.name}, UniqueId:${child.uniqueId}) is using height in percentage mode inside a vertical StackPanel`, 1);\r\n } else {\r\n stackHeight += child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels + (index < childrenCount - 1 ? scaledSpacing : 0);\r\n }\r\n } else {\r\n const left = stackWidth + \"px\";\r\n if (child.left !== left) {\r\n child.left = left;\r\n this._rebuildLayout = true;\r\n child._left.ignoreAdaptiveScaling = true;\r\n }\r\n\r\n if (!this.ignoreLayoutWarnings && !child.isDimensionFullyDefined(\"width\")) {\r\n Logger.Warn(`Control (Name:${child.name}, UniqueId:${child.uniqueId}) is using width in percentage mode inside a horizontal StackPanel`, 1);\r\n } else {\r\n stackWidth += child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels + (index < childrenCount - 1 ? scaledSpacing : 0);\r\n }\r\n }\r\n }\r\n\r\n stackWidth += this._paddingLeftInPixels + this._paddingRightInPixels;\r\n stackHeight += this._paddingTopInPixels + this._paddingBottomInPixels;\r\n\r\n this._doNotTrackManualChanges = true;\r\n\r\n // Let stack panel width or height default to stackHeight and stackWidth if dimensions are not specified.\r\n // User can now define their own height and width for stack panel.\r\n\r\n let panelWidthChanged = false;\r\n let panelHeightChanged = false;\r\n\r\n if ((!this._manualHeight || this.adaptHeightToChildren) && this._isVertical) {\r\n // do not specify height if strictly defined by user\r\n const previousHeight = this.height;\r\n this.height = stackHeight + \"px\";\r\n panelHeightChanged = previousHeight !== this.height || !this._height.ignoreAdaptiveScaling;\r\n }\r\n if ((!this._manualWidth || this.adaptWidthToChildren) && !this._isVertical) {\r\n // do not specify width if strictly defined by user\r\n const previousWidth = this.width;\r\n this.width = stackWidth + \"px\";\r\n panelWidthChanged = previousWidth !== this.width || !this._width.ignoreAdaptiveScaling;\r\n }\r\n\r\n if (panelHeightChanged) {\r\n this._height.ignoreAdaptiveScaling = true;\r\n }\r\n\r\n if (panelWidthChanged) {\r\n this._width.ignoreAdaptiveScaling = true;\r\n }\r\n\r\n this._doNotTrackManualChanges = false;\r\n\r\n if (panelWidthChanged || panelHeightChanged) {\r\n this._rebuildLayout = true;\r\n }\r\n\r\n super._postMeasure();\r\n }\r\n\r\n private _getManualDim(dim: \"width\" | \"height\") {\r\n if (dim === \"width\") {\r\n return this._manualWidth;\r\n } else {\r\n return this._manualHeight;\r\n }\r\n }\r\n\r\n public override isDimensionFullyDefined(dim: \"width\" | \"height\"): boolean {\r\n if (dim === \"height\" ? this.isVertical : !this.isVertical && !this._getManualDim(dim)) {\r\n for (const child of this._children) {\r\n if (!child.isDimensionFullyDefined(dim)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n return this.getDimension(dim).isPixel || this._getAdaptDimTo(dim);\r\n }\r\n\r\n /**\r\n * Serializes the current control\r\n * @param serializationObject defined the JSON serialized object\r\n * @param force force serialization even if isSerializable === false\r\n * @param allowCanvas defines if the control is allowed to use a Canvas2D object to serialize\r\n */\r\n public override serialize(serializationObject: any, force: boolean, allowCanvas: boolean) {\r\n super.serialize(serializationObject, force, allowCanvas);\r\n if (!this.isSerializable && !force) {\r\n return;\r\n }\r\n serializationObject.manualWidth = this._manualWidth;\r\n serializationObject.manualHeight = this._manualHeight;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture) {\r\n this._manualWidth = serializedObject.manualWidth;\r\n this._manualHeight = serializedObject.manualHeight;\r\n\r\n super._parseFromContent(serializedObject, host);\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the StackPanel class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterStackPanel(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.StackPanel\", StackPanel);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"stackPanel.pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/stackPanel.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { Container } from \"./container.pure\";\r\nimport { type Measure } from \"../measure\";\r\nimport { Control } from \"./control.pure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type AdvancedDynamicTexture } from \"../advancedDynamicTexture\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Class used to create a 2D stack panel container\r\n */\r\nexport class StackPanel extends Container {\r\n private _isVertical = true;\r\n private _manualWidth = false;\r\n private _manualHeight = false;\r\n private _doNotTrackManualChanges = false;\r\n private _spacing = 0;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that layout warnings should be ignored\r\n */\r\n @serialize()\r\n public ignoreLayoutWarnings = false;\r\n\r\n /** Gets or sets a boolean indicating if the stack panel is vertical or horizontal*/\r\n @serialize()\r\n public get isVertical(): boolean {\r\n return this._isVertical;\r\n }\r\n\r\n public set isVertical(value: boolean) {\r\n if (this._isVertical === value) {\r\n return;\r\n }\r\n\r\n this._isVertical = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets the spacing (in pixels) between each child.\r\n */\r\n @serialize()\r\n public get spacing(): number {\r\n return this._spacing;\r\n }\r\n\r\n public set spacing(value: number) {\r\n if (this._spacing === value) {\r\n return;\r\n }\r\n\r\n this._spacing = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets panel width.\r\n * This value should not be set when in horizontal mode as it will be computed automatically\r\n */\r\n @serialize()\r\n public override set width(value: string | number) {\r\n if (!this._doNotTrackManualChanges) {\r\n this._manualWidth = true;\r\n }\r\n\r\n if (this._width.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._width.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n public override get width(): string | number {\r\n return this._width.toString(this._host);\r\n }\r\n\r\n /**\r\n * Gets or sets panel height.\r\n * This value should not be set when in vertical mode as it will be computed automatically\r\n */\r\n @serialize()\r\n public override set height(value: string | number) {\r\n if (!this._doNotTrackManualChanges) {\r\n this._manualHeight = true;\r\n }\r\n\r\n if (this._height.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._height.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n public override get height(): string | number {\r\n return this._height.toString(this._host);\r\n }\r\n\r\n /**\r\n * Creates a new StackPanel\r\n * @param name defines control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"StackPanel\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _preMeasure(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n for (const child of this._children) {\r\n if (this._isVertical) {\r\n child.verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP;\r\n } else {\r\n child.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n }\r\n }\r\n\r\n super._preMeasure(parentMeasure, context);\r\n }\r\n\r\n protected override _additionalProcessing(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n super._additionalProcessing(parentMeasure, context);\r\n\r\n this._measureForChildren.copyFrom(parentMeasure);\r\n\r\n this._measureForChildren.left = this._currentMeasure.left;\r\n this._measureForChildren.top = this._currentMeasure.top;\r\n\r\n if (!this.isVertical || this._manualWidth) {\r\n this._measureForChildren.width = this._currentMeasure.width;\r\n }\r\n\r\n if (this.isVertical || this._manualHeight) {\r\n this._measureForChildren.height = this._currentMeasure.height;\r\n }\r\n }\r\n\r\n protected override _postMeasure(): void {\r\n let stackWidth = 0;\r\n let stackHeight = 0;\r\n const childrenCount = this._children.length;\r\n\r\n // Calculate scaled spacing using idealRatio (same pattern as shadowOffset)\r\n const scaledSpacing = this._spacing * this._host.idealRatio;\r\n\r\n for (let index = 0; index < childrenCount; index++) {\r\n const child = this._children[index];\r\n if (!child.isVisible || child.notRenderable) {\r\n continue;\r\n }\r\n\r\n if (this._isVertical) {\r\n const top = stackHeight + \"px\";\r\n if (child.top !== top) {\r\n child.top = top;\r\n this._rebuildLayout = true;\r\n child._top.ignoreAdaptiveScaling = true;\r\n }\r\n\r\n if (!this.ignoreLayoutWarnings && !child.isDimensionFullyDefined(\"height\")) {\r\n Logger.Warn(`Control (Name:${child.name}, UniqueId:${child.uniqueId}) is using height in percentage mode inside a vertical StackPanel`, 1);\r\n } else {\r\n stackHeight += child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels + (index < childrenCount - 1 ? scaledSpacing : 0);\r\n }\r\n } else {\r\n const left = stackWidth + \"px\";\r\n if (child.left !== left) {\r\n child.left = left;\r\n this._rebuildLayout = true;\r\n child._left.ignoreAdaptiveScaling = true;\r\n }\r\n\r\n if (!this.ignoreLayoutWarnings && !child.isDimensionFullyDefined(\"width\")) {\r\n Logger.Warn(`Control (Name:${child.name}, UniqueId:${child.uniqueId}) is using width in percentage mode inside a horizontal StackPanel`, 1);\r\n } else {\r\n stackWidth += child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels + (index < childrenCount - 1 ? scaledSpacing : 0);\r\n }\r\n }\r\n }\r\n\r\n stackWidth += this._paddingLeftInPixels + this._paddingRightInPixels;\r\n stackHeight += this._paddingTopInPixels + this._paddingBottomInPixels;\r\n\r\n this._doNotTrackManualChanges = true;\r\n\r\n // Let stack panel width or height default to stackHeight and stackWidth if dimensions are not specified.\r\n // User can now define their own height and width for stack panel.\r\n\r\n let panelWidthChanged = false;\r\n let panelHeightChanged = false;\r\n\r\n if ((!this._manualHeight || this.adaptHeightToChildren) && this._isVertical) {\r\n // do not specify height if strictly defined by user\r\n const previousHeight = this.height;\r\n this.height = stackHeight + \"px\";\r\n panelHeightChanged = previousHeight !== this.height || !this._height.ignoreAdaptiveScaling;\r\n }\r\n if ((!this._manualWidth || this.adaptWidthToChildren) && !this._isVertical) {\r\n // do not specify width if strictly defined by user\r\n const previousWidth = this.width;\r\n this.width = stackWidth + \"px\";\r\n panelWidthChanged = previousWidth !== this.width || !this._width.ignoreAdaptiveScaling;\r\n }\r\n\r\n if (panelHeightChanged) {\r\n this._height.ignoreAdaptiveScaling = true;\r\n }\r\n\r\n if (panelWidthChanged) {\r\n this._width.ignoreAdaptiveScaling = true;\r\n }\r\n\r\n this._doNotTrackManualChanges = false;\r\n\r\n if (panelWidthChanged || panelHeightChanged) {\r\n this._rebuildLayout = true;\r\n }\r\n\r\n super._postMeasure();\r\n }\r\n\r\n private _getManualDim(dim: \"width\" | \"height\") {\r\n if (dim === \"width\") {\r\n return this._manualWidth;\r\n } else {\r\n return this._manualHeight;\r\n }\r\n }\r\n\r\n public override isDimensionFullyDefined(dim: \"width\" | \"height\"): boolean {\r\n if (dim === \"height\" ? this.isVertical : !this.isVertical && !this._getManualDim(dim)) {\r\n for (const child of this._children) {\r\n if (!child.isDimensionFullyDefined(dim)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n return !this.getDimension(dim).isPercentage || this._getAdaptDimTo(dim);\r\n }\r\n\r\n /**\r\n * Serializes the current control\r\n * @param serializationObject defined the JSON serialized object\r\n * @param force force serialization even if isSerializable === false\r\n * @param allowCanvas defines if the control is allowed to use a Canvas2D object to serialize\r\n */\r\n public override serialize(serializationObject: any, force: boolean, allowCanvas: boolean) {\r\n super.serialize(serializationObject, force, allowCanvas);\r\n if (!this.isSerializable && !force) {\r\n return;\r\n }\r\n serializationObject.manualWidth = this._manualWidth;\r\n serializationObject.manualHeight = this._manualHeight;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture) {\r\n this._manualWidth = serializedObject.manualWidth;\r\n this._manualHeight = serializedObject.manualHeight;\r\n\r\n super._parseFromContent(serializedObject, host);\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the StackPanel class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterStackPanel(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.StackPanel\", StackPanel);\r\n}\r\n"]}
|