internal/atlas: move some functions in internal/restorable to internal/atlas

Updates #805
This commit is contained in:
Hajime Hoshi 2024-01-13 14:05:19 +09:00
parent d7a098d973
commit 3651d73e0b
3 changed files with 10 additions and 39 deletions

View File

@ -126,6 +126,8 @@ var (
imagesToPutOnSourceBackend smallImageSet imagesToPutOnSourceBackend smallImageSet
imagesUsedAsDestination smallImageSet imagesUsedAsDestination smallImageSet
graphicsDriverInitialized bool
) )
type ImageType int type ImageType int
@ -627,6 +629,10 @@ func (i *Image) canBePutOnAtlas() bool {
} }
func (i *Image) allocate(forbiddenBackends []*backend, asSource bool) { func (i *Image) allocate(forbiddenBackends []*backend, asSource bool) {
if !graphicsDriverInitialized {
panic("atlas: graphics driver must be ready at allocate but not")
}
if i.backend != nil { if i.backend != nil {
panic("atlas: the image is already allocated") panic("atlas: the image is already allocated")
} }
@ -806,7 +812,7 @@ func BeginFrame(graphicsDriver graphicsdriver.Graphics) error {
var err error var err error
initOnce.Do(func() { initOnce.Do(func() {
err = restorable.InitializeGraphicsDriverState(graphicsDriver) err = graphicscommand.InitializeGraphicsDriverState(graphicsDriver)
if err != nil { if err != nil {
return return
} }
@ -822,8 +828,10 @@ func BeginFrame(graphicsDriver graphicsdriver.Graphics) error {
minDestinationSize = 16 minDestinationSize = 16
} }
if maxSize == 0 { if maxSize == 0 {
maxSize = floorPowerOf2(restorable.MaxImageSize(graphicsDriver)) maxSize = floorPowerOf2(graphicscommand.MaxImageSize(graphicsDriver))
} }
graphicsDriverInitialized = true
}) })
if err != nil { if err != nil {
return err return err

View File

@ -52,10 +52,6 @@ type Image struct {
// //
// Note that Dispose is not called automatically. // Note that Dispose is not called automatically.
func NewImage(width, height int, imageType ImageType) *Image { func NewImage(width, height int, imageType ImageType) *Image {
if !graphicsDriverInitialized {
panic("restorable: graphics driver must be ready at NewImage but not")
}
i := &Image{ i := &Image{
Image: graphicscommand.NewImage(width, height, imageType == ImageTypeScreen), Image: graphicscommand.NewImage(width, height, imageType == ImageTypeScreen),
width: width, width: width,

View File

@ -1,33 +0,0 @@
// Copyright 2017 The Ebiten Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package restorable
import (
"github.com/hajimehoshi/ebiten/v2/internal/graphicscommand"
"github.com/hajimehoshi/ebiten/v2/internal/graphicsdriver"
)
var graphicsDriverInitialized bool
// InitializeGraphicsDriverState initializes the graphics driver state.
func InitializeGraphicsDriverState(graphicsDriver graphicsdriver.Graphics) error {
graphicsDriverInitialized = true
return graphicscommand.InitializeGraphicsDriverState(graphicsDriver)
}
// MaxImageSize returns the maximum size of an image.
func MaxImageSize(graphicsDriver graphicsdriver.Graphics) int {
return graphicscommand.MaxImageSize(graphicsDriver)
}