OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org> |
3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2005 Eric Seidel <eric@webkit.org> | 4 * Copyright (C) 2005 Eric Seidel <eric@webkit.org> |
5 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> | 5 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> |
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 tempSourceRect.scale(scale.width(), scale.height()); | 199 tempSourceRect.scale(scale.width(), scale.height()); |
200 fitsInMaximumImageSize(tempSourceRect.size(), scale); | 200 fitsInMaximumImageSize(tempSourceRect.size(), scale); |
201 | 201 |
202 // Set the scale level in SVGFilter. | 202 // Set the scale level in SVGFilter. |
203 filterData->filter->setFilterResolution(scale); | 203 filterData->filter->setFilterResolution(scale); |
204 | 204 |
205 FilterEffect* lastEffect = filterData->builder->lastEffect(); | 205 FilterEffect* lastEffect = filterData->builder->lastEffect(); |
206 if (!lastEffect) | 206 if (!lastEffect) |
207 return false; | 207 return false; |
208 | 208 |
209 RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion(lastEffe
ct); | 209 lastEffect->determineFilterPrimitiveSubregion(ClipToFilterRegion); |
210 FloatRect subRegion = lastEffect->maxEffectRect(); | 210 FloatRect subRegion = lastEffect->maxEffectRect(); |
211 // At least one FilterEffect has a too big image size, | 211 // At least one FilterEffect has a too big image size, |
212 // recalculate the effect sizes with new scale factors. | 212 // recalculate the effect sizes with new scale factors. |
213 if (!fitsInMaximumImageSize(subRegion.size(), scale)) { | 213 if (!fitsInMaximumImageSize(subRegion.size(), scale)) { |
214 filterData->filter->setFilterResolution(scale); | 214 filterData->filter->setFilterResolution(scale); |
215 RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion(last
Effect); | 215 lastEffect->determineFilterPrimitiveSubregion(ClipToFilterRegion); |
216 } | 216 } |
217 | 217 |
218 // If the drawingRegion is empty, we have something like <g filter=".."/>. | 218 // If the drawingRegion is empty, we have something like <g filter=".."/>. |
219 // Even if the target objectBoundingBox() is empty, we still have to draw th
e last effect result image in postApplyResource. | 219 // Even if the target objectBoundingBox() is empty, we still have to draw th
e last effect result image in postApplyResource. |
220 if (filterData->drawingRegion.isEmpty()) { | 220 if (filterData->drawingRegion.isEmpty()) { |
221 ASSERT(!m_filter.contains(object)); | 221 ASSERT(!m_filter.contains(object)); |
222 filterData->savedContext = context; | 222 filterData->savedContext = context; |
223 m_filter.set(object, filterData.release()); | 223 m_filter.set(object, filterData.release()); |
224 return false; | 224 return false; |
225 } | 225 } |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 markAllClientLayersForInvalidation(); | 359 markAllClientLayersForInvalidation(); |
360 } | 360 } |
361 | 361 |
362 FloatRect RenderSVGResourceFilter::drawingRegion(RenderObject* object) const | 362 FloatRect RenderSVGResourceFilter::drawingRegion(RenderObject* object) const |
363 { | 363 { |
364 FilterData* filterData = m_filter.get(object); | 364 FilterData* filterData = m_filter.get(object); |
365 return filterData ? filterData->drawingRegion : FloatRect(); | 365 return filterData ? filterData->drawingRegion : FloatRect(); |
366 } | 366 } |
367 | 367 |
368 } | 368 } |
OLD | NEW |