From aa059cfcf3c6b7d6d52c96c0ee16e5c9ca94479a Mon Sep 17 00:00:00 2001 From: Thomas Friedel Date: Thu, 2 May 2019 12:42:23 +0200 Subject: [PATCH] more image pattern fixes --- canvas.go | 1 + images.go | 27 +++++++++++++-------------- testdata/ImagePattern.png | Bin 17095 -> 13657 bytes 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/canvas.go b/canvas.go index 86a6e2c..829a143 100644 --- a/canvas.go +++ b/canvas.go @@ -260,6 +260,7 @@ func (cv *Canvas) backendFillStyle(s *drawStyle, alpha float64) backendbase.Fill if ip.ip == nil { stl.Color = color.RGBA{} } else { + ip.ip.Replace(ip.data(cv.state.transform)) stl.ImagePattern = ip.ip } } else { diff --git a/images.go b/images.go index a3770f6..8c06bc6 100644 --- a/images.go +++ b/images.go @@ -189,7 +189,7 @@ func (cv *Canvas) PutImageData(img *image.RGBA, x, y int) { type ImagePattern struct { cv *Canvas img *Image - tf [9]float64 + tf mat rep imagePatternRepeat ip backendbase.ImagePattern } @@ -204,11 +204,16 @@ const ( NoRepeat = imagePatternRepeat(backendbase.NoRepeat) ) -func (ip *ImagePattern) data() backendbase.ImagePatternData { +func (ip *ImagePattern) data(tf mat) backendbase.ImagePatternData { + m := tf.invert().mul(ip.tf.invert()) return backendbase.ImagePatternData{ - Image: ip.img.img, - Transform: ip.tf, - Repeat: backendbase.ImagePatternRepeat(ip.rep), + Image: ip.img.img, + Transform: [9]float64{ + m[0], m[2], m[4], + m[1], m[3], m[5], + 0, 0, 1, + }, + Repeat: backendbase.ImagePatternRepeat(ip.rep), } } @@ -216,13 +221,7 @@ func (ip *ImagePattern) data() backendbase.ImagePatternData { // to the given matrix. The matrix is a 3x3 matrix, but three // of the values are always identity values func (ip *ImagePattern) SetTransform(tf [6]float64) { - m := mat(tf).invert() - ip.tf = [9]float64{ - m[0], m[2], m[4], - m[1], m[3], m[5], - 0, 0, 1, - } - ip.ip.Replace(ip.data()) + ip.tf = mat(tf) } // CreatePattern creates a new image pattern with the specified @@ -232,10 +231,10 @@ func (cv *Canvas) CreatePattern(src interface{}, repeat imagePatternRepeat) *Ima cv: cv, img: cv.getImage(src), rep: repeat, - tf: [9]float64{1, 0, 0, 0, 1, 0, 0, 0, 1}, + tf: mat{1, 0, 0, 1, 0, 0}, } if ip.img != nil { - ip.ip = cv.b.LoadImagePattern(ip.data()) + ip.ip = cv.b.LoadImagePattern(ip.data(cv.state.transform)) } return ip } diff --git a/testdata/ImagePattern.png b/testdata/ImagePattern.png index 0b45986fd98b4c595d3ac850e9c875daf8306f92..55c988203d5a65c89a4221eac9d110dfe10d0c8a 100755 GIT binary patch literal 13657 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 literal 17095 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