x-backend #2
@ -222,6 +222,12 @@ func (backend *Backend) drawRune (x, y int, character rune) {
|
||||
_, mask, maskPoint, _, _ := backend.font.face.Glyph (
|
||||
fixed.Point26_6 { },
|
||||
character)
|
||||
strokeRectangle (
|
||||
&image.Uniform {
|
||||
C: backend.config.Color(stone.ColorForeground),
|
||||
},
|
||||
backend.canvas,
|
||||
backend.boundsOfCell(x, y))
|
||||
draw.DrawMask (
|
||||
backend.canvas,
|
||||
backend.boundsOfCell(x, y),
|
||||
@ -352,6 +358,44 @@ func findAndLoadFont (name string, size float64) (face font.Face) {
|
||||
return
|
||||
}
|
||||
|
||||
func fillRectangle (
|
||||
source image.Image,
|
||||
destination draw.Image,
|
||||
bounds image.Rectangle,
|
||||
) {
|
||||
for y := bounds.Min.Y; y < bounds.Max.Y; y ++ {
|
||||
for x := bounds.Min.X; x < bounds.Max.X; x ++ {
|
||||
destination.Set(x, y, source.At(x, y))
|
||||
}}
|
||||
}
|
||||
|
||||
func strokeRectangle (
|
||||
source image.Image,
|
||||
destination draw.Image,
|
||||
bounds image.Rectangle,
|
||||
) {
|
||||
x := 0
|
||||
y := bounds.Min.Y
|
||||
for x = bounds.Min.X; x < bounds.Max.X; x ++ {
|
||||
destination.Set(x, y, source.At(x, y))
|
||||
}
|
||||
|
||||
y = bounds.Max.Y - 1
|
||||
for x = bounds.Min.X; x < bounds.Max.X; x ++ {
|
||||
destination.Set(x, y, source.At(x, y))
|
||||
}
|
||||
|
||||
x = bounds.Min.X
|
||||
for y = bounds.Min.Y; y < bounds.Max.Y; y ++ {
|
||||
destination.Set(x, y, source.At(x, y))
|
||||
}
|
||||
|
||||
x = bounds.Max.X - 1
|
||||
for y = bounds.Min.Y; y < bounds.Max.Y; y ++ {
|
||||
destination.Set(x, y, source.At(x, y))
|
||||
}
|
||||
}
|
||||
|
||||
// init registers this backend when the program starts.
|
||||
func init () {
|
||||
stone.RegisterBackend(factory)
|
||||
|
Loading…
Reference in New Issue
Block a user