From c91d49dadfc4630fbb133e57f1e414598f248179 Mon Sep 17 00:00:00 2001
From: faiface <faiface@ksp.sk>
Date: Mon, 6 Mar 2017 00:44:16 +0100
Subject: [PATCH] return pointers from constructors of Triangles/PictureData

---
 batch.go | 18 +++++++++---------
 data.go  | 14 +++++++-------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/batch.go b/batch.go
index c4b9c72..b52e129 100644
--- a/batch.go
+++ b/batch.go
@@ -68,7 +68,7 @@ func (b *Batch) MakeTriangles(t Triangles) TargetTriangles {
 		b:         b,
 	}
 	bt.orig.Update(t)
-	bt.trans.Update(&bt.orig)
+	bt.trans.Update(bt.orig)
 	return bt
 }
 
@@ -82,26 +82,26 @@ func (b *Batch) MakePicture(p Picture) TargetPicture {
 
 type batchTriangles struct {
 	Triangles
-	orig, trans TrianglesData
+	orig, trans *TrianglesData
 
 	b *Batch
 }
 
 func (bt *batchTriangles) draw(bp *batchPicture) {
-	for i := range bt.trans {
+	for i := range *bt.trans {
 		transPos := bt.b.mat.Mul3x1(mgl32.Vec3{
-			float32(bt.orig[i].Position.X()),
-			float32(bt.orig[i].Position.Y()),
+			float32((*bt.orig)[i].Position.X()),
+			float32((*bt.orig)[i].Position.Y()),
 			1,
 		})
-		bt.trans[i].Position = V(float64(transPos.X()), float64(transPos.Y()))
-		bt.trans[i].Color = bt.orig[i].Color.Mul(bt.b.col)
+		(*bt.trans)[i].Position = V(float64(transPos.X()), float64(transPos.Y()))
+		(*bt.trans)[i].Color = (*bt.orig)[i].Color.Mul(bt.b.col)
 		if bp == nil {
-			bt.trans[i].Picture = V(math.Inf(+1), math.Inf(+1))
+			(*bt.trans)[i].Picture = V(math.Inf(+1), math.Inf(+1))
 		}
 	}
 
-	bt.Triangles.Update(&bt.trans)
+	bt.Triangles.Update(bt.trans)
 
 	cont := bt.b.cont.Triangles
 	cont.SetLen(cont.Len() + bt.Triangles.Len())
diff --git a/data.go b/data.go
index 6f29535..a97f53f 100644
--- a/data.go
+++ b/data.go
@@ -21,8 +21,8 @@ type TrianglesData []struct {
 //
 // Prefer this function to make(TrianglesData, len), because make zeros them, while this function
 // does a correct intialization.
-func MakeTrianglesData(len int) TrianglesData {
-	td := TrianglesData{}
+func MakeTrianglesData(len int) *TrianglesData {
+	td := &TrianglesData{}
 	td.SetLen(len)
 	return td
 }
@@ -132,10 +132,10 @@ type PictureData struct {
 }
 
 // MakePictureData creates a zero-initialized PictureData covering the given rectangle.
-func MakePictureData(rect Rect) PictureData {
+func MakePictureData(rect Rect) *PictureData {
 	w := int(math.Ceil(rect.Pos.X()+rect.Size.X())) - int(math.Floor(rect.Pos.X()))
 	h := int(math.Ceil(rect.Pos.Y()+rect.Size.Y())) - int(math.Floor(rect.Pos.Y()))
-	pd := PictureData{
+	pd := &PictureData{
 		Stride: w,
 		Rect:   rect,
 	}
@@ -161,7 +161,7 @@ func verticalFlip(nrgba *image.NRGBA) {
 // PictureDataFromImage converts an image.Image into PictureData.
 //
 // The resulting PictureData's Bounds will be the equivalent of the supplied image.Image's Bounds.
-func PictureDataFromImage(img image.Image) PictureData {
+func PictureDataFromImage(img image.Image) *PictureData {
 	var nrgba *image.NRGBA
 	if nrgbaImg, ok := img.(*image.NRGBA); ok {
 		nrgba = nrgbaImg
@@ -195,9 +195,9 @@ func PictureDataFromImage(img image.Image) PictureData {
 // lossy, because PictureData works with unit-sized pixels).
 //
 // Bounds are preserved.
-func PictureDataFromPicture(pic Picture) PictureData {
+func PictureDataFromPicture(pic Picture) *PictureData {
 	if pd, ok := pic.(*PictureData); ok {
-		return *pd
+		return pd
 	}
 
 	bounds := pic.Bounds()
-- 
GitLab