[webkit-reviews] review granted: [Bug 169547] REGRESSION (r213764): Background image from sprite sheet incorrectly scaled : [Attachment 305870] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Mar 30 13:34:01 PDT 2017


Simon Fraser (smfr) <simon.fraser at apple.com> has granted Said Abou-Hallawa
<sabouhallawa at apple.com>'s request for review:
Bug 169547: REGRESSION (r213764): Background image from sprite sheet
incorrectly scaled
https://bugs.webkit.org/show_bug.cgi?id=169547

Attachment 305870: Patch

https://bugs.webkit.org/attachment.cgi?id=305870&action=review




--- Comment #66 from Simon Fraser (smfr) <simon.fraser at apple.com> ---
Comment on attachment 305870
  --> https://bugs.webkit.org/attachment.cgi?id=305870
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=305870&action=review

> Source/WebCore/ChangeLog:15
> +	   To fix this issue, we must use the size of the image and not
destRect.size().

You say "size of the image", but the srcRect parameter to
nativeImageDrawingScale() isn't necessarily the bounds of the whole image. We
may be drawing a subsection of the image.

> Source/WebCore/platform/graphics/cg/NativeImageCG.cpp:83
> -float subsamplingScale(GraphicsContext& context, const FloatRect& destRect,
const FloatRect& srcRect)
> +FloatSize nativeImageDrawingScale(GraphicsContext& context, const FloatRect&
destRect, const FloatRect& srcRect)
>  {
>      // Never use subsampled images for drawing into PDF contexts.
>      if (wkCGContextIsPDFContext(context.platformContext()))
> -	   return 1;
> +	   return { 1, 1 };
>  
>      CGRect transformedDestinationRect = CGRectApplyAffineTransform(destRect,
CGContextGetCTM(context.platformContext()));
> -    return std::min<float>(1, std::max(transformedDestinationRect.size.width
/ srcRect.width(), transformedDestinationRect.size.height / srcRect.height()));
> +    return { static_cast<float>(transformedDestinationRect.size.width /
srcRect.width()), static_cast<float>(transformedDestinationRect.size.height /
srcRect.height()) };

It's weird to have this bare function for each platform, but it's mostly cross
platform code (you can call getCTM on the GraphicsContext). This should become
a function on maybe GraphicsContext at some point.


More information about the webkit-reviews mailing list