mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-23 17:32:02 +01:00
ebitenutil: Use SourceRect (#277)
This commit is contained in:
parent
7773aff3f7
commit
691db07678
@ -15,11 +15,13 @@
|
|||||||
package ebitenutil
|
package ebitenutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/hajimehoshi/ebiten"
|
"image"
|
||||||
"github.com/hajimehoshi/ebiten/ebitenutil/internal/assets"
|
|
||||||
"image/color"
|
"image/color"
|
||||||
"math"
|
"math"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/hajimehoshi/ebiten"
|
||||||
|
"github.com/hajimehoshi/ebiten/ebitenutil/internal/assets"
|
||||||
)
|
)
|
||||||
|
|
||||||
type debugPrintImageParts string
|
type debugPrintImageParts string
|
||||||
@ -67,7 +69,8 @@ func DebugPrint(image *ebiten.Image, str string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *debugPrintState) drawText(rt *ebiten.Image, str string, x, y int, c color.Color) {
|
func (d *debugPrintState) drawText(rt *ebiten.Image, str string, ox, oy int, c color.Color) {
|
||||||
|
op := &ebiten.DrawImageOptions{}
|
||||||
ur, ug, ub, ua := c.RGBA()
|
ur, ug, ub, ua := c.RGBA()
|
||||||
const max = math.MaxUint16
|
const max = math.MaxUint16
|
||||||
r := float64(ur) / max
|
r := float64(ur) / max
|
||||||
@ -79,12 +82,28 @@ func (d *debugPrintState) drawText(rt *ebiten.Image, str string, x, y int, c col
|
|||||||
g /= a
|
g /= a
|
||||||
b /= a
|
b /= a
|
||||||
}
|
}
|
||||||
op := &ebiten.DrawImageOptions{
|
|
||||||
ImageParts: debugPrintImageParts(str),
|
|
||||||
}
|
|
||||||
op.GeoM.Translate(float64(x+1), float64(y))
|
|
||||||
op.ColorM.Scale(r, g, b, a)
|
op.ColorM.Scale(r, g, b, a)
|
||||||
_ = rt.DrawImage(d.textImage, op)
|
x := 0
|
||||||
|
y := 0
|
||||||
|
for _, c := range str {
|
||||||
|
const cw = assets.TextImageCharWidth
|
||||||
|
const ch = assets.TextImageCharHeight
|
||||||
|
if c == '\n' {
|
||||||
|
x = 0
|
||||||
|
y += ch
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
const n = assets.TextImageWidth / cw
|
||||||
|
sx := (int(c) % n) * cw
|
||||||
|
sy := (int(c) / n) * ch
|
||||||
|
r := image.Rect(sx, sy, sx+cw, sy+ch)
|
||||||
|
op.SourceRect = &r
|
||||||
|
op.GeoM.Reset()
|
||||||
|
op.GeoM.Translate(float64(x), float64(y))
|
||||||
|
op.GeoM.Translate(float64(ox+1), float64(oy))
|
||||||
|
_ = rt.DrawImage(d.textImage, op)
|
||||||
|
x += cw
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// DebugPrint prints the given text str on the given image r.
|
// DebugPrint prints the given text str on the given image r.
|
||||||
|
Loading…
Reference in New Issue
Block a user