@babylonjs/gui 5.0.0-alpha.9 → 5.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/2D/adtInstrumentation.js +1 -1
- package/2D/advancedDynamicTexture.d.ts +165 -125
- package/2D/advancedDynamicTexture.js +347 -183
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/button.d.ts +8 -0
- package/2D/controls/button.js +33 -10
- package/2D/controls/button.js.map +1 -1
- package/2D/controls/checkbox.d.ts +2 -1
- package/2D/controls/checkbox.js +10 -8
- package/2D/controls/checkbox.js.map +1 -1
- package/2D/controls/colorpicker.d.ts +4 -3
- package/2D/controls/colorpicker.js +40 -23
- package/2D/controls/colorpicker.js.map +1 -1
- package/2D/controls/container.d.ts +16 -5
- package/2D/controls/container.js +91 -13
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/control.d.ts +112 -44
- package/2D/controls/control.js +291 -129
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/displayGrid.d.ts +2 -1
- package/2D/controls/displayGrid.js +6 -6
- package/2D/controls/displayGrid.js.map +1 -1
- package/2D/controls/ellipse.d.ts +5 -3
- package/2D/controls/ellipse.js +9 -5
- package/2D/controls/ellipse.js.map +1 -1
- package/2D/controls/focusableButton.d.ts +1 -0
- package/2D/controls/focusableButton.js +9 -6
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/grid.d.ts +13 -2
- package/2D/controls/grid.js +108 -24
- package/2D/controls/grid.js.map +1 -1
- package/2D/controls/image.d.ts +5 -4
- package/2D/controls/image.js +52 -31
- package/2D/controls/image.js.map +1 -1
- package/2D/controls/index.js +29 -29
- package/2D/controls/inputPassword.js +4 -4
- package/2D/controls/inputPassword.js.map +1 -1
- package/2D/controls/inputText.d.ts +2 -1
- package/2D/controls/inputText.js +40 -14
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/line.d.ts +3 -2
- package/2D/controls/line.js +8 -8
- package/2D/controls/line.js.map +1 -1
- package/2D/controls/multiLine.d.ts +4 -3
- package/2D/controls/multiLine.js +6 -6
- package/2D/controls/multiLine.js.map +1 -1
- package/2D/controls/radioButton.d.ts +2 -1
- package/2D/controls/radioButton.js +10 -7
- package/2D/controls/radioButton.js.map +1 -1
- package/2D/controls/rectangle.d.ts +8 -3
- package/2D/controls/rectangle.js +21 -5
- package/2D/controls/rectangle.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -2
- package/2D/controls/scrollViewers/scrollViewer.js +9 -9
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +4 -3
- package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -4
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
- package/2D/controls/selector.js +8 -8
- package/2D/controls/selector.js.map +1 -1
- package/2D/controls/sliders/baseSlider.d.ts +1 -1
- package/2D/controls/sliders/baseSlider.js +12 -10
- package/2D/controls/sliders/baseSlider.js.map +1 -1
- package/2D/controls/sliders/imageBasedSlider.d.ts +10 -1
- package/2D/controls/sliders/imageBasedSlider.js +29 -5
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
- package/2D/controls/sliders/imageScrollBar.d.ts +2 -1
- package/2D/controls/sliders/imageScrollBar.js +3 -3
- package/2D/controls/sliders/imageScrollBar.js.map +1 -1
- package/2D/controls/sliders/scrollBar.d.ts +2 -1
- package/2D/controls/sliders/scrollBar.js +3 -3
- package/2D/controls/sliders/scrollBar.js.map +1 -1
- package/2D/controls/sliders/slider.d.ts +2 -1
- package/2D/controls/sliders/slider.js +4 -4
- package/2D/controls/sliders/slider.js.map +1 -1
- package/2D/controls/stackPanel.d.ts +10 -3
- package/2D/controls/stackPanel.js +35 -13
- package/2D/controls/stackPanel.js.map +1 -1
- package/2D/controls/statics.js +3 -3
- package/2D/controls/statics.js.map +1 -1
- package/2D/controls/textBlock.d.ts +16 -9
- package/2D/controls/textBlock.js +75 -34
- package/2D/controls/textBlock.js.map +1 -1
- package/2D/controls/textWrapper.js +2 -2
- package/2D/controls/textWrapper.js.map +1 -1
- package/2D/controls/toggleButton.d.ts +1 -13
- package/2D/controls/toggleButton.js +29 -38
- package/2D/controls/toggleButton.js.map +1 -1
- package/2D/controls/virtualKeyboard.js +5 -5
- package/2D/controls/virtualKeyboard.js.map +1 -1
- package/2D/index.d.ts +1 -1
- package/2D/index.js +9 -9
- package/2D/index.js.map +1 -1
- package/2D/math2D.d.ts +5 -0
- package/2D/math2D.js +14 -2
- package/2D/math2D.js.map +1 -1
- package/2D/measure.js +1 -1
- package/2D/measure.js.map +1 -1
- package/2D/multiLinePoint.js +3 -3
- package/2D/style.js +2 -2
- package/2D/valueAndUnit.d.ts +21 -6
- package/2D/valueAndUnit.js +57 -13
- package/2D/valueAndUnit.js.map +1 -1
- package/2D/xmlLoader.d.ts +17 -3
- package/2D/xmlLoader.js +54 -15
- package/2D/xmlLoader.js.map +1 -1
- package/3D/behaviors/defaultBehavior.d.ts +73 -0
- package/3D/behaviors/defaultBehavior.js +122 -0
- package/3D/behaviors/defaultBehavior.js.map +1 -0
- package/3D/controls/abstractButton3D.d.ts +2 -2
- package/3D/controls/abstractButton3D.js +3 -3
- package/3D/controls/abstractButton3D.js.map +1 -1
- package/3D/controls/button3D.d.ts +0 -24
- package/3D/controls/button3D.js +15 -84
- package/3D/controls/button3D.js.map +1 -1
- package/3D/controls/container3D.js +2 -2
- package/3D/controls/contentDisplay3D.d.ts +30 -0
- package/3D/controls/contentDisplay3D.js +79 -0
- package/3D/controls/contentDisplay3D.js.map +1 -0
- package/3D/controls/control3D.d.ts +10 -7
- package/3D/controls/control3D.js +27 -19
- package/3D/controls/control3D.js.map +1 -1
- package/3D/controls/cylinderPanel.js +5 -5
- package/3D/controls/handMenu.d.ts +28 -0
- package/3D/controls/handMenu.js +48 -0
- package/3D/controls/handMenu.js.map +1 -0
- package/3D/controls/holographicBackplate.d.ts +48 -0
- package/3D/controls/holographicBackplate.js +121 -0
- package/3D/controls/holographicBackplate.js.map +1 -0
- package/3D/controls/holographicButton.d.ts +1 -1
- package/3D/controls/holographicButton.js +35 -31
- package/3D/controls/holographicButton.js.map +1 -1
- package/3D/controls/holographicSlate.d.ts +118 -0
- package/3D/controls/holographicSlate.js +366 -0
- package/3D/controls/holographicSlate.js.map +1 -0
- package/3D/controls/index.d.ts +6 -0
- package/3D/controls/index.js +21 -15
- package/3D/controls/index.js.map +1 -1
- package/3D/controls/meshButton3D.js +2 -2
- package/3D/controls/meshButton3D.js.map +1 -1
- package/3D/controls/nearMenu.d.ts +44 -0
- package/3D/controls/nearMenu.js +113 -0
- package/3D/controls/nearMenu.js.map +1 -0
- package/3D/controls/planePanel.js +3 -3
- package/3D/controls/scatterPanel.js +4 -4
- package/3D/controls/slider3D.d.ts +80 -0
- package/3D/controls/slider3D.js +268 -0
- package/3D/controls/slider3D.js.map +1 -0
- package/3D/controls/spherePanel.js +5 -5
- package/3D/controls/stackPanel3D.js +3 -3
- package/3D/controls/touchButton3D.d.ts +30 -21
- package/3D/controls/touchButton3D.js +109 -223
- package/3D/controls/touchButton3D.js.map +1 -1
- package/3D/controls/touchHolographicButton.d.ts +23 -2
- package/3D/controls/touchHolographicButton.js +162 -67
- package/3D/controls/touchHolographicButton.js.map +1 -1
- package/3D/controls/touchHolographicMenu.d.ts +61 -0
- package/3D/controls/touchHolographicMenu.js +149 -0
- package/3D/controls/touchHolographicMenu.js.map +1 -0
- package/3D/controls/touchMeshButton3D.d.ts +3 -6
- package/3D/controls/touchMeshButton3D.js +6 -14
- package/3D/controls/touchMeshButton3D.js.map +1 -1
- package/3D/controls/volumeBasedPanel.d.ts +1 -1
- package/3D/controls/volumeBasedPanel.js +5 -5
- package/3D/controls/volumeBasedPanel.js.map +1 -1
- package/3D/gizmos/gizmoHandle.d.ts +108 -0
- package/3D/gizmos/gizmoHandle.js +210 -0
- package/3D/gizmos/gizmoHandle.js.map +1 -0
- package/3D/gizmos/index.d.ts +2 -0
- package/3D/gizmos/index.js +3 -0
- package/3D/gizmos/index.js.map +1 -0
- package/3D/gizmos/slateGizmo.d.ts +59 -0
- package/3D/gizmos/slateGizmo.js +364 -0
- package/3D/gizmos/slateGizmo.js.map +1 -0
- package/3D/gui3DManager.d.ts +15 -2
- package/3D/gui3DManager.js +62 -41
- package/3D/gui3DManager.js.map +1 -1
- package/3D/index.d.ts +3 -2
- package/3D/index.js +5 -4
- package/3D/index.js.map +1 -1
- package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
- package/3D/materials/fluent/fluentMaterial.js +282 -0
- package/3D/materials/fluent/fluentMaterial.js.map +1 -0
- package/3D/materials/fluent/index.d.ts +1 -0
- package/3D/materials/fluent/index.js +2 -0
- package/3D/materials/fluent/index.js.map +1 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
- package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
- package/3D/materials/fluentBackplate/index.d.ts +1 -0
- package/3D/materials/fluentBackplate/index.js +2 -0
- package/3D/materials/fluentBackplate/index.js.map +1 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
- package/3D/materials/fluentButton/index.d.ts +1 -0
- package/3D/materials/fluentButton/index.js +2 -0
- package/3D/materials/fluentButton/index.js.map +1 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
- package/3D/materials/fluentMaterial.d.ts +2 -88
- package/3D/materials/fluentMaterial.js +2 -277
- package/3D/materials/fluentMaterial.js.map +1 -1
- package/3D/materials/handle/handleMaterial.d.ts +68 -0
- package/3D/materials/handle/handleMaterial.js +127 -0
- package/3D/materials/handle/handleMaterial.js.map +1 -0
- package/3D/materials/handle/index.d.ts +1 -0
- package/3D/materials/handle/index.js +2 -0
- package/3D/materials/handle/index.js.map +1 -0
- package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
- package/3D/materials/handle/shaders/handle.fragment.js +7 -0
- package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
- package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
- package/3D/materials/handle/shaders/handle.vertex.js +7 -0
- package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
- package/3D/materials/index.d.ts +5 -1
- package/3D/materials/index.js +5 -1
- package/3D/materials/index.js.map +1 -1
- package/3D/materials/mrdl/index.d.ts +3 -0
- package/3D/materials/mrdl/index.js +4 -0
- package/3D/materials/mrdl/index.js.map +1 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
- package/3D/vector3WithInfo.js +1 -1
- package/index.d.ts +2 -2
- package/index.js +2 -2
- package/index.js.map +1 -1
- package/legacy/legacy.js +2 -2
- package/package.json +114 -9
- package/3D/materials/shaders/fluent.fragment.js +0 -7
- package/3D/materials/shaders/fluent.fragment.js.map +0 -1
- package/3D/materials/shaders/fluent.vertex.js.map +0 -1
package/2D/controls/grid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/grid.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\n\r\nimport { Container } from \"./container\";\r\nimport { ValueAndUnit } from \"../valueAndUnit\";\r\nimport { Control } from \"./control\";\r\nimport { Measure } from \"../measure\";\r\nimport { Tools } from '@babylonjs/core/Misc/tools';\r\nimport { _TypeStore } from '@babylonjs/core/Misc/typeStore';\r\n\r\n/**\r\n * Class used to create a 2D grid container\r\n */\r\nexport class Grid extends Container {\r\n private _rowDefinitions = new Array<ValueAndUnit>();\r\n private _columnDefinitions = new Array<ValueAndUnit>();\r\n private _cells: { [key: string]: Container } = {};\r\n private _childControls = new Array<Control>();\r\n\r\n /**\r\n * Gets the number of columns\r\n */\r\n public get columnCount(): number {\r\n return this._columnDefinitions.length;\r\n }\r\n\r\n /**\r\n * Gets the number of rows\r\n */\r\n public get rowCount(): number {\r\n return this._rowDefinitions.length;\r\n }\r\n\r\n /** Gets the list of children */\r\n public get children(): Control[] {\r\n return this._childControls;\r\n }\r\n\r\n /** Gets the list of cells (e.g. the containers) */\r\n public get cells(): { [key: string]: Container } {\r\n return this._cells;\r\n }\r\n\r\n /**\r\n * Gets the definition of a specific row\r\n * @param index defines the index of the row\r\n * @returns the row definition\r\n */\r\n public getRowDefinition(index: number): Nullable<ValueAndUnit> {\r\n if (index < 0 || index >= this._rowDefinitions.length) {\r\n return null;\r\n }\r\n\r\n return this._rowDefinitions[index];\r\n }\r\n\r\n /**\r\n * Gets the definition of a specific column\r\n * @param index defines the index of the column\r\n * @returns the column definition\r\n */\r\n public getColumnDefinition(index: number): Nullable<ValueAndUnit> {\r\n if (index < 0 || index >= this._columnDefinitions.length) {\r\n return null;\r\n }\r\n\r\n return this._columnDefinitions[index];\r\n }\r\n\r\n /**\r\n * Adds a new row to the grid\r\n * @param height defines the height of the row (either in pixel or a value between 0 and 1)\r\n * @param isPixel defines if the height is expressed in pixel (or in percentage)\r\n * @returns the current grid\r\n */\r\n public addRowDefinition(height: number, isPixel = false): Grid {\r\n this._rowDefinitions.push(new ValueAndUnit(height, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE));\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a new column to the grid\r\n * @param width defines the width of the column (either in pixel or a value between 0 and 1)\r\n * @param isPixel defines if the width is expressed in pixel (or in percentage)\r\n * @returns the current grid\r\n */\r\n public addColumnDefinition(width: number, isPixel = false): Grid {\r\n this._columnDefinitions.push(new ValueAndUnit(width, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE));\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update a row definition\r\n * @param index defines the index of the row to update\r\n * @param height defines the height of the row (either in pixel or a value between 0 and 1)\r\n * @param isPixel defines if the weight is expressed in pixel (or in percentage)\r\n * @returns the current grid\r\n */\r\n public setRowDefinition(index: number, height: number, isPixel = false): Grid {\r\n if (index < 0 || index >= this._rowDefinitions.length) {\r\n return this;\r\n }\r\n\r\n let current = this._rowDefinitions[index];\r\n if (current && current.isPixel === isPixel && current.internalValue === height) {\r\n return this;\r\n }\r\n\r\n this._rowDefinitions[index] = new ValueAndUnit(height, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE);\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update a column definition\r\n * @param index defines the index of the column to update\r\n * @param width defines the width of the column (either in pixel or a value between 0 and 1)\r\n * @param isPixel defines if the width is expressed in pixel (or in percentage)\r\n * @returns the current grid\r\n */\r\n public setColumnDefinition(index: number, width: number, isPixel = false): Grid {\r\n if (index < 0 || index >= this._columnDefinitions.length) {\r\n return this;\r\n }\r\n\r\n let current = this._columnDefinitions[index];\r\n if (current && current.isPixel === isPixel && current.internalValue === width) {\r\n return this;\r\n }\r\n\r\n this._columnDefinitions[index] = new ValueAndUnit(width, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE);\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the list of children stored in a specific cell\r\n * @param row defines the row to check\r\n * @param column defines the column to check\r\n * @returns the list of controls\r\n */\r\n public getChildrenAt(row: number, column: number): Nullable<Array<Control>> {\r\n const cell = this._cells[`${row}:${column}`];\r\n\r\n if (!cell) {\r\n return null;\r\n }\r\n\r\n return cell.children;\r\n }\r\n\r\n /**\r\n * Gets a string representing the child cell info (row x column)\r\n * @param child defines the control to get info from\r\n * @returns a string containing the child cell info (row x column)\r\n */\r\n public getChildCellInfo(child: Control): string {\r\n return child._tag;\r\n }\r\n\r\n private _removeCell(cell: Container, key: string) {\r\n if (!cell) {\r\n return;\r\n }\r\n\r\n super.removeControl(cell);\r\n\r\n for (var control of cell.children) {\r\n let childIndex = this._childControls.indexOf(control);\r\n\r\n if (childIndex !== -1) {\r\n this._childControls.splice(childIndex, 1);\r\n }\r\n }\r\n\r\n delete this._cells[key];\r\n }\r\n\r\n private _offsetCell(previousKey: string, key: string) {\r\n if (!this._cells[key]) {\r\n return;\r\n }\r\n\r\n this._cells[previousKey] = this._cells[key];\r\n\r\n for (var control of this._cells[previousKey].children) {\r\n control._tag = previousKey;\r\n }\r\n\r\n delete this._cells[key];\r\n }\r\n\r\n /**\r\n * Remove a column definition at specified index\r\n * @param index defines the index of the column to remove\r\n * @returns the current grid\r\n */\r\n public removeColumnDefinition(index: number): Grid {\r\n if (index < 0 || index >= this._columnDefinitions.length) {\r\n return this;\r\n }\r\n\r\n for (var x = 0; x < this._rowDefinitions.length; x++) {\r\n let key = `${x}:${index}`;\r\n let cell = this._cells[key];\r\n\r\n this._removeCell(cell, key);\r\n }\r\n\r\n for (var x = 0; x < this._rowDefinitions.length; x++) {\r\n for (var y = index + 1; y < this._columnDefinitions.length; y++) {\r\n let previousKey = `${x}:${y - 1}`;\r\n let key = `${x}:${y}`;\r\n\r\n this._offsetCell(previousKey, key);\r\n }\r\n }\r\n\r\n this._columnDefinitions.splice(index, 1);\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove a row definition at specified index\r\n * @param index defines the index of the row to remove\r\n * @returns the current grid\r\n */\r\n public removeRowDefinition(index: number): Grid {\r\n if (index < 0 || index >= this._rowDefinitions.length) {\r\n return this;\r\n }\r\n\r\n for (var y = 0; y < this._columnDefinitions.length; y++) {\r\n let key = `${index}:${y}`;\r\n let cell = this._cells[key];\r\n\r\n this._removeCell(cell, key);\r\n }\r\n\r\n for (var y = 0; y < this._columnDefinitions.length; y++) {\r\n for (var x = index + 1; x < this._rowDefinitions.length; x++) {\r\n let previousKey = `${x - 1}:${y}`;\r\n let key = `${x}:${y}`;\r\n\r\n this._offsetCell(previousKey, key);\r\n }\r\n }\r\n\r\n this._rowDefinitions.splice(index, 1);\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a new control to the current grid\r\n * @param control defines the control to add\r\n * @param row defines the row where to add the control (0 by default)\r\n * @param column defines the column where to add the control (0 by default)\r\n * @returns the current grid\r\n */\r\n public addControl(control: Control, row: number = 0, column: number = 0): Grid {\r\n if (this._rowDefinitions.length === 0) {\r\n // Add default row definition\r\n this.addRowDefinition(1, false);\r\n }\r\n\r\n if (this._columnDefinitions.length === 0) {\r\n // Add default column definition\r\n this.addColumnDefinition(1, false);\r\n }\r\n\r\n if (this._childControls.indexOf(control) !== -1) {\r\n Tools.Warn(`Control (Name:${control.name}, UniqueId:${control.uniqueId}) is already associated with this grid. You must remove it before reattaching it`);\r\n return this;\r\n }\r\n\r\n let x = Math.min(row, this._rowDefinitions.length - 1);\r\n let y = Math.min(column, this._columnDefinitions.length - 1);\r\n let key = `${x}:${y}`;\r\n let goodContainer = this._cells[key];\r\n\r\n if (!goodContainer) {\r\n goodContainer = new Container(key);\r\n this._cells[key] = goodContainer;\r\n goodContainer.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n goodContainer.verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP;\r\n super.addControl(goodContainer);\r\n }\r\n\r\n goodContainer.addControl(control);\r\n this._childControls.push(control);\r\n control._tag = key;\r\n control.parent = this;\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the current container\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control): Container {\r\n var index = this._childControls.indexOf(control);\r\n\r\n if (index !== -1) {\r\n this._childControls.splice(index, 1);\r\n }\r\n\r\n let cell = this._cells[control._tag];\r\n\r\n if (cell) {\r\n cell.removeControl(control);\r\n control._tag = null;\r\n }\r\n\r\n this._markAsDirty();\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates a new Grid\r\n * @param name defines control name\r\n */\r\n constructor(public name?: string) {\r\n super(name);\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Grid\";\r\n }\r\n\r\n protected _getGridDefinitions(definitionCallback: (lefts: number[], tops: number[], widths: number[], heights: number[]) => void) {\r\n let widths = [];\r\n let heights = [];\r\n let lefts = [];\r\n let tops = [];\r\n\r\n let availableWidth = this._currentMeasure.width;\r\n let globalWidthPercentage = 0;\r\n let availableHeight = this._currentMeasure.height;\r\n let globalHeightPercentage = 0;\r\n\r\n // Heights\r\n let index = 0;\r\n for (var value of this._rowDefinitions) {\r\n if (value.isPixel) {\r\n let height = value.getValue(this._host);\r\n availableHeight -= height;\r\n heights[index] = height;\r\n } else {\r\n globalHeightPercentage += value.internalValue;\r\n }\r\n index++;\r\n }\r\n\r\n let top = 0;\r\n index = 0;\r\n for (var value of this._rowDefinitions) {\r\n tops.push(top);\r\n\r\n if (!value.isPixel) {\r\n let height = (value.internalValue / globalHeightPercentage) * availableHeight;\r\n top += height;\r\n heights[index] = height;\r\n } else {\r\n top += value.getValue(this._host);\r\n }\r\n index++;\r\n }\r\n\r\n // Widths\r\n index = 0;\r\n for (var value of this._columnDefinitions) {\r\n if (value.isPixel) {\r\n let width = value.getValue(this._host);\r\n availableWidth -= width;\r\n widths[index] = width;\r\n } else {\r\n globalWidthPercentage += value.internalValue;\r\n }\r\n index++;\r\n }\r\n\r\n let left = 0;\r\n index = 0;\r\n for (var value of this._columnDefinitions) {\r\n lefts.push(left);\r\n if (!value.isPixel) {\r\n let width = (value.internalValue / globalWidthPercentage) * availableWidth;\r\n left += width;\r\n widths[index] = width;\r\n } else {\r\n left += value.getValue(this._host);\r\n }\r\n index++;\r\n }\r\n\r\n definitionCallback(lefts, tops, widths, heights);\r\n }\r\n\r\n protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void {\r\n this._getGridDefinitions((lefts: number[], tops: number[], widths: number[], heights: number[]) => {\r\n // Setting child sizes\r\n for (var key in this._cells) {\r\n if (!this._cells.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n let split = key.split(\":\");\r\n let x = parseInt(split[0]);\r\n let y = parseInt(split[1]);\r\n let cell = this._cells[key];\r\n\r\n cell.left = lefts[y] + \"px\";\r\n cell.top = tops[x] + \"px\";\r\n cell.width = widths[y] + \"px\";\r\n cell.height = heights[x] + \"px\";\r\n cell._left.ignoreAdaptiveScaling = true;\r\n cell._top.ignoreAdaptiveScaling = true;\r\n cell._width.ignoreAdaptiveScaling = true;\r\n cell._height.ignoreAdaptiveScaling = true;\r\n }\r\n });\r\n\r\n super._additionalProcessing(parentMeasure, context);\r\n }\r\n\r\n public _flagDescendantsAsMatrixDirty(): void {\r\n for (var key in this._cells) {\r\n if (!this._cells.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n\r\n let child = this._cells[key];\r\n child._markMatrixAsDirty();\r\n }\r\n }\r\n\r\n public _renderHighlightSpecific(context: CanvasRenderingContext2D): void {\r\n super._renderHighlightSpecific(context);\r\n\r\n this._getGridDefinitions((lefts: number[], tops: number[], widths: number[], heights: number[]) => {\r\n\r\n // Columns\r\n for (var index = 0; index < lefts.length; index++) {\r\n const left = this._currentMeasure.left + lefts[index] + widths[index];\r\n context.beginPath();\r\n context.moveTo(left, this._currentMeasure.top);\r\n context.lineTo(left, this._currentMeasure.top + this._currentMeasure.height);\r\n context.stroke();\r\n }\r\n\r\n // Rows\r\n for (var index = 0; index < tops.length; index++) {\r\n const top = this._currentMeasure.top + tops[index] + heights[index];\r\n context.beginPath();\r\n context.moveTo(this._currentMeasure.left, top);\r\n context.lineTo(this._currentMeasure.left + this._currentMeasure.width, top);\r\n context.stroke();\r\n }\r\n });\r\n\r\n context.restore();\r\n }\r\n\r\n /** Releases associated resources */\r\n public dispose() {\r\n super.dispose();\r\n\r\n for (var control of this._childControls) {\r\n control.dispose();\r\n }\r\n\r\n this._childControls = [];\r\n }\r\n}\r\n_TypeStore.RegisteredTypes[\"BABYLON.GUI.Grid\"] = Grid;"]}
|
|
1
|
+
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/grid.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\n\r\nimport { Container } from \"./container\";\r\nimport { ValueAndUnit } from \"../valueAndUnit\";\r\nimport { Control } from \"./control\";\r\nimport { Measure } from \"../measure\";\r\nimport { Tools } from '@babylonjs/core/Misc/tools';\r\nimport { RegisterClass } from '@babylonjs/core/Misc/typeStore';\r\nimport { ICanvasRenderingContext } from \"@babylonjs/core/Engines/ICanvas\";\r\nimport { AdvancedDynamicTexture } from \"../advancedDynamicTexture\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\n\r\n/**\r\n * Class used to create a 2D grid container\r\n */\r\nexport class Grid extends Container {\r\n private _rowDefinitions = new Array<ValueAndUnit>();\r\n private _rowDefinitionObservers: Observer<void>[] = [];\r\n private _columnDefinitions = new Array<ValueAndUnit>();\r\n private _columnDefinitionObservers: Observer<void>[] = [];\r\n private _cells: { [key: string]: Container } = {};\r\n private _childControls = new Array<Control>();\r\n\r\n /**\r\n * Gets the number of columns\r\n */\r\n public get columnCount(): number {\r\n return this._columnDefinitions.length;\r\n }\r\n\r\n /**\r\n * Gets the number of rows\r\n */\r\n public get rowCount(): number {\r\n return this._rowDefinitions.length;\r\n }\r\n\r\n /** Gets the list of children */\r\n public get children(): Control[] {\r\n return this._childControls;\r\n }\r\n\r\n /** Gets the list of cells (e.g. the containers) */\r\n public get cells(): { [key: string]: Container } {\r\n return this._cells;\r\n }\r\n\r\n /**\r\n * Gets the definition of a specific row\r\n * @param index defines the index of the row\r\n * @returns the row definition\r\n */\r\n public getRowDefinition(index: number): Nullable<ValueAndUnit> {\r\n if (index < 0 || index >= this._rowDefinitions.length) {\r\n return null;\r\n }\r\n\r\n return this._rowDefinitions[index];\r\n }\r\n\r\n /**\r\n * Gets the definition of a specific column\r\n * @param index defines the index of the column\r\n * @returns the column definition\r\n */\r\n public getColumnDefinition(index: number): Nullable<ValueAndUnit> {\r\n if (index < 0 || index >= this._columnDefinitions.length) {\r\n return null;\r\n }\r\n\r\n return this._columnDefinitions[index];\r\n }\r\n\r\n /**\r\n * Adds a new row to the grid\r\n * @param height defines the height of the row (either in pixel or a value between 0 and 1)\r\n * @param isPixel defines if the height is expressed in pixel (or in percentage)\r\n * @returns the current grid\r\n */\r\n public addRowDefinition(height: number, isPixel = false): Grid {\r\n this._rowDefinitions.push(new ValueAndUnit(height, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE));\r\n this._rowDefinitionObservers.push(this._rowDefinitions[this.rowCount - 1].onChangedObservable.add(() => this._markAsDirty())!);\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a new column to the grid\r\n * @param width defines the width of the column (either in pixel or a value between 0 and 1)\r\n * @param isPixel defines if the width is expressed in pixel (or in percentage)\r\n * @returns the current grid\r\n */\r\n public addColumnDefinition(width: number, isPixel = false): Grid {\r\n this._columnDefinitions.push(new ValueAndUnit(width, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE));\r\n this._columnDefinitionObservers.push(this._columnDefinitions[this.columnCount - 1].onChangedObservable.add(() => this._markAsDirty())!);\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update a row definition\r\n * @param index defines the index of the row to update\r\n * @param height defines the height of the row (either in pixel or a value between 0 and 1)\r\n * @param isPixel defines if the weight is expressed in pixel (or in percentage)\r\n * @returns the current grid\r\n */\r\n public setRowDefinition(index: number, height: number, isPixel = false): Grid {\r\n if (index < 0 || index >= this._rowDefinitions.length) {\r\n return this;\r\n }\r\n\r\n let current = this._rowDefinitions[index];\r\n if (current && current.isPixel === isPixel && current.value === height) {\r\n return this;\r\n }\r\n\r\n this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);\r\n this._rowDefinitions[index] = new ValueAndUnit(height, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE);\r\n this._rowDefinitionObservers[index] = this._rowDefinitions[index].onChangedObservable.add(() => this._markAsDirty())!;\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update a column definition\r\n * @param index defines the index of the column to update\r\n * @param width defines the width of the column (either in pixel or a value between 0 and 1)\r\n * @param isPixel defines if the width is expressed in pixel (or in percentage)\r\n * @returns the current grid\r\n */\r\n public setColumnDefinition(index: number, width: number, isPixel = false): Grid {\r\n if (index < 0 || index >= this._columnDefinitions.length) {\r\n return this;\r\n }\r\n\r\n let current = this._columnDefinitions[index];\r\n if (current && current.isPixel === isPixel && current.value === width) {\r\n return this;\r\n }\r\n\r\n this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);\r\n this._columnDefinitions[index] = new ValueAndUnit(width, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE);\r\n this._columnDefinitionObservers[index] = this._columnDefinitions[index].onChangedObservable.add(() => this._markAsDirty())!;\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the list of children stored in a specific cell\r\n * @param row defines the row to check\r\n * @param column defines the column to check\r\n * @returns the list of controls\r\n */\r\n public getChildrenAt(row: number, column: number): Nullable<Array<Control>> {\r\n const cell = this._cells[`${row}:${column}`];\r\n\r\n if (!cell) {\r\n return null;\r\n }\r\n\r\n return cell.children;\r\n }\r\n\r\n /**\r\n * Gets a string representing the child cell info (row x column)\r\n * @param child defines the control to get info from\r\n * @returns a string containing the child cell info (row x column)\r\n */\r\n public getChildCellInfo(child: Control): string {\r\n return child._tag;\r\n }\r\n\r\n private _removeCell(cell: Container, key: string) {\r\n if (!cell) {\r\n return;\r\n }\r\n\r\n super.removeControl(cell);\r\n\r\n for (var control of cell.children) {\r\n let childIndex = this._childControls.indexOf(control);\r\n\r\n if (childIndex !== -1) {\r\n this._childControls.splice(childIndex, 1);\r\n }\r\n }\r\n\r\n delete this._cells[key];\r\n }\r\n\r\n private _offsetCell(previousKey: string, key: string) {\r\n if (!this._cells[key]) {\r\n return;\r\n }\r\n\r\n this._cells[previousKey] = this._cells[key];\r\n\r\n for (var control of this._cells[previousKey].children) {\r\n control._tag = previousKey;\r\n }\r\n\r\n delete this._cells[key];\r\n }\r\n\r\n /**\r\n * Remove a column definition at specified index\r\n * @param index defines the index of the column to remove\r\n * @returns the current grid\r\n */\r\n public removeColumnDefinition(index: number): Grid {\r\n if (index < 0 || index >= this._columnDefinitions.length) {\r\n return this;\r\n }\r\n\r\n for (var x = 0; x < this._rowDefinitions.length; x++) {\r\n let key = `${x}:${index}`;\r\n let cell = this._cells[key];\r\n\r\n this._removeCell(cell, key);\r\n }\r\n\r\n for (var x = 0; x < this._rowDefinitions.length; x++) {\r\n for (var y = index + 1; y < this._columnDefinitions.length; y++) {\r\n let previousKey = `${x}:${y - 1}`;\r\n let key = `${x}:${y}`;\r\n\r\n this._offsetCell(previousKey, key);\r\n }\r\n }\r\n\r\n this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);\r\n this._columnDefinitions.splice(index, 1);\r\n this._columnDefinitionObservers.splice(index, 1);\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove a row definition at specified index\r\n * @param index defines the index of the row to remove\r\n * @returns the current grid\r\n */\r\n public removeRowDefinition(index: number): Grid {\r\n if (index < 0 || index >= this._rowDefinitions.length) {\r\n return this;\r\n }\r\n\r\n for (var y = 0; y < this._columnDefinitions.length; y++) {\r\n let key = `${index}:${y}`;\r\n let cell = this._cells[key];\r\n\r\n this._removeCell(cell, key);\r\n }\r\n\r\n for (var y = 0; y < this._columnDefinitions.length; y++) {\r\n for (var x = index + 1; x < this._rowDefinitions.length; x++) {\r\n let previousKey = `${x - 1}:${y}`;\r\n let key = `${x}:${y}`;\r\n\r\n this._offsetCell(previousKey, key);\r\n }\r\n }\r\n\r\n this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);\r\n this._rowDefinitions.splice(index, 1);\r\n this._rowDefinitionObservers.splice(index, 1);\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a new control to the current grid\r\n * @param control defines the control to add\r\n * @param row defines the row where to add the control (0 by default)\r\n * @param column defines the column where to add the control (0 by default)\r\n * @returns the current grid\r\n */\r\n public addControl(control: Control, row: number = 0, column: number = 0): Grid {\r\n if (this._rowDefinitions.length === 0) {\r\n // Add default row definition\r\n this.addRowDefinition(1, false);\r\n }\r\n\r\n if (this._columnDefinitions.length === 0) {\r\n // Add default column definition\r\n this.addColumnDefinition(1, false);\r\n }\r\n\r\n if (this._childControls.indexOf(control) !== -1) {\r\n Tools.Warn(`Control (Name:${control.name}, UniqueId:${control.uniqueId}) is already associated with this grid. You must remove it before reattaching it`);\r\n return this;\r\n }\r\n\r\n let x = Math.min(row, this._rowDefinitions.length - 1);\r\n let y = Math.min(column, this._columnDefinitions.length - 1);\r\n let key = `${x}:${y}`;\r\n let goodContainer = this._cells[key];\r\n\r\n if (!goodContainer) {\r\n goodContainer = new Container(key);\r\n this._cells[key] = goodContainer;\r\n goodContainer.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n goodContainer.verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP;\r\n super.addControl(goodContainer);\r\n }\r\n\r\n goodContainer.addControl(control);\r\n this._childControls.push(control);\r\n control._tag = key;\r\n control.parent = this;\r\n\r\n this._markAsDirty();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the current container\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control): Container {\r\n var index = this._childControls.indexOf(control);\r\n\r\n if (index !== -1) {\r\n this._childControls.splice(index, 1);\r\n }\r\n\r\n let cell = this._cells[control._tag];\r\n\r\n if (cell) {\r\n cell.removeControl(control);\r\n control._tag = null;\r\n }\r\n\r\n this._markAsDirty();\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates a new Grid\r\n * @param name defines control name\r\n */\r\n constructor(public name?: string) {\r\n super(name);\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Grid\";\r\n }\r\n\r\n protected _getGridDefinitions(definitionCallback: (lefts: number[], tops: number[], widths: number[], heights: number[]) => void) {\r\n let widths = [];\r\n let heights = [];\r\n let lefts = [];\r\n let tops = [];\r\n\r\n let availableWidth = this._currentMeasure.width;\r\n let globalWidthPercentage = 0;\r\n let availableHeight = this._currentMeasure.height;\r\n let globalHeightPercentage = 0;\r\n\r\n // Heights\r\n let index = 0;\r\n for (var rowDefinition of this._rowDefinitions) {\r\n if (rowDefinition.isPixel) {\r\n let height = rowDefinition.getValue(this._host);\r\n availableHeight -= height;\r\n heights[index] = height;\r\n } else {\r\n globalHeightPercentage += rowDefinition.value;\r\n }\r\n index++;\r\n }\r\n\r\n let top = 0;\r\n index = 0;\r\n for (var rowDefinition of this._rowDefinitions) {\r\n tops.push(top);\r\n\r\n if (!rowDefinition.isPixel) {\r\n let height = (rowDefinition.value / globalHeightPercentage) * availableHeight;\r\n top += height;\r\n heights[index] = height;\r\n } else {\r\n top += rowDefinition.getValue(this._host);\r\n }\r\n index++;\r\n }\r\n\r\n // Widths\r\n index = 0;\r\n for (var columnDefinition of this._columnDefinitions) {\r\n if (columnDefinition.isPixel) {\r\n let width = columnDefinition.getValue(this._host);\r\n availableWidth -= width;\r\n widths[index] = width;\r\n } else {\r\n globalWidthPercentage += columnDefinition.value;\r\n }\r\n index++;\r\n }\r\n\r\n let left = 0;\r\n index = 0;\r\n for (var columnDefinition of this._columnDefinitions) {\r\n lefts.push(left);\r\n if (!columnDefinition.isPixel) {\r\n let width = (columnDefinition.value / globalWidthPercentage) * availableWidth;\r\n left += width;\r\n widths[index] = width;\r\n } else {\r\n left += columnDefinition.getValue(this._host);\r\n }\r\n index++;\r\n }\r\n\r\n definitionCallback(lefts, tops, widths, heights);\r\n }\r\n\r\n protected _additionalProcessing(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n this._getGridDefinitions((lefts: number[], tops: number[], widths: number[], heights: number[]) => {\r\n // Setting child sizes\r\n for (var key in this._cells) {\r\n if (!this._cells.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n let split = key.split(\":\");\r\n let x = parseInt(split[0]);\r\n let y = parseInt(split[1]);\r\n let cell = this._cells[key];\r\n\r\n cell.left = lefts[y] + \"px\";\r\n cell.top = tops[x] + \"px\";\r\n cell.width = widths[y] + \"px\";\r\n cell.height = heights[x] + \"px\";\r\n cell._left.ignoreAdaptiveScaling = true;\r\n cell._top.ignoreAdaptiveScaling = true;\r\n cell._width.ignoreAdaptiveScaling = true;\r\n cell._height.ignoreAdaptiveScaling = true;\r\n }\r\n });\r\n\r\n super._additionalProcessing(parentMeasure, context);\r\n }\r\n\r\n public _flagDescendantsAsMatrixDirty(): void {\r\n for (var key in this._cells) {\r\n if (!this._cells.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n\r\n let child = this._cells[key];\r\n child._markMatrixAsDirty();\r\n }\r\n }\r\n\r\n public _renderHighlightSpecific(context: ICanvasRenderingContext): void {\r\n super._renderHighlightSpecific(context);\r\n\r\n this._getGridDefinitions((lefts: number[], tops: number[], widths: number[], heights: number[]) => {\r\n\r\n // Columns\r\n for (var index = 0; index < lefts.length; index++) {\r\n const left = this._currentMeasure.left + lefts[index] + widths[index];\r\n context.beginPath();\r\n context.moveTo(left, this._currentMeasure.top);\r\n context.lineTo(left, this._currentMeasure.top + this._currentMeasure.height);\r\n context.stroke();\r\n }\r\n\r\n // Rows\r\n for (var index = 0; index < tops.length; index++) {\r\n const top = this._currentMeasure.top + tops[index] + heights[index];\r\n context.beginPath();\r\n context.moveTo(this._currentMeasure.left, top);\r\n context.lineTo(this._currentMeasure.left + this._currentMeasure.width, top);\r\n context.stroke();\r\n }\r\n });\r\n\r\n context.restore();\r\n }\r\n\r\n /** Releases associated resources */\r\n public dispose() {\r\n super.dispose();\r\n\r\n for (var control of this._childControls) {\r\n control.dispose();\r\n }\r\n for (var index = 0; index < this._rowDefinitions.length; index++) {\r\n this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);\r\n }\r\n for (var index = 0; index < this._columnDefinitions.length; index++) {\r\n this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);\r\n }\r\n this._rowDefinitionObservers = [];\r\n this._rowDefinitions = [];\r\n this._columnDefinitionObservers = [];\r\n this._columnDefinitions = [];\r\n this._cells = {};\r\n this._childControls = [];\r\n }\r\n\r\n /**\r\n * Serializes the current control\r\n * @param serializationObject defined the JSON serialized object\r\n */\r\n public serialize(serializationObject: any) {\r\n super.serialize(serializationObject);\r\n serializationObject.columnCount = this.columnCount;\r\n serializationObject.rowCount = this.rowCount;\r\n serializationObject.columns = [];\r\n serializationObject.rows = [];\r\n serializationObject.tags = [];\r\n for (let i = 0; i < this.columnCount; ++i) {\r\n let cd = this.getColumnDefinition(i);\r\n let childSerializationObject = { value: cd?.getValue(this.host), unit: cd?.unit };\r\n serializationObject.columns.push(childSerializationObject);\r\n\r\n }\r\n for (let i = 0; i < this.rowCount; ++i) {\r\n let rd = this.getRowDefinition(i);\r\n let childSerializationObject = { value: rd?.getValue(this.host), unit: rd?.unit };\r\n serializationObject.rows.push(childSerializationObject);\r\n }\r\n this.children.forEach((child) => {\r\n serializationObject.tags.push(child._tag);\r\n });\r\n }\r\n\r\n /** @hidden */\r\n public _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture) {\r\n super._parseFromContent(serializedObject, host);\r\n let children: Control[] = [];\r\n this.children.forEach((child) => {\r\n children.push(child);\r\n });\r\n this.removeRowDefinition(0);\r\n this.removeColumnDefinition(0);\r\n for (let i = 0; i < serializedObject.columnCount; ++i) {\r\n const columnValue = serializedObject.columns[i].value;\r\n const unit = serializedObject.columns[i].unit;\r\n this.addColumnDefinition(columnValue, unit === 1 ? true : false);\r\n }\r\n for (let i = 0; i < serializedObject.rowCount; ++i) {\r\n const rowValue = serializedObject.rows[i].value;\r\n const unit = serializedObject.rows[i].unit;\r\n this.addRowDefinition(rowValue, unit === 1 ? true : false);\r\n }\r\n\r\n for (let i = 0; i < children.length; ++i) {\r\n const cellInfo = serializedObject.tags[i];\r\n let rowNumber = parseInt(cellInfo.substring(0, cellInfo.search(\":\")));\r\n if (isNaN(rowNumber)) {\r\n rowNumber = 0;\r\n }\r\n let columnNumber = parseInt(cellInfo.substring(cellInfo.search(\":\") + 1));\r\n if (isNaN(columnNumber)) {\r\n columnNumber = 0;\r\n }\r\n this.addControl(children[i], rowNumber, columnNumber);\r\n }\r\n }\r\n}\r\nRegisterClass(\"BABYLON.GUI.Grid\", Grid);"]}
|
package/2D/controls/image.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Nullable } from "@babylonjs/core/types";
|
|
|
2
2
|
import { Observable } from "@babylonjs/core/Misc/observable";
|
|
3
3
|
import { Control } from "./control";
|
|
4
4
|
import { Measure } from "../measure";
|
|
5
|
+
import { ICanvasRenderingContext, IImage } from "@babylonjs/core/Engines/ICanvas";
|
|
5
6
|
/**
|
|
6
7
|
* Class used to create 2D images
|
|
7
8
|
*/
|
|
@@ -123,8 +124,8 @@ export declare class Image extends Control {
|
|
|
123
124
|
/**
|
|
124
125
|
* Gets or sets the internal DOM image used to render the control
|
|
125
126
|
*/
|
|
126
|
-
set domImage(value:
|
|
127
|
-
get domImage():
|
|
127
|
+
set domImage(value: IImage);
|
|
128
|
+
get domImage(): IImage;
|
|
128
129
|
private _onImageLoaded;
|
|
129
130
|
/**
|
|
130
131
|
* Gets the image source url
|
|
@@ -177,10 +178,10 @@ export declare class Image extends Control {
|
|
|
177
178
|
protected _getTypeName(): string;
|
|
178
179
|
/** Force the control to synchronize with its content */
|
|
179
180
|
synchronizeSizeWithContent(): void;
|
|
180
|
-
protected _processMeasures(parentMeasure: Measure, context:
|
|
181
|
+
protected _processMeasures(parentMeasure: Measure, context: ICanvasRenderingContext): void;
|
|
181
182
|
private _prepareWorkingCanvasForOpaqueDetection;
|
|
182
183
|
private _drawImage;
|
|
183
|
-
_draw(context:
|
|
184
|
+
_draw(context: ICanvasRenderingContext): void;
|
|
184
185
|
private _renderNinePatch;
|
|
185
186
|
dispose(): void;
|
|
186
187
|
/** STRETCH_NONE */
|
package/2D/controls/image.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { __decorate, __extends } from "tslib";
|
|
2
|
-
import { Observable } from "@babylonjs/core/Misc/observable";
|
|
3
|
-
import { Tools } from "@babylonjs/core/Misc/tools";
|
|
4
|
-
import { Control } from "./control";
|
|
5
|
-
import {
|
|
6
|
-
import { serialize } from "@babylonjs/core/Misc/decorators";
|
|
2
|
+
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
3
|
+
import { Tools } from "@babylonjs/core/Misc/tools.js";
|
|
4
|
+
import { Control } from "./control.js";
|
|
5
|
+
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
6
|
+
import { serialize } from "@babylonjs/core/Misc/decorators.js";
|
|
7
|
+
import { Engine } from "@babylonjs/core/Engines/engine.js";
|
|
7
8
|
/**
|
|
8
9
|
* Class used to create 2D images
|
|
9
10
|
*/
|
|
@@ -299,13 +300,17 @@ var Image = /** @class */ (function (_super) {
|
|
|
299
300
|
});
|
|
300
301
|
/** @hidden */
|
|
301
302
|
Image.prototype._rotate90 = function (n, preserveProperties) {
|
|
303
|
+
var _a, _b;
|
|
302
304
|
if (preserveProperties === void 0) { preserveProperties = false; }
|
|
303
|
-
var canvas = document.createElement("canvas");
|
|
304
|
-
var context = canvas.getContext("2d");
|
|
305
305
|
var width = this._domImage.width;
|
|
306
306
|
var height = this._domImage.height;
|
|
307
|
-
|
|
308
|
-
|
|
307
|
+
// Should abstract platform instead of using LastCreatedEngine
|
|
308
|
+
var engine = ((_b = (_a = this._host) === null || _a === void 0 ? void 0 : _a.getScene()) === null || _b === void 0 ? void 0 : _b.getEngine()) || Engine.LastCreatedEngine;
|
|
309
|
+
if (!engine) {
|
|
310
|
+
throw new Error("Invalid engine. Unable to create a canvas.");
|
|
311
|
+
}
|
|
312
|
+
var canvas = engine.createCanvas(height, width);
|
|
313
|
+
var context = canvas.getContext("2d");
|
|
309
314
|
context.translate(canvas.width / 2, canvas.height / 2);
|
|
310
315
|
context.rotate((n * Math.PI) / 2);
|
|
311
316
|
context.drawImage(this._domImage, 0, 0, width, height, -width / 2, -height / 2, width, height);
|
|
@@ -366,15 +371,18 @@ var Image = /** @class */ (function (_super) {
|
|
|
366
371
|
dstImage.sourceHeight = dstHeight;
|
|
367
372
|
};
|
|
368
373
|
Image.prototype._extractNinePatchSliceDataFromImage = function () {
|
|
374
|
+
var _a, _b;
|
|
375
|
+
var width = this._domImage.width;
|
|
376
|
+
var height = this._domImage.height;
|
|
369
377
|
if (!this._workingCanvas) {
|
|
370
|
-
this.
|
|
378
|
+
var engine = ((_b = (_a = this._host) === null || _a === void 0 ? void 0 : _a.getScene()) === null || _b === void 0 ? void 0 : _b.getEngine()) || Engine.LastCreatedEngine;
|
|
379
|
+
if (!engine) {
|
|
380
|
+
throw new Error("Invalid engine. Unable to create a canvas.");
|
|
381
|
+
}
|
|
382
|
+
this._workingCanvas = engine.createCanvas(width, height);
|
|
371
383
|
}
|
|
372
384
|
var canvas = this._workingCanvas;
|
|
373
385
|
var context = canvas.getContext("2d");
|
|
374
|
-
var width = this._domImage.width;
|
|
375
|
-
var height = this._domImage.height;
|
|
376
|
-
canvas.width = width;
|
|
377
|
-
canvas.height = height;
|
|
378
386
|
context.drawImage(this._domImage, 0, 0, width, height);
|
|
379
387
|
var imageData = context.getImageData(0, 0, width, height);
|
|
380
388
|
// Left and right
|
|
@@ -456,6 +464,7 @@ var Image = /** @class */ (function (_super) {
|
|
|
456
464
|
*/
|
|
457
465
|
set: function (value) {
|
|
458
466
|
var _this = this;
|
|
467
|
+
var _a, _b;
|
|
459
468
|
if (this._source === value) {
|
|
460
469
|
return;
|
|
461
470
|
}
|
|
@@ -465,7 +474,12 @@ var Image = /** @class */ (function (_super) {
|
|
|
465
474
|
if (value) {
|
|
466
475
|
value = this._svgCheck(value);
|
|
467
476
|
}
|
|
468
|
-
|
|
477
|
+
// Should abstract platform instead of using LastCreatedEngine
|
|
478
|
+
var engine = ((_b = (_a = this._host) === null || _a === void 0 ? void 0 : _a.getScene()) === null || _b === void 0 ? void 0 : _b.getEngine()) || Engine.LastCreatedEngine;
|
|
479
|
+
if (!engine) {
|
|
480
|
+
throw new Error("Invalid engine. Unable to create a canvas.");
|
|
481
|
+
}
|
|
482
|
+
this._domImage = engine.createCanvasImage();
|
|
469
483
|
this._domImage.onload = function () {
|
|
470
484
|
_this._onImageLoaded();
|
|
471
485
|
};
|
|
@@ -549,11 +563,12 @@ var Image = /** @class */ (function (_super) {
|
|
|
549
563
|
var elem_matrix_d = 1;
|
|
550
564
|
var elem_matrix_e = 0;
|
|
551
565
|
var elem_matrix_f = 0;
|
|
566
|
+
var mainMatrix = elem.transform.baseVal.consolidate().matrix;
|
|
552
567
|
if (elem.transform && elem.transform.baseVal.consolidate()) {
|
|
553
|
-
elem_matrix_a =
|
|
554
|
-
elem_matrix_d =
|
|
555
|
-
elem_matrix_e =
|
|
556
|
-
elem_matrix_f =
|
|
568
|
+
elem_matrix_a = mainMatrix.a;
|
|
569
|
+
elem_matrix_d = mainMatrix.d;
|
|
570
|
+
elem_matrix_e = mainMatrix.e;
|
|
571
|
+
elem_matrix_f = mainMatrix.f;
|
|
557
572
|
}
|
|
558
573
|
// compute source coordinates and dimensions
|
|
559
574
|
this.sourceLeft = ((elem_matrix_a * elem_bbox.x + elem_matrix_e) * docwidth) / vb_width;
|
|
@@ -684,18 +699,21 @@ var Image = /** @class */ (function (_super) {
|
|
|
684
699
|
_super.prototype._processMeasures.call(this, parentMeasure, context);
|
|
685
700
|
};
|
|
686
701
|
Image.prototype._prepareWorkingCanvasForOpaqueDetection = function () {
|
|
702
|
+
var _a, _b;
|
|
687
703
|
if (!this._detectPointerOnOpaqueOnly) {
|
|
688
704
|
return;
|
|
689
705
|
}
|
|
706
|
+
var width = this._currentMeasure.width;
|
|
707
|
+
var height = this._currentMeasure.height;
|
|
690
708
|
if (!this._workingCanvas) {
|
|
691
|
-
this.
|
|
709
|
+
var engine = ((_b = (_a = this._host) === null || _a === void 0 ? void 0 : _a.getScene()) === null || _b === void 0 ? void 0 : _b.getEngine()) || Engine.LastCreatedEngine;
|
|
710
|
+
if (!engine) {
|
|
711
|
+
throw new Error("Invalid engine. Unable to create a canvas.");
|
|
712
|
+
}
|
|
713
|
+
this._workingCanvas = engine.createCanvas(width, height);
|
|
692
714
|
}
|
|
693
715
|
var canvas = this._workingCanvas;
|
|
694
|
-
var width = this._currentMeasure.width;
|
|
695
|
-
var height = this._currentMeasure.height;
|
|
696
716
|
var context = canvas.getContext("2d");
|
|
697
|
-
canvas.width = width;
|
|
698
|
-
canvas.height = height;
|
|
699
717
|
context.clearRect(0, 0, width, height);
|
|
700
718
|
};
|
|
701
719
|
Image.prototype._drawImage = function (context, sx, sy, sw, sh, tx, ty, tw, th) {
|
|
@@ -834,12 +852,6 @@ var Image = /** @class */ (function (_super) {
|
|
|
834
852
|
__decorate([
|
|
835
853
|
serialize()
|
|
836
854
|
], Image.prototype, "sourceHeight", null);
|
|
837
|
-
__decorate([
|
|
838
|
-
serialize()
|
|
839
|
-
], Image.prototype, "imageWidth", null);
|
|
840
|
-
__decorate([
|
|
841
|
-
serialize()
|
|
842
|
-
], Image.prototype, "imageHeight", null);
|
|
843
855
|
__decorate([
|
|
844
856
|
serialize()
|
|
845
857
|
], Image.prototype, "populateNinePatchSlicesFromImage", null);
|
|
@@ -852,8 +864,17 @@ var Image = /** @class */ (function (_super) {
|
|
|
852
864
|
__decorate([
|
|
853
865
|
serialize()
|
|
854
866
|
], Image.prototype, "source", null);
|
|
867
|
+
__decorate([
|
|
868
|
+
serialize()
|
|
869
|
+
], Image.prototype, "cellWidth", null);
|
|
870
|
+
__decorate([
|
|
871
|
+
serialize()
|
|
872
|
+
], Image.prototype, "cellHeight", null);
|
|
873
|
+
__decorate([
|
|
874
|
+
serialize()
|
|
875
|
+
], Image.prototype, "cellId", null);
|
|
855
876
|
return Image;
|
|
856
877
|
}(Control));
|
|
857
878
|
export { Image };
|
|
858
|
-
|
|
879
|
+
RegisterClass("BABYLON.GUI.Image", Image);
|
|
859
880
|
//# sourceMappingURL=image.js.map
|