Redid color system
This commit is contained in:
parent
100e72fada
commit
de3e4b528b
@ -26,11 +26,23 @@ func (application *Application) Run () (
|
|||||||
application.DamageBuffer.SetSize(width, height)
|
application.DamageBuffer.SetSize(width, height)
|
||||||
|
|
||||||
// TODO: load these from a file
|
// TODO: load these from a file
|
||||||
application.config.colors = [4]color.Color {
|
application.config.colors = [8]color.Color {
|
||||||
color.RGBA { R: 0x2B, G: 0x30, B: 0x3C, A: 0xFF },
|
// background
|
||||||
color.RGBA { R: 0x4C, G: 0x56, B: 0x6A, A: 0xFF },
|
color.RGBA { R: 0, G: 0, B: 0, A: 0 },
|
||||||
color.RGBA { R: 0x2E, G: 0x34, B: 0x40, A: 0xFF },
|
// foreground
|
||||||
color.RGBA { R: 0xA8, G: 0x55, B: 0x5D, A: 0xFF },
|
color.RGBA { R: 0xFF, G: 0xFF, B: 0xFF, A: 0xFF },
|
||||||
|
// red
|
||||||
|
color.RGBA { R: 0xFF, G: 0xFF, B: 0xFF, A: 0xFF },
|
||||||
|
// orange
|
||||||
|
color.RGBA { R: 0xFF, G: 0x80, B: 0x00, A: 0xFF },
|
||||||
|
// yellow
|
||||||
|
color.RGBA { R: 0xFF, G: 0xFF, B: 0x00, A: 0xFF },
|
||||||
|
// green
|
||||||
|
color.RGBA { R: 0x00, G: 0xFF, B: 0x00, A: 0xFF },
|
||||||
|
// blue
|
||||||
|
color.RGBA { R: 0x00, G: 0x00, B: 0xFF, A: 0xFF },
|
||||||
|
// purple
|
||||||
|
color.RGBA { R: 0x80, G: 0x00, B: 0xFF, A: 0xFF },
|
||||||
}
|
}
|
||||||
application.config.fontName = ""
|
application.config.fontName = ""
|
||||||
application.config.fontSize = 11
|
application.config.fontSize = 11
|
||||||
|
@ -30,14 +30,14 @@ func (backend *Backend) updateWindowAreas (areas ...image.Rectangle) {
|
|||||||
backend.canvas.XPaintRects(backend.window.Id, areas...)
|
backend.canvas.XPaintRects(backend.window.Id, areas...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (backend *Backend) drawRune (x, y int, character rune) {
|
func (backend *Backend) drawRune (x, y int, character rune, runeColor stone.Color) {
|
||||||
// TODO: cache these draws as non-transparent buffers with the
|
// TODO: cache these draws as non-transparent buffers with the
|
||||||
// application background color as the background. that way, we won't
|
// application background color as the background. that way, we won't
|
||||||
// need to redraw the characters *or* composite them.
|
// need to redraw the characters *or* composite them.
|
||||||
|
|
||||||
fillRectangle (
|
fillRectangle (
|
||||||
&image.Uniform {
|
&image.Uniform {
|
||||||
C: backend.config.Color(stone.ColorApplication),
|
C: backend.config.Color(stone.ColorBackground),
|
||||||
},
|
},
|
||||||
backend.canvas,
|
backend.canvas,
|
||||||
backend.boundsOfCell(x, y))
|
backend.boundsOfCell(x, y))
|
||||||
@ -65,7 +65,7 @@ func (backend *Backend) drawRune (x, y int, character rune) {
|
|||||||
backend.canvas,
|
backend.canvas,
|
||||||
destinationRectangle,
|
destinationRectangle,
|
||||||
&image.Uniform {
|
&image.Uniform {
|
||||||
C: backend.config.Color(stone.ColorForeground),
|
C: backend.config.Color(runeColor),
|
||||||
},
|
},
|
||||||
image.Point { },
|
image.Point { },
|
||||||
mask,
|
mask,
|
||||||
@ -86,7 +86,7 @@ func (backend *Backend) drawCells (forceRedraw bool) (areas []image.Rectangle) {
|
|||||||
if forceRedraw && content < 32 { continue }
|
if forceRedraw && content < 32 { continue }
|
||||||
|
|
||||||
areas = append(areas, backend.boundsOfCell(x, y))
|
areas = append(areas, backend.boundsOfCell(x, y))
|
||||||
backend.drawRune(x, y, content)
|
backend.drawRune(x, y, content, cell.Color())
|
||||||
}}
|
}}
|
||||||
|
|
||||||
if backend.drawBufferBounds && forceRedraw {
|
if backend.drawBufferBounds && forceRedraw {
|
||||||
|
@ -30,7 +30,7 @@ type Backend struct {
|
|||||||
face font.Face
|
face font.Face
|
||||||
}
|
}
|
||||||
|
|
||||||
colors [4]xgraphics.BGRA
|
colors [8]xgraphics.BGRA
|
||||||
|
|
||||||
metrics struct {
|
metrics struct {
|
||||||
windowWidth int
|
windowWidth int
|
||||||
@ -125,7 +125,7 @@ func (backend *Backend) reallocateCanvas () {
|
|||||||
backend.metrics.windowWidth,
|
backend.metrics.windowWidth,
|
||||||
backend.metrics.windowHeight))
|
backend.metrics.windowHeight))
|
||||||
backend.canvas.For (func (x, y int) xgraphics.BGRA {
|
backend.canvas.For (func (x, y int) xgraphics.BGRA {
|
||||||
return backend.colors[stone.ColorApplication]
|
return backend.colors[stone.ColorBackground]
|
||||||
})
|
})
|
||||||
|
|
||||||
backend.canvas.XSurfaceSet(backend.window.Id)
|
backend.canvas.XSurfaceSet(backend.window.Id)
|
||||||
|
15
buffer.go
15
buffer.go
@ -5,9 +5,13 @@ type Color uint8
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
ColorBackground Color = 0x0
|
ColorBackground Color = 0x0
|
||||||
ColorSelection Color = 0x1
|
ColorForeground Color = 0x1
|
||||||
ColorForeground Color = 0x2
|
ColorRed Color = 0x2
|
||||||
ColorApplication Color = 0x3
|
ColorOrange Color = 0x3
|
||||||
|
ColorYellow Color = 0x4
|
||||||
|
ColorGreen Color = 0x5
|
||||||
|
ColorBlue Color = 0x6
|
||||||
|
ColorPurple Color = 0x7
|
||||||
)
|
)
|
||||||
|
|
||||||
// Style contains styling information about cells. These properties can be or'd
|
// Style contains styling information about cells. These properties can be or'd
|
||||||
@ -30,7 +34,7 @@ type Cell struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Color returns the cell's color.
|
// Color returns the cell's color.
|
||||||
func (cell Cell) Color (color Color) {
|
func (cell Cell) Color () (color Color) {
|
||||||
color = cell.color
|
color = cell.color
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -81,6 +85,9 @@ func (buffer *Buffer) SetSize (width, height int) {
|
|||||||
buffer.width = width
|
buffer.width = width
|
||||||
buffer.height = height
|
buffer.height = height
|
||||||
buffer.content = make([]Cell, width * height)
|
buffer.content = make([]Cell, width * height)
|
||||||
|
for index := 0; index < len(buffer.content); index ++ {
|
||||||
|
buffer.content[index].color = ColorForeground
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cell returns the cell at the specified x and y coordinates. If the
|
// Cell returns the cell at the specified x and y coordinates. If the
|
||||||
|
@ -5,7 +5,7 @@ import "image/color"
|
|||||||
// Config stores configuration parameters. Backends only should honor parameters
|
// Config stores configuration parameters. Backends only should honor parameters
|
||||||
// that they can support.
|
// that they can support.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
colors [4]color.Color
|
colors [8]color.Color
|
||||||
padding int
|
padding int
|
||||||
fontSize int
|
fontSize int
|
||||||
fontName string
|
fontName string
|
||||||
|
Loading…
Reference in New Issue
Block a user