Sander Schobers
0f03760e66
Refactored Size (on Renderer) to return geom.Point instead of geom.PointF32. Refactored Width and Height (on Texture) to return int instead of float32. Refactored texture dimensions to be represented by ints instead of float32s.
65 lines
1.1 KiB
Go
65 lines
1.1 KiB
Go
package sdlui
|
|
|
|
import (
|
|
"image"
|
|
"image/color"
|
|
|
|
"github.com/veandco/go-sdl2/sdl"
|
|
"opslag.de/schobers/zntg/ui"
|
|
)
|
|
|
|
type sdlTexture interface {
|
|
Native() *sdl.Texture
|
|
SetColor(color.Color)
|
|
Size() (int32, int32, error)
|
|
}
|
|
|
|
type Texture struct {
|
|
*sdl.Texture
|
|
}
|
|
|
|
var _ ui.Texture = &Texture{}
|
|
|
|
func (t *Texture) Height() int {
|
|
_, _, _, height, err := t.Texture.Query()
|
|
if err != nil {
|
|
return -1
|
|
}
|
|
return int(height)
|
|
}
|
|
|
|
func (t *Texture) Native() *sdl.Texture { return t.Texture }
|
|
|
|
func (t *Texture) SetColor(c color.Color) {
|
|
color := ColorSDL(c)
|
|
t.SetColorMod(color.R, color.G, color.B)
|
|
}
|
|
|
|
func (t *Texture) Size() (int32, int32, error) {
|
|
_, _, width, height, err := t.Texture.Query()
|
|
if err != nil {
|
|
return 0, 0, err
|
|
}
|
|
return width, height, err
|
|
}
|
|
|
|
func (t *Texture) Width() int {
|
|
_, _, width, _, err := t.Texture.Query()
|
|
if err != nil {
|
|
return -1
|
|
}
|
|
return int(width)
|
|
}
|
|
|
|
var _ ui.ImageSource = &TextureImageSource{}
|
|
|
|
type TextureImageSource struct {
|
|
*Texture
|
|
|
|
source ui.ImageSource
|
|
}
|
|
|
|
func (s TextureImageSource) CreateImage() (image.Image, error) {
|
|
return s.source.CreateImage()
|
|
}
|