Summary: | Edge fringe artifact with transformed, masked elements (including reflections) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | CJ Yetman <cj> | ||||||||||
Component: | CSS | Assignee: | Simon Fraser (smfr) <simon.fraser> | ||||||||||
Status: | RESOLVED FIXED | ||||||||||||
Severity: | Normal | CC: | bdakin, bugs.webkit.org, cabel, darin, dino, mail, mitz, rik, simon.fraser | ||||||||||
Priority: | P2 | Keywords: | InRadar | ||||||||||
Version: | 528+ (Nightly build) | ||||||||||||
Hardware: | Mac | ||||||||||||
OS: | OS X 10.5 | ||||||||||||
Attachments: |
|
Description
CJ Yetman
2008-05-21 20:37:33 PDT
Created attachment 21282 [details]
testcase
Created attachment 21298 [details]
more dramatic demonstration
Great test cases. Thanks! This can probably happens when applying any mask to any transformed box. Created attachment 26404 [details]
Screenshot
*** Bug 30040 has been marked as a duplicate of this bug. *** Very obvious example: <http://media.24ways.org/2009/15/spinner.html> *** Bug 27832 has been marked as a duplicate of this bug. *** rdar://6608800 is a different issue. We need a new Radar report. *** Bug 39248 has been marked as a duplicate of this bug. *** Maybe fix: diff --git a/WebCore/rendering/RenderBox.cpp b/WebCore/rendering/RenderBox.cpp index d54af1f..8b643b4 100644 --- a/WebCore/rendering/RenderBox.cpp +++ b/WebCore/rendering/RenderBox.cpp @@ -814,6 +814,11 @@ void RenderBox::paintMaskImages(const PaintInfo& paintInfo, int tx, int ty, int bool allMaskImagesLoaded = true; if (!compositedMask) { + // If the context has a rotation, scale or skew, then use a transparency layer to avoid + // pixel cruft around the edge of the mask. + AffineTransform currentCTM = paintInfo.context->getCTM(); + pushTransparencyLayer = !currentCTM.isIdentityOrTranslationOrFlipped();; + StyleImage* maskBoxImage = style()->maskBoxImage().image(); const FillLayer* maskLayers = style()->maskLayers(); Created attachment 70144 [details]
Patch
|