diff --git a/application.go b/application.go index ad27cab..e368cb9 100644 --- a/application.go +++ b/application.go @@ -30,10 +30,10 @@ func (application *Application) Run (callback func (application *Application)) { // TODO: load these from a file application.config.colors = [4]color.Color { - color.RGBA { R: 0x00, G: 0x00, B: 0x00, A: 0xFF }, - color.RGBA { R: 0xFF, G: 0xFF, B: 0xFF, A: 0xFF }, - color.RGBA { R: 0x00, G: 0x00, B: 0x00, A: 0xFF }, - color.RGBA { R: 0xFF, G: 0xFF, B: 0xFF, A: 0xFF }, + color.RGBA { R: 0x81, G: 0xA1, B: 0xC1, A: 0xFF }, + color.RGBA { R: 0x4C, G: 0x56, B: 0x6A, A: 0xFF }, + color.RGBA { R: 0xD8, G: 0xDE, B: 0xE9, A: 0xFF }, + color.RGBA { R: 0x2B, G: 0x30, B: 0x3C, A: 0xFF }, } // TODO: instead, return the error diff --git a/backends/pixel/pixel.go b/backends/pixel/pixel.go index 9d09c7f..5e7d8f0 100644 --- a/backends/pixel/pixel.go +++ b/backends/pixel/pixel.go @@ -1,9 +1,9 @@ package pixel -import "fmt" import "time" import "golang.org/x/image/font" import "github.com/faiface/pixel" +import "github.com/faiface/pixel/text" import "github.com/faiface/pixel/imdraw" import "github.com/faiface/pixel/pixelgl" import "golang.org/x/image/font/basicfont" @@ -17,6 +17,8 @@ type Backend struct { application *stone.Application config *stone.Config backgroundStamper *imdraw.IMDraw + fontAtlas *text.Atlas + textDrawer *text.Text metrics struct { cellWidth int @@ -51,6 +53,8 @@ func (backend *Backend) Run (callback func (application *stone.Application)) { Bounds: backend.calculateWindowSize(), }) backend.backgroundStamper = imdraw.New(nil) + backend.fontAtlas = text.NewAtlas(backend.fontFace, text.ASCII) + backend.textDrawer = text.New(pixel.V(0, 0), backend.fontAtlas) backend.Poll() if err != nil { panic(err.Error()) } @@ -150,20 +154,21 @@ func (backend *Backend) draw () { backend.backgroundStamper.Draw(backend.window) } - // TODO: draw dirty cells. + backend.textDrawer.Clear() for x := 0; x < width; x ++ { for y := 0; y < height; y ++ { clean := backend.application.Clean(x, y) - // cell := application.content[index] if clean { continue } backend.application.MarkClean(x, y) - // draw cell cell := backend.application.Cell(x, y) content := cell.Rune() if content < 32 { continue } - fmt.Println(content) + // draw cell + backend.textDrawer.Dot = backend.vectorAtPosition(x, y) + backend.textDrawer.WriteRune(content) + backend.textDrawer.Draw(backend.window, pixel.IM) } } diff --git a/examples/hello/main.go b/examples/hello/main.go index e9439ec..fd4b2d6 100644 --- a/examples/hello/main.go +++ b/examples/hello/main.go @@ -9,7 +9,7 @@ func main () { } func run (application *stone.Application) { - for application.Await(0) { + for { if application.Resized() { application.SetRune(0, 0, 'h') application.SetRune(1, 0, 'e') @@ -23,5 +23,7 @@ func run (application *stone.Application) { application.SetRune(4, 4, ':') application.SetRune(5, 4, '3') } + + if !application.Await(0) { break } } }