1 // Copyright 2012 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 #include "cc/test/geometry_test_utils.h" 6 7 #include "base/logging.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 #include "ui/gfx/transform.h" 10 11 namespace cc { 12 13 // NOTE: even though transform data types use double precision, we only check 14 // for equality within single-precision error bounds because many transforms 15 // originate from single-precision data types such as quads/rects/etc. 16 17 void ExpectTransformationMatrixEq(const gfx::Transform& expected, 18 const gfx::Transform& actual) { 19 EXPECT_FLOAT_EQ((expected).matrix().get(0, 0), (actual).matrix().get(0, 0)); 20 EXPECT_FLOAT_EQ((expected).matrix().get(1, 0), (actual).matrix().get(1, 0)); 21 EXPECT_FLOAT_EQ((expected).matrix().get(2, 0), (actual).matrix().get(2, 0)); 22 EXPECT_FLOAT_EQ((expected).matrix().get(3, 0), (actual).matrix().get(3, 0)); 23 EXPECT_FLOAT_EQ((expected).matrix().get(0, 1), (actual).matrix().get(0, 1)); 24 EXPECT_FLOAT_EQ((expected).matrix().get(1, 1), (actual).matrix().get(1, 1)); 25 EXPECT_FLOAT_EQ((expected).matrix().get(2, 1), (actual).matrix().get(2, 1)); 26 EXPECT_FLOAT_EQ((expected).matrix().get(3, 1), (actual).matrix().get(3, 1)); 27 EXPECT_FLOAT_EQ((expected).matrix().get(0, 2), (actual).matrix().get(0, 2)); 28 EXPECT_FLOAT_EQ((expected).matrix().get(1, 2), (actual).matrix().get(1, 2)); 29 EXPECT_FLOAT_EQ((expected).matrix().get(2, 2), (actual).matrix().get(2, 2)); 30 EXPECT_FLOAT_EQ((expected).matrix().get(3, 2), (actual).matrix().get(3, 2)); 31 EXPECT_FLOAT_EQ((expected).matrix().get(0, 3), (actual).matrix().get(0, 3)); 32 EXPECT_FLOAT_EQ((expected).matrix().get(1, 3), (actual).matrix().get(1, 3)); 33 EXPECT_FLOAT_EQ((expected).matrix().get(2, 3), (actual).matrix().get(2, 3)); 34 EXPECT_FLOAT_EQ((expected).matrix().get(3, 3), (actual).matrix().get(3, 3)); 35 } 36 37 gfx::Transform Inverse(const gfx::Transform& transform) { 38 gfx::Transform result(gfx::Transform::kSkipInitialization); 39 bool inverted_successfully = transform.GetInverse(&result); 40 DCHECK(inverted_successfully); 41 return result; 42 } 43 44 } // namespace cc 45