diff --git a/internal/graphicscommand/command.go b/internal/graphicscommand/command.go index e9ebe1f5f..52e4f3a57 100644 --- a/internal/graphicscommand/command.go +++ b/internal/graphicscommand/command.go @@ -512,22 +512,22 @@ func mightOverlapDstRegions(vertices1, vertices2 []float32) bool { return minX1 < maxX2+mergin && minX2 < maxX1+mergin && minY1 < maxY2+mergin && minY2 < maxY1+mergin } -// replacePixelsCommand represents a command to replace pixels of an image. -type replacePixelsCommand struct { +// writePixelsCommand represents a command to replace pixels of an image. +type writePixelsCommand struct { dst *Image - args []*graphicsdriver.ReplacePixelsArgs + args []*graphicsdriver.WritePixelsArgs } -func (c *replacePixelsCommand) String() string { - return fmt.Sprintf("replace-pixels: dst: %d, len(args): %d", c.dst.id, len(c.args)) +func (c *writePixelsCommand) String() string { + return fmt.Sprintf("write-pixels: dst: %d, len(args): %d", c.dst.id, len(c.args)) } -// Exec executes the replacePixelsCommand. -func (c *replacePixelsCommand) Exec(graphicsDriver graphicsdriver.Graphics, indexOffset int) error { +// Exec executes the writePixelsCommand. +func (c *writePixelsCommand) Exec(graphicsDriver graphicsdriver.Graphics, indexOffset int) error { if len(c.args) == 0 { return nil } - if err := c.dst.image.ReplacePixels(c.args); err != nil { + if err := c.dst.image.WritePixels(c.args); err != nil { return err } return nil diff --git a/internal/graphicscommand/image.go b/internal/graphicscommand/image.go index d5d89e01c..9bd3cd93d 100644 --- a/internal/graphicscommand/image.go +++ b/internal/graphicscommand/image.go @@ -43,7 +43,7 @@ type Image struct { // have its graphicsdriver.Image. id int - bufferedRP []*graphicsdriver.ReplacePixelsArgs + bufferedRP []*graphicsdriver.WritePixelsArgs } var nextID = 1 @@ -74,11 +74,11 @@ func NewImage(width, height int, screenFramebuffer bool) *Image { return i } -func (i *Image) resolveBufferedReplacePixels() { +func (i *Image) resolveBufferedWritePixels() { if len(i.bufferedRP) == 0 { return } - c := &replacePixelsCommand{ + c := &writePixelsCommand{ dst: i, args: i.bufferedRP, } @@ -134,7 +134,7 @@ func (i *Image) DrawTriangles(srcs [graphics.ShaderImageCount]*Image, offsets [g if img.screen { panic("graphicscommand: the screen image cannot be the rendering source") } - img.resolveBufferedReplacePixels() + img.resolveBufferedWritePixels() } else { for _, src := range srcs { if src == nil { @@ -143,10 +143,10 @@ func (i *Image) DrawTriangles(srcs [graphics.ShaderImageCount]*Image, offsets [g if src.screen { panic("graphicscommand: the screen image cannot be the rendering source") } - src.resolveBufferedReplacePixels() + src.resolveBufferedWritePixels() } } - i.resolveBufferedReplacePixels() + i.resolveBufferedWritePixels() theCommandQueue.EnqueueDrawTrianglesCommand(i, srcs, offsets, vertices, indices, clr, mode, filter, address, dstRegion, srcRegion, shader, uniforms, evenOdd) } @@ -154,7 +154,7 @@ func (i *Image) DrawTriangles(srcs [graphics.ShaderImageCount]*Image, offsets [g // ReadPixels reads the image's pixels. // ReadPixels returns an error when an error happens in the graphics driver. func (i *Image) ReadPixels(graphicsDriver graphicsdriver.Graphics, buf []byte) error { - i.resolveBufferedReplacePixels() + i.resolveBufferedWritePixels() c := &readPixelsCommand{ img: i, result: buf, @@ -166,8 +166,8 @@ func (i *Image) ReadPixels(graphicsDriver graphicsdriver.Graphics, buf []byte) e return nil } -func (i *Image) ReplacePixels(pixels []byte, x, y, width, height int) { - i.bufferedRP = append(i.bufferedRP, &graphicsdriver.ReplacePixelsArgs{ +func (i *Image) WritePixels(pixels []byte, x, y, width, height int) { + i.bufferedRP = append(i.bufferedRP, &graphicsdriver.WritePixelsArgs{ Pixels: pixels, X: x, Y: y, diff --git a/internal/graphicsdriver/directx/graphics_windows.go b/internal/graphicsdriver/directx/graphics_windows.go index cf61ce748..5c27d2f27 100644 --- a/internal/graphicsdriver/directx/graphics_windows.go +++ b/internal/graphicsdriver/directx/graphics_windows.go @@ -1578,9 +1578,9 @@ func (i *Image) ReadPixels(buf []byte) error { return nil } -func (i *Image) ReplacePixels(args []*graphicsdriver.ReplacePixelsArgs) error { +func (i *Image) WritePixels(args []*graphicsdriver.WritePixelsArgs) error { if i.screen { - return errors.New("directx: ReplacePixels cannot be called on the screen") + return errors.New("directx: WritePixels cannot be called on the screen") } if err := i.graphics.flushCommandList(i.graphics.drawCommandList); err != nil { diff --git a/internal/graphicsdriver/graphics.go b/internal/graphicsdriver/graphics.go index fdece2964..1d668674c 100644 --- a/internal/graphicsdriver/graphics.go +++ b/internal/graphicsdriver/graphics.go @@ -70,12 +70,12 @@ type Image interface { Dispose() IsInvalidated() bool ReadPixels(buf []byte) error - ReplacePixels(args []*ReplacePixelsArgs) error + WritePixels(args []*WritePixelsArgs) error } type ImageID int -type ReplacePixelsArgs struct { +type WritePixelsArgs struct { Pixels []byte X int Y int diff --git a/internal/graphicsdriver/metal/graphics_darwin.go b/internal/graphicsdriver/metal/graphics_darwin.go index 530f4b72f..28dfdaeba 100644 --- a/internal/graphicsdriver/metal/graphics_darwin.go +++ b/internal/graphicsdriver/metal/graphics_darwin.go @@ -1199,7 +1199,7 @@ func (i *Image) ReadPixels(buf []byte) error { return nil } -func (i *Image) ReplacePixels(args []*graphicsdriver.ReplacePixelsArgs) error { +func (i *Image) WritePixels(args []*graphicsdriver.WritePixelsArgs) error { g := i.graphics g.flushRenderCommandEncoderIfNeeded() diff --git a/internal/graphicsdriver/opengl/context_desktop.go b/internal/graphicsdriver/opengl/context_desktop.go index 240afb61c..200c94336 100644 --- a/internal/graphicsdriver/opengl/context_desktop.go +++ b/internal/graphicsdriver/opengl/context_desktop.go @@ -487,7 +487,7 @@ func (c *context) needsRestoring() bool { return false } -func (c *context) texSubImage2D(t textureNative, args []*graphicsdriver.ReplacePixelsArgs) { +func (c *context) texSubImage2D(t textureNative, args []*graphicsdriver.WritePixelsArgs) { c.bindTexture(t) for _, a := range args { gl.TexSubImage2D(gl.TEXTURE_2D, 0, int32(a.X), int32(a.Y), int32(a.Width), int32(a.Height), gl.RGBA, gl.UNSIGNED_BYTE, gl.Ptr(a.Pixels)) diff --git a/internal/graphicsdriver/opengl/context_js.go b/internal/graphicsdriver/opengl/context_js.go index 39b2d11cd..d806d9ac6 100644 --- a/internal/graphicsdriver/opengl/context_js.go +++ b/internal/graphicsdriver/opengl/context_js.go @@ -611,7 +611,7 @@ func (c *context) canUsePBO() bool { return false } -func (c *context) texSubImage2D(t textureNative, args []*graphicsdriver.ReplacePixelsArgs) { +func (c *context) texSubImage2D(t textureNative, args []*graphicsdriver.WritePixelsArgs) { c.bindTexture(t) gl := c.gl for _, a := range args { diff --git a/internal/graphicsdriver/opengl/context_mobile.go b/internal/graphicsdriver/opengl/context_mobile.go index 9b3f4654f..52ec76acb 100644 --- a/internal/graphicsdriver/opengl/context_mobile.go +++ b/internal/graphicsdriver/opengl/context_mobile.go @@ -457,7 +457,7 @@ func (c *context) canUsePBO() bool { return false } -func (c *context) texSubImage2D(t textureNative, args []*graphicsdriver.ReplacePixelsArgs) { +func (c *context) texSubImage2D(t textureNative, args []*graphicsdriver.WritePixelsArgs) { c.bindTexture(t) for _, a := range args { c.ctx.TexSubImage2D(gles.TEXTURE_2D, 0, int32(a.X), int32(a.Y), int32(a.Width), int32(a.Height), gles.RGBA, gles.UNSIGNED_BYTE, a.Pixels) diff --git a/internal/graphicsdriver/opengl/graphics.go b/internal/graphicsdriver/opengl/graphics.go index b0b2fcea2..0dd9df33f 100644 --- a/internal/graphicsdriver/opengl/graphics.go +++ b/internal/graphicsdriver/opengl/graphics.go @@ -49,7 +49,7 @@ type Graphics struct { nextShaderID graphicsdriver.ShaderID shaders map[graphicsdriver.ShaderID]*Shader - // drawCalled is true just after Draw is called. This holds true until ReplacePixels is called. + // drawCalled is true just after Draw is called. This holds true until WritePixels is called. drawCalled bool uniformVariableNameCache map[int]string diff --git a/internal/graphicsdriver/opengl/image.go b/internal/graphicsdriver/opengl/image.go index 37afc7bee..910ecae54 100644 --- a/internal/graphicsdriver/opengl/image.go +++ b/internal/graphicsdriver/opengl/image.go @@ -120,9 +120,9 @@ func (i *Image) ensureStencilBuffer() error { return nil } -func (i *Image) ReplacePixels(args []*graphicsdriver.ReplacePixelsArgs) error { +func (i *Image) WritePixels(args []*graphicsdriver.WritePixelsArgs) error { if i.screen { - return errors.New("opengl: ReplacePixels cannot be called on the screen") + return errors.New("opengl: WritePixels cannot be called on the screen") } if len(args) == 0 { return nil diff --git a/internal/restorable/image.go b/internal/restorable/image.go index b71ad3832..439876666 100644 --- a/internal/restorable/image.go +++ b/internal/restorable/image.go @@ -292,12 +292,12 @@ func (i *Image) ReplacePixels(pixels []byte, x, y, width, height int) { theImages.makeStaleIfDependingOn(i) if pixels != nil { - i.image.ReplacePixels(pixels, x, y, width, height) + i.image.WritePixels(pixels, x, y, width, height) } else { // TODO: When pixels == nil, we don't have to care the pixel state there. In such cases, the image // accepts only ReplacePixels and not Fill or DrawTriangles. // TODO: Separate Image struct into two: images for only-ReplacePixels, and the others. - i.image.ReplacePixels(make([]byte, 4*width*height), x, y, width, height) + i.image.WritePixels(make([]byte, 4*width*height), x, y, width, height) } if !needsRestoring() || !i.needsRestoring() { diff --git a/internal/restorable/rect.go b/internal/restorable/rect.go index fa2295af0..1d02eac88 100644 --- a/internal/restorable/rect.go +++ b/internal/restorable/rect.go @@ -125,6 +125,6 @@ func (pr *pixelsRecords) readPixels(pixels []byte, x, y, width, height, imageWid func (pr *pixelsRecords) apply(img *graphicscommand.Image) { // TODO: Isn't this too heavy? Can we merge the operations? for _, r := range pr.records { - img.ReplacePixels(r.pix, r.rect.Min.X, r.rect.Min.Y, r.rect.Dx(), r.rect.Dy()) + img.WritePixels(r.pix, r.rect.Min.X, r.rect.Min.Y, r.rect.Dx(), r.rect.Dy()) } }