| 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 757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 EXPECT_EQ(10, data.num_tiles_y()); | 768 EXPECT_EQ(10, data.num_tiles_y()); |
| 769 | 769 |
| 770 data.SetMaxTextureSize(gfx::Size(8, 5)); | 770 data.SetMaxTextureSize(gfx::Size(8, 5)); |
| 771 EXPECT_EQ(gfx::Size(8, 5), data.max_texture_size()); | 771 EXPECT_EQ(gfx::Size(8, 5), data.max_texture_size()); |
| 772 EXPECT_EQ(3, data.num_tiles_x()); | 772 EXPECT_EQ(3, data.num_tiles_x()); |
| 773 EXPECT_EQ(10, data.num_tiles_y()); | 773 EXPECT_EQ(10, data.num_tiles_y()); |
| 774 } | 774 } |
| 775 | 775 |
| 776 TEST(TilingDataTest, ExpandRectIgnoringBordersToTileBoundsEmpty) { | 776 TEST(TilingDataTest, ExpandRectIgnoringBordersToTileBoundsEmpty) { |
| 777 TilingData empty_total_size(gfx::Size(0, 0), gfx::Size(8, 8), true); | 777 TilingData empty_total_size(gfx::Size(0, 0), gfx::Size(8, 8), true); |
| 778 EXPECT_RECT_EQ( | 778 EXPECT_EQ(gfx::Rect(), empty_total_size.ExpandRectIgnoringBordersToTileBounds( |
| 779 gfx::Rect(), | 779 gfx::Rect())); |
| 780 empty_total_size.ExpandRectIgnoringBordersToTileBounds(gfx::Rect())); | 780 EXPECT_EQ(gfx::Rect(), empty_total_size.ExpandRectIgnoringBordersToTileBounds( |
| 781 EXPECT_RECT_EQ(gfx::Rect(), | 781 gfx::Rect(100, 100, 100, 100))); |
| 782 empty_total_size.ExpandRectIgnoringBordersToTileBounds( | 782 EXPECT_EQ(gfx::Rect(), empty_total_size.ExpandRectIgnoringBordersToTileBounds( |
| 783 gfx::Rect(100, 100, 100, 100))); | 783 gfx::Rect(100, 100))); |
| 784 EXPECT_RECT_EQ(gfx::Rect(), | |
| 785 empty_total_size.ExpandRectIgnoringBordersToTileBounds( | |
| 786 gfx::Rect(100, 100))); | |
| 787 | 784 |
| 788 TilingData empty_max_texture_size(gfx::Size(8, 8), gfx::Size(0, 0), true); | 785 TilingData empty_max_texture_size(gfx::Size(8, 8), gfx::Size(0, 0), true); |
| 789 EXPECT_RECT_EQ(gfx::Rect(), | 786 EXPECT_EQ(gfx::Rect(), |
| 790 empty_max_texture_size.ExpandRectIgnoringBordersToTileBounds( | 787 empty_max_texture_size.ExpandRectIgnoringBordersToTileBounds( |
| 791 gfx::Rect())); | 788 gfx::Rect())); |
| 792 EXPECT_RECT_EQ(gfx::Rect(), | 789 EXPECT_EQ(gfx::Rect(), |
| 793 empty_max_texture_size.ExpandRectIgnoringBordersToTileBounds( | 790 empty_max_texture_size.ExpandRectIgnoringBordersToTileBounds( |
| 794 gfx::Rect(100, 100, 100, 100))); | 791 gfx::Rect(100, 100, 100, 100))); |
| 795 EXPECT_RECT_EQ(gfx::Rect(), | 792 EXPECT_EQ(gfx::Rect(), |
| 796 empty_max_texture_size.ExpandRectIgnoringBordersToTileBounds( | 793 empty_max_texture_size.ExpandRectIgnoringBordersToTileBounds( |
| 797 gfx::Rect(100, 100))); | 794 gfx::Rect(100, 100))); |
| 798 } | 795 } |
| 799 | 796 |
| 800 TEST(TilingDataTest, ExpandRectIgnoringBordersToTileBounds) { | 797 TEST(TilingDataTest, ExpandRectIgnoringBordersToTileBounds) { |
| 801 TilingData data(gfx::Size(4, 4), gfx::Size(16, 32), true); | 798 TilingData data(gfx::Size(4, 4), gfx::Size(16, 32), true); |
| 802 | 799 |
| 803 // Small rect at origin rounds up to tile 0, 0. | 800 // Small rect at origin rounds up to tile 0, 0. |
| 804 gfx::Rect at_origin_src(1, 1); | 801 gfx::Rect at_origin_src(1, 1); |
| 805 gfx::Rect at_origin_result(data.TileBounds(0, 0)); | 802 gfx::Rect at_origin_result(data.TileBounds(0, 0)); |
| 806 EXPECT_NE(at_origin_src, at_origin_result); | 803 EXPECT_NE(at_origin_src, at_origin_result); |
| 807 EXPECT_RECT_EQ(at_origin_result, | 804 EXPECT_EQ(at_origin_result, |
| 808 data.ExpandRectIgnoringBordersToTileBounds(at_origin_src)); | 805 data.ExpandRectIgnoringBordersToTileBounds(at_origin_src)); |
| 809 | 806 |
| 810 // Arbitrary internal rect. | 807 // Arbitrary internal rect. |
| 811 gfx::Rect rect_src(6, 6, 1, 3); | 808 gfx::Rect rect_src(6, 6, 1, 3); |
| 812 // Tile 2, 2 => gfx::Rect(4, 4, 4, 4) | 809 // Tile 2, 2 => gfx::Rect(4, 4, 4, 4) |
| 813 // Tile 2, 3 => gfx::Rect(4, 6, 4, 4) | 810 // Tile 2, 3 => gfx::Rect(4, 6, 4, 4) |
| 814 gfx::Rect rect_result( | 811 gfx::Rect rect_result( |
| 815 gfx::UnionRects(data.TileBounds(2, 2), data.TileBounds(2, 3))); | 812 gfx::UnionRects(data.TileBounds(2, 2), data.TileBounds(2, 3))); |
| 816 EXPECT_NE(rect_src, rect_result); | 813 EXPECT_NE(rect_src, rect_result); |
| 817 EXPECT_RECT_EQ(rect_result, | 814 EXPECT_EQ(rect_result, data.ExpandRectIgnoringBordersToTileBounds(rect_src)); |
| 818 data.ExpandRectIgnoringBordersToTileBounds(rect_src)); | |
| 819 | 815 |
| 820 // On tile bounds does not round up to next tile (ignores the border). | 816 // On tile bounds does not round up to next tile (ignores the border). |
| 821 gfx::Rect border_rect_src( | 817 gfx::Rect border_rect_src( |
| 822 gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4))); | 818 gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4))); |
| 823 gfx::Rect border_rect_result( | 819 gfx::Rect border_rect_result( |
| 824 gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4))); | 820 gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4))); |
| 825 EXPECT_RECT_EQ(border_rect_result, | 821 EXPECT_EQ(border_rect_result, |
| 826 data.ExpandRectIgnoringBordersToTileBounds(border_rect_src)); | 822 data.ExpandRectIgnoringBordersToTileBounds(border_rect_src)); |
| 827 | 823 |
| 828 // Equal to tiling rect. | 824 // Equal to tiling rect. |
| 829 EXPECT_RECT_EQ(gfx::Rect(data.tiling_size()), | 825 EXPECT_EQ(gfx::Rect(data.tiling_size()), |
| 830 data.ExpandRectIgnoringBordersToTileBounds( | 826 data.ExpandRectIgnoringBordersToTileBounds( |
| 831 gfx::Rect(data.tiling_size()))); | 827 gfx::Rect(data.tiling_size()))); |
| 832 | 828 |
| 833 // Containing, but larger than tiling rect. | 829 // Containing, but larger than tiling rect. |
| 834 EXPECT_RECT_EQ( | 830 EXPECT_EQ(gfx::Rect(data.tiling_size()), |
| 835 gfx::Rect(data.tiling_size()), | 831 data.ExpandRectIgnoringBordersToTileBounds(gfx::Rect(100, 100))); |
| 836 data.ExpandRectIgnoringBordersToTileBounds(gfx::Rect(100, 100))); | |
| 837 | 832 |
| 838 // Non-intersecting with tiling rect. | 833 // Non-intersecting with tiling rect. |
| 839 gfx::Rect non_intersect(200, 200, 100, 100); | 834 gfx::Rect non_intersect(200, 200, 100, 100); |
| 840 EXPECT_FALSE(non_intersect.Intersects(gfx::Rect(data.tiling_size()))); | 835 EXPECT_FALSE(non_intersect.Intersects(gfx::Rect(data.tiling_size()))); |
| 841 EXPECT_RECT_EQ(gfx::Rect(), | 836 EXPECT_EQ(gfx::Rect(), |
| 842 data.ExpandRectIgnoringBordersToTileBounds(non_intersect)); | 837 data.ExpandRectIgnoringBordersToTileBounds(non_intersect)); |
| 843 | 838 |
| 844 TilingData data2(gfx::Size(8, 8), gfx::Size(32, 64), true); | 839 TilingData data2(gfx::Size(8, 8), gfx::Size(32, 64), true); |
| 845 | 840 |
| 846 // Inside other tile border texels doesn't include other tiles. | 841 // Inside other tile border texels doesn't include other tiles. |
| 847 gfx::Rect inner_rect_src(data2.TileBounds(1, 1)); | 842 gfx::Rect inner_rect_src(data2.TileBounds(1, 1)); |
| 848 inner_rect_src.Inset(data2.border_texels(), data.border_texels()); | 843 inner_rect_src.Inset(data2.border_texels(), data.border_texels()); |
| 849 gfx::Rect inner_rect_result(data2.TileBounds(1, 1)); | 844 gfx::Rect inner_rect_result(data2.TileBounds(1, 1)); |
| 850 gfx::Rect expanded = | 845 gfx::Rect expanded = |
| 851 data2.ExpandRectIgnoringBordersToTileBounds(inner_rect_src); | 846 data2.ExpandRectIgnoringBordersToTileBounds(inner_rect_src); |
| 852 EXPECT_EQ(inner_rect_result.ToString(), expanded.ToString()); | 847 EXPECT_EQ(inner_rect_result.ToString(), expanded.ToString()); |
| 853 } | 848 } |
| 854 | 849 |
| 855 TEST(TilingDataTest, ExpandRectToTileBounds) { | 850 TEST(TilingDataTest, ExpandRectToTileBounds) { |
| 856 TilingData data(gfx::Size(4, 4), gfx::Size(16, 32), true); | 851 TilingData data(gfx::Size(4, 4), gfx::Size(16, 32), true); |
| 857 | 852 |
| 858 // Small rect at origin rounds up to tile 0, 0. | 853 // Small rect at origin rounds up to tile 0, 0. |
| 859 gfx::Rect at_origin_src(1, 1); | 854 gfx::Rect at_origin_src(1, 1); |
| 860 gfx::Rect at_origin_result(data.TileBounds(0, 0)); | 855 gfx::Rect at_origin_result(data.TileBounds(0, 0)); |
| 861 EXPECT_NE(at_origin_src, at_origin_result); | 856 EXPECT_NE(at_origin_src, at_origin_result); |
| 862 EXPECT_RECT_EQ(at_origin_result, data.ExpandRectToTileBounds(at_origin_src)); | 857 EXPECT_EQ(at_origin_result, data.ExpandRectToTileBounds(at_origin_src)); |
| 863 | 858 |
| 864 // Arbitrary internal rect. | 859 // Arbitrary internal rect. |
| 865 gfx::Rect rect_src(6, 6, 1, 3); | 860 gfx::Rect rect_src(6, 6, 1, 3); |
| 866 // Tile 2, 2 => gfx::Rect(4, 4, 4, 4) | 861 // Tile 2, 2 => gfx::Rect(4, 4, 4, 4) |
| 867 // Tile 3, 4 => gfx::Rect(6, 8, 4, 4) | 862 // Tile 3, 4 => gfx::Rect(6, 8, 4, 4) |
| 868 gfx::Rect rect_result( | 863 gfx::Rect rect_result( |
| 869 gfx::UnionRects(data.TileBounds(2, 2), data.TileBounds(3, 4))); | 864 gfx::UnionRects(data.TileBounds(2, 2), data.TileBounds(3, 4))); |
| 870 EXPECT_NE(rect_src, rect_result); | 865 EXPECT_NE(rect_src, rect_result); |
| 871 EXPECT_RECT_EQ(rect_result, data.ExpandRectToTileBounds(rect_src)); | 866 EXPECT_EQ(rect_result, data.ExpandRectToTileBounds(rect_src)); |
| 872 | 867 |
| 873 // On tile bounds rounds up to next tile (since border overlaps). | 868 // On tile bounds rounds up to next tile (since border overlaps). |
| 874 gfx::Rect border_rect_src( | 869 gfx::Rect border_rect_src( |
| 875 gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4))); | 870 gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4))); |
| 876 gfx::Rect border_rect_result( | 871 gfx::Rect border_rect_result( |
| 877 gfx::UnionRects(data.TileBounds(0, 1), data.TileBounds(4, 5))); | 872 gfx::UnionRects(data.TileBounds(0, 1), data.TileBounds(4, 5))); |
| 878 EXPECT_RECT_EQ(border_rect_result, | 873 EXPECT_EQ(border_rect_result, data.ExpandRectToTileBounds(border_rect_src)); |
| 879 data.ExpandRectToTileBounds(border_rect_src)); | |
| 880 | 874 |
| 881 // Equal to tiling rect. | 875 // Equal to tiling rect. |
| 882 EXPECT_RECT_EQ(gfx::Rect(data.tiling_size()), | 876 EXPECT_EQ(gfx::Rect(data.tiling_size()), |
| 883 data.ExpandRectToTileBounds(gfx::Rect(data.tiling_size()))); | 877 data.ExpandRectToTileBounds(gfx::Rect(data.tiling_size()))); |
| 884 | 878 |
| 885 // Containing, but larger than tiling rect. | 879 // Containing, but larger than tiling rect. |
| 886 EXPECT_RECT_EQ(gfx::Rect(data.tiling_size()), | 880 EXPECT_EQ(gfx::Rect(data.tiling_size()), |
| 887 data.ExpandRectToTileBounds(gfx::Rect(100, 100))); | 881 data.ExpandRectToTileBounds(gfx::Rect(100, 100))); |
| 888 | 882 |
| 889 // Non-intersecting with tiling rect. | 883 // Non-intersecting with tiling rect. |
| 890 gfx::Rect non_intersect(200, 200, 100, 100); | 884 gfx::Rect non_intersect(200, 200, 100, 100); |
| 891 EXPECT_FALSE(non_intersect.Intersects(gfx::Rect(data.tiling_size()))); | 885 EXPECT_FALSE(non_intersect.Intersects(gfx::Rect(data.tiling_size()))); |
| 892 EXPECT_RECT_EQ(gfx::Rect(), data.ExpandRectToTileBounds(non_intersect)); | 886 EXPECT_EQ(gfx::Rect(), data.ExpandRectToTileBounds(non_intersect)); |
| 893 | 887 |
| 894 TilingData data2(gfx::Size(8, 8), gfx::Size(32, 64), true); | 888 TilingData data2(gfx::Size(8, 8), gfx::Size(32, 64), true); |
| 895 | 889 |
| 896 // Inside other tile border texels doesn't include other tiles. | 890 // Inside other tile border texels doesn't include other tiles. |
| 897 gfx::Rect inner_rect_src(data2.TileBounds(1, 1)); | 891 gfx::Rect inner_rect_src(data2.TileBounds(1, 1)); |
| 898 inner_rect_src.Inset(data2.border_texels(), data.border_texels()); | 892 inner_rect_src.Inset(data2.border_texels(), data.border_texels()); |
| 899 gfx::Rect inner_rect_result(data2.TileBounds(1, 1)); | 893 gfx::Rect inner_rect_result(data2.TileBounds(1, 1)); |
| 900 gfx::Rect expanded = data2.ExpandRectToTileBounds(inner_rect_src); | 894 gfx::Rect expanded = data2.ExpandRectToTileBounds(inner_rect_src); |
| 901 EXPECT_EQ(inner_rect_result.ToString(), expanded.ToString()); | 895 EXPECT_EQ(inner_rect_result.ToString(), expanded.ToString()); |
| 902 } | 896 } |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 946 EXPECT_EQ(50, data.TileSizeX(3)); | 940 EXPECT_EQ(50, data.TileSizeX(3)); |
| 947 EXPECT_EQ(4, data.num_tiles_x()); | 941 EXPECT_EQ(4, data.num_tiles_x()); |
| 948 | 942 |
| 949 EXPECT_EQ(50, data.TileSizeY(0)); | 943 EXPECT_EQ(50, data.TileSizeY(0)); |
| 950 EXPECT_EQ(20, data.TileSizeY(1)); | 944 EXPECT_EQ(20, data.TileSizeY(1)); |
| 951 EXPECT_EQ(20, data.TileSizeY(2)); | 945 EXPECT_EQ(20, data.TileSizeY(2)); |
| 952 EXPECT_EQ(20, data.TileSizeY(3)); | 946 EXPECT_EQ(20, data.TileSizeY(3)); |
| 953 EXPECT_EQ(35, data.TileSizeY(4)); | 947 EXPECT_EQ(35, data.TileSizeY(4)); |
| 954 EXPECT_EQ(5, data.num_tiles_y()); | 948 EXPECT_EQ(5, data.num_tiles_y()); |
| 955 | 949 |
| 956 EXPECT_RECT_EQ(gfx::Rect(70, 50), data.TileBounds(0, 0)); | 950 EXPECT_EQ(gfx::Rect(70, 50), data.TileBounds(0, 0)); |
| 957 EXPECT_RECT_EQ(gfx::Rect(70, 50, 40, 20), data.TileBounds(1, 1)); | 951 EXPECT_EQ(gfx::Rect(70, 50, 40, 20), data.TileBounds(1, 1)); |
| 958 EXPECT_RECT_EQ(gfx::Rect(110, 110, 40, 35), data.TileBounds(2, 4)); | 952 EXPECT_EQ(gfx::Rect(110, 110, 40, 35), data.TileBounds(2, 4)); |
| 959 EXPECT_RECT_EQ(gfx::Rect(150, 70, 50, 20), data.TileBounds(3, 2)); | 953 EXPECT_EQ(gfx::Rect(150, 70, 50, 20), data.TileBounds(3, 2)); |
| 960 EXPECT_RECT_EQ(gfx::Rect(150, 110, 50, 35), data.TileBounds(3, 4)); | 954 EXPECT_EQ(gfx::Rect(150, 110, 50, 35), data.TileBounds(3, 4)); |
| 961 | 955 |
| 962 EXPECT_RECT_EQ(gfx::Rect(100, 80), data.TileBoundsWithBorder(0, 0)); | 956 EXPECT_EQ(gfx::Rect(100, 80), data.TileBoundsWithBorder(0, 0)); |
| 963 EXPECT_RECT_EQ(gfx::Rect(40, 20, 100, 80), data.TileBoundsWithBorder(1, 1)); | 957 EXPECT_EQ(gfx::Rect(40, 20, 100, 80), data.TileBoundsWithBorder(1, 1)); |
| 964 EXPECT_RECT_EQ(gfx::Rect(80, 80, 100, 65), data.TileBoundsWithBorder(2, 4)); | 958 EXPECT_EQ(gfx::Rect(80, 80, 100, 65), data.TileBoundsWithBorder(2, 4)); |
| 965 EXPECT_RECT_EQ(gfx::Rect(120, 40, 80, 80), data.TileBoundsWithBorder(3, 2)); | 959 EXPECT_EQ(gfx::Rect(120, 40, 80, 80), data.TileBoundsWithBorder(3, 2)); |
| 966 EXPECT_RECT_EQ(gfx::Rect(120, 80, 80, 65), data.TileBoundsWithBorder(3, 4)); | 960 EXPECT_EQ(gfx::Rect(120, 80, 80, 65), data.TileBoundsWithBorder(3, 4)); |
| 967 | 961 |
| 968 EXPECT_EQ(0, data.TileXIndexFromSrcCoord(0)); | 962 EXPECT_EQ(0, data.TileXIndexFromSrcCoord(0)); |
| 969 EXPECT_EQ(0, data.TileXIndexFromSrcCoord(69)); | 963 EXPECT_EQ(0, data.TileXIndexFromSrcCoord(69)); |
| 970 EXPECT_EQ(1, data.TileXIndexFromSrcCoord(70)); | 964 EXPECT_EQ(1, data.TileXIndexFromSrcCoord(70)); |
| 971 EXPECT_EQ(1, data.TileXIndexFromSrcCoord(109)); | 965 EXPECT_EQ(1, data.TileXIndexFromSrcCoord(109)); |
| 972 EXPECT_EQ(2, data.TileXIndexFromSrcCoord(110)); | 966 EXPECT_EQ(2, data.TileXIndexFromSrcCoord(110)); |
| 973 EXPECT_EQ(2, data.TileXIndexFromSrcCoord(149)); | 967 EXPECT_EQ(2, data.TileXIndexFromSrcCoord(149)); |
| 974 EXPECT_EQ(3, data.TileXIndexFromSrcCoord(150)); | 968 EXPECT_EQ(3, data.TileXIndexFromSrcCoord(150)); |
| 975 EXPECT_EQ(3, data.TileXIndexFromSrcCoord(199)); | 969 EXPECT_EQ(3, data.TileXIndexFromSrcCoord(199)); |
| 976 | 970 |
| (...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1953 expected.push_back(std::make_pair(2, 2)); | 1947 expected.push_back(std::make_pair(2, 2)); |
| 1954 expected.push_back(std::make_pair(2, 1)); | 1948 expected.push_back(std::make_pair(2, 1)); |
| 1955 expected.push_back(std::make_pair(2, 0)); | 1949 expected.push_back(std::make_pair(2, 0)); |
| 1956 | 1950 |
| 1957 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); | 1951 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); |
| 1958 } | 1952 } |
| 1959 | 1953 |
| 1960 } // namespace | 1954 } // namespace |
| 1961 | 1955 |
| 1962 } // namespace cc | 1956 } // namespace cc |
| OLD | NEW |