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()