1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_VR_UI_SCENE_CONSTANTS_H_
6 #define CHROME_BROWSER_VR_UI_SCENE_CONSTANTS_H_
7 
8 #include "ui/gfx/geometry/angle_conversions.h"
9 
10 namespace vr {
11 
12 static constexpr float kExitWarningDistance = 0.6f;
13 static constexpr float kExitWarningTextWidthDMM = 0.44288f;
14 static constexpr float kExitWarningFontHeightDMM = 0.024576f;
15 static constexpr float kExitWarningXPaddingDMM = 0.033f;
16 static constexpr float kExitWarningYPaddingDMM = 0.023f;
17 static constexpr float kExitWarningCornerRadiusDMM = 0.008f;
18 
19 static constexpr float kContentDistance = 2.5f;
20 static constexpr float kContentWidthDMM = 0.96f;
21 static constexpr float kContentHeightDMM = 0.64f;
22 static constexpr float kContentWidth = kContentWidthDMM * kContentDistance;
23 static constexpr float kContentHeight = kContentHeightDMM * kContentDistance;
24 static constexpr float kContentVerticalOffsetDMM = -0.1f;
25 static constexpr float kContentVerticalOffset =
26     kContentVerticalOffsetDMM * kContentDistance;
27 static constexpr float kContentCornerRadius = 0.005f * kContentWidth;
28 static constexpr float kLoadingIndicatorHeightDMM = 0.016f;
29 static constexpr float kLoadingIndicatorHeight = 0.016f * kContentDistance;
30 static constexpr float kLoadingIndicatorYOffset = -0.002f;
31 static constexpr float kBackplaneSize = 1000.0f;
32 static constexpr float kBackgroundDistanceMultiplier = 1.414f;
33 
34 static constexpr float kFullscreenDistance = 3.0f;
35 // Make sure that the aspect ratio for fullscreen is 16:9. Otherwise, we may
36 // experience visual artefacts for fullscreened videos.
37 static constexpr float kFullscreenHeightDMM = 0.64f;
38 static constexpr float kFullscreenHeight =
39     kFullscreenHeightDMM * kFullscreenDistance;
40 static constexpr float kFullscreenWidth = 1.138f * kFullscreenDistance;
41 static constexpr float kFullscreenVerticalOffsetDMM = -0.1f;
42 static constexpr float kFullscreenVerticalOffset =
43     kFullscreenVerticalOffsetDMM * kFullscreenDistance;
44 
45 static constexpr float kUrlBarDistance = 2.4f;
46 static constexpr float kUrlBarHeightDMM = 0.088f;
47 // This is the non-DMM relative offset of the URL bar. It is used to position
48 // the DMM root of the URL bar.
49 static constexpr float kUrlBarRelativeOffset = -0.45f;
50 // This is the absolute offset of the URL bar's neutral position in DMM.
51 static constexpr float kUrlBarVerticalOffsetDMM = -0.516f;
52 static constexpr float kUrlBarRotationRad = gfx::DegToRad(-10.0f);
53 static constexpr float kUrlBarFontHeightDMM = 0.027f;
54 static constexpr float kUrlBarButtonSizeDMM = 0.064f;
55 static constexpr float kUrlBarButtonIconSizeDMM = 0.038f;
56 static constexpr float kUrlBarEndButtonIconOffsetDMM = 0.0045f;
57 static constexpr float kUrlBarEndButtonWidthDMM = 0.088f;
58 static constexpr float kUrlBarSeparatorWidthDMM = 0.002f;
59 static constexpr float kUrlBarOriginRegionWidthDMM = 0.492f;
60 static constexpr float kUrlBarOriginRightMarginDMM = 0.020f;
61 static constexpr float kUrlBarOriginContentOffsetDMM = 0.020f;
62 static constexpr float kUrlBarItemCornerRadiusDMM = 0.006f;
63 static constexpr float kUrlBarUrlWidthDMM = kUrlBarOriginRegionWidthDMM -
64                                             kUrlBarEndButtonWidthDMM -
65                                             kUrlBarOriginRightMarginDMM;
66 static constexpr float kUrlBarButtonIconScaleFactor =
67     kUrlBarButtonIconSizeDMM / kUrlBarButtonSizeDMM;
68 
69 static constexpr float kIndicatorHeightDMM = 0.064f;
70 static constexpr float kIndicatorIconScaleFactor = 0.55f;
71 static constexpr float kIndicatorXPaddingDMM = 0.024f;
72 static constexpr float kIndicatorYPaddingDMM = 0.018f;
73 static constexpr float kIndicatorCornerRadiusDMM = 0.006f;
74 static constexpr float kIndicatorOffsetDMM = -0.008f;
75 static constexpr float kIndicatorMarginDMM = 0.001f;
76 static constexpr float kIndicatorVerticalOffset = 0.1f;
77 static constexpr float kIndicatorDistanceOffset = 0.1f;
78 static constexpr float kIndicatorDepth = 2.4f;
79 
80 static constexpr float kWebVrToastDistance = 1.0f;
81 static constexpr float kToastXPaddingDMM = 0.017f;
82 static constexpr float kToastYPaddingDMM = 0.02f;
83 static constexpr float kToastCornerRadiusDMM = 0.004f;
84 static constexpr float kToastTextFontHeightDMM = 0.023f;
85 static constexpr int kToastTimeoutSeconds = 6;
86 static constexpr int kWmrInitialIndicatorsTimeoutSeconds = 10;
87 static constexpr float kPlatformToastVerticalOffset = 0.5f;
88 
89 static constexpr float kSplashScreenTextDistance = 2.5f;
90 static constexpr float kSplashScreenTextFontHeightDMM = 0.05f;
91 static constexpr float kSplashScreenTextWidthDMM = 0.9f;
92 static constexpr float kSplashScreenTextVerticalOffsetDMM = -0.072f;
93 static constexpr float kSplashScreenMinDurationSeconds = 2.0f;
94 
95 static constexpr float kButtonDiameterDMM = 0.088f;
96 static constexpr float kButtonZOffsetHoverDMM = 0.048f;
97 
98 static constexpr float kCloseButtonDistance = 2.4f;
99 static constexpr float kCloseButtonRelativeOffset = -0.8f;
100 static constexpr float kCloseButtonVerticalOffset =
101     kFullscreenVerticalOffset - (kFullscreenHeight * 0.5f) - 0.35f;
102 static constexpr float kCloseButtonDiameter =
103     kButtonDiameterDMM * kCloseButtonDistance;
104 static constexpr float kCloseButtonFullscreenDistance = 2.9f;
105 static constexpr float kCloseButtonFullscreenVerticalOffset =
106     kFullscreenVerticalOffset - (kFullscreenHeight / 2) - 0.35f;
107 static constexpr float kCloseButtonFullscreenDiameter =
108     kButtonDiameterDMM * kCloseButtonFullscreenDistance;
109 
110 static constexpr float kSceneSize = 25.0f;
111 static constexpr float kSceneHeight = 4.0f;
112 static constexpr float kFloorHeight = -kSceneHeight / 2.0f;
113 static constexpr int kFloorGridlineCount = 40;
114 
115 static constexpr float kVoiceSearchCloseButtonDiameterDMM = 0.096f;
116 static constexpr float kVoiceSearchCloseButtonDiameter =
117     kVoiceSearchCloseButtonDiameterDMM * kContentDistance;
118 static constexpr float kVoiceSearchCloseButtonYOffset =
119     0.316f * kContentDistance + 0.5f * kVoiceSearchCloseButtonDiameter;
120 static constexpr float kVoiceSearchRecognitionResultTextHeight =
121     0.026f * kContentDistance;
122 static constexpr float kVoiceSearchRecognitionResultTextWidth =
123     0.4f * kContentDistance;
124 
125 static constexpr float kTimeoutScreenDisatance = 2.5f;
126 static constexpr float kTimeoutSpinnerSizeDMM = 0.088f;
127 static constexpr float kTimeoutSpinnerVerticalOffsetDMM =
128     kSplashScreenTextVerticalOffsetDMM;
129 
130 static constexpr float kTimeoutMessageHorizontalPaddingDMM = 0.04f;
131 static constexpr float kTimeoutMessageVerticalPaddingDMM = 0.024f;
132 
133 static constexpr float kTimeoutMessageCornerRadiusDMM = 0.008f;
134 
135 static constexpr float kTimeoutMessageLayoutGapDMM = 0.024f;
136 static constexpr float kTimeoutMessageIconWidthDMM = 0.056f;
137 static constexpr float kTimeoutMessageIconHeightDMM = 0.056f;
138 static constexpr float kTimeoutMessageTextFontHeightDMM = 0.022f;
139 static constexpr float kTimeoutMessageTextWidthDMM = 0.4f;
140 
141 static constexpr float kTimeoutButtonDepthOffset = -0.1f;
142 static constexpr float kTimeoutButtonRotationRad = kUrlBarRotationRad;
143 static constexpr float kWebVrTimeoutMessageButtonDiameterDMM = 0.096f;
144 
145 static constexpr float kTimeoutButtonTextWidthDMM = 0.058f;
146 static constexpr float kTimeoutButtonTextVerticalOffsetDMM = 0.024f;
147 
148 static constexpr float kHostedUiHeightRatio = 0.6f;
149 static constexpr float kHostedUiWidthRatio = 0.6f;
150 static constexpr float kHostedUiDepthOffset = 0.3f;
151 static constexpr float kHostedUiShadowOffset = 0.09f;
152 static constexpr float kFloatingHostedUiDistance = 0.01f;
153 
154 static constexpr float kScreenDimmerOpacity = 0.9f;
155 
156 static constexpr gfx::Point3F kOrigin = {0.0f, 0.0f, 0.0f};
157 
158 static constexpr float kLaserWidth = 0.01f;
159 
160 static constexpr float kReticleWidth = 0.025f;
161 static constexpr float kReticleHeight = 0.025f;
162 
163 static constexpr float kOmniboxWidthDMM = 0.672f;
164 static constexpr float kOmniboxHeightDMM = 0.088f;
165 static constexpr float kOmniboxVerticalOffsetDMM = -0.2f;
166 static constexpr float kOmniboxTextHeightDMM = 0.032f;
167 static constexpr float kOmniboxTextMarginDMM = 0.024f;
168 static constexpr float kOmniboxMicIconRightMarginDMM = 0.012f;
169 static constexpr float kOmniboxCloseButtonDiameterDMM = kButtonDiameterDMM;
170 static constexpr float kOmniboxCloseButtonVerticalOffsetDMM = -0.75f;
171 static constexpr float kOmniboxCornerRadiusDMM = 0.006f;
172 static constexpr float kOmniboxCloseButtonDepthOffset = -0.35f;
173 static constexpr int kOmniboxTransitionMs = 300;
174 
175 static constexpr float kOmniboxTextFieldIconButtonSizeDMM = 0.064f;
176 static constexpr float kUrlBarButtonHoverOffsetDMM = 0.012f;
177 static constexpr float kOmniboxTextFieldRightMargin =
178     ((kOmniboxHeightDMM - kOmniboxTextFieldIconButtonSizeDMM) / 2);
179 
180 static constexpr float kSuggestionHeightDMM = 0.088f;
181 static constexpr float kSuggestionGapDMM = 0.0018f;
182 static constexpr float kSuggestionLineGapDMM = 0.01f;
183 static constexpr float kSuggestionIconSizeDMM = 0.036f;
184 static constexpr float kSuggestionIconFieldWidthDMM = 0.104f;
185 static constexpr float kSuggestionRightMarginDMM = 0.024f;
186 static constexpr float kSuggestionTextFieldWidthDMM =
187     kOmniboxWidthDMM - kSuggestionIconFieldWidthDMM - kSuggestionRightMarginDMM;
188 static constexpr float kSuggestionContentTextHeightDMM = 0.024f;
189 static constexpr float kSuggestionDescriptionTextHeightDMM = 0.020f;
190 static constexpr float kSuggestionVerticalPaddingDMM = 0.008f;
191 
192 static constexpr int kControllerFadeInMs = 200;
193 static constexpr int kControllerFadeOutMs = 550;
194 
195 static constexpr float kSpeechRecognitionResultTextYOffset = 0.5f;
196 static constexpr int kSpeechRecognitionResultTimeoutMs = 2000;
197 static constexpr int kSpeechRecognitionOpacityAnimationDurationMs = 200;
198 
199 static constexpr float kModalPromptFadeOpacity = 0.5f;
200 
201 static constexpr float kKeyboardDistance = 2.2f;
202 static constexpr float kKeyboardVerticalOffsetDMM = -0.45f;
203 static constexpr float kKeyboardWebInputOffset = 1.2f;
204 
205 static constexpr float kControllerLabelSpacerSize = 0.025f;
206 static constexpr float kControllerLabelLayoutMargin = -0.005f;
207 static constexpr float kControllerLabelCalloutWidth = 0.02f;
208 static constexpr float kControllerLabelCalloutHeight = 0.001f;
209 static constexpr float kControllerLabelFontHeight = 0.05f;
210 static constexpr float kControllerLabelScale = 0.2f;
211 
212 // TODO(vollick): these should be encoded in the controller mesh.
213 static constexpr float kControllerTrackpadOffset = -0.035f;
214 static constexpr float kControllerExitButtonOffset = -0.008f;
215 static constexpr float kControllerBackButtonOffset = -0.008f;
216 
217 static constexpr int kControllerLabelTransitionDurationMs = 700;
218 
219 static constexpr float kControllerWidth = 0.035f;
220 static constexpr float kControllerHeight = 0.016f;
221 static constexpr float kControllerLength = 0.105f;
222 static constexpr float kControllerSmallButtonSize = kControllerWidth * 0.306f;
223 static constexpr float kControllerAppButtonZ = kControllerLength * -0.075f;
224 static constexpr float kControllerHomeButtonZ = kControllerLength * 0.075f;
225 static constexpr float kControllerBatteryDotMargin = kControllerWidth * 0.07f;
226 static constexpr float kControllerBatteryDotSize = kControllerWidth * 0.07f;
227 static constexpr float kControllerBatteryDotZ = kControllerLength * 0.325f;
228 static constexpr int kControllerBatteryDotCount = 5;
229 
230 static constexpr float kSkyDistance = 1000.0f;
231 static constexpr float kGridOpacity = 0.5f;
232 
233 static constexpr float kRepositionContentOpacity = 0.2f;
234 
235 static constexpr float kWebVrPermissionCornerRadius = 0.006f;
236 static constexpr float kWebVrPermissionLeftPadding = 0.024f;
237 static constexpr float kWebVrPermissionRightPadding = 0.032f;
238 static constexpr float kWebVrPermissionTopPadding = 0.026f;
239 static constexpr float kWebVrPermissionBottomPadding = 0.026f;
240 static constexpr float kWebVrPermissionMargin = 0.016f;
241 static constexpr float kWebVrPermissionIconSize = 0.034f;
242 static constexpr float kWebVrPermissionFontHeight = 0.024f;
243 static constexpr float kWebVrPermissionTextWidth = 0.380f;
244 static constexpr float kWebVrPermissionOuterMargin = 0.008f;
245 static constexpr float kWebVrPermissionDepth = 0.015f;
246 static constexpr float kWebVrPermissionOffsetStart = 0.3f;
247 static constexpr float kWebVrPermissionOffsetOvershoot = -0.01f;
248 static constexpr float kWebVrPermissionOffsetFinal = 0.0f;
249 static constexpr int kWebVrPermissionOffsetMs = 250;
250 static constexpr int kWebVrPermissionAnimationDurationMs = 750;
251 
252 static constexpr float kPromptVerticalOffsetDMM = -0.1f;
253 static constexpr float kPromptShadowOffsetDMM = 0.1f;
254 static constexpr float kPromptDistance = 2.4f;
255 static constexpr float kPromptPadding = 0.028f;
256 static constexpr float kPromptCornerRadius = 0.006f;
257 static constexpr float kPromptTextWidth = 0.522f;
258 static constexpr float kPromptFontSize = 0.028f;
259 static constexpr float kPromptIconSize = 0.042f;
260 static constexpr float kPromptButtonCornerRadius = 0.0035f;
261 static constexpr float kPromptIconTextGap = 0.010f;
262 static constexpr float kPromptMessageButtonGap = 0.056f;
263 static constexpr float kPromptButtonTextSize = 0.024f;
264 static constexpr float kPromptButtonGap = 0.014f;
265 
266 static constexpr float kRepositionCursorBackgroundSize = 1.85f;
267 static constexpr float kRepositionCursorSize = 1.5f;
268 
269 static constexpr float kMinResizerScale = 0.5f;
270 static constexpr float kMaxResizerScale = 1.5f;
271 
272 static constexpr float kRepositionFrameTopPadding = 0.25f;
273 static constexpr float kRepositionFrameEdgePadding = 0.04f;
274 static constexpr float kRepositionFrameHitPlaneTopPadding = 0.5f;
275 static constexpr float kRepositionFrameTransitionDurationMs = 300;
276 
277 static constexpr float kOverflowMenuOffset = 0.016f;
278 static constexpr float kOverflowMenuMinimumWidth = 0.312f;
279 static constexpr float kOverflowButtonRegionHeight = 0.088f;
280 static constexpr float kOverflowButtonRegionOpacity = 0.97f;
281 static constexpr float kOverflowButtonXPadding = 0.016f;
282 static constexpr float kOverflowButtonYPadding = 0.012f;
283 static constexpr float kOverflowMenuYPadding = 0.012f;
284 static constexpr float kOverflowMenuItemHeight = 0.080f;
285 static constexpr float kOverflowMenuItemXPadding = 0.024f;
286 static constexpr float kOverflowMenuMaxSpan = 0.384f - kOverflowMenuYPadding;
287 
288 static constexpr const char* kCrashVrBrowserUrl = "chrome://crash-vr-browser";
289 
290 }  // namespace vr
291 
292 #endif  // CHROME_BROWSER_VR_UI_SCENE_CONSTANTS_H_
293