[Webkit-unassigned] [Bug 53055] REGRESSION: Rendering artifacts on a rotated, pattern filled shape

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Aug 25 10:20:22 PDT 2011


https://bugs.webkit.org/show_bug.cgi?id=53055





--- Comment #37 from Dirk Schulze <krit at webkit.org>  2011-08-25 10:20:21 PST ---
(In reply to comment #36)
> (In reply to comment #35)
> > (From update of attachment 105112 [details] [details])
> > View in context: https://bugs.webkit.org/attachment.cgi?id=105112&action=review
> > 
> > because of the use of TransformationMatrix.
> > 
> > > Source/WebCore/ChangeLog:11
> > > +        Introduce wkCGPatternCreateWithImageAndTransform, and make use of it
> > > +        when tiling patterns in both directions. This helps to prevent
> > > +        pixel-cracking along pattern tiling boundaries.
> > 
> > This won't have affect to other platforms. Is their a negative visual affect left on other platforms? If so I'd like to have a more general solution, that works for all ports.
> 
> This isn't something we can fix in a general way, it's basically working around a CoreGraphics bug (actually, a accuracy vs. performance tradeoff which has already been decided). It'll have to be fixed platform to platform, and I wouldn't be surprised to find that it already works on some platforms.
Does it even exist on other platforms? I don't know a way to influence quality of patterns in Qt or Cairo. If it is just an issue with CG, than I'm fine with the fix.

> 
> > > Source/WebCore/rendering/svg/SVGImageBufferTools.cpp:133
> > > +    TransformationMatrix::DecomposedType decomposition;
> > > +    TransformationMatrix tm = transform.toTransformationMatrix();
> > > +    tm.decompose(decomposition);
> > > +    decomposition.quaternionZ = 0.0;
> > > +    tm.recompose(decomposition);
> > > +    transform = tm.toAffineTransform();
> > 
> > Can't we port recompose and decompose to AffineTransform? If z = 0 anyway, it shouldn't be a big problem, but avoids creating a TransformationMatrix. IIRC AffineTransform uses floats while TransformationMatrix uses double (didn't check it). If so, we have unnecessary transformations float --> double --> float. Also TransformationMatrix needs 16 floating point numbers, while AffineTransform just needs 6.
> 
> Am I missing it (it's late!) or is there no function to decompose/recompose an AffineTranform? Also, it looks like they both use doubles.
AffineTranform is using doubles, yes. And it lacks the decompose functions. But we already have an affine matrix. So you could do a lot of the decomposing a lot faster for an affine matrix if you implement it. It would omit creating a TransformationMatrix with 16 additional doubles.

> 
> > Btw. decomposition.quaternionZ = 0; .0 is superflous.
> 
> Sure.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list