Fixed coordinate system

This commit is contained in:
Sasha Koshka 2022-11-05 18:56:56 -04:00
parent d739c0a6ed
commit 6e5cbd50f5
3 changed files with 31 additions and 8 deletions

View File

@ -36,6 +36,8 @@ func (application *Application) Run (callback func (application *Application)) {
color.RGBA { R: 0x2B, G: 0x30, B: 0x3C, A: 0xFF }, color.RGBA { R: 0x2B, G: 0x30, B: 0x3C, A: 0xFF },
} }
application.config.padding = 4
// TODO: instead, return the error // TODO: instead, return the error
var err error var err error
application.backend, err = instantiateBackend(application) application.backend, err = instantiateBackend(application)

View File

@ -12,7 +12,7 @@ import "git.tebibyte.media/sashakoshka/stone"
type Backend struct { type Backend struct {
window *pixelgl.Window window *pixelgl.Window
boundsDirty bool boundsDirty bool
previousBounds pixel.Vec windowBounds pixel.Vec
fontFace font.Face fontFace font.Face
application *stone.Application application *stone.Application
config *stone.Config config *stone.Config
@ -166,19 +166,28 @@ func (backend *Backend) draw () {
if content < 32 { continue } if content < 32 { continue }
// draw cell // draw cell
backend.textDrawer.Dot = backend.vectorAtPosition(x, y) backend.textDrawer.Dot = backend.vectorAtPosition(x, y + 1)
backend.textDrawer.WriteRune(content) backend.textDrawer.WriteRune(content)
backend.textDrawer.Draw(backend.window, pixel.IM) backend.textDrawer.Draw(backend.window, pixel.IM)
} }
} }
backend.backgroundStamper.Clear()
backend.backgroundStamper.Color =
backend.config.Color(stone.ColorBackground)
backend.backgroundStamper.Push (
backend.vectorAtPosition(0, 0),
backend.vectorAtPosition(width, height))
backend.backgroundStamper.Rectangle(1)
backend.backgroundStamper.Draw(backend.window)
backend.window.SwapBuffers() backend.window.SwapBuffers()
} }
func (backend *Backend) processEvents () { func (backend *Backend) processEvents () {
newBounds := backend.window.Bounds().Max newBounds := backend.window.Bounds().Max
backend.boundsDirty = backend.previousBounds != newBounds backend.boundsDirty = backend.windowBounds != newBounds
backend.previousBounds = newBounds backend.windowBounds = newBounds
if backend.boundsDirty { if backend.boundsDirty {
// TODO: set size of buffer // TODO: set size of buffer
@ -186,9 +195,12 @@ func (backend *Backend) processEvents () {
} }
func (backend *Backend) vectorAtPosition (x, y int) (vector pixel.Vec) { func (backend *Backend) vectorAtPosition (x, y int) (vector pixel.Vec) {
padding := backend.config.Padding() * backend.metrics.cellWidth
vector = pixel.V ( vector = pixel.V (
float64(x * backend.metrics.cellWidth), float64 (x * backend.metrics.cellWidth + padding),
float64(y * backend.metrics.cellHeight)) backend.windowBounds.Y - float64 (
y * backend.metrics.cellHeight + padding))
return return
} }

View File

@ -20,8 +20,17 @@ func run (application *stone.Application) {
application.SetRune(6, 0, 'l') application.SetRune(6, 0, 'l')
application.SetRune(7, 0, 'd') application.SetRune(7, 0, 'd')
application.SetRune(8, 0, '!') application.SetRune(8, 0, '!')
application.SetRune(4, 4, ':') application.SetRune(4, 1, ':')
application.SetRune(5, 4, '3') application.SetRune(5, 1, '3')
application.SetRune(0, 2, 'A')
application.SetRune(1, 2, 'A')
application.SetRune(2, 2, 'A')
application.SetRune(3, 2, 'A')
application.SetRune(4, 2, 'A')
application.SetRune(5, 2, 'A')
application.SetRune(6, 2, 'A')
application.SetRune(7, 2, 'A')
application.SetRune(8, 2, 'A')
} }
if !application.Await(0) { break } if !application.Await(0) { break }