Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Unified Diff: chrome/browser/android/vr_shell/ui_scene_manager.cc

Issue 2887773008: Update fullscreen ux, make floor and ceiling visible. (Closed)
Patch Set: adjust tests to fail if a new added element becomes visible at some future point Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/vr_shell/ui_scene_manager.cc
diff --git a/chrome/browser/android/vr_shell/ui_scene_manager.cc b/chrome/browser/android/vr_shell/ui_scene_manager.cc
index 32efa09a4e6ab84ebb23c085b7020add7e804e47..e8a62ad89d2e8117d898443d11a75404e96663fe 100644
--- a/chrome/browser/android/vr_shell/ui_scene_manager.cc
+++ b/chrome/browser/android/vr_shell/ui_scene_manager.cc
@@ -57,18 +57,32 @@ static constexpr float kLoadingIndicatorHeight = 0.008 * kUrlBarDistance;
static constexpr float kLoadingIndicatorOffset =
-0.016 * kUrlBarDistance - kLoadingIndicatorHeight / 2;
-static constexpr float kFullscreenWidth = 2.88;
-static constexpr float kFullscreenHeight = 1.62;
-static constexpr float kFullscreenDistance = 3;
-static constexpr float kFullscreenVerticalOffset = -0.26;
-static constexpr vr::Colorf kFullscreenBackgroundColor = {0.1, 0.1, 0.1, 1.0};
-
static constexpr float kSceneSize = 25.0;
static constexpr float kSceneHeight = 4.0;
static constexpr int kFloorGridlineCount = 40;
static constexpr vr::Colorf kBackgroundHorizonColor = {0.57, 0.57, 0.57, 1.0};
static constexpr vr::Colorf kBackgroundCenterColor = {0.48, 0.48, 0.48, 1.0};
+static constexpr float kFullscreenWidthDms = 1.138;
+static constexpr float kFullscreenHeightDms = 0.64;
+static constexpr float kFullscreenVerticalOffsetDms = 0.1;
+// Fullscreen distance calculated as value needed to make the content quad
+// extend down to the floor (with small pullback used to prevent actual
+// intersection). Note this assumes the vertical offset will always be offest
+// below the origin (ie negative).
+static constexpr float kFullscreenDistance =
+ (kSceneHeight / 2.0) /
+ ((kFullscreenVerticalOffsetDms + (kFullscreenHeightDms / 2.0)) + 0.01);
+
+static constexpr float kFullscreenHeight =
+ kFullscreenHeightDms * kFullscreenDistance;
+static constexpr float kFullscreenWidth =
+ kFullscreenWidthDms * kFullscreenDistance;
+static constexpr float kFullscreenVerticalOffset =
+ -kFullscreenVerticalOffsetDms * kFullscreenDistance;
+static constexpr vr::Colorf kFullscreenHorizonColor = {0.1, 0.1, 0.1, 1.0};
+static constexpr vr::Colorf kFullscreenCenterColor = {0.2, 0.2, 0.2, 1.0};
+
// Tiny distance to offset textures that should appear in the same plane.
static constexpr float kTextureOffset = 0.01;
@@ -101,6 +115,7 @@ UiSceneManager::~UiSceneManager() {}
void UiSceneManager::CreateScreenDimmer() {
std::unique_ptr<UiElement> element;
element = base::MakeUnique<ScreenDimmer>();
+ element->set_debug_id(kScreenDimmer);
element->set_id(AllocateId());
element->set_fill(vr_shell::Fill::NONE);
element->set_visible(false);
@@ -145,6 +160,7 @@ void UiSceneManager::CreateSecurityWarnings() {
scene_->AddUiElement(std::move(element));
element = base::MakeUnique<ExitWarning>(1024);
+ element->set_debug_id(kExitWarning);
element->set_id(AllocateId());
element->set_fill(vr_shell::Fill::NONE);
element->set_size({kExitWarningWidth, kExitWarningHeight, 1});
@@ -163,6 +179,7 @@ void UiSceneManager::CreateSystemIndicators() {
// TODO(acondor): Make constants for sizes and positions once the UX for the
// indicators is defined.
element = base::MakeUnique<AudioCaptureIndicator>(512);
+ element->set_debug_id(kAudioCaptureIndicator);
element->set_id(AllocateId());
element->set_translation({-0.3, 0.8, -kContentDistance + 0.1});
element->set_size({0.5, 0, 1});
@@ -171,6 +188,7 @@ void UiSceneManager::CreateSystemIndicators() {
scene_->AddUiElement(std::move(element));
element = base::MakeUnique<VideoCaptureIndicator>(512);
+ element->set_debug_id(kVideoCaptureIndicator);
element->set_id(AllocateId());
element->set_translation({0.3, 0.8, -kContentDistance + 0.1});
element->set_size({0.5, 0, 1});
@@ -179,6 +197,7 @@ void UiSceneManager::CreateSystemIndicators() {
scene_->AddUiElement(std::move(element));
element = base::MakeUnique<ScreenCaptureIndicator>(512);
+ element->set_debug_id(kScreenCaptureIndicator);
element->set_id(AllocateId());
element->set_translation({0.0, 0.65, -kContentDistance + 0.1});
element->set_size({0.4, 0, 1});
@@ -191,6 +210,7 @@ void UiSceneManager::CreateContentQuad() {
std::unique_ptr<UiElement> element;
element = base::MakeUnique<UiElement>();
+ element->set_debug_id(kContentQuad);
element->set_id(AllocateId());
element->set_fill(vr_shell::Fill::CONTENT);
element->set_size({kContentWidth, kContentHeight, 1});
@@ -203,6 +223,7 @@ void UiSceneManager::CreateContentQuad() {
// Place an invisible but hittable plane behind the content quad, to keep the
// reticle roughly planar with the content if near content.
element = base::MakeUnique<UiElement>();
+ element->set_debug_id(kBackplane);
element->set_id(AllocateId());
element->set_fill(vr_shell::Fill::NONE);
element->set_size({kBackplaneSize, kBackplaneSize, 1.0});
@@ -221,6 +242,7 @@ void UiSceneManager::CreateBackground() {
// Floor.
element = base::MakeUnique<UiElement>();
+ element->set_debug_id(kFloor);
element->set_id(AllocateId());
element->set_size({kSceneSize, kSceneSize, 1.0});
element->set_translation({0.0, -kSceneHeight / 2, 0.0});
@@ -229,11 +251,13 @@ void UiSceneManager::CreateBackground() {
element->set_edge_color(kBackgroundHorizonColor);
element->set_center_color(kBackgroundCenterColor);
element->set_draw_phase(0);
- control_elements_.push_back(element.get());
+ floor_ = element.get();
+ content_elements_.push_back(element.get());
scene_->AddUiElement(std::move(element));
// Ceiling.
element = base::MakeUnique<UiElement>();
+ element->set_debug_id(kCeiling);
element->set_id(AllocateId());
element->set_fill(vr_shell::Fill::OPAQUE_GRADIENT);
element->set_size({kSceneSize, kSceneSize, 1.0});
@@ -243,11 +267,13 @@ void UiSceneManager::CreateBackground() {
element->set_edge_color(kBackgroundHorizonColor);
element->set_center_color(kBackgroundCenterColor);
element->set_draw_phase(0);
- control_elements_.push_back(element.get());
+ ceiling_ = element.get();
+ content_elements_.push_back(element.get());
scene_->AddUiElement(std::move(element));
// Floor grid.
element = base::MakeUnique<UiElement>();
+ element->set_debug_id(kFloorGrid);
element->set_id(AllocateId());
element->set_fill(vr_shell::Fill::GRID_GRADIENT);
element->set_size({kSceneSize, kSceneSize, 1.0});
@@ -260,7 +286,8 @@ void UiSceneManager::CreateBackground() {
element->set_edge_color(edge_color);
element->set_gridline_count(kFloorGridlineCount);
element->set_draw_phase(0);
- control_elements_.push_back(element.get());
+ floor_grid_ = element.get();
+ content_elements_.push_back(element.get());
scene_->AddUiElement(std::move(element));
scene_->SetBackgroundColor(kBackgroundHorizonColor);
@@ -269,6 +296,7 @@ void UiSceneManager::CreateBackground() {
void UiSceneManager::CreateUrlBar() {
// TODO(cjgrant): Incorporate final size and position.
auto url_bar = base::MakeUnique<UrlBar>(512);
+ url_bar->set_debug_id(kUrlBar);
url_bar->set_id(AllocateId());
url_bar->set_translation({0, kUrlBarVerticalOffset, -kUrlBarDistance});
url_bar->set_size({kUrlBarWidth, kUrlBarHeight, 1});
@@ -279,6 +307,7 @@ void UiSceneManager::CreateUrlBar() {
scene_->AddUiElement(std::move(url_bar));
auto indicator = base::MakeUnique<LoadingIndicator>(256);
+ indicator->set_debug_id(kLoadingIndicator);
indicator->set_id(AllocateId());
indicator->set_translation({0, 0, kLoadingIndicatorOffset});
indicator->set_size({kLoadingIndicatorWidth, kLoadingIndicatorHeight, 1});
@@ -334,22 +363,37 @@ void UiSceneManager::ConfigureScene() {
// Update content quad parameters depending on fullscreen.
// TODO(http://crbug.com/642937): Animate fullscreen transitions.
if (fullscreen_) {
- scene_->SetBackgroundColor(kFullscreenBackgroundColor);
main_content_->set_translation(
{0, kFullscreenVerticalOffset, -kFullscreenDistance});
main_content_->set_size({kFullscreenWidth, kFullscreenHeight, 1});
+
+ ConfigureBackgroundColor(kFullscreenCenterColor, kFullscreenHorizonColor);
} else {
- scene_->SetBackgroundColor(kBackgroundHorizonColor);
// Note that main_content_ is already visible in this case.
main_content_->set_translation(
{0, kContentVerticalOffset, -kContentDistance});
main_content_->set_size({kContentWidth, kContentHeight, 1});
+
+ ConfigureBackgroundColor(kBackgroundCenterColor, kBackgroundHorizonColor);
}
scene_->SetBackgroundDistance(main_content_->translation().z() *
-kBackgroundDistanceMultiplier);
}
+void UiSceneManager::ConfigureBackgroundColor(vr::Colorf center_color,
+ vr::Colorf horizon_color) {
+ scene_->SetBackgroundColor(horizon_color);
+ floor_->set_edge_color(horizon_color);
+ floor_->set_center_color(center_color);
+ ceiling_->set_edge_color(horizon_color);
+ ceiling_->set_center_color(center_color);
+ floor_grid_->set_center_color(horizon_color);
+ vr::Colorf edge_color = horizon_color;
+ edge_color.a = 0.0;
+ floor_grid_->set_edge_color(edge_color);
+}
+
void UiSceneManager::SetAudioCapturingIndicator(bool enabled) {
audio_capture_indicator_->set_visible(enabled);
}
« no previous file with comments | « chrome/browser/android/vr_shell/ui_scene_manager.h ('k') | chrome/browser/android/vr_shell/ui_scene_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698