mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-11-10 04:57:26 +01:00
internal/atlas: refactoring: remove arguments from Pixels
This commit is contained in:
parent
367a9ec5bf
commit
11ff0ab48c
@ -601,17 +601,17 @@ func (i *Image) replacePixels(pix []byte) {
|
|||||||
i.backend.restorable.ReplacePixels(pixb, px, py, pw, ph)
|
i.backend.restorable.ReplacePixels(pixb, px, py, pw, ph)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (img *Image) Pixels(graphicsDriver graphicsdriver.Graphics, x, y, width, height int) ([]byte, error) {
|
func (img *Image) Pixels(graphicsDriver graphicsdriver.Graphics) ([]byte, error) {
|
||||||
backendsM.Lock()
|
backendsM.Lock()
|
||||||
defer backendsM.Unlock()
|
defer backendsM.Unlock()
|
||||||
|
|
||||||
x += paddingSize
|
x := paddingSize
|
||||||
y += paddingSize
|
y := paddingSize
|
||||||
|
|
||||||
bs := make([]byte, 4*width*height)
|
bs := make([]byte, 4*img.width*img.height)
|
||||||
idx := 0
|
idx := 0
|
||||||
for j := y; j < y+height; j++ {
|
for j := y; j < y+img.height; j++ {
|
||||||
for i := x; i < x+width; i++ {
|
for i := x; i < x+img.width; i++ {
|
||||||
r, g, b, a, err := img.at(graphicsDriver, i, j)
|
r, g, b, a, err := img.at(graphicsDriver, i, j)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -110,7 +110,7 @@ func TestEnsureIsolated(t *testing.T) {
|
|||||||
t.Errorf("got: %v, want: %v", got, want)
|
t.Errorf("got: %v, want: %v", got, want)
|
||||||
}
|
}
|
||||||
|
|
||||||
pix, err := img4.Pixels(ui.GraphicsDriverForTesting(), 0, 0, size, size)
|
pix, err := img4.Pixels(ui.GraphicsDriverForTesting())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -202,7 +202,7 @@ func TestReputOnAtlas(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
pix, err := img1.Pixels(ui.GraphicsDriverForTesting(), 0, 0, size, size)
|
pix, err := img1.Pixels(ui.GraphicsDriverForTesting())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -226,7 +226,7 @@ func TestReputOnAtlas(t *testing.T) {
|
|||||||
t.Errorf("got: %v, want: %v", got, want)
|
t.Errorf("got: %v, want: %v", got, want)
|
||||||
}
|
}
|
||||||
|
|
||||||
pix, err = img1.Pixels(ui.GraphicsDriverForTesting(), 0, 0, size, size)
|
pix, err = img1.Pixels(ui.GraphicsDriverForTesting())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -314,7 +314,7 @@ func TestExtend(t *testing.T) {
|
|||||||
// Ensure to allocate
|
// Ensure to allocate
|
||||||
img1.ReplacePixels(p1)
|
img1.ReplacePixels(p1)
|
||||||
|
|
||||||
pix0, err := img0.Pixels(ui.GraphicsDriverForTesting(), 0, 0, w0, h0)
|
pix0, err := img0.Pixels(ui.GraphicsDriverForTesting())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -333,7 +333,7 @@ func TestExtend(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pix1, err := img1.Pixels(ui.GraphicsDriverForTesting(), 0, 0, w1, h1)
|
pix1, err := img1.Pixels(ui.GraphicsDriverForTesting())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -380,7 +380,7 @@ func TestReplacePixelsAfterDrawTriangles(t *testing.T) {
|
|||||||
dst.DrawTriangles([graphics.ShaderImageNum]*atlas.Image{src}, vs, is, affine.ColorMIdentity{}, graphicsdriver.CompositeModeCopy, graphicsdriver.FilterNearest, graphicsdriver.AddressUnsafe, dr, graphicsdriver.Region{}, [graphics.ShaderImageNum - 1][2]float32{}, nil, nil, false)
|
dst.DrawTriangles([graphics.ShaderImageNum]*atlas.Image{src}, vs, is, affine.ColorMIdentity{}, graphicsdriver.CompositeModeCopy, graphicsdriver.FilterNearest, graphicsdriver.AddressUnsafe, dr, graphicsdriver.Region{}, [graphics.ShaderImageNum - 1][2]float32{}, nil, nil, false)
|
||||||
dst.ReplacePixels(pix)
|
dst.ReplacePixels(pix)
|
||||||
|
|
||||||
pix, err := dst.Pixels(ui.GraphicsDriverForTesting(), 0, 0, w, h)
|
pix, err := dst.Pixels(ui.GraphicsDriverForTesting())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -427,7 +427,7 @@ func TestSmallImages(t *testing.T) {
|
|||||||
}
|
}
|
||||||
dst.DrawTriangles([graphics.ShaderImageNum]*atlas.Image{src}, vs, is, affine.ColorMIdentity{}, graphicsdriver.CompositeModeSourceOver, graphicsdriver.FilterNearest, graphicsdriver.AddressUnsafe, dr, graphicsdriver.Region{}, [graphics.ShaderImageNum - 1][2]float32{}, nil, nil, false)
|
dst.DrawTriangles([graphics.ShaderImageNum]*atlas.Image{src}, vs, is, affine.ColorMIdentity{}, graphicsdriver.CompositeModeSourceOver, graphicsdriver.FilterNearest, graphicsdriver.AddressUnsafe, dr, graphicsdriver.Region{}, [graphics.ShaderImageNum - 1][2]float32{}, nil, nil, false)
|
||||||
|
|
||||||
pix, err := dst.Pixels(ui.GraphicsDriverForTesting(), 0, 0, w, h)
|
pix, err := dst.Pixels(ui.GraphicsDriverForTesting())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -475,7 +475,7 @@ func TestLongImages(t *testing.T) {
|
|||||||
}
|
}
|
||||||
dst.DrawTriangles([graphics.ShaderImageNum]*atlas.Image{src}, vs, is, affine.ColorMIdentity{}, graphicsdriver.CompositeModeSourceOver, graphicsdriver.FilterNearest, graphicsdriver.AddressUnsafe, dr, graphicsdriver.Region{}, [graphics.ShaderImageNum - 1][2]float32{}, nil, nil, false)
|
dst.DrawTriangles([graphics.ShaderImageNum]*atlas.Image{src}, vs, is, affine.ColorMIdentity{}, graphicsdriver.CompositeModeSourceOver, graphicsdriver.FilterNearest, graphicsdriver.AddressUnsafe, dr, graphicsdriver.Region{}, [graphics.ShaderImageNum - 1][2]float32{}, nil, nil, false)
|
||||||
|
|
||||||
pix, err := dst.Pixels(ui.GraphicsDriverForTesting(), 0, 0, dstW, dstH)
|
pix, err := dst.Pixels(ui.GraphicsDriverForTesting())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ func TestShaderFillTwice(t *testing.T) {
|
|||||||
s1 := atlas.NewShader(&p1)
|
s1 := atlas.NewShader(&p1)
|
||||||
dst.DrawTriangles([graphics.ShaderImageNum]*atlas.Image{}, vs, is, affine.ColorMIdentity{}, graphicsdriver.CompositeModeCopy, graphicsdriver.FilterNearest, graphicsdriver.AddressUnsafe, dr, graphicsdriver.Region{}, [graphics.ShaderImageNum - 1][2]float32{}, s1, nil, false)
|
dst.DrawTriangles([graphics.ShaderImageNum]*atlas.Image{}, vs, is, affine.ColorMIdentity{}, graphicsdriver.CompositeModeCopy, graphicsdriver.FilterNearest, graphicsdriver.AddressUnsafe, dr, graphicsdriver.Region{}, [graphics.ShaderImageNum - 1][2]float32{}, s1, nil, false)
|
||||||
|
|
||||||
pix, err := dst.Pixels(g, 0, 0, w, h)
|
pix, err := dst.Pixels(g)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
@ -83,7 +83,7 @@ func TestImageDrawTwice(t *testing.T) {
|
|||||||
vs = quadVertices(w, h, 0, 0, 1)
|
vs = quadVertices(w, h, 0, 0, 1)
|
||||||
dst.DrawTriangles([graphics.ShaderImageNum]*atlas.Image{src1}, vs, is, affine.ColorMIdentity{}, graphicsdriver.CompositeModeCopy, graphicsdriver.FilterNearest, graphicsdriver.AddressUnsafe, dr, graphicsdriver.Region{}, [graphics.ShaderImageNum - 1][2]float32{}, nil, nil, false)
|
dst.DrawTriangles([graphics.ShaderImageNum]*atlas.Image{src1}, vs, is, affine.ColorMIdentity{}, graphicsdriver.CompositeModeCopy, graphicsdriver.FilterNearest, graphicsdriver.AddressUnsafe, dr, graphicsdriver.Region{}, [graphics.ShaderImageNum - 1][2]float32{}, nil, nil, false)
|
||||||
|
|
||||||
pix, err := dst.Pixels(ui.GraphicsDriverForTesting(), 0, 0, w, h)
|
pix, err := dst.Pixels(ui.GraphicsDriverForTesting())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ package buffered
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"image"
|
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/affine"
|
"github.com/hajimehoshi/ebiten/v2/internal/affine"
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/atlas"
|
"github.com/hajimehoshi/ebiten/v2/internal/atlas"
|
||||||
@ -139,19 +138,13 @@ func (i *Image) MarkDisposed() {
|
|||||||
i.img.MarkDisposed()
|
i.img.MarkDisposed()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (img *Image) Pixels(graphicsDriver graphicsdriver.Graphics, x, y, width, height int) (pix []byte, err error) {
|
func (img *Image) ReadPixels(graphicsDriver graphicsdriver.Graphics, pix []byte, x, y, width, height int) (err error) {
|
||||||
checkDelayedCommandsFlushed("Pixels")
|
checkDelayedCommandsFlushed("Pixels")
|
||||||
|
|
||||||
if !image.Rect(x, y, x+width, y+height).In(image.Rect(0, 0, img.width, img.height)) {
|
|
||||||
return nil, fmt.Errorf("buffered: out of range")
|
|
||||||
}
|
|
||||||
|
|
||||||
pix = make([]byte, 4*width*height)
|
|
||||||
|
|
||||||
if img.pixels == nil {
|
if img.pixels == nil {
|
||||||
pix, err := img.img.Pixels(graphicsDriver, 0, 0, img.width, img.height)
|
pix, err := img.img.Pixels(graphicsDriver)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
img.pixels = pix
|
img.pixels = pix
|
||||||
}
|
}
|
||||||
@ -159,7 +152,7 @@ func (img *Image) Pixels(graphicsDriver graphicsdriver.Graphics, x, y, width, he
|
|||||||
for j := 0; j < height; j++ {
|
for j := 0; j < height; j++ {
|
||||||
copy(pix[4*j*width:4*(j+1)*width], img.pixels[4*((j+y)*img.width+x):])
|
copy(pix[4*j*width:4*(j+1)*width], img.pixels[4*((j+y)*img.width+x):])
|
||||||
}
|
}
|
||||||
return pix, nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Image) DumpScreenshot(graphicsDriver graphicsdriver.Graphics, name string, blackbg bool) error {
|
func (i *Image) DumpScreenshot(graphicsDriver graphicsdriver.Graphics, name string, blackbg bool) error {
|
||||||
@ -209,7 +202,7 @@ func (i *Image) ReplacePartialPixels(graphicsDriver graphicsdriver.Graphics, pix
|
|||||||
}
|
}
|
||||||
|
|
||||||
if i.pixels == nil {
|
if i.pixels == nil {
|
||||||
pix, err := i.img.Pixels(graphicsDriver, 0, 0, i.width, i.height)
|
pix, err := i.img.Pixels(graphicsDriver)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -84,8 +84,8 @@ func (m *Mipmap) ReplacePartialPixels(graphicsDriver graphicsdriver.Graphics, pi
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Mipmap) Pixels(graphicsDriver graphicsdriver.Graphics, x, y, width, height int) ([]byte, error) {
|
func (m *Mipmap) ReadPixels(graphicsDriver graphicsdriver.Graphics, pix []byte, x, y, width, height int) error {
|
||||||
return m.orig.Pixels(graphicsDriver, x, y, width, height)
|
return m.orig.ReadPixels(graphicsDriver, pix, x, y, width, height)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Mipmap) DrawTriangles(srcs [graphics.ShaderImageNum]*Mipmap, vertices []float32, indices []uint16, colorm affine.ColorM, mode graphicsdriver.CompositeMode, filter graphicsdriver.Filter, address graphicsdriver.Address, dstRegion, srcRegion graphicsdriver.Region, subimageOffsets [graphics.ShaderImageNum - 1][2]float32, shader *Shader, uniforms [][]float32, evenOdd bool, canSkipMipmap bool) {
|
func (m *Mipmap) DrawTriangles(srcs [graphics.ShaderImageNum]*Mipmap, vertices []float32, indices []uint16, colorm affine.ColorM, mode graphicsdriver.CompositeMode, filter graphicsdriver.Filter, address graphicsdriver.Address, dstRegion, srcRegion graphicsdriver.Region, subimageOffsets [graphics.ShaderImageNum - 1][2]float32, shader *Shader, uniforms [][]float32, evenOdd bool, canSkipMipmap bool) {
|
||||||
|
@ -87,8 +87,8 @@ func (i *Image) Pixels(x, y, width, height int) []byte {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
pix, err := i.mipmap.Pixels(graphicsDriver(), x, y, width, height)
|
pix := make([]byte, 4*width*height)
|
||||||
if err != nil {
|
if err := i.mipmap.ReadPixels(graphicsDriver(), pix, x, y, width, height); err != nil {
|
||||||
if panicOnErrorOnReadingPixels {
|
if panicOnErrorOnReadingPixels {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user