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

Side by Side Diff: cc/trees/property_tree_unittest.cc

Issue 1060413002: cc: Re-use transforms from transform nodes when computing visible rects (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 8 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
« cc/trees/property_tree.cc ('K') | « cc/trees/property_tree.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "cc/trees/property_tree.h" 5 #include "cc/trees/property_tree.h"
6 6
7 #include "cc/test/geometry_test_utils.h" 7 #include "cc/test/geometry_test_utils.h"
8 #include "cc/trees/draw_property_utils.h" 8 #include "cc/trees/draw_property_utils.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 bool success = tree.ComputeTransform(1, 0, &transform); 205 bool success = tree.ComputeTransform(1, 0, &transform);
206 EXPECT_TRUE(success); 206 EXPECT_TRUE(success);
207 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 207 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
208 208
209 // To compute this would require inverting the 0 matrix, so we cannot 209 // To compute this would require inverting the 0 matrix, so we cannot
210 // succeed. 210 // succeed.
211 success = tree.ComputeTransform(0, 1, &inverse); 211 success = tree.ComputeTransform(0, 1, &inverse);
212 EXPECT_FALSE(success); 212 EXPECT_FALSE(success);
213 } 213 }
214 214
215 TEST(PropertyTreeTest, ComputeTransformWithSublayerScale) {
216 TransformTree tree;
217 TransformNode& root = *tree.Node(0);
218 root.data.target_id = 0;
219 tree.UpdateTransforms(0);
220
221 TransformNode grand_parent;
222 grand_parent.data.local.Scale(2.f, 2.f);
223 grand_parent.data.target_id = 0;
224 grand_parent.data.needs_sublayer_scale = true;
225 int grand_parent_id = tree.Insert(grand_parent, 0);
226 tree.UpdateTransforms(grand_parent_id);
227
228 TransformNode parent;
229 parent.data.local.Translate(15.f, 15.f);
230 parent.data.target_id = grand_parent_id;
231 int parent_id = tree.Insert(parent, grand_parent_id);
232 tree.UpdateTransforms(parent_id);
233
234 TransformNode child;
235 child.data.local.Scale(3.f, 3.f);
236 child.data.target_id = grand_parent_id;
237 int child_id = tree.Insert(child, parent_id);
238 tree.UpdateTransforms(child_id);
239
240 TransformNode grand_child;
241 grand_child.data.local.Scale(5.f, 5.f);
242 grand_child.data.target_id = grand_parent_id;
243 grand_child.data.needs_sublayer_scale = true;
244 int grand_child_id = tree.Insert(grand_child, child_id);
245 tree.UpdateTransforms(grand_child_id);
246
247 EXPECT_EQ(gfx::Vector2dF(2.f, 2.f),
248 tree.Node(grand_parent_id)->data.sublayer_scale);
249 EXPECT_EQ(gfx::Vector2dF(30.f, 30.f),
250 tree.Node(grand_child_id)->data.sublayer_scale);
251
252 // Compute transform from grand_parent to grand_child.
253 gfx::Transform expected_transform_without_sublayer_scale;
254 expected_transform_without_sublayer_scale.Scale(1.f / 15.f, 1.f / 15.f);
255 expected_transform_without_sublayer_scale.Translate(-15.f, -15.f);
256
257 gfx::Transform expected_transform_with_dest_sublayer_scale;
258 expected_transform_with_dest_sublayer_scale.Scale(30.f, 30.f);
259 expected_transform_with_dest_sublayer_scale.Scale(1.f / 15.f, 1.f / 15.f);
260 expected_transform_with_dest_sublayer_scale.Translate(-15.f, -15.f);
261
262 gfx::Transform expected_transform_with_source_sublayer_scale;
263 expected_transform_with_source_sublayer_scale.Scale(1.f / 15.f, 1.f / 15.f);
264 expected_transform_with_source_sublayer_scale.Translate(-15.f, -15.f);
265 expected_transform_with_source_sublayer_scale.Scale(0.5f, 0.5f);
266
267 gfx::Transform transform;
268 bool success =
269 tree.ComputeTransform(grand_parent_id, grand_child_id, &transform);
270 EXPECT_TRUE(success);
271 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform_without_sublayer_scale,
272 transform);
273
274 success = tree.ComputeTransformWithDestinationSublayerScale(
275 grand_parent_id, grand_child_id, &transform);
276 EXPECT_TRUE(success);
277 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform_with_dest_sublayer_scale,
278 transform);
279
280 success = tree.ComputeTransformWithSourceSublayerScale(
281 grand_parent_id, grand_child_id, &transform);
282 EXPECT_TRUE(success);
283 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform_with_source_sublayer_scale,
284 transform);
285
286 // Now compute transform from grand_child to grand_parent.
287 expected_transform_without_sublayer_scale.MakeIdentity();
288 expected_transform_without_sublayer_scale.Translate(15.f, 15.f);
289 expected_transform_without_sublayer_scale.Scale(15.f, 15.f);
290
291 expected_transform_with_dest_sublayer_scale.MakeIdentity();
292 expected_transform_with_dest_sublayer_scale.Scale(2.f, 2.f);
293 expected_transform_with_dest_sublayer_scale.Translate(15.f, 15.f);
294 expected_transform_with_dest_sublayer_scale.Scale(15.f, 15.f);
295
296 expected_transform_with_source_sublayer_scale.MakeIdentity();
297 expected_transform_with_source_sublayer_scale.Translate(15.f, 15.f);
298 expected_transform_with_source_sublayer_scale.Scale(15.f, 15.f);
299 expected_transform_with_source_sublayer_scale.Scale(1.f / 30.f, 1.f / 30.f);
300
301 success = tree.ComputeTransform(grand_child_id, grand_parent_id, &transform);
302 EXPECT_TRUE(success);
303 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform_without_sublayer_scale,
304 transform);
305
306 success = tree.ComputeTransformWithDestinationSublayerScale(
307 grand_child_id, grand_parent_id, &transform);
308 EXPECT_TRUE(success);
309 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform_with_dest_sublayer_scale,
310 transform);
311
312 success = tree.ComputeTransformWithSourceSublayerScale(
313 grand_child_id, grand_parent_id, &transform);
314 EXPECT_TRUE(success);
315 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_transform_with_source_sublayer_scale,
316 transform);
317 }
318
215 } // namespace cc 319 } // namespace cc
OLDNEW
« cc/trees/property_tree.cc ('K') | « cc/trees/property_tree.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698