babylon.gui.d.ts 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. declare module BABYLON.GUI {
  2. class AdvancedDynamicTexture extends DynamicTexture {
  3. private _isDirty;
  4. private _renderObserver;
  5. private _resizeObserver;
  6. private _pointerMoveObserver;
  7. private _pointerObserver;
  8. private _canvasBlurObserver;
  9. private _background;
  10. _rootContainer: Container;
  11. _lastControlOver: Control;
  12. _lastControlDown: Control;
  13. _capturingControl: Control;
  14. _shouldBlockPointer: boolean;
  15. _layerToDispose: Layer;
  16. _linkedControls: Control[];
  17. private _isFullscreen;
  18. private _fullscreenViewport;
  19. private _idealWidth;
  20. private _idealHeight;
  21. background: string;
  22. idealWidth: number;
  23. idealHeight: number;
  24. readonly layer: Layer;
  25. constructor(name: string, width: number, height: number, scene: Scene, generateMipMaps?: boolean, samplingMode?: number);
  26. markAsDirty(): void;
  27. addControl(control: Control): AdvancedDynamicTexture;
  28. removeControl(control: Control): AdvancedDynamicTexture;
  29. dispose(): void;
  30. private _onResize();
  31. private _checkUpdate(camera);
  32. private _render();
  33. private _doPicking(x, y, type);
  34. attach(): void;
  35. attachToMesh(mesh: AbstractMesh): void;
  36. static CreateForMesh(mesh: AbstractMesh, width?: number, height?: number): AdvancedDynamicTexture;
  37. static CreateFullscreenUI(name: string, foreground?: boolean, scene?: Scene): AdvancedDynamicTexture;
  38. }
  39. }
  40. declare module BABYLON.GUI {
  41. class Measure {
  42. left: number;
  43. top: number;
  44. width: number;
  45. height: number;
  46. constructor(left: number, top: number, width: number, height: number);
  47. copyFrom(other: Measure): void;
  48. isEqualsTo(other: Measure): boolean;
  49. static Empty(): Measure;
  50. }
  51. }
  52. declare module BABYLON.GUI {
  53. class Matrix2D {
  54. m: Float32Array;
  55. constructor(m00: number, m01: number, m10: number, m11: number, m20: number, m21: number);
  56. fromValues(m00: number, m01: number, m10: number, m11: number, m20: number, m21: number): Matrix2D;
  57. determinant(): number;
  58. invertToRef(result: Matrix2D): Matrix2D;
  59. multiplyToRef(other: Matrix2D, result: Matrix2D): Matrix2D;
  60. transformCoordinates(x: number, y: number, result: Vector2): Matrix2D;
  61. static Identity(): Matrix2D;
  62. static TranslationToRef(x: number, y: number, result: Matrix2D): void;
  63. static ScalingToRef(x: number, y: number, result: Matrix2D): void;
  64. static RotationToRef(angle: number, result: Matrix2D): void;
  65. private static _TempPreTranslationMatrix;
  66. private static _TempPostTranslationMatrix;
  67. private static _TempRotationMatrix;
  68. private static _TempScalingMatrix;
  69. private static _TempCompose0;
  70. private static _TempCompose1;
  71. private static _TempCompose2;
  72. static ComposeToRef(tx: number, ty: number, angle: number, scaleX: number, scaleY: number, parentMatrix: Matrix2D, result: Matrix2D): void;
  73. }
  74. }
  75. declare module BABYLON.GUI {
  76. class ValueAndUnit {
  77. unit: number;
  78. negativeValueAllowed: boolean;
  79. private _value;
  80. ignoreAdaptiveScaling: boolean;
  81. constructor(value: any, unit?: number, negativeValueAllowed?: boolean);
  82. readonly isPercentage: boolean;
  83. readonly isPixel: boolean;
  84. readonly internalValue: number;
  85. getValue(host: AdvancedDynamicTexture): number;
  86. toString(host: AdvancedDynamicTexture): string;
  87. fromString(source: string | number): boolean;
  88. private static _Regex;
  89. private static _UNITMODE_PERCENTAGE;
  90. private static _UNITMODE_PIXEL;
  91. static readonly UNITMODE_PERCENTAGE: number;
  92. static readonly UNITMODE_PIXEL: number;
  93. }
  94. }
  95. declare module BABYLON.GUI {
  96. class Control {
  97. name: string;
  98. private _alpha;
  99. private _alphaSet;
  100. private _zIndex;
  101. _root: Container;
  102. _host: AdvancedDynamicTexture;
  103. _currentMeasure: Measure;
  104. private _fontFamily;
  105. private _fontSize;
  106. private _font;
  107. _width: ValueAndUnit;
  108. _height: ValueAndUnit;
  109. private _lastMeasuredFont;
  110. protected _fontOffset: {
  111. ascent: number;
  112. height: number;
  113. descent: number;
  114. };
  115. private _color;
  116. protected _horizontalAlignment: number;
  117. protected _verticalAlignment: number;
  118. private _isDirty;
  119. private _cachedParentMeasure;
  120. private _paddingLeft;
  121. private _paddingRight;
  122. private _paddingTop;
  123. private _paddingBottom;
  124. _left: ValueAndUnit;
  125. _top: ValueAndUnit;
  126. private _scaleX;
  127. private _scaleY;
  128. private _rotation;
  129. private _transformCenterX;
  130. private _transformCenterY;
  131. private _transformMatrix;
  132. private _invertTransformMatrix;
  133. private _transformedPosition;
  134. private _isMatrixDirty;
  135. private _cachedOffsetX;
  136. private _cachedOffsetY;
  137. private _isVisible;
  138. _linkedMesh: AbstractMesh;
  139. private _fontSet;
  140. private _dummyVector2;
  141. isHitTestVisible: boolean;
  142. isPointerBlocker: boolean;
  143. protected _linkOffsetX: ValueAndUnit;
  144. protected _linkOffsetY: ValueAndUnit;
  145. /**
  146. * An event triggered when the pointer move over the control.
  147. * @type {BABYLON.Observable}
  148. */
  149. onPointerMoveObservable: Observable<Vector2>;
  150. /**
  151. * An event triggered when the pointer move out of the control.
  152. * @type {BABYLON.Observable}
  153. */
  154. onPointerOutObservable: Observable<Control>;
  155. /**
  156. * An event triggered when the pointer taps the control
  157. * @type {BABYLON.Observable}
  158. */
  159. onPointerDownObservable: Observable<Vector2>;
  160. /**
  161. * An event triggered when pointer up
  162. * @type {BABYLON.Observable}
  163. */
  164. onPointerUpObservable: Observable<Vector2>;
  165. /**
  166. * An event triggered when pointer enters the control
  167. * @type {BABYLON.Observable}
  168. */
  169. onPointerEnterObservable: Observable<Control>;
  170. /**
  171. * An event triggered when the control is marked as dirty
  172. * @type {BABYLON.Observable}
  173. */
  174. onDirtyObservable: Observable<Control>;
  175. alpha: number;
  176. scaleX: number;
  177. scaleY: number;
  178. rotation: number;
  179. transformCenterY: number;
  180. transformCenterX: number;
  181. horizontalAlignment: number;
  182. verticalAlignment: number;
  183. width: string | number;
  184. height: string | number;
  185. fontFamily: string;
  186. fontSize: string | number;
  187. color: string;
  188. zIndex: number;
  189. isVisible: boolean;
  190. readonly isDirty: boolean;
  191. paddingLeft: string | number;
  192. paddingRight: string | number;
  193. paddingTop: string | number;
  194. paddingBottom: string | number;
  195. left: string | number;
  196. top: string | number;
  197. linkOffsetX: string | number;
  198. linkOffsetY: string | number;
  199. readonly centerX: number;
  200. readonly centerY: number;
  201. constructor(name?: string);
  202. linkWithMesh(mesh: AbstractMesh): void;
  203. _moveToProjectedPosition(projectedPosition: Vector3): void;
  204. _markMatrixAsDirty(): void;
  205. _markAsDirty(): void;
  206. _markAllAsDirty(): void;
  207. _link(root: Container, host: AdvancedDynamicTexture): void;
  208. protected _transform(context: CanvasRenderingContext2D): void;
  209. protected _applyStates(context: CanvasRenderingContext2D): void;
  210. protected _processMeasures(parentMeasure: Measure, context: CanvasRenderingContext2D): boolean;
  211. protected _clip(context: CanvasRenderingContext2D): void;
  212. _measure(): void;
  213. protected _computeAlignment(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  214. protected _preMeasure(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  215. protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  216. _draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  217. contains(x: number, y: number): boolean;
  218. _processPicking(x: number, y: number, type: number): boolean;
  219. protected _onPointerMove(coordinates: Vector2): void;
  220. protected _onPointerEnter(): void;
  221. protected _onPointerOut(): void;
  222. protected _onPointerDown(coordinates: Vector2): void;
  223. protected _onPointerUp(coordinates: Vector2): void;
  224. forcePointerUp(): void;
  225. _processObservables(type: number, x: number, y: number): boolean;
  226. private _prepareFont();
  227. private static _HORIZONTAL_ALIGNMENT_LEFT;
  228. private static _HORIZONTAL_ALIGNMENT_RIGHT;
  229. private static _HORIZONTAL_ALIGNMENT_CENTER;
  230. private static _VERTICAL_ALIGNMENT_TOP;
  231. private static _VERTICAL_ALIGNMENT_BOTTOM;
  232. private static _VERTICAL_ALIGNMENT_CENTER;
  233. static readonly HORIZONTAL_ALIGNMENT_LEFT: number;
  234. static readonly HORIZONTAL_ALIGNMENT_RIGHT: number;
  235. static readonly HORIZONTAL_ALIGNMENT_CENTER: number;
  236. static readonly VERTICAL_ALIGNMENT_TOP: number;
  237. static readonly VERTICAL_ALIGNMENT_BOTTOM: number;
  238. static readonly VERTICAL_ALIGNMENT_CENTER: number;
  239. private static _FontHeightSizes;
  240. static _GetFontOffset(font: string): {
  241. ascent: number;
  242. height: number;
  243. descent: number;
  244. };
  245. static AddHeader(control: Control, text: string, size: string | number, options: {
  246. isHorizontal: boolean;
  247. controlFirst: boolean;
  248. }): StackPanel;
  249. }
  250. }
  251. declare module BABYLON.GUI {
  252. class Container extends Control {
  253. name: string;
  254. protected _children: Control[];
  255. protected _measureForChildren: Measure;
  256. protected _background: string;
  257. background: string;
  258. readonly children: Control[];
  259. constructor(name?: string);
  260. getChildByName(name: string): Control;
  261. containsControl(control: Control): boolean;
  262. addControl(control: Control): Container;
  263. removeControl(control: Control): Container;
  264. _reOrderControl(control: Control): void;
  265. _markMatrixAsDirty(): void;
  266. _markAllAsDirty(): void;
  267. protected _localDraw(context: CanvasRenderingContext2D): void;
  268. _link(root: Container, host: AdvancedDynamicTexture): void;
  269. _draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  270. _processPicking(x: number, y: number, type: number): boolean;
  271. protected _clipForChildren(context: CanvasRenderingContext2D): void;
  272. protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  273. }
  274. }
  275. declare module BABYLON.GUI {
  276. class StackPanel extends Container {
  277. name: string;
  278. private _isVertical;
  279. private _tempMeasureStore;
  280. isVertical: boolean;
  281. constructor(name?: string);
  282. protected _preMeasure(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  283. }
  284. }
  285. declare module BABYLON.GUI {
  286. class Rectangle extends Container {
  287. name: string;
  288. private _thickness;
  289. private _cornerRadius;
  290. thickness: number;
  291. cornerRadius: number;
  292. constructor(name?: string);
  293. protected _localDraw(context: CanvasRenderingContext2D): void;
  294. protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  295. private _drawRoundedRect(context, offset?);
  296. protected _clipForChildren(context: CanvasRenderingContext2D): void;
  297. }
  298. }
  299. declare module BABYLON.GUI {
  300. class Ellipse extends Container {
  301. name: string;
  302. private _thickness;
  303. thickness: number;
  304. constructor(name?: string);
  305. protected _localDraw(context: CanvasRenderingContext2D): void;
  306. protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  307. protected _clipForChildren(context: CanvasRenderingContext2D): void;
  308. }
  309. }
  310. declare var DOMImage: new (width?: number, height?: number) => HTMLImageElement;
  311. declare module BABYLON.GUI {
  312. class Line extends Control {
  313. name: string;
  314. private _lineWidth;
  315. private _background;
  316. private _x1;
  317. private _y1;
  318. private _x2;
  319. private _y2;
  320. private _dash;
  321. private _connectedControl;
  322. private _connectedControlDirtyObserver;
  323. dash: Array<number>;
  324. connectedControl: Control;
  325. x1: string | number;
  326. y1: string | number;
  327. x2: string | number;
  328. y2: string | number;
  329. lineWidth: number;
  330. horizontalAlignment: number;
  331. verticalAlignment: number;
  332. private readonly _effectiveX2;
  333. private readonly _effectiveY2;
  334. constructor(name?: string);
  335. _draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  336. _measure(): void;
  337. protected _computeAlignment(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  338. _moveToProjectedPosition(projectedPosition: Vector3): void;
  339. }
  340. }
  341. declare var DOMImage: new (width?: number, height?: number) => HTMLImageElement;
  342. declare module BABYLON.GUI {
  343. class Slider extends Control {
  344. name: string;
  345. private _thumbWidth;
  346. private _minimum;
  347. private _maximum;
  348. private _value;
  349. private _background;
  350. private _borderColor;
  351. private _barOffset;
  352. onValueChangedObservable: Observable<number>;
  353. borderColor: string;
  354. background: string;
  355. barOffset: string | number;
  356. thumbWidth: string | number;
  357. minimum: number;
  358. maximum: number;
  359. value: number;
  360. constructor(name?: string);
  361. _draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  362. private _pointerIsDown;
  363. private _updateValueFromPointer(x);
  364. protected _onPointerDown(coordinates: Vector2): void;
  365. protected _onPointerMove(coordinates: Vector2): void;
  366. protected _onPointerUp(coordinates: Vector2): void;
  367. }
  368. }
  369. declare var DOMImage: new (width?: number, height?: number) => HTMLImageElement;
  370. declare module BABYLON.GUI {
  371. class Checkbox extends Control {
  372. name: string;
  373. private _isChecked;
  374. private _background;
  375. private _checkSizeRatio;
  376. private _thickness;
  377. thickness: number;
  378. onIsCheckedChangedObservable: Observable<boolean>;
  379. checkSizeRatio: number;
  380. background: string;
  381. isChecked: boolean;
  382. constructor(name?: string);
  383. _draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  384. protected _onPointerDown(coordinates: Vector2): void;
  385. }
  386. }
  387. declare module BABYLON.GUI {
  388. class TextBlock extends Control {
  389. name: string;
  390. private _text;
  391. private _textY;
  392. private _textWrapping;
  393. private _textHorizontalAlignment;
  394. private _textVerticalAlignment;
  395. private _lines;
  396. private _totalHeight;
  397. textWrapping: boolean;
  398. text: string;
  399. textHorizontalAlignment: number;
  400. textVerticalAlignment: number;
  401. constructor(name?: string, text?: string);
  402. private _drawText(text, textWidth, y, context);
  403. _draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  404. protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  405. protected _renderLines(context: CanvasRenderingContext2D): void;
  406. }
  407. }
  408. declare var DOMImage: new (width?: number, height?: number) => HTMLImageElement;
  409. declare module BABYLON.GUI {
  410. class Image extends Control {
  411. name: string;
  412. private _domImage;
  413. private _imageWidth;
  414. private _imageHeight;
  415. private _loaded;
  416. private _stretch;
  417. private _source;
  418. private _autoScale;
  419. autoScale: boolean;
  420. stretch: number;
  421. domImage: HTMLImageElement;
  422. private _onImageLoaded();
  423. source: string;
  424. constructor(name?: string, url?: string);
  425. synchronizeSizeWithContent(): void;
  426. _draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
  427. private static _STRETCH_NONE;
  428. private static _STRETCH_FILL;
  429. private static _STRETCH_UNIFORM;
  430. private static _STRETCH_EXTEND;
  431. static readonly STRETCH_NONE: number;
  432. static readonly STRETCH_FILL: number;
  433. static readonly STRETCH_UNIFORM: number;
  434. static readonly STRETCH_EXTEND: number;
  435. }
  436. }
  437. declare module BABYLON.GUI {
  438. class Button extends Rectangle {
  439. name: string;
  440. pointerEnterAnimation: () => void;
  441. pointerOutAnimation: () => void;
  442. pointerDownAnimation: () => void;
  443. pointerUpAnimation: () => void;
  444. constructor(name?: string);
  445. _processPicking(x: number, y: number, type: number): boolean;
  446. protected _onPointerEnter(): void;
  447. protected _onPointerOut(): void;
  448. protected _onPointerDown(coordinates: Vector2): void;
  449. protected _onPointerUp(coordinates: Vector2): void;
  450. static CreateImageButton(name: string, text: string, imageUrl: string): Button;
  451. static CreateImageOnlyButton(name: string, imageUrl: string): Button;
  452. static CreateSimpleButton(name: string, text: string): Button;
  453. }
  454. }