Characters are now rendered with their proper descent
This commit is contained in:
parent
3a879d9a5f
commit
509c6f0bc6
@ -20,6 +20,7 @@ type Backend struct {
|
|||||||
fontAtlas *text.Atlas
|
fontAtlas *text.Atlas
|
||||||
textDrawer *text.Text
|
textDrawer *text.Text
|
||||||
showBounds bool
|
showBounds bool
|
||||||
|
showCellBounds bool
|
||||||
|
|
||||||
metrics struct {
|
metrics struct {
|
||||||
cellWidth int
|
cellWidth int
|
||||||
@ -27,16 +28,24 @@ type Backend struct {
|
|||||||
padding int
|
padding int
|
||||||
paddingX int
|
paddingX int
|
||||||
paddingY int
|
paddingY int
|
||||||
|
descent int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (backend *Backend) Run (callback func (application *stone.Application)) {
|
func (backend *Backend) Run (callback func (application *stone.Application)) {
|
||||||
|
// backend.showBounds = true
|
||||||
|
backend.showCellBounds = true
|
||||||
|
|
||||||
if backend.fontFace == nil {
|
if backend.fontFace == nil {
|
||||||
backend.fontFace = basicfont.Face7x13
|
backend.fontFace = basicfont.Face7x13
|
||||||
}
|
}
|
||||||
|
|
||||||
faceMetrics := backend.fontFace.Metrics()
|
backend.backgroundStamper = imdraw.New(nil)
|
||||||
backend.metrics.cellHeight = faceMetrics.Height.Round()
|
backend.fontAtlas = text.NewAtlas(backend.fontFace, text.ASCII)
|
||||||
|
backend.textDrawer = text.New(pixel.V(0, 0), backend.fontAtlas)
|
||||||
|
|
||||||
|
backend.metrics.descent = int(backend.fontAtlas.Descent())
|
||||||
|
backend.metrics.cellHeight = int(backend.fontAtlas.LineHeight())
|
||||||
// FIXME?: this might not be the best way to get the cell width
|
// FIXME?: this might not be the best way to get the cell width
|
||||||
faceAdvance, ok := backend.fontFace.GlyphAdvance('M')
|
faceAdvance, ok := backend.fontFace.GlyphAdvance('M')
|
||||||
if ok {
|
if ok {
|
||||||
@ -56,9 +65,6 @@ func (backend *Backend) Run (callback func (application *stone.Application)) {
|
|||||||
Title: backend.application.Title(),
|
Title: backend.application.Title(),
|
||||||
Bounds: backend.calculateWindowSize(),
|
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()
|
backend.Poll()
|
||||||
|
|
||||||
if err != nil { panic(err.Error()) }
|
if err != nil { panic(err.Error()) }
|
||||||
@ -166,6 +172,17 @@ func (backend *Backend) draw () {
|
|||||||
backend.vectorAtPosition(x + 1, y + 1))
|
backend.vectorAtPosition(x + 1, y + 1))
|
||||||
backend.backgroundStamper.Rectangle(0)
|
backend.backgroundStamper.Rectangle(0)
|
||||||
// didDrawing = true
|
// didDrawing = true
|
||||||
|
|
||||||
|
if backend.showCellBounds {
|
||||||
|
backend.backgroundStamper.Color =
|
||||||
|
backend.config.Color(stone.ColorForeground)
|
||||||
|
backend.backgroundStamper.Push (
|
||||||
|
backend.vectorAtPosition(x, y),
|
||||||
|
backend.vectorAtPosition(x + 1, y + 1))
|
||||||
|
backend.backgroundStamper.Rectangle(1)
|
||||||
|
backend.backgroundStamper.Color =
|
||||||
|
backend.config.Color(stone.ColorApplication)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
backend.backgroundStamper.Draw(backend.window)
|
backend.backgroundStamper.Draw(backend.window)
|
||||||
@ -185,7 +202,15 @@ func (backend *Backend) draw () {
|
|||||||
if content < 32 { continue }
|
if content < 32 { continue }
|
||||||
|
|
||||||
// draw cell
|
// draw cell
|
||||||
backend.textDrawer.Dot = backend.vectorAtPosition(x, y + 1)
|
backend.textDrawer.Dot = pixel.V (
|
||||||
|
float64 (
|
||||||
|
x * backend.metrics.cellWidth +
|
||||||
|
backend.metrics.paddingX),
|
||||||
|
backend.windowBounds.Y - float64 (
|
||||||
|
(y + 1) * backend.metrics.cellHeight +
|
||||||
|
backend.metrics.paddingY -
|
||||||
|
backend.metrics.descent))
|
||||||
|
|
||||||
backend.textDrawer.WriteRune(content)
|
backend.textDrawer.WriteRune(content)
|
||||||
backend.textDrawer.Draw(backend.window, pixel.IM)
|
backend.textDrawer.Draw(backend.window, pixel.IM)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user