From c9e0f7262d25484f4b4274e3890b685f838e0eea Mon Sep 17 00:00:00 2001
From: faiface <faiface@ksp.sk>
Date: Wed, 12 Apr 2017 16:00:56 +0200
Subject: [PATCH] add Canvas.Draw

---
 pixelgl/canvas.go | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/pixelgl/canvas.go b/pixelgl/canvas.go
index 89521ca..1292d3b 100644
--- a/pixelgl/canvas.go
+++ b/pixelgl/canvas.go
@@ -23,6 +23,8 @@ type Canvas struct {
 	mat    mgl32.Mat3
 	col    mgl32.Vec4
 	smooth bool
+
+	sprite *pixel.Sprite
 }
 
 var _ pixel.ComposeTarget = (*Canvas)(nil)
@@ -52,6 +54,8 @@ func NewCanvas(bounds pixel.Rect) *Canvas {
 	})
 	c.shader = shader
 
+	c.sprite = pixel.NewSprite(c, c.Bounds())
+
 	return c
 }
 
@@ -117,6 +121,7 @@ func (c *Canvas) SetComposeMethod(cmp pixel.ComposeMethod) {
 // SetBounds resizes the Canvas to the new bounds. Old content will be preserved.
 func (c *Canvas) SetBounds(bounds pixel.Rect) {
 	c.gf.SetBounds(bounds)
+	c.sprite.Set(c, c.Bounds())
 }
 
 // Bounds returns the rectangular bounds of the Canvas.
@@ -211,6 +216,14 @@ func (c *Canvas) Texture() *glhf.Texture {
 	return c.gf.Texture()
 }
 
+// Draw draws a rectangle equal to Canvas's Bounds containing the Canvas's content to another
+// Target.
+//
+// Note, that the matrix and the color mask of this Canvas have no effect here.
+func (c *Canvas) Draw(t pixel.Target) {
+	c.sprite.Draw(t)
+}
+
 type canvasTriangles struct {
 	*GLTriangles
 	dst *Canvas
-- 
GitLab