Add hand-placed 12x12 icon set

This commit is contained in:
ZacharyZhang-NY committed 2026-10-11 16:24:50 -04:00
1 parent a92829f353
commit 7e47e3a924
7 files changed
+1641

No files matched your search

+412
View File
@@ -0,0 +1,412 @@
// Package icon holds hand-placed 12×12 sprites.
package icon
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
var (
Check = pixel.MustSprite(`
............
............
.........##.
........###.
.......###..
.##...###...
.###.###....
..#####.....
...###......
....#.......
............
............`)
Close = pixel.MustSprite(`
............
.##......##.
.###....###.
..###..###..
...######...
....####....
....####....
...######...
..###..###..
.###....###.
.##......##.
............`)
Plus = pixel.MustSprite(`
............
............
.....##.....
.....##.....
.....##.....
..########..
..########..
.....##.....
.....##.....
.....##.....
............
............`)
Minus = pixel.MustSprite(`
............
............
............
............
............
..########..
..########..
............
............
............
............
............`)
ArrowLeft = pixel.MustSprite(`
............
............
.....#......
....##......
...###......
..#########.
..#########.
...###......
....##......
.....#......
............
............`)
ArrowRight = ArrowLeft.Mirror()
ArrowUp = pixel.MustSprite(`
............
.....##.....
....####....
...######...
..########..
.....##.....
.....##.....
.....##.....
.....##.....
.....##.....
.....##.....
............`)
ArrowDown = pixel.MustSprite(`
............
.....##.....
.....##.....
.....##.....
.....##.....
.....##.....
.....##.....
..########..
...######...
....####....
.....##.....
............`)
ChevronLeft = pixel.MustSprite(`
............
............
......##....
.....##.....
....##......
...##.......
...##.......
....##......
.....##.....
......##....
............
............`)
ChevronRight = ChevronLeft.Mirror()
ChevronUp = pixel.MustSprite(`
............
............
............
............
.....##.....
....####....
...##..##...
..##....##..
.##......##.
............
............
............`)
ChevronDown = pixel.MustSprite(`
............
............
............
.##......##.
..##....##..
...##..##...
....####....
.....##.....
............
............
............
............`)
TriangleRight = pixel.MustSprite(`
............
...#........
...##.......
...###......
...####.....
...#####....
...#####....
...####.....
...###......
...##.......
...#........
............`)
TriangleDown = pixel.MustSprite(`
............
............
............
.##########.
..########..
...######...
....####....
.....##.....
............
............
............
............`)
Menu = pixel.MustSprite(`
............
............
.##########.
.##########.
............
.##########.
.##########.
............
.##########.
.##########.
............
............`)
More = pixel.MustSprite(`
............
............
............
............
............
.##..##..##.
.##..##..##.
............
............
............
............
............`)
Search = pixel.MustSprite(`
............
..####......
.#....#.....
#......#....
#......#....
#......#....
#......#....
.#....#.....
..######....
.......###..
........###.
.........##.`)
Settings = pixel.MustSprite(`
............
.....##.....
..#.####.#..
..########..
...##..##...
.###....###.
.###....###.
...##..##...
..########..
..#.####.#..
.....##.....
............`)
Edit = pixel.MustSprite(`
............
........##..
.......####.
......#.###.
.....#.#.#..
....#.#.#...
...#.#.#....
..#.#.#.....
.#.#.#......
.##.#.......
.###........
............`)
Trash = pixel.MustSprite(`
............
....####....
.##########.
.##########.
..#......#..
..#.#..#.#..
..#.#..#.#..
..#.#..#.#..
..#.#..#.#..
..#......#..
..########..
............`)
Copy = pixel.MustSprite(`
............
.#######....
.#.....#....
.#..#######.
.#..#.....#.
.#..#.....#.
.####.....#.
....#.....#.
....#.....#.
....#######.
............
............`)
Clipboard = pixel.MustSprite(`
....####....
.###.##.###.
.#........#.
.#.######.#.
.#........#.
.#.######.#.
.#........#.
.#.####...#.
.#........#.
.#........#.
.##########.
............`)
Save = pixel.MustSprite(`
............
.#########..
.#..####.##.
.#..####..#.
.#........#.
.##########.
.#........#.
.#.######.#.
.#.######.#.
.#........#.
.##########.
............`)
Download = pixel.MustSprite(`
............
.....##.....
.....##.....
.....##.....
..########..
...######...
....####....
.....##.....
............
.#........#.
.##########.
............`)
Upload = pixel.MustSprite(`
............
.....##.....
....####....
...######...
..########..
.....##.....
.....##.....
.....##.....
............
.#........#.
.##########.
............`)
Refresh = pixel.MustSprite(`
............
...######...
..##....##..
.##......#.#
.#........##
.#.......###
.#..........
.##.........
..##....##..
...######...
............
............`)
Link = pixel.MustSprite(`
............
.......###..
......#...#.
......#...#.
....#..#.#..
.....#.#....
....#.#.....
..#.#..#....
.#...#......
.#...#......
..###.......
............`)
Filter = pixel.MustSprite(`
............
.##########.
.##########.
..########..
...######...
....####....
....####....
....####....
....####....
....###.....
....##......
............`)
Sort = pixel.MustSprite(`
............
...#........
..###.......
.#####......
...#........
...#....#...
...#....#...
...#....#...
........#...
......#####.
.......###..
........#...`)
Send = pixel.MustSprite(`
............
.##.........
.#.##.......
.#...##.....
.#.....##...
.#.......##.
.#.....##...
.#..###.....
.#.#........
.##.........
............
............`)
Power = pixel.MustSprite(`
............
.....##.....
..#..##..#..
.##..##..##.
.#...##...#.
.#........#.
.#........#.
.#........#.
.##......##.
..########..
...######...
............`)
Grid = pixel.MustSprite(`
............
.###.###.###
.###.###.###
.###.###.###
............
.###.###.###
.###.###.###
.###.###.###
............
.###.###.###
.###.###.###
.###.###.###`)
List = pixel.MustSprite(`
............
............
.##.#######.
.##.#######.
............
.##.#######.
.##.#######.
............
.##.#######.
.##.#######.
............
............`)
)
+39
View File
@@ -0,0 +1,39 @@
package icon
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
type Named struct {
Name string
Sprite *pixel.Sprite
}
// All lists every icon by name, for galleries and tests.
var All = []Named{
{"check", Check}, {"close", Close}, {"plus", Plus}, {"minus", Minus},
{"arrow-left", ArrowLeft}, {"arrow-right", ArrowRight}, {"arrow-up", ArrowUp}, {"arrow-down", ArrowDown},
{"chevron-left", ChevronLeft}, {"chevron-right", ChevronRight}, {"chevron-up", ChevronUp}, {"chevron-down", ChevronDown},
{"triangle-right", TriangleRight}, {"triangle-down", TriangleDown}, {"menu", Menu}, {"more", More},
{"search", Search}, {"settings", Settings}, {"edit", Edit}, {"trash", Trash},
{"copy", Copy}, {"clipboard", Clipboard}, {"save", Save}, {"download", Download},
{"upload", Upload}, {"refresh", Refresh}, {"link", Link}, {"filter", Filter},
{"sort", Sort}, {"send", Send}, {"power", Power}, {"grid", Grid}, {"list", List},
{"home", Home}, {"user", User}, {"users", Users}, {"bell", Bell},
{"mail", Mail}, {"mail-open", MailOpen}, {"chat", Chat}, {"folder", Folder},
{"folder-open", FolderOpen}, {"file", File}, {"file-text", FileText}, {"image", Image},
{"music", Music}, {"video", Video}, {"code", Code}, {"terminal", Terminal},
{"bug", Bug}, {"lock", Lock}, {"unlock", Unlock}, {"key", Key},
{"eye", Eye}, {"eye-off", EyeOff}, {"calendar", Calendar}, {"clock", Clock},
{"hourglass", Hourglass}, {"camera", Camera}, {"mic", Mic}, {"phone", Phone},
{"map", Map}, {"flag", Flag}, {"pin", Pin}, {"globe", Globe},
{"book", Book}, {"cart", Cart}, {"tag", Tag}, {"gift", Gift},
{"robot", Robot}, {"branch", Branch}, {"wifi", Wifi}, {"battery", Battery}, {"gamepad", Gamepad},
{"info", Info}, {"warning", Warning}, {"error", Error}, {"question", Question},
{"heart", Heart}, {"heart-empty", HeartEmpty}, {"star", Star}, {"star-empty", StarEmpty},
{"sparkle", Sparkle}, {"volume", Volume}, {"mute", Mute}, {"play", Play},
{"pause", Pause}, {"stop", Stop}, {"next", Next}, {"prev", Prev},
{"coin", Coin}, {"gem", Gem}, {"potion", Potion}, {"sword", Sword},
{"shield", Shield}, {"chest", Chest}, {"crown", Crown}, {"trophy", Trophy},
{"skull", Skull}, {"scroll", Scroll}, {"flame", Flame}, {"drop", Drop},
{"leaf", Leaf}, {"flower", Flower}, {"sun", Sun}, {"moon", Moon},
{"cloud", Cloud}, {"snowflake", Snowflake}, {"bolt", Bolt}, {"palette", Palette},
}
+176
View File
@@ -0,0 +1,176 @@
package icon_test
import (
"go/ast"
"go/parser"
"go/token"
"path/filepath"
"regexp"
"strconv"
"strings"
"testing"
"github.com/egoist/mygo/ui"
"git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/icon"
"git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
)
type decl struct {
file string
expr ast.Expr
}
var upper = regexp.MustCompile(`([a-z])([A-Z])`)
func kebab(s string) string { return strings.ToLower(upper.ReplaceAllString(s, "$1-$2")) }
// decls maps each icon's kebab name to its source.
func decls(t *testing.T) map[string]decl {
files, _ := filepath.Glob("*.go")
out := map[string]decl{}
for _, f := range files {
if strings.HasSuffix(f, "_test.go") || f == "icon.go" {
continue
}
file, err := parser.ParseFile(token.NewFileSet(), f, nil, 0)
if err != nil {
t.Fatal(err)
}
for _, d := range file.Decls {
if g, ok := d.(*ast.GenDecl); ok && g.Tok == token.VAR {
for _, sp := range g.Specs {
v := sp.(*ast.ValueSpec)
for i, n := range v.Names {
out[kebab(n.Name)] = decl{f, v.Values[i]}
}
}
}
}
}
return out
}
// build rebuilds an icon from its declared art.
func build(t *testing.T, ds map[string]decl, name string) *pixel.Sprite {
call, ok := ds[name].expr.(*ast.CallExpr)
if !ok {
t.Fatalf("%s is not a sprite call", name)
}
sel := call.Fun.(*ast.SelectorExpr)
switch sel.Sel.Name {
case "MustSprite":
art, err := strconv.Unquote(call.Args[0].(*ast.BasicLit).Value)
if err != nil {
t.Fatal(err)
}
return pixel.MustSprite(art)
case "Mirror":
return build(t, ds, kebab(sel.X.(*ast.Ident).Name)).Mirror()
}
t.Fatalf("%s built by %s", name, sel.Sel.Name)
return nil
}
func render(sp *pixel.Sprite, ink pixel.Slot) []byte {
return ui.Render(func(c *ui.Context) {
pixel.Use(c, pixel.Settings{Palette: pixel.SummerDay, Dot: 1})
pixel.Icon(c, sp, pixel.IconOptions{Slot: ink})
}, 12, 12, 1).Pix
}
func TestEveryIconIsListedWithItsArt(t *testing.T) {
ds := decls(t)
listed := map[string]bool{}
for _, n := range icon.All {
if listed[n.Name] {
t.Errorf("icon %q listed twice", n.Name)
}
listed[n.Name] = true
if _, ok := ds[n.Name]; !ok {
t.Fatalf("listed icon %q has no declaration", n.Name)
}
if string(render(n.Sprite, pixel.Magic)) != string(render(build(t, ds, n.Name), pixel.Magic)) {
t.Errorf("icon %q is bound to another icon's art", n.Name)
}
}
for name := range ds {
if !listed[name] {
t.Errorf("icon %q missing from All", name)
}
}
if len(icon.All) < 100 {
t.Fatalf("%d icons, want at least 100", len(icon.All))
}
}
func TestOneBitIconsTakeTheInk(t *testing.T) {
ds := decls(t)
back, ink := pixel.SummerDay.C(pixel.Back), pixel.SummerDay.C(pixel.Magic)
for _, n := range icon.All {
if ds[n.Name].file == "items.go" {
continue
}
pix, drawn := render(n.Sprite, pixel.Magic), 0
for i := 0; i < len(pix); i += 4 {
switch {
case pix[i] == back.R && pix[i+1] == back.G && pix[i+2] == back.B:
case pix[i] == ink.R && pix[i+1] == ink.G && pix[i+2] == ink.B:
drawn++
default:
t.Fatalf("%s draws a color other than the ink", n.Name)
}
}
if drawn == 0 {
t.Fatalf("%s draws nothing in the ink", n.Name)
}
}
}
func TestIconsAreDistinctTwelveByTwelve(t *testing.T) {
seen := map[string]string{}
for _, n := range icon.All {
if n.Sprite.W != 12 || n.Sprite.H != 12 || n.Sprite.Frames() != 1 {
t.Fatalf("%s is %d×%d with %d frames", n.Name, n.Sprite.W, n.Sprite.H, n.Sprite.Frames())
}
pix, back, drawn := render(n.Sprite, pixel.Ink), pixel.SummerDay.C(pixel.Back), 0
for i := 0; i < len(pix); i += 4 {
if pix[i] != back.R || pix[i+1] != back.G || pix[i+2] != back.B {
drawn++
}
}
if drawn == 0 {
t.Fatalf("%s draws nothing", n.Name)
}
key := string(pix)
if other, ok := seen[key]; ok {
t.Fatalf("%s and %s are the same picture", n.Name, other)
}
seen[key] = n.Name
}
}
func TestItemsAreOutlined(t *testing.T) {
for name, d := range decls(t) {
if d.file != "items.go" {
continue
}
art, _ := strconv.Unquote(d.expr.(*ast.CallExpr).Args[0].(*ast.BasicLit).Value)
var rows []string
for _, r := range strings.Split(strings.TrimSpace(art), "\n") {
rows = append(rows, strings.TrimSpace(r))
}
for y, row := range rows {
for x := range len(row) {
if strings.IndexByte(".e#", row[x]) >= 0 {
continue
}
for _, n := range [][2]int{{x + 1, y}, {x - 1, y}, {x, y + 1}, {x, y - 1}} {
if n[0] < 0 || n[1] < 0 || n[0] >= len(row) || n[1] >= len(rows) || rows[n[1]][n[0]] == '.' {
t.Fatalf("%s: dot %d,%d touches the outside without an Edge outline", name, x, y)
}
}
}
}
}
}
+267
View File
@@ -0,0 +1,267 @@
package icon
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
// Items keep their own colors; '#' still takes the ink.
var (
Coin = pixel.MustSprite(`
............
...eeeeee...
..eyyyyyye..
.eyllyyyyye.
.eylyyeyyye.
.eylyyeyyse.
.eyyyyeyyse.
.eyyyyeyyse.
.eyyyyyyyse.
..essssssse.
...eeeeeee..
............`)
Gem = pixel.MustSprite(`
............
....eeee....
...elllcee..
..elcccccse.
.eeeeeeeeee.
.elcccccsse.
..elcccsse..
...elcsse...
....else....
.....ee.....
............
............`)
Potion = pixel.MustSprite(`
....eeee....
....eeee....
....elne....
....elne....
...ellnne...
..elrrrrre..
.elrrrrrrre.
.elrrrrrrre.
.errrrrrrse.
.errrrrrsse.
..essssssse.
...eeeeeee..`)
Sword = pixel.MustSprite(`
.........eee
........elle
.......elle.
......elle..
.....elle...
.ee.elle....
.eyelle.....
..eyle......
..eyye......
.eyeeye.....
eye..e......
ee..........`)
Shield = pixel.MustSprite(`
............
.eeeeeeeeee.
.elllaaaase.
.ellaaaaase.
.elaaaaaase.
.elaaaaaase.
.elaaaaaase.
..elaaaase..
..elaaaase..
...elaase...
....esse....
.....ee.....`)
Chest = pixel.MustSprite(`
............
..eeeeeeee..
.esslsslsse.
.esssssssse.
.eeeeyyeeee.
.essseyesse.
.essseeesse.
.esssssssse.
.esssssssse.
.eeeeeeeeee.
............
............`)
Crown = pixel.MustSprite(`
............
............
.e...ee...e.
.ee..ee..ee.
.eye.ee.eye.
.eyyeyyeyye.
.eyyyyyyyye.
.eylyryylye.
.eyyyyyyyye.
.essssssse.e
..eeeeeeee..
............`)
Trophy = pixel.MustSprite(`
............
.eeeeeeeeee.
eyelyyyyyeye
eyelyyyyyeee
.eelyyyyyee.
..elyyyyse..
...eyyyse...
....eyye....
.....ee.....
....eyyee...
..eesssssee.
..eeeeeeee..`)
Skull = pixel.MustSprite(`
............
...eeeeeee..
..ellllllse.
.elllllllse.
.ellkklkkse.
.ellkklkkse.
.elllllllse.
..elleelse..
...elllse...
...eleeee...
....eeee....
............`)
Scroll = pixel.MustSprite(`
............
.eeeeeeeeee.
elllllllllle
.eeeeeeeeeee
.elllllllle.
.elseeeslle.
.elllllllle.
.elseeeelle.
.elllllllle.
.eeeeeeeeeee
elllllllllle
.eeeeeeeeee.`)
Flame = pixel.MustSprite(`
.....e......
....ere.....
....erre....
...erryre...
..erryyyre..
..eryyyyre..
.erryylyyre.
.eryylllyre.
.eryylllyre.
..eryylyre..
...eeeeee...
............`)
Drop = pixel.MustSprite(`
.....ee.....
.....ee.....
....ecce....
....ecce....
...elcccee..
..elcccccse.
..elcccccse.
..eccccccse.
..ecccccsse.
...essssse..
....eeeee...
............`)
Leaf = pixel.MustSprite(`
............
.......eeee.
.....eegggge
....egglggge
...egglgggse
..egglgggse.
..eglgggse..
.eglgggse...
.eggggsee...
.eeeeee.....
.e..........
e...........`)
Flower = pixel.MustSprite(`
.....ee.....
....emme....
..eemmmmee..
.emmeeeemme.
emmmeyyemmme
emmmeyyemmme
.emmeeeemme.
..eemmmmee..
....emme....
....ege.....
....egge....
....eee.....`)
Sun = pixel.MustSprite(`
.....ee.....
.e...ee...e.
..e......e..
....eeee....
...eyyyye...
eeeyylyyyeee
eeeylyyyyeee
...eyyyye...
....eeee....
..e......e..
.e...ee...e.
.....ee.....`)
Moon = pixel.MustSprite(`
............
....eeee....
...eyyye....
..eyyee.....
.eyye.......
.eyye.......
.eyye.......
.eyyye......
..eyyyeeee..
...eyyyyye..
....eeeee...
............`)
Cloud = pixel.MustSprite(`
............
............
....eeee....
...elllle...
.eeellllee..
ellllllllle.
elllllllllse
ellllllllsse
.esssssssse.
..eeeeeeee..
............
............`)
Snowflake = pixel.MustSprite(`
.....ee.....
..e.ecce.e..
.eceecceece.
..ececcece..
.eeecccceee.
ecccclccccce
eccccclcccce
.eeecccceee.
..ececcece..
.eceecceece.
..e.ecce.e..
.....ee.....`)
Bolt = pixel.MustSprite(`
......eeee..
.....eyyye..
....eyyye...
...eyyye....
..eyyyyeeee.
..eeeyyyyye.
....eyyyye..
...eyyyee...
..eyyee.....
..eye.......
.eee........
............`)
Palette = pixel.MustSprite(`
............
...eeeeee...
..elllllle..
.elreleglle.
.ellllllclle
.elmelleelle
.ellllleeele
.ellyelle.e.
..elllle....
...eeee.....
............
............`)
)
+292
View File
@@ -0,0 +1,292 @@
package icon
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
var (
Home = pixel.MustSprite(`
............
.....##.....
....####....
...##..##...
..##....##..
.##......##.
..#......#..
..#.###..#..
..#.#.#..#..
..#.#.#..#..
..########..
............`)
User = pixel.MustSprite(`
............
....####....
...######...
...######...
...######...
....####....
............
..########..
.##########.
.##########.
.##########.
............`)
Users = pixel.MustSprite(`
............
.......###..
..###.#####.
.#####.###..
.#####......
..###.#####.
.....#######
.#####......
#######.....
#######.....
............
............`)
Bell = pixel.MustSprite(`
.....##.....
....####....
...#....#...
..#......#..
..#......#..
..#......#..
..#......#..
.#........#.
.##########.
............
....####....
.....##.....`)
Mail = pixel.MustSprite(`
............
............
.##########.
.##......##.
.#.#....#.#.
.#..#..#..#.
.#...##...#.
.#........#.
.#........#.
.##########.
............
............`)
MailOpen = pixel.MustSprite(`
............
.....##.....
...##..##...
.##......##.
.##......##.
.#.#....#.#.
.#..#..#..#.
.#...##...#.
.#........#.
.##########.
............
............`)
Chat = pixel.MustSprite(`
............
.##########.
.#........#.
.#.######.#.
.#........#.
.#.####...#.
.#........#.
.####.#####.
....###.....
....##......
....#.......
............`)
Folder = pixel.MustSprite(`
............
............
.####.......
.#..#######.
.##########.
.#........#.
.#........#.
.#........#.
.#........#.
.##########.
............
............`)
FolderOpen = pixel.MustSprite(`
............
............
.####.......
.#..#####...
.#......#...
.#.#########
.#.#.......#
.##.......#.
.##......#..
.#########..
............
............`)
File = pixel.MustSprite(`
............
..######....
..#....##...
..#....#.#..
..#....####.
..#.......#.
..#.......#.
..#.......#.
..#.......#.
..#.......#.
..#########.
............`)
FileText = pixel.MustSprite(`
............
..######....
..#....##...
..#....#.#..
..#....####.
..#.#####.#.
..#.......#.
..#.#####.#.
..#.......#.
..#.###...#.
..#########.
............`)
Image = pixel.MustSprite(`
............
.##########.
.#........#.
.#.##.....#.
.#.##.....#.
.#.....#..#.
.#....###.#.
.#.#.#####.#
.#######.#.#
.#........#.
.##########.
............`)
Music = pixel.MustSprite(`
............
....#######.
....#.....#.
....#######.
....#.....#.
....#.....#.
....#.....#.
..###...###.
.####..####.
.####..####.
..##....##..
............`)
Video = pixel.MustSprite(`
............
............
.#######....
.#.....#..#.
.#.....#.##.
.#.....####.
.#.....####.
.#.....#.##.
.#.....#..#.
.#######....
............
............`)
Code = pixel.MustSprite(`
............
............
...#....#...
..##....##..
.##..#...##.
##...#....##
##..#.....##
.##.#....##.
..##....##..
...#....#...
............
............`)
Terminal = pixel.MustSprite(`
............
.##########.
.#........#.
.#.#......#.
.#..#.....#.
.#...#....#.
.#..#.....#.
.#.#..###.#.
.#........#.
.##########.
............
............`)
Bug = pixel.MustSprite(`
............
..#......#..
...#.##.#...
....####....
.#.######.#.
..########..
.####..####.
..########..
.#.######.#.
...######...
..#..##..#..
............`)
Lock = pixel.MustSprite(`
............
....####....
...#....#...
...#....#...
...#....#...
..########..
..########..
..###..###..
..###..###..
..########..
..########..
............`)
Unlock = pixel.MustSprite(`
............
....####....
...#....#...
...#........
...#........
..########..
..########..
..###..###..
..###..###..
..########..
..########..
............`)
Key = pixel.MustSprite(`
............
..####......
.#....#.....
.#....#.....
.#....#.....
..####......
...##.......
...######...
...##.......
...####.....
...##.......
............`)
Eye = pixel.MustSprite(`
............
............
....####....
..##....##..
.#...##...#.
#...####...#
#...####...#
.#...##...#.
..##....##..
....####....
............
............`)
EyeOff = pixel.MustSprite(`
............
.#..........
..#.####....
..##....##..
.#..###...#.
#...####...#
#...####...#
.#...###..#.
..##....##..
....####.#..
..........#.
............`)
)
+202
View File
@@ -0,0 +1,202 @@
package icon
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
var (
Info = pixel.MustSprite(`
............
...######...
..#......#..
.#...##...#.
.#........#.
.#...##...#.
.#...##...#.
.#...##...#.
.#...##...#.
..#......#..
...######...
............`)
Warning = pixel.MustSprite(`
.....##.....
.....##.....
....#..#....
....####....
...#.##.#...
...#.##.#...
..#..##..#..
..#..##..#..
.#........#.
.#...##...#.
############
............`)
Error = pixel.MustSprite(`
............
...######...
..#......#..
.#.#....#.#.
.#..#..#..#.
.#...##...#.
.#...##...#.
.#..#..#..#.
.#.#....#.#.
..#......#..
...######...
............`)
Question = pixel.MustSprite(`
............
...######...
..##....##..
..##....##..
........##..
.......##...
.....##.....
.....##.....
............
.....##.....
.....##.....
............`)
Heart = pixel.MustSprite(`
............
............
..###..###..
.#####.####.
.##########.
.##########.
..########..
...######...
....####....
.....##.....
............
............`)
HeartEmpty = pixel.MustSprite(`
............
............
..###..###..
.#...#.#..#.
.#........#.
.#........#.
..#......#..
...#....#...
....#..#....
.....##.....
............
............`)
Star = pixel.MustSprite(`
............
.....##.....
.....##.....
....####....
############
.##########.
..########..
..########..
.####..####.
.###....###.
.#........#.
............`)
StarEmpty = pixel.MustSprite(`
............
.....##.....
.....##.....
....#..#....
#####..#####
.#........#.
..#......#..
..#......#..
.#...##...#.
.#.##..##.#.
.##......##.
............`)
Sparkle = pixel.MustSprite(`
............
.....#......
.....#......
....###.....
.##########.
....###.....
.....#...#..
.....#..###.
.........#..
.#..........
###.........
.#..........`)
Volume = pixel.MustSprite(`
............
.....#......
....##...#..
.####..#..#.
.###....#.#.
.###..#.#.#.
.###..#.#.#.
.###....#.#.
.####..#..#.
....##...#..
.....#......
............`)
Mute = pixel.MustSprite(`
............
.....#......
....##......
.####.......
.###...#...#
.###....#.#.
.###.....#..
.###....#.#.
.####..#...#
....##......
.....#......
............`)
Play = pixel.MustSprite(`
............
..#.........
..###.......
..#####.....
..#######...
..#########.
..#########.
..#######...
..#####.....
..###.......
..#.........
............`)
Pause = pixel.MustSprite(`
............
..###..###..
..###..###..
..###..###..
..###..###..
..###..###..
..###..###..
..###..###..
..###..###..
..###..###..
..###..###..
............`)
Stop = pixel.MustSprite(`
............
............
..########..
..########..
..########..
..########..
..########..
..########..
..########..
..########..
............
............`)
Next = pixel.MustSprite(`
............
............
.#...#....##
.##..##...##
.###.###..##
.########.##
.########.##
.###.###..##
.##..##...##
.#...#....##
............
............`)
Prev = Next.Mirror()
)
+253
View File
@@ -0,0 +1,253 @@
package icon
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
var (
Calendar = pixel.MustSprite(`
............
..#.....#...
.##########.
.##########.
.#........#.
.#.#.#.#..#.
.#........#.
.#.#.#.#..#.
.#........#.
.##########.
............
............`)
Clock = pixel.MustSprite(`
............
...######...
..#......#..
.#...#....#.
.#...#....#.
.#...#....#.
.#...####.#.
.#........#.
.#........#.
..#......#..
...######...
............`)
Hourglass = pixel.MustSprite(`
............
.##########.
..#......#..
..#.####.#..
...#.##.#...
....#..#....
....#..#....
...#....#...
..#..##..#..
..#.####.#..
.##########.
............`)
Camera = pixel.MustSprite(`
............
............
....###.....
.##########.
.#........#.
.#...##...#.
.#..#..#..#.
.#..#..#..#.
.#...##...#.
.##########.
............
............`)
Mic = pixel.MustSprite(`
............
....####....
....####....
....####....
....####....
.#..####..#.
.#..####..#.
..#......#..
...######...
.....##.....
...######...
............`)
Phone = pixel.MustSprite(`
............
..##........
.####.......
.###........
.##.........
.##.........
.##.........
..##........
...##..###..
....######..
......###...
............`)
Map = pixel.MustSprite(`
............
.##..##..##.
.#.##..##.#.
.#..#..#..#.
.#..#..#..#.
.#..#..#..#.
.#..#..#..#.
.#..#..#..#.
.#.##..##.#.
.##..##..##.
............
............`)
Flag = pixel.MustSprite(`
............
.#..........
.#######....
.########...
.#########..
.########...
.#######....
.#..........
.#..........
.#..........
.#..........
............`)
Pin = pixel.MustSprite(`
............
....####....
...######...
..###..###..
..###..###..
..########..
...######...
...######...
....####....
....####....
.....##.....
............`)
Globe = pixel.MustSprite(`
............
...######...
..#..#.#.#..
.#..#...#.#.
.##########.
.#..#...#.#.
.#..#...#.#.
.##########.
.#..#...#.#.
..#..#.#.#..
...######...
............`)
Book = pixel.MustSprite(`
............
.####..####.
.#...##...#.
.#...##...#.
.#...##...#.
.#...##...#.
.#...##...#.
.#...##...#.
.####..####.
.....##.....
............
............`)
Cart = pixel.MustSprite(`
............
##..........
.#..........
.##########.
..#.......#.
..#......#..
..########..
..#.........
..#########.
...##...##..
...##...##..
............`)
Tag = pixel.MustSprite(`
............
.#####......
.#...##.....
.#.#..##....
.#.....##...
.##.....##..
..##.....##.
...##...##..
....##.##...
.....###....
......#.....
............`)
Gift = pixel.MustSprite(`
............
...##..##...
..#..##..#..
.##########.
.#....#...#.
.##########.
..#...#..#..
..#...#..#..
..#...#..#..
..#...#..#..
..########..
............`)
Robot = pixel.MustSprite(`
.....#......
.....#......
..########..
.#........#.
.#.##..##.#.
.#.##..##.#.
.#........#.
.#..####..#.
..########..
...#....#...
..###..###..
............`)
Branch = pixel.MustSprite(`
............
.###....###.
.#.#....#.#.
.###....###.
..#......#..
..#.....#...
..#...##....
..#.##......
..##........
.###........
.#.#........
.###........`)
Wifi = pixel.MustSprite(`
............
............
..########..
.#........#.
#..######..#
..#......#..
.#..####..#.
...#....#...
.....##.....
.....##.....
............
............`)
Battery = pixel.MustSprite(`
............
............
............
.#########..
.#.......##.
.#.###...##.
.#.###...##.
.#.......##.
.#########..
............
............
............`)
Gamepad = pixel.MustSprite(`
............
............
..########..
.#........#.
#..#....#..#
#.###..#.#.#
#..#....#..#
#....##....#
#...#..#...#
.###....###.
............
............`)
)