| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 var vrShellUi = (function() { | 5 var vrShellUi = (function() { |
| 6 'use strict'; | 6 'use strict'; |
| 7 | 7 |
| 8 let scene = new ui.Scene(); | 8 let scene = new ui.Scene(); |
| 9 let sceneManager; | 9 let sceneManager; |
| 10 | 10 |
| 11 class ContentQuad { |
| 12 constructor() { |
| 13 /** @const */ var SCREEN_HEIGHT = 1.6; |
| 14 /** @const */ var SCREEN_DISTANCE = 2.0; |
| 15 |
| 16 let element = new api.UiElement(0, 0, 0, 0); |
| 17 element.setIsContentQuad(false); |
| 18 element.setVisible(false); |
| 19 element.setSize(SCREEN_HEIGHT * 16 / 9, SCREEN_HEIGHT); |
| 20 element.setTranslation(0, 0, -SCREEN_DISTANCE); |
| 21 this.elementId = scene.addElement(element); |
| 22 } |
| 23 |
| 24 show(visible) { |
| 25 let update = new api.UiElementUpdate(); |
| 26 update.setVisible(visible); |
| 27 scene.updateElement(this.elementId, update); |
| 28 } |
| 29 |
| 30 getElementId() { |
| 31 return this.elementId; |
| 32 } |
| 33 }; |
| 34 |
| 11 class DomUiElement { | 35 class DomUiElement { |
| 12 constructor(domId) { | 36 constructor(domId) { |
| 13 let domElement = document.querySelector(domId); | 37 let domElement = document.querySelector(domId); |
| 14 let style = window.getComputedStyle(domElement); | 38 let style = window.getComputedStyle(domElement); |
| 15 | 39 |
| 16 // Pull copy rectangle from DOM element properties. | 40 // Pull copy rectangle from DOM element properties. |
| 17 let pixelX = domElement.offsetLeft; | 41 let pixelX = domElement.offsetLeft; |
| 18 let pixelY = domElement.offsetTop; | 42 let pixelY = domElement.offsetTop; |
| 19 let pixelWidth = parseInt(style.getPropertyValue('width')); | 43 let pixelWidth = parseInt(style.getPropertyValue('width')); |
| 20 let pixelHeight = parseInt(style.getPropertyValue('height')); | 44 let pixelHeight = parseInt(style.getPropertyValue('height')); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 onMouseEnter() { | 79 onMouseEnter() { |
| 56 this.configure(1, 1, 0.015); | 80 this.configure(1, 1, 0.015); |
| 57 } | 81 } |
| 58 | 82 |
| 59 onMouseLeave() { | 83 onMouseLeave() { |
| 60 this.configure(0.8, 0, 0); | 84 this.configure(0.8, 0, 0); |
| 61 } | 85 } |
| 62 }; | 86 }; |
| 63 | 87 |
| 64 class Controls { | 88 class Controls { |
| 65 constructor() { | 89 constructor(contentQuadId) { |
| 66 this.buttons = []; | 90 this.buttons = []; |
| 67 let descriptors = [ | 91 let descriptors = [ |
| 68 ['#back', function() { | 92 ['#back', function() { |
| 69 api.doAction(api.Action.HISTORY_BACK); | 93 api.doAction(api.Action.HISTORY_BACK); |
| 70 }], | 94 }], |
| 71 ['#reload', function() { | 95 ['#reload', function() { |
| 72 api.doAction(api.Action.RELOAD); | 96 api.doAction(api.Action.RELOAD); |
| 73 }], | 97 }], |
| 74 ['#forward', function() { | 98 ['#forward', function() { |
| 75 api.doAction(api.Action.HISTORY_FORWARD); | 99 api.doAction(api.Action.HISTORY_FORWARD); |
| 76 }], | 100 }], |
| 77 ]; | 101 ]; |
| 78 | 102 |
| 79 /** @const */ var BUTTON_SPACING = 0.3; | 103 /** @const */ var BUTTON_SPACING = 0.3; |
| 80 | 104 |
| 81 let startPosition = -BUTTON_SPACING * (descriptors.length / 2.0 - 0.5); | 105 let startPosition = -BUTTON_SPACING * (descriptors.length / 2.0 - 0.5); |
| 82 for (let i = 0; i < descriptors.length; i++) { | 106 for (let i = 0; i < descriptors.length; i++) { |
| 83 // Use an invisible parent to simplify Z-axis movement on hover. | 107 // Use an invisible parent to simplify Z-axis movement on hover. |
| 84 let position = new api.UiElement(0, 0, 0, 0); | 108 let position = new api.UiElement(0, 0, 0, 0); |
| 85 position.setParentId(api.getContentElementId()); | 109 position.setParentId(contentQuadId); |
| 86 position.setVisible(false); | 110 position.setVisible(false); |
| 87 position.setAnchoring(api.XAnchoring.XNONE, api.YAnchoring.YBOTTOM); | 111 position.setAnchoring(api.XAnchoring.XNONE, api.YAnchoring.YBOTTOM); |
| 88 position.setTranslation( | 112 position.setTranslation( |
| 89 startPosition + i * BUTTON_SPACING, -0.3, 0.3); | 113 startPosition + i * BUTTON_SPACING, -0.3, 0.3); |
| 90 let id = scene.addElement(position); | 114 let id = scene.addElement(position); |
| 91 | 115 |
| 92 let domId = descriptors[i][0]; | 116 let domId = descriptors[i][0]; |
| 93 let callback = descriptors[i][1]; | 117 let callback = descriptors[i][1]; |
| 94 let element = new RoundButton(domId, callback); | 118 let element = new RoundButton(domId, callback); |
| 95 this.buttons.push(element); | 119 this.buttons.push(element); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 scene.updateElement(this.transientWarning.uiElementId, update); | 206 scene.updateElement(this.transientWarning.uiElementId, update); |
| 183 this.secureOriginTimer = null; | 207 this.secureOriginTimer = null; |
| 184 scene.flush(); | 208 scene.flush(); |
| 185 } | 209 } |
| 186 | 210 |
| 187 }; | 211 }; |
| 188 | 212 |
| 189 class SceneManager { | 213 class SceneManager { |
| 190 constructor() { | 214 constructor() { |
| 191 this.mode = api.Mode.UNKNOWN; | 215 this.mode = api.Mode.UNKNOWN; |
| 192 this.controls = new Controls(); | 216 |
| 217 this.contentQuad = new ContentQuad(); |
| 218 let contentId = this.contentQuad.getElementId(); |
| 219 |
| 220 this.controls = new Controls(contentId); |
| 193 this.secureOriginWarnings = new SecureOriginWarnings(); | 221 this.secureOriginWarnings = new SecureOriginWarnings(); |
| 194 } | 222 } |
| 195 | 223 |
| 196 setMode(mode) { | 224 setMode(mode) { |
| 197 this.mode = mode; | 225 this.mode = mode; |
| 226 this.contentQuad.show(mode == api.Mode.STANDARD); |
| 198 this.controls.show(mode == api.Mode.STANDARD); | 227 this.controls.show(mode == api.Mode.STANDARD); |
| 199 this.secureOriginWarnings.show(mode == api.Mode.WEB_VR); | 228 this.secureOriginWarnings.show(mode == api.Mode.WEB_VR); |
| 200 } | 229 } |
| 201 | 230 |
| 202 setSecureOrigin(secure) { | 231 setSecureOrigin(secure) { |
| 203 this.secureOriginWarnings.setSecureOrigin(secure); | 232 this.secureOriginWarnings.setSecureOrigin(secure); |
| 204 } | 233 } |
| 205 }; | 234 }; |
| 206 | 235 |
| 207 function initialize() { | 236 function initialize() { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 227 scene.flush(); | 256 scene.flush(); |
| 228 } | 257 } |
| 229 | 258 |
| 230 return { | 259 return { |
| 231 initialize: initialize, | 260 initialize: initialize, |
| 232 command: command, | 261 command: command, |
| 233 }; | 262 }; |
| 234 })(); | 263 })(); |
| 235 | 264 |
| 236 document.addEventListener('DOMContentLoaded', vrShellUi.initialize); | 265 document.addEventListener('DOMContentLoaded', vrShellUi.initialize); |
| OLD | NEW |