restorable: Refactoring: clearIfVolatile

This commit is contained in:
Hajime Hoshi 2018-03-01 23:13:23 +09:00
parent b8deabbd94
commit db738676ce
2 changed files with 7 additions and 11 deletions

View File

@ -115,7 +115,3 @@ func (i *Image) createFramebufferIfNeeded() (*framebuffer, error) {
i.framebuffer = f i.framebuffer = f
return i.framebuffer, nil return i.framebuffer, nil
} }
func (i *Image) ViewportSize() (int, int) {
return i.framebuffer.viewportSize()
}

View File

@ -116,12 +116,13 @@ func (i *Image) makeStale() {
} }
var ( var (
dummyImage = graphics.NewImage(16, 16) emptyImage = graphics.NewImage(16, 16)
clearColorM *affine.ColorM
) )
func init() { func init() {
clearColorM = clearColorM.Scale(0, 0, 0, 0) w, h := emptyImage.Size()
pix := make([]byte, 4*w*h)
emptyImage.ReplacePixels(pix, 0, 0, w, h)
} }
// clearIfVolatile clears the image if the image is volatile. // clearIfVolatile clears the image if the image is volatile.
@ -136,11 +137,10 @@ func (i *Image) clearIfVolatile() {
panic("not reached") panic("not reached")
} }
w, h := i.image.ViewportSize()
x0 := float32(0) x0 := float32(0)
y0 := float32(0) y0 := float32(0)
x1 := float32(w) x1 := float32(graphics.MaxImageSize)
y1 := float32(h) y1 := float32(graphics.MaxImageSize)
// For the rule of values, see vertices.go. // For the rule of values, see vertices.go.
clearVertices := []float32{ clearVertices := []float32{
x0, y0, 0, 0, 1, 1, x0, y0, 0, 0, 1, 1,
@ -148,7 +148,7 @@ func (i *Image) clearIfVolatile() {
x0, y1, 0, 1, 1, 0, x0, y1, 0, 1, 1, 0,
x1, y1, 1, 1, 0, 0, x1, y1, 1, 1, 0, 0,
} }
i.image.DrawImage(dummyImage, clearVertices, clearColorM, opengl.CompositeModeCopy, graphics.FilterNearest) i.image.DrawImage(emptyImage, clearVertices, nil, opengl.CompositeModeCopy, graphics.FilterNearest)
} }
// ReplacePixels replaces the image pixels with the given pixels slice. // ReplacePixels replaces the image pixels with the given pixels slice.