From cb699e7057e573872485e560d384e61b96be6548 Mon Sep 17 00:00:00 2001 From: faiface Date: Wed, 25 Jan 2017 17:33:33 +0100 Subject: [PATCH] add Canvas.Draw and remove SetTransform/MaskColor from Sprite --- canvas.go | 19 +++++++++++++++++++ graphics.go | 36 +++++------------------------------- 2 files changed, 24 insertions(+), 31 deletions(-) diff --git a/canvas.go b/canvas.go index 30e21d2..c931567 100644 --- a/canvas.go +++ b/canvas.go @@ -19,6 +19,8 @@ type Canvas struct { copyVs *pixelgl.VertexSlice smooth bool + drawTd TrianglesDrawer + pic *Picture mat mgl32.Mat3 col mgl32.Vec4 @@ -53,6 +55,16 @@ func NewCanvas(width, height float64, smooth bool) *Canvas { }) c.copyVs.End() }) + + c.drawTd = TrianglesDrawer{Triangles: &TrianglesData{ + {Position: V(-1, -1), Color: NRGBA{1, 1, 1, 1}, Texture: V(0, 0)}, + {Position: V(1, -1), Color: NRGBA{1, 1, 1, 1}, Texture: V(1, 0)}, + {Position: V(1, 1), Color: NRGBA{1, 1, 1, 1}, Texture: V(1, 1)}, + {Position: V(-1, -1), Color: NRGBA{1, 1, 1, 1}, Texture: V(0, 0)}, + {Position: V(1, 1), Color: NRGBA{1, 1, 1, 1}, Texture: V(1, 1)}, + {Position: V(-1, 1), Color: NRGBA{1, 1, 1, 1}, Texture: V(0, 1)}, + }} + c.pic = nil c.mat = mgl32.Ident3() c.col = mgl32.Vec4{1, 1, 1, 1} @@ -112,6 +124,13 @@ func (c *Canvas) Clear(col color.Color) { }) } +// Draw draws the content of the Canvas onto another Target. If no transform is applied, the content +// is fully stretched to fit the Target. +func (c *Canvas) Draw(t Target) { + t.SetPicture(c.Content()) + c.drawTd.Draw(t) +} + // MakeTriangles returns Triangles that draw onto this Canvas. func (c *Canvas) MakeTriangles(t Triangles) Triangles { tpcs := NewGLTriangles(c.s, t).(trianglesPositionColorTexture) diff --git a/graphics.go b/graphics.go index 899bc90..a2efd7c 100644 --- a/graphics.go +++ b/graphics.go @@ -1,9 +1,6 @@ package pixel -import ( - "fmt" - "image/color" -) +import "fmt" // TrianglesData specifies a list of Triangles vertices with three common properties: Position, // Color and Texture. @@ -156,12 +153,11 @@ func (td *TrianglesDrawer) Append(t Triangles) { td.Triangles.Append(t) } -// Sprite is a picture, positioned somewhere, with an optional mask color. +// Sprite is a picture that can be drawn onto a Target. To change the position/rotation/scale of +// the Sprite, use Target's SetTransform method. type Sprite struct { - td TrianglesDrawer - pic *Picture - transform []Transform - maskColor color.Color + td TrianglesDrawer + pic *Picture } // NewSprite creates a Sprite with the supplied Picture. The dimensions of the returned Sprite match @@ -193,30 +189,8 @@ func (s *Sprite) Picture() *Picture { return s.pic } -// SetTransform sets a chain of Transforms that will be applied to this Sprite in reverse order. -func (s *Sprite) SetTransform(t ...Transform) { - s.transform = t -} - -// Transform returns the current chain of Transforms that this Sprite is transformed by. -func (s *Sprite) Transform() []Transform { - return s.transform -} - -// SetMaskColor changes the mask color of the Sprite. -func (s *Sprite) SetMaskColor(c color.Color) { - s.maskColor = c -} - -// MaskColor returns the current mask color of the Sprite. -func (s *Sprite) MaskColor() color.Color { - return s.maskColor -} - // Draw draws the Sprite onto the provided Target. func (s *Sprite) Draw(target Target) { target.SetPicture(s.pic) - target.SetTransform(s.transform...) - target.SetMaskColor(s.maskColor) s.td.Draw(target) }