Bug 26426 - Canvas: rotation of 'no-repeat' pattern is weird
Summary: Canvas: rotation of 'no-repeat' pattern is weird
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebCore Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC OS X 10.5
: P2 Normal
Assignee: David Levin
URL: http://shinh.skr.jp/t/rotate-pattern....
Keywords:
Depends on:
Blocks:
 
Reported: 2009-06-15 17:39 PDT by Shinichiro Hamaji
Modified: 2009-06-19 02:23 PDT (History)
1 user (show)

See Also:


Attachments
Patch v1 (7.47 KB, patch)
2009-06-15 17:45 PDT, Shinichiro Hamaji
oliver: review-
Details | Formatted Diff | Diff
image-object-in-canvas-expected.png (76.80 KB, image/png)
2009-06-15 17:46 PDT, Shinichiro Hamaji
no flags Details
Patch v2 (7.49 KB, patch)
2009-06-18 03:00 PDT, Shinichiro Hamaji
oliver: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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