Buffer is now drawn in the screen center (similar to kitty)
This commit is contained in:
parent
6e5cbd50f5
commit
18ea5681de
@ -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: 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 },
|
||||
color.RGBA { R: 0x4C, G: 0x56, B: 0x6A, A: 0xFF },
|
||||
color.RGBA { R: 0x2E, G: 0x34, B: 0x40, A: 0xFF },
|
||||
color.RGBA { R: 0xA8, G: 0x55, B: 0x5D, A: 0xFF },
|
||||
}
|
||||
|
||||
application.config.padding = 4
|
||||
|
@ -23,6 +23,9 @@ type Backend struct {
|
||||
metrics struct {
|
||||
cellWidth int
|
||||
cellHeight int
|
||||
padding int
|
||||
paddingX int
|
||||
paddingY int
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,7 +128,7 @@ func (backend *Backend) Resized () (resized bool) {
|
||||
func (backend *Backend) draw () {
|
||||
// didDrawing := false
|
||||
width, height := backend.application.Size()
|
||||
|
||||
|
||||
if backend.boundsDirty {
|
||||
backend.window.Clear (
|
||||
backend.config.Color(stone.ColorApplication))
|
||||
@ -155,6 +158,8 @@ func (backend *Backend) draw () {
|
||||
}
|
||||
|
||||
backend.textDrawer.Clear()
|
||||
backend.textDrawer.Color =
|
||||
backend.config.Color(stone.ColorForeground)
|
||||
for x := 0; x < width; x ++ {
|
||||
for y := 0; y < height; y ++ {
|
||||
clean := backend.application.Clean(x, y)
|
||||
@ -165,7 +170,7 @@ func (backend *Backend) draw () {
|
||||
content := cell.Rune()
|
||||
if content < 32 { continue }
|
||||
|
||||
// draw cell
|
||||
// draw cell
|
||||
backend.textDrawer.Dot = backend.vectorAtPosition(x, y + 1)
|
||||
backend.textDrawer.WriteRune(content)
|
||||
backend.textDrawer.Draw(backend.window, pixel.IM)
|
||||
@ -190,17 +195,37 @@ func (backend *Backend) processEvents () {
|
||||
backend.windowBounds = newBounds
|
||||
|
||||
if backend.boundsDirty {
|
||||
// TODO: set size of buffer
|
||||
// calculate padding
|
||||
backend.metrics.padding =
|
||||
backend.config.Padding() *
|
||||
backend.metrics.cellWidth
|
||||
deadArea := float64(backend.metrics.padding * 2)
|
||||
|
||||
// calculate new width and height for buffer
|
||||
width := int (
|
||||
(backend.windowBounds.X - deadArea) /
|
||||
float64(backend.metrics.cellWidth))
|
||||
height := int (
|
||||
(backend.windowBounds.Y - deadArea) /
|
||||
float64(backend.metrics.cellHeight))
|
||||
backend.application.SetSize(width, height)
|
||||
|
||||
// position buffer in center of screen
|
||||
frameWidth := width * backend.metrics.cellWidth
|
||||
frameHeight := height * backend.metrics.cellHeight
|
||||
backend.metrics.paddingX = (int(backend.windowBounds.X) - frameWidth) / 2
|
||||
backend.metrics.paddingY = (int(backend.windowBounds.Y) - frameHeight) / 2
|
||||
}
|
||||
}
|
||||
|
||||
func (backend *Backend) vectorAtPosition (x, y int) (vector pixel.Vec) {
|
||||
padding := backend.config.Padding() * backend.metrics.cellWidth
|
||||
|
||||
vector = pixel.V (
|
||||
float64 (x * backend.metrics.cellWidth + padding),
|
||||
float64 (
|
||||
x * backend.metrics.cellWidth +
|
||||
backend.metrics.paddingX),
|
||||
backend.windowBounds.Y - float64 (
|
||||
y * backend.metrics.cellHeight + padding))
|
||||
y * backend.metrics.cellHeight +
|
||||
backend.metrics.paddingY))
|
||||
return
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user