| OLD | NEW |
| 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/playback/display_item_list.h" | 5 #include "cc/playback/display_item_list.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 // involve |src| at all. Incorrectly assuming such a relationship (e.g. by | 472 // involve |src| at all. Incorrectly assuming such a relationship (e.g. by |
| 473 // translating |dst| after it is computed by computeFastBounds, rather than | 473 // translating |dst| after it is computed by computeFastBounds, rather than |
| 474 // translating |src| before it provided to computedFastBounds) can cause | 474 // translating |src| before it provided to computedFastBounds) can cause |
| 475 // incorrect clipping of filter output. To test for this, we include an | 475 // incorrect clipping of filter output. To test for this, we include an |
| 476 // SkImageSource filter in |filters|. Here, |src| is |filter_bounds|, defined | 476 // SkImageSource filter in |filters|. Here, |src| is |filter_bounds|, defined |
| 477 // below. | 477 // below. |
| 478 sk_sp<SkImageFilter> image_filter = SkImageSource::Make(source_image); | 478 sk_sp<SkImageFilter> image_filter = SkImageSource::Make(source_image); |
| 479 filters.Append(FilterOperation::CreateReferenceFilter(image_filter)); | 479 filters.Append(FilterOperation::CreateReferenceFilter(image_filter)); |
| 480 filters.Append(FilterOperation::CreateBrightnessFilter(0.5f)); | 480 filters.Append(FilterOperation::CreateBrightnessFilter(0.5f)); |
| 481 gfx::RectF filter_bounds(10.f, 10.f, 50.f, 50.f); | 481 gfx::RectF filter_bounds(10.f, 10.f, 50.f, 50.f); |
| 482 list->CreateAndAppendPairedBeginItem<FilterDisplayItem>(filters, | 482 list->CreateAndAppendPairedBeginItem<FilterDisplayItem>( |
| 483 filter_bounds); | 483 filters, filter_bounds, filter_bounds.origin()); |
| 484 | 484 |
| 485 // Include a rect drawing so that filter is actually applied to something. | 485 // Include a rect drawing so that filter is actually applied to something. |
| 486 { | 486 { |
| 487 SkPictureRecorder recorder; | 487 SkPictureRecorder recorder; |
| 488 sk_sp<SkCanvas> canvas; | 488 sk_sp<SkCanvas> canvas; |
| 489 | 489 |
| 490 SkPaint red_paint; | 490 SkPaint red_paint; |
| 491 red_paint.setColor(SK_ColorRED); | 491 red_paint.setColor(SK_ColorRED); |
| 492 | 492 |
| 493 canvas = sk_ref_sp(recorder.beginRecording( | 493 canvas = sk_ref_sp(recorder.beginRecording( |
| (...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 920 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(5)); | 920 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(5)); |
| 921 } | 921 } |
| 922 | 922 |
| 923 TEST(DisplayItemListTest, AppendVisualRectOneFilterNoDrawings) { | 923 TEST(DisplayItemListTest, AppendVisualRectOneFilterNoDrawings) { |
| 924 scoped_refptr<DisplayItemList> list = CreateDefaultList(); | 924 scoped_refptr<DisplayItemList> list = CreateDefaultList(); |
| 925 | 925 |
| 926 // One filter containing no drawings: Bf, Ef | 926 // One filter containing no drawings: Bf, Ef |
| 927 | 927 |
| 928 gfx::Rect filter_bounds(5, 6, 1, 1); | 928 gfx::Rect filter_bounds(5, 6, 1, 1); |
| 929 list->CreateAndAppendPairedBeginItemWithVisualRect<FilterDisplayItem>( | 929 list->CreateAndAppendPairedBeginItemWithVisualRect<FilterDisplayItem>( |
| 930 filter_bounds, FilterOperations(), gfx::RectF(filter_bounds)); | 930 filter_bounds, FilterOperations(), gfx::RectF(filter_bounds), |
| 931 gfx::PointF(filter_bounds.origin())); |
| 931 | 932 |
| 932 list->CreateAndAppendPairedEndItem<EndFilterDisplayItem>(); | 933 list->CreateAndAppendPairedEndItem<EndFilterDisplayItem>(); |
| 933 | 934 |
| 934 EXPECT_EQ(2u, list->size()); | 935 EXPECT_EQ(2u, list->size()); |
| 935 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(0)); | 936 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(0)); |
| 936 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(1)); | 937 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(1)); |
| 937 } | 938 } |
| 938 | 939 |
| 939 TEST(DisplayItemListTest, AppendVisualRectBlockContainingFilterNoDrawings) { | 940 TEST(DisplayItemListTest, AppendVisualRectBlockContainingFilterNoDrawings) { |
| 940 scoped_refptr<DisplayItemList> list = CreateDefaultList(); | 941 scoped_refptr<DisplayItemList> list = CreateDefaultList(); |
| 941 | 942 |
| 942 // One block containing one filter and no drawings: B1, Bf, Ef, E1. | 943 // One block containing one filter and no drawings: B1, Bf, Ef, E1. |
| 943 | 944 |
| 944 gfx::Rect clip_bounds(5, 6, 7, 8); | 945 gfx::Rect clip_bounds(5, 6, 7, 8); |
| 945 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( | 946 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( |
| 946 clip_bounds, std::vector<SkRRect>(), true); | 947 clip_bounds, std::vector<SkRRect>(), true); |
| 947 | 948 |
| 948 gfx::Rect filter_bounds(5, 6, 1, 1); | 949 gfx::Rect filter_bounds(5, 6, 1, 1); |
| 949 list->CreateAndAppendPairedBeginItemWithVisualRect<FilterDisplayItem>( | 950 list->CreateAndAppendPairedBeginItemWithVisualRect<FilterDisplayItem>( |
| 950 filter_bounds, FilterOperations(), gfx::RectF(filter_bounds)); | 951 filter_bounds, FilterOperations(), gfx::RectF(filter_bounds), |
| 952 gfx::PointF(filter_bounds.origin())); |
| 951 | 953 |
| 952 list->CreateAndAppendPairedEndItem<EndFilterDisplayItem>(); | 954 list->CreateAndAppendPairedEndItem<EndFilterDisplayItem>(); |
| 953 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); | 955 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); |
| 954 | 956 |
| 955 EXPECT_EQ(4u, list->size()); | 957 EXPECT_EQ(4u, list->size()); |
| 956 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(0)); | 958 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(0)); |
| 957 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(1)); | 959 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(1)); |
| 958 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(2)); | 960 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(2)); |
| 959 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(3)); | 961 EXPECT_RECT_EQ(filter_bounds, list->VisualRectForTesting(3)); |
| 960 } | 962 } |
| 961 | 963 |
| 962 } // namespace cc | 964 } // namespace cc |
| OLD | NEW |