| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> |
| 3 * Copyright (C) 2007 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2007 Rob Buis <buis@kde.org> |
| 4 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> | 4 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> |
| 5 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 5 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 static inline RenderSVGResource* requestPaintingResource(RenderSVGResourceMode m
ode, RenderObject* object, const RenderStyle* style, Color& fallbackColor) | 47 static inline RenderSVGResource* requestPaintingResource(RenderSVGResourceMode m
ode, RenderObject* object, const RenderStyle* style, Color& fallbackColor) |
| 48 { | 48 { |
| 49 ASSERT(object); | 49 ASSERT(object); |
| 50 ASSERT(style); | 50 ASSERT(style); |
| 51 | 51 |
| 52 // If we have no style at all, ignore it. | 52 // If we have no style at all, ignore it. |
| 53 const SVGRenderStyle* svgStyle = style->svgStyle(); | 53 const SVGRenderStyle* svgStyle = style->svgStyle(); |
| 54 if (!svgStyle) | 54 if (!svgStyle) |
| 55 return 0; | 55 return 0; |
| 56 | 56 |
| 57 bool isRenderingMask = false; |
| 58 if (object->frame() && object->frame()->view()) |
| 59 isRenderingMask = object->frame()->view()->paintBehavior() & PaintBehavi
orRenderingSVGMask; |
| 60 |
| 57 // If we have no fill/stroke, return 0. | 61 // If we have no fill/stroke, return 0. |
| 58 if (mode == ApplyToFillMode) { | 62 if (mode == ApplyToFillMode) { |
| 63 // When rendering the mask for a RenderSVGResourceClipper, always use th
e initial fill paint server, and ignore stroke. |
| 64 if (isRenderingMask) { |
| 65 RenderSVGResourceSolidColor* colorResource = RenderSVGResource::shar
edSolidPaintingResource(); |
| 66 colorResource->setColor(SVGRenderStyle::initialFillPaintColor()); |
| 67 return colorResource; |
| 68 } |
| 69 |
| 59 if (!svgStyle->hasFill()) | 70 if (!svgStyle->hasFill()) |
| 60 return 0; | 71 return 0; |
| 61 } else { | 72 } else { |
| 62 if (!svgStyle->hasStroke()) | 73 if (!svgStyle->hasStroke() || isRenderingMask) |
| 63 return 0; | 74 return 0; |
| 64 } | 75 } |
| 65 | 76 |
| 66 bool applyToFill = mode == ApplyToFillMode; | 77 bool applyToFill = mode == ApplyToFillMode; |
| 67 SVGPaint::SVGPaintType paintType = applyToFill ? svgStyle->fillPaintType() :
svgStyle->strokePaintType(); | 78 SVGPaint::SVGPaintType paintType = applyToFill ? svgStyle->fillPaintType() :
svgStyle->strokePaintType(); |
| 68 if (paintType == SVGPaint::SVG_PAINTTYPE_NONE) | 79 if (paintType == SVGPaint::SVG_PAINTTYPE_NONE) |
| 69 return 0; | 80 return 0; |
| 70 | 81 |
| 71 Color color; | 82 Color color; |
| 72 switch (paintType) { | 83 switch (paintType) { |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 } | 173 } |
| 163 | 174 |
| 164 current = current->parent(); | 175 current = current->parent(); |
| 165 } | 176 } |
| 166 } | 177 } |
| 167 | 178 |
| 168 } | 179 } |
| 169 | 180 |
| 170 #endif | 181 #endif |
| 171 | 182 |
| OLD | NEW |