Add input components 086-105; park focus off disabled controls
This commit is contained in:
34 files changed
+3058
-43
No files matched your search
@@ -0,0 +1,45 @@
|
||||
package input
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
|
||||
"github.com/egoist/mygo/ui"
|
||||
|
||||
"git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
|
||||
)
|
||||
|
||||
type ColorSlotOptions struct {
|
||||
Disabled bool
|
||||
}
|
||||
|
||||
type ColorSlotResult struct {
|
||||
Element *ui.Element
|
||||
Changed bool
|
||||
}
|
||||
|
||||
// ColorSlot picks one of 16 palette slots from a grid.
|
||||
func ColorSlot(c *ui.Context, text string, value *pixel.Slot, o ColorSlotOptions) ColorSlotResult {
|
||||
k := pixel.K(c)
|
||||
cur := int(*value)
|
||||
shell, base, st, _ := pad(c, text, 8, pixel.Slots, 12, 12, &cur, o.Disabled)
|
||||
res := ColorSlotResult{Element: shell, Changed: pixel.Slot(cur) != *value}
|
||||
*value = pixel.Slot(cur)
|
||||
base.Description(value.String())
|
||||
shell.Draw(func(p *ui.Painter, r ui.Rect) {
|
||||
g := k.Canvas(p, r)
|
||||
for i := range pixel.Slots {
|
||||
x, y := i%8*12, i/8*12
|
||||
if pixel.Slot(i) == *value {
|
||||
g.Rect(x, y, 12, 12, pixel.Ink)
|
||||
g.Rect(x+1, y+1, 10, 10, pixel.Lit)
|
||||
}
|
||||
g.Rect(x+2, y+2, 8, 8, pixel.Edge)
|
||||
g.Rect(x+3, y+3, 6, 6, pixel.Slot(i))
|
||||
}
|
||||
finish(g, st)
|
||||
})
|
||||
if res.Changed {
|
||||
slog.Debug("8bit: color slot", "label", text, "slot", *value)
|
||||
}
|
||||
return res
|
||||
}
|
||||
Reference in new issue
Block a user