return pointers from constructors of Triangles/PictureData

This commit is contained in:
faiface 2017-03-06 00:44:16 +01:00
parent 69a3c17cfc
commit c91d49dadf
2 changed files with 16 additions and 16 deletions

View File

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

14
data.go
View File

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