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
|
// TODO: load these from a file
|
||||||
application.config.colors = [4]color.Color {
|
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: 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
|
application.config.padding = 4
|
||||||
|
@ -23,6 +23,9 @@ type Backend struct {
|
|||||||
metrics struct {
|
metrics struct {
|
||||||
cellWidth int
|
cellWidth int
|
||||||
cellHeight int
|
cellHeight int
|
||||||
|
padding int
|
||||||
|
paddingX int
|
||||||
|
paddingY int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,6 +158,8 @@ func (backend *Backend) draw () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
backend.textDrawer.Clear()
|
backend.textDrawer.Clear()
|
||||||
|
backend.textDrawer.Color =
|
||||||
|
backend.config.Color(stone.ColorForeground)
|
||||||
for x := 0; x < width; x ++ {
|
for x := 0; x < width; x ++ {
|
||||||
for y := 0; y < height; y ++ {
|
for y := 0; y < height; y ++ {
|
||||||
clean := backend.application.Clean(x, y)
|
clean := backend.application.Clean(x, y)
|
||||||
@ -165,7 +170,7 @@ func (backend *Backend) draw () {
|
|||||||
content := cell.Rune()
|
content := cell.Rune()
|
||||||
if content < 32 { continue }
|
if content < 32 { continue }
|
||||||
|
|
||||||
// draw cell
|
// draw cell
|
||||||
backend.textDrawer.Dot = backend.vectorAtPosition(x, y + 1)
|
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)
|
||||||
@ -190,17 +195,37 @@ func (backend *Backend) processEvents () {
|
|||||||
backend.windowBounds = newBounds
|
backend.windowBounds = newBounds
|
||||||
|
|
||||||
if backend.boundsDirty {
|
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) {
|
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 + padding),
|
float64 (
|
||||||
|
x * backend.metrics.cellWidth +
|
||||||
|
backend.metrics.paddingX),
|
||||||
backend.windowBounds.Y - float64 (
|
backend.windowBounds.Y - float64 (
|
||||||
y * backend.metrics.cellHeight + padding))
|
y * backend.metrics.cellHeight +
|
||||||
|
backend.metrics.paddingY))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user