| 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 |