Add Atlas7x13, Clear now sets Dot field to Orig
Remove unused f2i function
This commit is contained in:
parent
2dff742a8b
commit
ad738cddf8
|
@ -9,9 +9,13 @@ import (
|
|||
|
||||
"github.com/faiface/pixel"
|
||||
"golang.org/x/image/font"
|
||||
"golang.org/x/image/font/basicfont"
|
||||
"golang.org/x/image/math/fixed"
|
||||
)
|
||||
|
||||
// Atlas7x13 is an Atlas using basicfont.Face7x13 with the ASCII rune set
|
||||
var Atlas7x13 *Atlas
|
||||
|
||||
// Glyph describes one glyph in an Atlas.
|
||||
type Glyph struct {
|
||||
Dot pixel.Vec
|
||||
|
@ -171,6 +175,10 @@ func (a *Atlas) DrawRune(prevR, r rune, dot pixel.Vec) (rect, frame, bounds pixe
|
|||
return rect, glyph.Frame, bounds, dot
|
||||
}
|
||||
|
||||
func new7x13Atlas(runeSets ...[]rune) *Atlas {
|
||||
return NewAtlas(basicfont.Face7x13, runeSets...)
|
||||
}
|
||||
|
||||
type fixedGlyph struct {
|
||||
dot fixed.Point26_6
|
||||
frame fixed.Rectangle26_6
|
||||
|
@ -243,7 +251,3 @@ func makeMapping(face font.Face, runes []rune, padding, width fixed.Int26_6) (ma
|
|||
func i2f(i fixed.Int26_6) float64 {
|
||||
return float64(i) / (1 << 6)
|
||||
}
|
||||
|
||||
func f2i(f float64) fixed.Int26_6 {
|
||||
return fixed.Int26_6(f * (1 << 6))
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package text
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestAtlas7x13(t *testing.T) {
|
||||
if Atlas7x13 == nil {
|
||||
t.Fatalf("Atlas7x13 is nil")
|
||||
}
|
||||
|
||||
for _, tt := range []struct {
|
||||
runes []rune
|
||||
want bool
|
||||
}{{ASCII, true}, {[]rune("ÅÄÖ"), false}} {
|
||||
for _, r := range tt.runes {
|
||||
if got := Atlas7x13.Contains(r); got != tt.want {
|
||||
t.Fatalf("Atlas7x13.Contains('%s') = %v, want %v", string(r), got, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,6 +17,7 @@ func init() {
|
|||
for i := range ASCII {
|
||||
ASCII[i] = rune(32 + i)
|
||||
}
|
||||
Atlas7x13 = new7x13Atlas(ASCII)
|
||||
}
|
||||
|
||||
// RangeTable takes a *unicode.RangeTable and generates a set of runes contained within that
|
||||
|
@ -189,6 +190,7 @@ func (txt *Text) Clear() {
|
|||
txt.bounds = pixel.Rect{}
|
||||
txt.tris.SetLen(0)
|
||||
txt.dirty = true
|
||||
txt.Dot = txt.Orig
|
||||
}
|
||||
|
||||
// Write writes a slice of bytes to the Text. This method never fails, always returns len(p), nil.
|
||||
|
|
|
@ -14,6 +14,26 @@ import (
|
|||
"github.com/golang/freetype/truetype"
|
||||
)
|
||||
|
||||
func TestClear(t *testing.T) {
|
||||
txt := text.New(pixel.ZV, text.Atlas7x13)
|
||||
|
||||
if got, want := txt.Dot, pixel.ZV; !eqVectors(got, want) {
|
||||
t.Fatalf("txt.Dot = %v, want %v", got, want)
|
||||
}
|
||||
|
||||
fmt.Fprint(txt, "Test\nClear")
|
||||
|
||||
if got, want := txt.Dot, pixel.V(35, -13); !eqVectors(got, want) {
|
||||
t.Fatalf("txt.Dot = %v, want %v", got, want)
|
||||
}
|
||||
|
||||
txt.Clear()
|
||||
|
||||
if got, want := txt.Dot, pixel.ZV; !eqVectors(got, want) {
|
||||
t.Fatalf("txt.Dot = %v, want %v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkNewAtlas(b *testing.B) {
|
||||
runeSets := []struct {
|
||||
name string
|
||||
|
@ -61,3 +81,7 @@ func BenchmarkTextWrite(b *testing.B) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func eqVectors(a, b pixel.Vec) bool {
|
||||
return (a.X == b.X && a.Y == b.Y)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue