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

Side by Side Diff: chrome/browser/android/vr_shell/ui_scene_unittest.cc

Issue 2730883003: Remove unnecessary UI element math. (Closed)
Patch Set: Add comments to non-obvious methods. Created 3 years, 9 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/android/vr_shell/ui_scene.cc ('k') | chrome/browser/android/vr_shell/vr_math.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 #include "chrome/browser/android/vr_shell/ui_scene.h" 5 #include "chrome/browser/android/vr_shell/ui_scene.h"
6 6
7 #define _USE_MATH_DEFINES // For M_PI in MSVC. 7 #define _USE_MATH_DEFINES // For M_PI in MSVC.
8 #include <cmath> 8 #include <cmath>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 element->scale = {2, 2, 1}; 118 element->scale = {2, 2, 1};
119 element->rotation = {0, 0, 1, M_PI / 2}; 119 element->rotation = {0, 0, 1, M_PI / 2};
120 element->translation = {3, 0, 0}; 120 element->translation = {3, 0, 0};
121 scene.AddUiElement(element); 121 scene.AddUiElement(element);
122 const ContentRectangle* child = scene.GetUiElementById(1); 122 const ContentRectangle* child = scene.GetUiElementById(1);
123 123
124 const gvr::Vec3f origin({0, 0, 0}); 124 const gvr::Vec3f origin({0, 0, 0});
125 const gvr::Vec3f point({1, 0, 0}); 125 const gvr::Vec3f point({1, 0, 0});
126 126
127 // Check resulting transform with no screen tilt. 127 // Check resulting transform with no screen tilt.
128 scene.UpdateTransforms(0, 0); 128 scene.UpdateTransforms(0);
129 auto new_origin = MatrixVectorMul(child->transform.to_world, origin); 129 auto new_origin = MatrixVectorMul(child->TransformMatrix(), origin);
130 auto new_point = MatrixVectorMul(child->transform.to_world, point); 130 auto new_point = MatrixVectorMul(child->TransformMatrix(), point);
131 EXPECT_VEC3F_NEAR(gvr::Vec3f({6, 10, 0}), new_origin); 131 EXPECT_VEC3F_NEAR(gvr::Vec3f({6, 10, 0}), new_origin);
132 EXPECT_VEC3F_NEAR(gvr::Vec3f({0, 10, 0}), new_point); 132 EXPECT_VEC3F_NEAR(gvr::Vec3f({0, 10, 0}), new_point);
133
134 // Check with screen tilt (use 90 degrees for simplicity).
135 scene.UpdateTransforms(M_PI / 2, 0);
136 new_origin = MatrixVectorMul(child->transform.to_world, origin);
137 new_point = MatrixVectorMul(child->transform.to_world, point);
138 EXPECT_VEC3F_NEAR(gvr::Vec3f({6, 0, 10}), new_origin);
139 EXPECT_VEC3F_NEAR(gvr::Vec3f({0, 0, 10}), new_point);
140 } 133 }
141 134
142 TEST(UiScene, Opacity) { 135 TEST(UiScene, Opacity) {
143 UiScene scene; 136 UiScene scene;
144 std::unique_ptr<ContentRectangle> element; 137 std::unique_ptr<ContentRectangle> element;
145 138
146 element.reset(new ContentRectangle); 139 element.reset(new ContentRectangle);
147 element->id = 0; 140 element->id = 0;
148 element->opacity = 0.5; 141 element->opacity = 0.5;
149 scene.AddUiElement(element); 142 scene.AddUiElement(element);
150 143
151 element.reset(new ContentRectangle); 144 element.reset(new ContentRectangle);
152 element->id = 1; 145 element->id = 1;
153 element->parent_id = 0; 146 element->parent_id = 0;
154 element->opacity = 0.5; 147 element->opacity = 0.5;
155 scene.AddUiElement(element); 148 scene.AddUiElement(element);
156 149
157 scene.UpdateTransforms(0, 0); 150 scene.UpdateTransforms(0);
158 EXPECT_EQ(scene.GetUiElementById(0)->computed_opacity, 0.5f); 151 EXPECT_EQ(scene.GetUiElementById(0)->computed_opacity, 0.5f);
159 EXPECT_EQ(scene.GetUiElementById(1)->computed_opacity, 0.25f); 152 EXPECT_EQ(scene.GetUiElementById(1)->computed_opacity, 0.25f);
160 } 153 }
161 154
162 typedef struct { 155 typedef struct {
163 XAnchoring x_anchoring; 156 XAnchoring x_anchoring;
164 YAnchoring y_anchoring; 157 YAnchoring y_anchoring;
165 float expected_x; 158 float expected_x;
166 float expected_y; 159 float expected_y;
167 } AnchoringTestCase; 160 } AnchoringTestCase;
(...skipping 11 matching lines...) Expand all
179 scene.AddUiElement(element); 172 scene.AddUiElement(element);
180 173
181 // Add a child to the parent, with anchoring. 174 // Add a child to the parent, with anchoring.
182 element.reset(new ContentRectangle); 175 element.reset(new ContentRectangle);
183 element->id = 1; 176 element->id = 1;
184 element->parent_id = 0; 177 element->parent_id = 0;
185 element->x_anchoring = GetParam().x_anchoring; 178 element->x_anchoring = GetParam().x_anchoring;
186 element->y_anchoring = GetParam().y_anchoring; 179 element->y_anchoring = GetParam().y_anchoring;
187 scene.AddUiElement(element); 180 scene.AddUiElement(element);
188 181
189 scene.UpdateTransforms(0, 0); 182 scene.UpdateTransforms(0);
190 const ContentRectangle* child = scene.GetUiElementById(1); 183 const ContentRectangle* child = scene.GetUiElementById(1);
191 EXPECT_NEAR(child->GetCenter().x, GetParam().expected_x, TOLERANCE); 184 EXPECT_NEAR(child->GetCenter().x, GetParam().expected_x, TOLERANCE);
192 EXPECT_NEAR(child->GetCenter().y, GetParam().expected_y, TOLERANCE); 185 EXPECT_NEAR(child->GetCenter().y, GetParam().expected_y, TOLERANCE);
193 scene.RemoveUiElement(1); 186 scene.RemoveUiElement(1);
194 } 187 }
195 188
196 const std::vector<AnchoringTestCase> anchoring_test_cases = { 189 const std::vector<AnchoringTestCase> anchoring_test_cases = {
197 {XAnchoring::XNONE, YAnchoring::YNONE, 0, 0}, 190 {XAnchoring::XNONE, YAnchoring::YNONE, 0, 0},
198 {XAnchoring::XLEFT, YAnchoring::YNONE, -2, 0}, 191 {XAnchoring::XLEFT, YAnchoring::YNONE, -2, 0},
199 {XAnchoring::XRIGHT, YAnchoring::YNONE, 2, 0}, 192 {XAnchoring::XRIGHT, YAnchoring::YNONE, 2, 0},
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 EXPECT_FLOAT_EQ(animation->from[0], 300); 405 EXPECT_FLOAT_EQ(animation->from[0], 300);
413 EXPECT_FLOAT_EQ(animation->from[1], 301); 406 EXPECT_FLOAT_EQ(animation->from[1], 301);
414 EXPECT_FLOAT_EQ(animation->from[2], 302); 407 EXPECT_FLOAT_EQ(animation->from[2], 302);
415 EXPECT_FLOAT_EQ(animation->from[3], 303); 408 EXPECT_FLOAT_EQ(animation->from[3], 303);
416 409
417 EXPECT_EQ(animation->start, 22345000); 410 EXPECT_EQ(animation->start, 22345000);
418 EXPECT_EQ(animation->duration, 54321000); 411 EXPECT_EQ(animation->duration, 54321000);
419 } 412 }
420 413
421 } // namespace vr_shell 414 } // namespace vr_shell
OLDNEW
« no previous file with comments | « chrome/browser/android/vr_shell/ui_scene.cc ('k') | chrome/browser/android/vr_shell/vr_math.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698