Skip to content

Commit

Permalink
Revert "internal/restorable: remove ImageType"
Browse files Browse the repository at this point in the history
This reverts commit 21ef462.

Updates #3083
  • Loading branch information
hajimehoshi committed Sep 7, 2024
1 parent 62ed5be commit a324cfd
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 11 deletions.
9 changes: 4 additions & 5 deletions internal/atlas/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,7 @@ func (b *backend) tryAlloc(width, height int) (*packing.Node, bool) {
return nil, false
}

w, h := b.page.Size()
b.restorable = b.restorable.Extend(w, h)
b.restorable = b.restorable.Extend(b.page.Size())

return n, true
}
Expand Down Expand Up @@ -672,7 +671,7 @@ func (i *Image) allocate(forbiddenBackends []*backend, asSource bool) {
}
// A screen image doesn't have a padding.
i.backend = &backend{
restorable: restorable.NewImage(i.width, i.height, true),
restorable: restorable.NewImage(i.width, i.height, restorable.ImageTypeScreen),
}
theBackends = append(theBackends, i.backend)
return
Expand All @@ -687,7 +686,7 @@ func (i *Image) allocate(forbiddenBackends []*backend, asSource bool) {
}

i.backend = &backend{
restorable: restorable.NewImage(wp, hp, false),
restorable: restorable.NewImage(wp, hp, restorable.ImageTypeRegular),
source: asSource && i.imageType == ImageTypeRegular,
}
theBackends = append(theBackends, i.backend)
Expand Down Expand Up @@ -733,7 +732,7 @@ loop:
}

b := &backend{
restorable: restorable.NewImage(width, height, false),
restorable: restorable.NewImage(width, height, restorable.ImageTypeRegular),
page: packing.NewPage(width, height, maxSize),
source: asSource,
}
Expand Down
24 changes: 18 additions & 6 deletions internal/restorable/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ import (
"github.com/hajimehoshi/ebiten/v2/internal/graphicsdriver"
)

type ImageType int

const (
// ImageTypeRegular indicates the image is a regular image.
ImageTypeRegular ImageType = iota

// ImageTypeScreen indicates the image is used as an actual screen.
ImageTypeScreen
)

// Image represents an image.
type Image struct {
// Image is the underlying image.
Expand All @@ -32,18 +42,21 @@ type Image struct {

width int
height int

imageType ImageType
}

// NewImage creates an emtpy image with the given size.
//
// The returned image is cleared.
//
// Note that Dispose is not called automatically.
func NewImage(width, height int, screen bool) *Image {
func NewImage(width, height int, imageType ImageType) *Image {
i := &Image{
Image: graphicscommand.NewImage(width, height, screen),
width: width,
height: height,
Image: graphicscommand.NewImage(width, height, imageType == ImageTypeScreen),
width: width,
height: height,
imageType: imageType,
}

// This needs to use 'InternalSize' to render the whole region, or edges are unexpectedly cleared on some
Expand All @@ -61,8 +74,7 @@ func (i *Image) Extend(width, height int) *Image {
return i
}

// Assume that the screen image is never extended.
newImg := NewImage(width, height, false)
newImg := NewImage(width, height, i.imageType)

// Use DrawTriangles instead of WritePixels because the image i might be stale and not have its pixels
// information.
Expand Down

0 comments on commit a324cfd

Please sign in to comment.