Bug 26426

Summary: Canvas: rotation of 'no-repeat' pattern is weird
Product: WebKit Reporter: Shinichiro Hamaji <hamaji>
Component: WebCore Misc.Assignee: David Levin <levin>
Status: RESOLVED FIXED    
Severity: Normal CC: hamaji
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: OS X 10.5   
URL: http://shinh.skr.jp/t/rotate-pattern.html
Attachments:
Description Flags
Patch v1
oliver: review-
image-object-in-canvas-expected.png
none
Patch v2 oliver: review+

Description Shinichiro Hamaji 2009-06-15 17:39:49 PDT
Visit the URL: http://shinh.skr.jp/t/rotate-pattern.html
The face should rotate without displacement. With Safari4, the face moves randomly. Chrome (i.e., skia glue) and Firefox handles this properly.

I think the reason is the error of floating point in PatternCG.cpp. I'll send a patch for this.
Comment 1 Shinichiro Hamaji 2009-06-15 17:45:21 PDT
Created attachment 31322 [details]
Patch v1

 LayoutTests/ChangeLog                              |   15 ++++++++++
 .../fast/canvas/image-object-in-canvas.html        |   11 ++++++-
 .../image-object-in-canvas-expected.checksum       |    2 +-
 .../canvas/image-object-in-canvas-expected.png     |  Bin 56436 -> 78642 bytes
 .../canvas/image-object-in-canvas-expected.txt     |   30 +++++++++++--------
 WebCore/ChangeLog                                  |   15 ++++++++++
 WebCore/platform/graphics/cg/PatternCG.cpp         |    9 +++--
 7 files changed, 63 insertions(+), 19 deletions(-)
Comment 2 Shinichiro Hamaji 2009-06-15 17:46:36 PDT
Created attachment 31323 [details]
image-object-in-canvas-expected.png
Comment 3 Oliver Hunt 2009-06-18 01:36:32 PDT
Comment on attachment 31322 [details]
Patch v1

For completeness can you replaced float xStep/yStep with CGFloat xStep/yStep, and i think we want the largest number possible so i think (1 << 23 - 1) rather than 1 << 21.
Comment 4 Shinichiro Hamaji 2009-06-18 03:00:15 PDT
Created attachment 31490 [details]
Patch v2

 LayoutTests/ChangeLog                              |   15 ++++++++++
 .../fast/canvas/image-object-in-canvas.html        |   11 ++++++-
 .../image-object-in-canvas-expected.checksum       |    2 +-
 .../canvas/image-object-in-canvas-expected.png     |  Bin 56436 -> 78642 bytes
 .../canvas/image-object-in-canvas-expected.txt     |   30 +++++++++++--------
 WebCore/ChangeLog                                  |   15 ++++++++++
 WebCore/platform/graphics/cg/PatternCG.cpp         |    9 +++--
 7 files changed, 63 insertions(+), 19 deletions(-)
Comment 5 Shinichiro Hamaji 2009-06-18 03:01:28 PDT
Comment on attachment 31490 [details]
Patch v2

Thanks for the review! I've modified the patch as you mentioned.
Comment 6 Simon Fraser (smfr) 2009-06-18 14:33:21 PDT
I think olliej should review this.
Comment 7 Oliver Hunt 2009-06-18 16:29:51 PDT
Comment on attachment 31490 [details]
Patch v2

r=me
Comment 8 David Levin 2009-06-18 16:38:09 PDT
Assigned to levin for landing.
Comment 9 Oliver Hunt 2009-06-19 02:23:41 PDT
Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	M	LayoutTests/fast/canvas/image-object-in-canvas.html
	M	LayoutTests/platform/mac/fast/canvas/image-object-in-canvas-expected.checksum
	M	LayoutTests/platform/mac/fast/canvas/image-object-in-canvas-expected.txt
	M	WebCore/ChangeLog
	M	WebCore/platform/graphics/cg/PatternCG.cpp
Committed r44850