Index: chrome/browser/resources/vr_shell/vr_shell_ui_scene.js |
diff --git a/chrome/browser/resources/vr_shell/vr_shell_ui_scene.js b/chrome/browser/resources/vr_shell/vr_shell_ui_scene.js |
index a83ef30ea09ca787a67c6ac658469cb65ab024e5..d3a1f905eef6a08163228662e135b6c29dabd79c 100644 |
--- a/chrome/browser/resources/vr_shell/vr_shell_ui_scene.js |
+++ b/chrome/browser/resources/vr_shell/vr_shell_ui_scene.js |
@@ -2,149 +2,146 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-var ui = (function() { |
- 'use strict'; |
+var ui = new Object(); |
+ |
+/** |
+ * The scene class assists in managing element and animations in the scene. |
+ * It allows scene update commands to be queued in batches, and manages |
+ * allocation of element and animation IDs. |
+ * |
+ * Examples: |
+ * |
+ * var scene = new ui.Scene(); |
+ * |
+ * // Add an element. |
+ * var el = new api.UiElement(100, 200, 50, 50); |
+ * el.setSize(buttonWidth, buttonHeight); |
+ * |
+ * // Anchor it to the bottom of the content quad. |
+ * el.setParentId(contentQuadId); |
+ * el.setAnchoring(api.XAnchoring.XNONE, api.YAnchoring.YBOTTOM); |
+ * |
+ * // Place it just below the content quad edge. |
+ * el.setTranslation(0, -0.2, 0.0); |
+ * |
+ * // Add it to the scene. |
+ * var buttonId = scene.addElement(el); |
+ * scene.flush(); |
+ * |
+ * // Make the button twice as big. |
+ * var update = new api.UiElementUpdate(); |
+ * update.setSize(bunttonWidth * 2, buttonHeight * 2); |
+ * scene.updateElement(buttonId, update); |
+ * scene.flush(); |
+ * |
+ * // Animate the button size back to its original size, over 250 ms. |
+ * var resize = new api.Animation(buttonId, 250); |
+ * resize.setSize(buttonWidth, buttonHeight); |
+ * scene.addAnimation(resize); |
+ * scene.flush(); |
+ * |
+ * @struct |
+ */ |
+ui.Scene = class { |
+ constructor() { |
+ /** @private {number} */ |
+ this.idIndex = 1; |
+ /** @private {Array<Object>} */ |
+ this.commands = []; |
+ /** @private {!Set<number>} */ |
+ this.elements = new Set(); |
+ /** @private {!Object} */ |
+ this.animations = []; |
+ } |
/** |
- * The scene class assists in managing element and animations in the scene. |
- * It allows scene update commands to be queued in batches, and manages |
- * allocation of element and animation IDs. |
- * |
- * Examples: |
- * |
- * var scene = new ui.Scene(); |
- * |
- * // Add an element. |
- * var el = new api.UiElement(100, 200, 50, 50); |
- * el.setSize(buttonWidth, buttonHeight); |
- * |
- * // Anchor it to the bottom of the content quad. |
- * el.setParentId(api.getContentElementId()); |
- * el.setAnchoring(api.XAnchoring.XNONE, api.YAnchoring.YBOTTOM); |
- * |
- * // Place it just below the content quad edge. |
- * el.setTranslation(0, -0.2, 0.0); |
- * |
- * // Add it to the scene. |
- * var buttonId = scene.addElement(el); |
- * scene.flush(); |
- * |
- * // Make the button twice as big. |
- * var update = new api.UiElementUpdate(); |
- * update.setSize(bunttonWidth * 2, buttonHeight * 2); |
- * scene.updateElement(buttonId, update); |
- * scene.flush(); |
- * |
- * // Animate the button size back to its original size, over 250 ms. |
- * var resize = new api.Animation(buttonId, 250); |
- * resize.setSize(buttonWidth, buttonHeight); |
- * scene.addAnimation(resize); |
- * scene.flush(); |
+ * Flush all queued commands to native. |
*/ |
- class Scene { |
- |
- constructor() { |
- this.idIndex = api.getContentElementId() + 1; |
- this.commands = []; |
- this.elements = new Set(); |
- this.animations = {}; |
- } |
+ flush() { |
+ api.sendCommands(this.commands); |
+ this.commands = []; |
+ } |
- /** |
- * Flush all queued commands to native. |
- */ |
- flush() { |
- api.sendCommands(this.commands); |
- this.commands = []; |
- } |
+ /** |
+ * Add a new UiElement to the scene, returning the ID assigned. |
+ * @param {api.UiElement} element |
+ */ |
+ addElement(element) { |
+ var id = this.idIndex++; |
+ element.setId(id); |
+ this.commands.push( |
+ {'type': api.Command.ADD_ELEMENT, 'data': element.properties}); |
+ this.elements.add(id); |
+ return id; |
+ } |
- /** |
- * Add a new UiElement to the scene, returning the ID assigned. |
- */ |
- addElement(element) { |
- var id = this.idIndex++; |
- element.id = id; |
- this.commands.push({ |
- 'type': api.Command.ADD_ELEMENT, |
- 'data': element |
- }); |
- this.elements.add(id); |
- return id; |
- } |
+ /** |
+ * Update an existing element, according to a UiElementUpdate object. |
+ * @param {number} id |
+ * @param {api.UiElementUpdate} update |
+ */ |
+ updateElement(id, update) { |
+ // To-do: Make sure ID exists. |
+ update.setId(id); |
+ this.commands.push( |
+ {'type': api.Command.UPDATE_ELEMENT, 'data': update.properties}); |
+ } |
- /** |
- * Update an existing element, according to a UiElementUpdate object. |
- */ |
- updateElement(id, update) { |
- // To-do: Make sure ID exists. |
- update.id = id; |
- this.commands.push({ |
- 'type': api.Command.UPDATE_ELEMENT, |
- 'data': update |
- }); |
- } |
+ /** |
+ * Remove an element from the scene. |
+ * @param {number} id |
+ */ |
+ removeElement(id) { |
+ // To-do: Make sure ID exists. |
+ this.commands.push( |
+ {'type': api.Command.REMOVE_ELEMENT, 'data': {'id': id}}); |
+ this.elements.delete(id); |
+ } |
- /* |
- * Remove an element from the scene. |
- */ |
- removeElement(id) { |
- // To-do: Make sure ID exists. |
- this.commands.push({ |
- 'type': api.Command.REMOVE_ELEMENT, |
- 'data': {'id': id} |
- }); |
- this.elements.delete(id); |
- } |
+ /** |
+ * Add a new Animation to the scene, returning the ID assigned. |
+ * @param {api.Animation} animation |
+ */ |
+ addAnimation(animation) { |
+ var id = this.idIndex++; |
+ animation.setId(id); |
+ this.commands.push({'type': api.Command.ADD_ANIMATION, 'data': animation}); |
+ this.animations[id] = animation.meshId; |
+ return id; |
+ } |
- /** |
- * Add a new Animation to the scene, returning the ID assigned. |
- */ |
- addAnimation(animation) { |
- var id = this.idIndex++; |
- animation.id = id; |
- this.commands.push({ |
- 'type': api.Command.ADD_ANIMATION, |
- 'data': animation |
- }); |
- this.animations[id] = animation.meshId; |
- return id; |
- } |
+ /** |
+ * Remove an animation from the scene. |
+ * |
+ * Note that animations are flushed when they complete and are not required |
+ * to be removed. Also new animations of the same type will effectively |
+ * override the original so there is no need to remove in that scenario |
+ * either. |
+ * |
+ * @param {number} id |
+ */ |
+ removeAnimation(id) { |
+ // To-do: Make sure ID exists. |
+ this.commands.push({ |
+ 'type': api.Command.REMOVE_ANIMATION, |
+ 'data': {'id': id, 'meshId': this.animations[id]} |
+ }); |
+ delete this.animations[id]; |
+ } |
- /* |
- * Remove an animation from the scene. |
- * |
- * Note that animations are flushed when they complete and are not required |
- * to be removed. Also new animations of the same type will effectively |
- * override the original so there is no need to remove in that scenario |
- * either. |
- */ |
- removeAnimation(id) { |
- // To-do: Make sure ID exists. |
- this.commands.push({ |
- 'type': api.Command.REMOVE_ANIMATION, |
- 'data': {'id': id, 'meshId': this.animations[id]} |
- }); |
- delete this.animations[id]; |
+ /** |
+ * Purge all elements in the scene. |
+ */ |
+ purge() { |
+ var ids = Object.keys(this.animations); |
+ for (let id_key of ids) { |
+ var id = parseInt(id_key, 10); |
+ this.removeAnimation(id); |
} |
- |
- /* |
- * Purge all elements in the scene. |
- */ |
- purge() { |
- var ids = Object.keys(this.animations); |
- for (let id_key of ids) { |
- var id = parseInt(id_key); |
- this.removeAnimation(id); |
- } |
- var ids = this.elements.values(); |
- for (let id of ids) { |
- this.removeElement(id); |
- } |
- this.flush(); |
+ var ids = this.elements.values(); |
+ for (let id of ids) { |
+ this.removeElement(id); |
} |
- }; |
- |
- return { |
- Scene: Scene, |
- }; |
-})(); |
+ this.flush(); |
+ } |
+}; |