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

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

Issue 1348973004: Merge SVGFilter into Filter (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Nits. Created 5 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 | Annotate | Revision Log
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 "config.h" 5 #include "config.h"
6 #include "core/paint/SVGFilterPainter.h" 6 #include "core/paint/SVGFilterPainter.h"
7 7
8 #include "core/layout/svg/LayoutSVGResourceFilter.h" 8 #include "core/layout/svg/LayoutSVGResourceFilter.h"
9 #include "core/layout/svg/SVGLayoutSupport.h" 9 #include "core/layout/svg/SVGLayoutSupport.h"
10 #include "core/paint/CompositingRecorder.h" 10 #include "core/paint/CompositingRecorder.h"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 OwnPtrWillBeRawPtr<FilterData> filterData = FilterData::create(); 124 OwnPtrWillBeRawPtr<FilterData> filterData = FilterData::create();
125 FloatRect targetBoundingBox = object.objectBoundingBox(); 125 FloatRect targetBoundingBox = object.objectBoundingBox();
126 126
127 SVGFilterElement* filterElement = toSVGFilterElement(m_filter.element()); 127 SVGFilterElement* filterElement = toSVGFilterElement(m_filter.element());
128 FloatRect filterRegion = SVGLengthContext::resolveRectangle<SVGFilterElement >(filterElement, filterElement->filterUnits()->currentValue()->enumValue(), targ etBoundingBox); 128 FloatRect filterRegion = SVGLengthContext::resolveRectangle<SVGFilterElement >(filterElement, filterElement->filterUnits()->currentValue()->enumValue(), targ etBoundingBox);
129 if (filterRegion.isEmpty()) 129 if (filterRegion.isEmpty())
130 return nullptr; 130 return nullptr;
131 131
132 // Create the SVGFilter object. 132 // Create the SVGFilter object.
133 bool primitiveBoundingBoxMode = filterElement->primitiveUnits()->currentValu e()->enumValue() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX; 133 bool primitiveBoundingBoxMode = filterElement->primitiveUnits()->currentValu e()->enumValue() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
134 filterData->filter = SVGFilter::create(targetBoundingBox, filterRegion, prim itiveBoundingBoxMode); 134 Filter::UnitScaling unitScaling = primitiveBoundingBoxMode ? Filter::Boundin gBox : Filter::UserSpace;
135 filterData->filter = Filter::create(targetBoundingBox, filterRegion, 1, unit Scaling);
135 136
136 IntRect sourceRegion = enclosingIntRect(intersection(filterRegion, object.st rokeBoundingBox())); 137 IntRect sourceRegion = enclosingIntRect(intersection(filterRegion, object.st rokeBoundingBox()));
137 filterData->filter->sourceGraphic()->setSourceRect(sourceRegion); 138 filterData->filter->sourceGraphic()->setSourceRect(sourceRegion);
138 139
139 // Create all relevant filter primitives. 140 // Create all relevant filter primitives.
140 filterData->builder = m_filter.buildPrimitives(filterData->filter.get()); 141 filterData->builder = m_filter.buildPrimitives(filterData->filter.get());
141 if (!filterData->builder) 142 if (!filterData->builder)
142 return nullptr; 143 return nullptr;
143 144
144 FilterEffect* lastEffect = filterData->filter->lastEffect(); 145 FilterEffect* lastEffect = filterData->filter->lastEffect();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(*context, object , DisplayItem::SVGFilter, LayoutPoint())) 177 if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(*context, object , DisplayItem::SVGFilter, LayoutPoint()))
177 return; 178 return;
178 179
179 // TODO(chrishtr): stop using an infinite rect, and instead bound the filter . 180 // TODO(chrishtr): stop using an infinite rect, and instead bound the filter .
180 LayoutObjectDrawingRecorder recorder(*context, object, DisplayItem::SVGFilte r, LayoutRect::infiniteIntRect(), LayoutPoint()); 181 LayoutObjectDrawingRecorder recorder(*context, object, DisplayItem::SVGFilte r, LayoutRect::infiniteIntRect(), LayoutPoint());
181 if (filterData && filterData->m_state == FilterData::ReadyToPaint) 182 if (filterData && filterData->m_state == FilterData::ReadyToPaint)
182 paintFilteredContent(object, context, filterData); 183 paintFilteredContent(object, context, filterData);
183 } 184 }
184 185
185 } 186 }
OLDNEW
« no previous file with comments | « Source/core/layout/svg/SVGLayoutTreeAsText.cpp ('k') | Source/core/svg/graphics/filters/SVGFilter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698