Unified · Split
| @@ -0,0 +1 @@ | ||
| 1 | +Public domain. | |
| @@ -0,0 +1,9 @@ | ||
| 1 | +# tocursor | |
| 2 | + | |
| 3 | +Converts a Plan 9 image to `Cursor` C structure. | |
| 4 | + | |
| 5 | +``` | |
| 6 | +png -9t <cursor.png | tocursor -5 -4 >/dev/snarf | |
| 7 | +``` | |
| 8 | + | |
| 9 | +Then just paste it into the source code. Don't forget to rename lol. | |
| @@ -0,0 +1,10 @@ | ||
| 1 | +</$objtype/mkfile | |
| 2 | + | |
| 3 | +TARG=tocursor | |
| 4 | +BIN=/$objtype/bin | |
| 5 | +OFILES=\ | |
| 6 | + tocursor.$O | |
| 7 | + | |
| 8 | +default:V: all | |
| 9 | + | |
| 10 | +</sys/src/cmd/mkone | |
| @@ -0,0 +1,44 @@ | ||
| 1 | +#include <u.h> | |
| 2 | +#include <libc.h> | |
| 3 | + | |
| 4 | +void | |
| 5 | +main(int argc, char **argv) | |
| 6 | +{ | |
| 7 | + u32int b[1084/4]; | |
| 8 | + uchar clr[2*16], set[2*16]; | |
| 9 | + int i; | |
| 10 | + | |
| 11 | + if (argc < 3) { | |
| 12 | + fprint(2, "usage: png -9t <cursor.png | %s OFFSETX OFFSETY >/dev/snarf\n", argv[0]); | |
| 13 | + exits("usage"); | |
| 14 | + } | |
| 15 | + | |
| 16 | + if (readn(0, b, sizeof(b)) != sizeof(b)) | |
| 17 | + sysfatal("%r"); | |
| 18 | + | |
| 19 | + memset(clr, 0, sizeof(clr)); | |
| 20 | + memset(set, 0, sizeof(set)); | |
| 21 | + print("Cursor lol = {\n"); | |
| 22 | + print("\t{%s, %s},\n", argv[1], argv[2]); | |
| 23 | + for (i = 0; i < nelem(b); i++) { | |
| 24 | + if (b[15+i] == 0x000000ff) | |
| 25 | + set[i/8] |= 1<<(7-i&7); | |
| 26 | + else if (b[15+i] == 0xffffffff) | |
| 27 | + clr[i/8] |= 1<<(7-i&7); | |
| 28 | + } | |
| 29 | + print("\t{"); | |
| 30 | + for (i = 0; i < sizeof(clr); i++) { | |
| 31 | + if (i > 0 && !(i % 8)) | |
| 32 | + print("\n\t "); | |
| 33 | + print(" 0x%02x,", clr[i]); | |
| 34 | + } | |
| 35 | + print("\n\t},\n\t{"); | |
| 36 | + for (i = 0; i < sizeof(set); i++) { | |
| 37 | + if (i > 0 && !(i % 8)) | |
| 38 | + print("\n\t "); | |
| 39 | + print(" 0x%02x,", set[i]); | |
| 40 | + } | |
| 41 | + print("\n\t},\n};\n"); | |
| 42 | + | |
| 43 | + exits(nil); | |
| 44 | +} | |