Changeset 25372 in webkit
- Timestamp:
- Sep 5, 2007 1:25:30 PM (17 years ago)
- Location:
- branches/feature-branch
- Files:
-
- 5 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-branch/LayoutTests/ChangeLog
r25370 r25372 1 2007-09-05 Nikolas Zimmermann <zimmermann@kde.org> 2 3 Reviewed by Oliver. 4 5 Fix <mask> in userSpaceOnUse coordinates. Verified by new testcase taken from Batik. 6 7 * svg/batik/masking/maskRegions-expected.checksum: Added. 8 * svg/batik/masking/maskRegions-expected.png: Added. 9 * svg/batik/masking/maskRegions-expected.txt: Added. 10 * svg/batik/masking/maskRegions.svg: Added. 11 1 12 2007-09-04 Nikolas Zimmermann <zimmermann@kde.org> 2 13 -
branches/feature-branch/WebCore/ChangeLog
r25371 r25372 1 2007-09-05 Nikolas Zimmermann <zimmermann@kde.org> 2 3 Reviewed by Oliver. 4 5 Fix <mask> in userSpaceOnUse coordinates. Verified by new testcase taken from Batik. 6 7 * ksvg2/svg/SVGMaskElement.cpp: 8 (WebCore::SVGMaskElement::drawMaskerContent): 9 1 10 2007-09-03 Nikolas Zimmermann <zimmermann@kde.org> 2 11 -
branches/feature-branch/WebCore/ksvg2/svg/SVGMaskElement.cpp
r21944 r25372 112 112 { 113 113 // Determine specified mask size 114 float xValue = x().valueAsPercentage();115 float yValue = y().valueAsPercentage();116 float widthValue = width().valueAsPercentage();117 float heightValue = height().valueAsPercentage();118 114 float xValue; 115 float yValue; 116 float widthValue; 117 float heightValue; 118 119 119 if (maskUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) { 120 xValue *= targetRect.width(); 121 yValue *= targetRect.height(); 122 widthValue *= targetRect.width(); 123 heightValue *= targetRect.height(); 124 } 120 xValue = x().valueAsPercentage() * targetRect.width(); 121 yValue = y().valueAsPercentage() * targetRect.height(); 122 widthValue = width().valueAsPercentage() * targetRect.width(); 123 heightValue = height().valueAsPercentage() * targetRect.height(); 124 } else { 125 xValue = x().value(); 126 yValue = y().value(); 127 widthValue = width().value(); 128 heightValue = height().value(); 129 } 125 130 126 131 auto_ptr<ImageBuffer> maskImage = ImageBuffer::create(IntSize(lroundf(widthValue), lroundf(heightValue)), false); 127 132 if (!maskImage.get()) 128 133 return maskImage; 134 129 135 maskDestRect = FloatRect(xValue, yValue, widthValue, heightValue); 130 136 if (maskUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) … … 133 139 GraphicsContext* maskImageContext = maskImage->context(); 134 140 ASSERT(maskImageContext); 135 141 136 142 maskImageContext->save(); 137 143 maskImageContext->translate(-xValue, -yValue); 138 144 139 145 if (maskContentUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) { 140 146 maskImageContext->save(); 141 147 maskImageContext->scale(FloatSize(targetRect.width(), targetRect.height())); 142 148 } 143 149 144 150 // Render subtree into ImageBuffer 145 151 for (Node* n = firstChild(); n; n = n->nextSibling()) { … … 147 153 if (!elem || !elem->isStyled()) 148 154 continue; 149 155 150 156 SVGStyledElement* e = static_cast<SVGStyledElement*>(elem); 151 157 RenderObject* item = e->renderer(); 152 158 if (!item) 153 159 continue; 154 160 155 161 ImageBuffer::renderSubtreeToImage(maskImage.get(), item); 156 162 } 157 163 158 164 if (maskContentUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) 159 165 maskImageContext->restore(); 160 166 161 167 maskImageContext->restore(); 162 163 168 return maskImage; 164 169 }
Note: See TracChangeset
for help on using the changeset viewer.