Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(328)

Side by Side Diff: third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp

Issue 2349183002: Turn FilterEffectBuilder into a stack-allocated helper (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "core/paint/SVGFilterPainter.h" 5 #include "core/paint/SVGFilterPainter.h"
6 6
7 #include "core/layout/svg/LayoutSVGResourceFilter.h" 7 #include "core/layout/svg/LayoutSVGResourceFilter.h"
8 #include "core/paint/FilterEffectBuilder.h" 8 #include "core/paint/FilterEffectBuilder.h"
9 #include "core/paint/LayoutObjectDrawingRecorder.h" 9 #include "core/paint/LayoutObjectDrawingRecorder.h"
10 #include "platform/graphics/filters/SkiaImageFilterBuilder.h" 10 #include "platform/graphics/filters/SkiaImageFilterBuilder.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 // or we are in a cycle. 80 // or we are in a cycle.
81 if (filterData->m_state == FilterData::PaintingFilter) 81 if (filterData->m_state == FilterData::PaintingFilter)
82 filterData->m_state = FilterData::PaintingFilterCycleDetected; 82 filterData->m_state = FilterData::PaintingFilterCycleDetected;
83 83
84 if (filterData->m_state == FilterData::RecordingContent) 84 if (filterData->m_state == FilterData::RecordingContent)
85 filterData->m_state = FilterData::RecordingContentCycleDetected; 85 filterData->m_state = FilterData::RecordingContentCycleDetected;
86 86
87 return nullptr; 87 return nullptr;
88 } 88 }
89 89
90 const FloatRect referenceBox = object.objectBoundingBox();
91 SVGFilterGraphNodeMap* nodeMap = SVGFilterGraphNodeMap::create(); 90 SVGFilterGraphNodeMap* nodeMap = SVGFilterGraphNodeMap::create();
92 Filter* filter = FilterEffectBuilder::buildReferenceFilter(toSVGFilterElemen t(*m_filter.element()), referenceBox, nullptr, nullptr, nullptr, 1, nodeMap); 91 FilterEffectBuilder builder(nullptr, object.objectBoundingBox(), 1);
92 Filter* filter = builder.buildReferenceFilter(toSVGFilterElement(*m_filter.e lement()), nullptr, nodeMap);
93 if (!filter || !filter->lastEffect()) 93 if (!filter || !filter->lastEffect())
94 return nullptr; 94 return nullptr;
95 95
96 IntRect sourceRegion = enclosingIntRect(intersection(filter->filterRegion(), object.strokeBoundingBox())); 96 IntRect sourceRegion = enclosingIntRect(intersection(filter->filterRegion(), object.strokeBoundingBox()));
97 filter->getSourceGraphic()->setSourceRect(sourceRegion); 97 filter->getSourceGraphic()->setSourceRect(sourceRegion);
98 98
99 FilterData* filterData = FilterData::create(); 99 FilterData* filterData = FilterData::create();
100 filterData->filter = filter; 100 filterData->filter = filter;
101 filterData->nodeMap = nodeMap; 101 filterData->nodeMap = nodeMap;
102 102
(...skipping 25 matching lines...) Expand all
128 if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(context, object, DisplayItem::kSVGFilter)) 128 if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(context, object, DisplayItem::kSVGFilter))
129 return; 129 return;
130 130
131 FloatRect filterRegion = filterData ? filterData->filter->filterRegion() : F loatRect(); 131 FloatRect filterRegion = filterData ? filterData->filter->filterRegion() : F loatRect();
132 LayoutObjectDrawingRecorder recorder(context, object, DisplayItem::kSVGFilte r, filterRegion); 132 LayoutObjectDrawingRecorder recorder(context, object, DisplayItem::kSVGFilte r, filterRegion);
133 if (filterData && filterData->m_state == FilterData::ReadyToPaint) 133 if (filterData && filterData->m_state == FilterData::ReadyToPaint)
134 paintFilteredContent(context, filterData); 134 paintFilteredContent(context, filterData);
135 } 135 }
136 136
137 } // namespace blink 137 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698