OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/base/tiling_data.h" | 5 #include "cc/base/tiling_data.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "cc/test/geometry_test_utils.h" | 10 #include "cc/test/geometry_test_utils.h" |
(...skipping 2184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2195 // Containing, but larger than tiling rect. | 2195 // Containing, but larger than tiling rect. |
2196 EXPECT_RECT_EQ(data.tiling_rect(), | 2196 EXPECT_RECT_EQ(data.tiling_rect(), |
2197 data.ExpandRectToTileBoundsWithBorders( | 2197 data.ExpandRectToTileBoundsWithBorders( |
2198 gfx::Rect(origin, gfx::Size(100, 100)))); | 2198 gfx::Rect(origin, gfx::Size(100, 100)))); |
2199 | 2199 |
2200 // Non-intersecting with tiling rect. | 2200 // Non-intersecting with tiling rect. |
2201 gfx::Rect non_intersect(origin.x() + 200, origin.y() + 200, 100, 100); | 2201 gfx::Rect non_intersect(origin.x() + 200, origin.y() + 200, 100, 100); |
2202 EXPECT_FALSE(non_intersect.Intersects(data.tiling_rect())); | 2202 EXPECT_FALSE(non_intersect.Intersects(data.tiling_rect())); |
2203 EXPECT_RECT_EQ(gfx::Rect(), | 2203 EXPECT_RECT_EQ(gfx::Rect(), |
2204 data.ExpandRectToTileBoundsWithBorders(non_intersect)); | 2204 data.ExpandRectToTileBoundsWithBorders(non_intersect)); |
2205 | |
2206 TilingData data2(gfx::Size(8, 8), gfx::Rect(origin, gfx::Size(32, 64)), true); | |
2207 | |
2208 // Inside other tile border texels doesn't include other tiles. | |
2209 gfx::Rect inner_rect_src(data2.TileBounds(1, 1)); | |
2210 inner_rect_src.Inset(data2.border_texels(), data.border_texels()); | |
2211 gfx::Rect inner_rect_result(data2.TileBoundsWithBorder(1, 1)); | |
2212 gfx::Rect expanded = data2.ExpandRectToTileBoundsWithBorders(inner_rect_src); | |
2213 EXPECT_EQ(inner_rect_result.ToString(), expanded.ToString()); | |
2214 } | |
2215 | |
2216 TEST_P(TilingDataTest, ExpandRectToTileBounds) { | |
2217 gfx::Point origin = GetParam(); | |
2218 TilingData data(gfx::Size(4, 4), gfx::Rect(origin, gfx::Size(16, 32)), true); | |
2219 | |
2220 // Small rect at origin rounds up to tile 0, 0. | |
2221 gfx::Rect at_origin_src(origin, gfx::Size(1, 1)); | |
2222 gfx::Rect at_origin_result(data.TileBounds(0, 0)); | |
2223 EXPECT_NE(at_origin_src, at_origin_result); | |
2224 EXPECT_RECT_EQ(at_origin_result, data.ExpandRectToTileBounds(at_origin_src)); | |
2225 | |
2226 // Arbitrary internal rect. | |
2227 gfx::Rect rect_src(origin.x() + 6, origin.y() + 6, 1, 3); | |
2228 // Tile 2, 2 => gfx::Rect(4, 4, 4, 4) | |
2229 // Tile 3, 4 => gfx::Rect(6, 8, 4, 4) | |
2230 gfx::Rect rect_result( | |
2231 gfx::UnionRects(data.TileBounds(2, 2), data.TileBounds(3, 4))); | |
2232 EXPECT_NE(rect_src, rect_result); | |
2233 EXPECT_RECT_EQ(rect_result, data.ExpandRectToTileBounds(rect_src)); | |
2234 | |
2235 // On tile bounds rounds up to next tile (since border overlaps). | |
2236 gfx::Rect border_rect_src( | |
2237 gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4))); | |
2238 gfx::Rect border_rect_result( | |
2239 gfx::UnionRects(data.TileBounds(0, 1), data.TileBounds(4, 5))); | |
2240 EXPECT_RECT_EQ(border_rect_result, | |
2241 data.ExpandRectToTileBounds(border_rect_src)); | |
2242 | |
2243 // Equal to tiling rect. | |
2244 EXPECT_RECT_EQ(data.tiling_rect(), | |
2245 data.ExpandRectToTileBounds(data.tiling_rect())); | |
2246 | |
2247 // Containing, but larger than tiling rect. | |
2248 EXPECT_RECT_EQ( | |
2249 data.tiling_rect(), | |
2250 data.ExpandRectToTileBounds(gfx::Rect(origin, gfx::Size(100, 100)))); | |
2251 | |
2252 // Non-intersecting with tiling rect. | |
2253 gfx::Rect non_intersect(origin.x() + 200, origin.y() + 200, 100, 100); | |
2254 EXPECT_FALSE(non_intersect.Intersects(data.tiling_rect())); | |
2255 EXPECT_RECT_EQ(gfx::Rect(), data.ExpandRectToTileBounds(non_intersect)); | |
2256 | |
2257 TilingData data2(gfx::Size(8, 8), gfx::Rect(origin, gfx::Size(32, 64)), true); | |
2258 | |
2259 // Inside other tile border texels doesn't include other tiles. | |
2260 gfx::Rect inner_rect_src(data2.TileBounds(1, 1)); | |
2261 inner_rect_src.Inset(data2.border_texels(), data.border_texels()); | |
2262 gfx::Rect inner_rect_result(data2.TileBounds(1, 1)); | |
2263 gfx::Rect expanded = data2.ExpandRectToTileBounds(inner_rect_src); | |
2264 EXPECT_EQ(inner_rect_result.ToString(), expanded.ToString()); | |
2265 } | 2205 } |
2266 | 2206 |
2267 TEST_P(TilingDataTest, Assignment) { | 2207 TEST_P(TilingDataTest, Assignment) { |
2268 gfx::Point origin = GetParam(); | 2208 gfx::Point origin = GetParam(); |
2269 | 2209 |
2270 { | 2210 { |
2271 TilingData source( | 2211 TilingData source( |
2272 gfx::Size(8, 8), gfx::Rect(origin, gfx::Size(16, 32)), true); | 2212 gfx::Size(8, 8), gfx::Rect(origin, gfx::Size(16, 32)), true); |
2273 TilingData dest = source; | 2213 TilingData dest = source; |
2274 EXPECT_EQ(source.border_texels(), dest.border_texels()); | 2214 EXPECT_EQ(source.border_texels(), dest.border_texels()); |
(...skipping 1275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3550 TilingDataTest, | 3490 TilingDataTest, |
3551 ::testing::Values(gfx::Point(42, 17), | 3491 ::testing::Values(gfx::Point(42, 17), |
3552 gfx::Point(0, 0), | 3492 gfx::Point(0, 0), |
3553 gfx::Point(-8, 15), | 3493 gfx::Point(-8, 15), |
3554 gfx::Point(-12, 4), | 3494 gfx::Point(-12, 4), |
3555 gfx::Point(-16, -35), | 3495 gfx::Point(-16, -35), |
3556 gfx::Point(-10000, -15000))); | 3496 gfx::Point(-10000, -15000))); |
3557 } // namespace | 3497 } // namespace |
3558 | 3498 |
3559 } // namespace cc | 3499 } // namespace cc |
OLD | NEW |