| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Rob Buis <buis@kde.org> |
| 4 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. | 4 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. |
| 5 * Copyright (C) 2011 Dirk Schulze <krit@webkit.org> | 5 * Copyright (C) 2011 Dirk Schulze <krit@webkit.org> |
| 6 * | 6 * |
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 // The SVG specification wants us to clip everything, if clip-path doesn't h
ave a child. | 148 // The SVG specification wants us to clip everything, if clip-path doesn't h
ave a child. |
| 149 if (clipPath.isEmpty()) | 149 if (clipPath.isEmpty()) |
| 150 clipPath.addRect(FloatRect()); | 150 clipPath.addRect(FloatRect()); |
| 151 context->clipPath(clipPath, clipRule); | 151 context->clipPath(clipPath, clipRule); |
| 152 return true; | 152 return true; |
| 153 } | 153 } |
| 154 | 154 |
| 155 bool RenderSVGResourceClipper::applyClippingToContext(RenderObject* object, cons
t FloatRect& objectBoundingBox, | 155 bool RenderSVGResourceClipper::applyClippingToContext(RenderObject* object, cons
t FloatRect& objectBoundingBox, |
| 156 const FloatRect& repaintRe
ct, GraphicsContext* context) | 156 const FloatRect& repaintRe
ct, GraphicsContext* context) |
| 157 { | 157 { |
| 158 if (!m_clipper.contains(object)) | 158 bool missingClipperData = !m_clipper.contains(object); |
| 159 if (missingClipperData) |
| 159 m_clipper.set(object, new ClipperData); | 160 m_clipper.set(object, new ClipperData); |
| 160 | 161 |
| 161 bool shouldCreateClipData = false; | 162 bool shouldCreateClipData = false; |
| 162 AffineTransform animatedLocalTransform = static_cast<SVGClipPathElement*>(no
de())->animatedLocalTransform(); | 163 AffineTransform animatedLocalTransform = static_cast<SVGClipPathElement*>(no
de())->animatedLocalTransform(); |
| 163 ClipperData* clipperData = m_clipper.get(object); | 164 ClipperData* clipperData = m_clipper.get(object); |
| 164 if (!clipperData->clipMaskImage) { | 165 if (!clipperData->clipMaskImage) { |
| 165 if (pathOnlyClipping(context, animatedLocalTransform, objectBoundingBox)
) | 166 if (pathOnlyClipping(context, animatedLocalTransform, objectBoundingBox)
) |
| 166 return true; | 167 return true; |
| 167 shouldCreateClipData = true; | 168 shouldCreateClipData = true; |
| 168 } | 169 } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 194 } else | 195 } else |
| 195 succeeded = drawContentIntoMaskImage(clipperData, objectBoundingBox)
; | 196 succeeded = drawContentIntoMaskImage(clipperData, objectBoundingBox)
; |
| 196 | 197 |
| 197 if (!succeeded) | 198 if (!succeeded) |
| 198 clipperData->clipMaskImage.clear(); | 199 clipperData->clipMaskImage.clear(); |
| 199 } | 200 } |
| 200 | 201 |
| 201 if (!clipperData->clipMaskImage) | 202 if (!clipperData->clipMaskImage) |
| 202 return false; | 203 return false; |
| 203 | 204 |
| 204 SVGImageBufferTools::clipToImageBuffer(context, absoluteTransform, repaintRe
ct, clipperData->clipMaskImage); | 205 SVGImageBufferTools::clipToImageBuffer(context, absoluteTransform, repaintRe
ct, clipperData->clipMaskImage, missingClipperData); |
| 205 return true; | 206 return true; |
| 206 } | 207 } |
| 207 | 208 |
| 208 bool RenderSVGResourceClipper::drawContentIntoMaskImage(ClipperData* clipperData
, const FloatRect& objectBoundingBox) | 209 bool RenderSVGResourceClipper::drawContentIntoMaskImage(ClipperData* clipperData
, const FloatRect& objectBoundingBox) |
| 209 { | 210 { |
| 210 ASSERT(frame()); | 211 ASSERT(frame()); |
| 211 ASSERT(clipperData); | 212 ASSERT(clipperData); |
| 212 ASSERT(clipperData->clipMaskImage); | 213 ASSERT(clipperData->clipMaskImage); |
| 213 | 214 |
| 214 GraphicsContext* maskContext = clipperData->clipMaskImage->context(); | 215 GraphicsContext* maskContext = clipperData->clipMaskImage->context(); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 334 transform.scaleNonUniform(objectBoundingBox.width(), objectBoundingBox.h
eight()); | 335 transform.scaleNonUniform(objectBoundingBox.width(), objectBoundingBox.h
eight()); |
| 335 return transform.mapRect(m_clipBoundaries); | 336 return transform.mapRect(m_clipBoundaries); |
| 336 } | 337 } |
| 337 | 338 |
| 338 return m_clipBoundaries; | 339 return m_clipBoundaries; |
| 339 } | 340 } |
| 340 | 341 |
| 341 } | 342 } |
| 342 | 343 |
| 343 #endif // ENABLE(SVG) | 344 #endif // ENABLE(SVG) |
| OLD | NEW |