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 "config.h" | 5 #include "config.h" |
6 #include "platform/graphics/paint/FilterDisplayItem.h" | 6 #include "platform/graphics/paint/FilterDisplayItem.h" |
7 | 7 |
8 #include "platform/graphics/GraphicsContext.h" | 8 #include "platform/graphics/GraphicsContext.h" |
9 #include "platform/graphics/filters/SkiaImageFilterBuilder.h" | 9 #include "platform/graphics/filters/SkiaImageFilterBuilder.h" |
10 #include "public/platform/Platform.h" | 10 #include "public/platform/Platform.h" |
11 #include "public/platform/WebCompositorSupport.h" | 11 #include "public/platform/WebCompositorSupport.h" |
12 #include "public/platform/WebDisplayItemList.h" | 12 #include "public/platform/WebDisplayItemList.h" |
13 | 13 |
14 namespace blink { | 14 namespace blink { |
15 | 15 |
16 BeginFilterDisplayItem::BeginFilterDisplayItem(DisplayItemClient client, Type ty
pe, PassRefPtr<ImageFilter> imageFilter, const FilterOperations* filterOperation
s, const LayoutRect& bounds) | 16 BeginFilterDisplayItem::BeginFilterDisplayItem(DisplayItemClient client, Type ty
pe, PassRefPtr<ImageFilter> imageFilter, const LayoutRect& bounds) |
17 : DisplayItem(client, type) | 17 : DisplayItem(client, type) |
18 , m_imageFilter(imageFilter) | 18 , m_imageFilter(imageFilter) |
19 , m_bounds(bounds) | 19 , m_bounds(bounds) |
20 { | 20 { |
21 if (filterOperations) { | 21 } |
22 SkiaImageFilterBuilder builder; | 22 |
23 m_webFilterOperations = adoptPtr(Platform::current()->compositorSupport(
)->createFilterOperations()); | 23 BeginFilterDisplayItem::BeginFilterDisplayItem(DisplayItemClient client, Type ty
pe, PassRefPtr<ImageFilter> imageFilter, const LayoutRect& bounds, const FilterO
perations& filterOperations) |
24 FilterOutsets outsets = filterOperations->outsets(); | 24 : DisplayItem(client, type) |
25 builder.setCropOffset(FloatSize(outsets.left(), outsets.top())); | 25 , m_imageFilter(imageFilter) |
26 builder.buildFilterOperations(*filterOperations, m_webFilterOperations.g
et()); | 26 , m_bounds(bounds) |
27 } | 27 { |
| 28 SkiaImageFilterBuilder builder; |
| 29 m_webFilterOperations = adoptPtr(Platform::current()->compositorSupport()->c
reateFilterOperations()); |
| 30 FilterOutsets outsets = filterOperations.outsets(); |
| 31 builder.setCropOffset(FloatSize(outsets.left(), outsets.top())); |
| 32 builder.buildFilterOperations(filterOperations, m_webFilterOperations.get())
; |
28 } | 33 } |
29 | 34 |
30 void BeginFilterDisplayItem::replay(GraphicsContext* context) | 35 void BeginFilterDisplayItem::replay(GraphicsContext* context) |
31 { | 36 { |
32 context->save(); | 37 context->save(); |
33 FloatRect boundaries = mapImageFilterRect(m_imageFilter.get(), m_bounds); | 38 FloatRect boundaries = mapImageFilterRect(m_imageFilter.get(), m_bounds); |
34 context->translate(m_bounds.x().toFloat(), m_bounds.y().toFloat()); | 39 context->translate(m_bounds.x().toFloat(), m_bounds.y().toFloat()); |
35 boundaries.move(-m_bounds.x().toFloat(), -m_bounds.y().toFloat()); | 40 boundaries.move(-m_bounds.x().toFloat(), -m_bounds.y().toFloat()); |
36 context->beginLayer(1, SkXfermode::kSrcOver_Mode, &boundaries, ColorFilterNo
ne, m_imageFilter.get()); | 41 context->beginLayer(1, SkXfermode::kSrcOver_Mode, &boundaries, ColorFilterNo
ne, m_imageFilter.get()); |
37 context->translate(-m_bounds.x().toFloat(), -m_bounds.y().toFloat()); | 42 context->translate(-m_bounds.x().toFloat(), -m_bounds.y().toFloat()); |
(...skipping 18 matching lines...) Expand all Loading... |
56 context->endLayer(); | 61 context->endLayer(); |
57 context->restore(); | 62 context->restore(); |
58 } | 63 } |
59 | 64 |
60 void EndFilterDisplayItem::appendToWebDisplayItemList(WebDisplayItemList* list)
const | 65 void EndFilterDisplayItem::appendToWebDisplayItemList(WebDisplayItemList* list)
const |
61 { | 66 { |
62 list->appendEndFilterItem(); | 67 list->appendEndFilterItem(); |
63 } | 68 } |
64 | 69 |
65 } // namespace blink | 70 } // namespace blink |
OLD | NEW |