|
|
|
|
@ -20,6 +20,7 @@ WITH REGARD TO THIS SOFTWARE.
|
|
|
|
|
typedef unsigned char Uint8; |
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
int unsaved; |
|
|
|
|
char name[256]; |
|
|
|
|
Uint8 data[SZ]; |
|
|
|
|
} Document; |
|
|
|
|
@ -55,7 +56,8 @@ Uint8 icons[][8] = {
|
|
|
|
|
{0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00}, /* view:grid */ |
|
|
|
|
{0xee, 0x92, 0x82, 0x54, 0x82, 0x92, 0xee, 0x00}, /* view:bigpixels */ |
|
|
|
|
{0x00, 0x00, 0x00, 0x82, 0x44, 0x38, 0x00, 0x00}, /* eye open */ |
|
|
|
|
{0x00, 0x38, 0x44, 0x92, 0x28, 0x10, 0x00, 0x00} /* eye closed */ |
|
|
|
|
{0x00, 0x38, 0x44, 0x92, 0x28, 0x10, 0x00, 0x00}, /* eye closed */ |
|
|
|
|
{0x10, 0x54, 0x28, 0xc6, 0x28, 0x54, 0x10, 0x00} /* unsaved */ |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
SDL_Window *gWindow; |
|
|
|
|
@ -138,6 +140,7 @@ putchr(int x, int y, int color)
|
|
|
|
|
doc.data[row + 8] &= ~(1UL << (7 - col)); |
|
|
|
|
else |
|
|
|
|
doc.data[row + 8] |= 1UL << (7 - col); |
|
|
|
|
doc.unsaved = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int |
|
|
|
|
@ -278,6 +281,7 @@ drawui(Uint32 *dst)
|
|
|
|
|
drawicon(dst, 8 * 8, bottom, icons[6], brush.mode == 4 ? 1 : 2, 0); |
|
|
|
|
drawicon(dst, 10 * 8, bottom, icons[BIGPIXEL ? 7 : 8], BIGPIXEL ? 1 : 2, 0); |
|
|
|
|
drawicon(dst, 11 * 8, bottom, icons[GUIDES ? 10 : 9], GUIDES ? 1 : 2, 0); |
|
|
|
|
drawicon(dst, (HOR - 1) * 8, bottom, icons[11], doc.unsaved ? 2 : 3, 0); /* save state */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void |
|
|
|
|
@ -321,6 +325,7 @@ makedoc(Document *d, char *name)
|
|
|
|
|
int i; |
|
|
|
|
for(i = 0; i < SZ; ++i) |
|
|
|
|
d->data[i] = 0x00; |
|
|
|
|
d->unsaved = 0; |
|
|
|
|
scpy(name, d->name, 256); |
|
|
|
|
printf("Made: %s\n", d->name); |
|
|
|
|
redraw(pixels); |
|
|
|
|
@ -332,9 +337,11 @@ savedoc(Document *d, char *name)
|
|
|
|
|
FILE *f = fopen(name, "w"); |
|
|
|
|
if(!fwrite(d->data, sizeof(d->data), 1, f)) |
|
|
|
|
return error("Save", "Failure"); |
|
|
|
|
d->unsaved = 0; |
|
|
|
|
scpy(name, d->name, 256); |
|
|
|
|
fclose(f); |
|
|
|
|
printf("Saved: %s\n", d->name); |
|
|
|
|
redraw(pixels); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -346,6 +353,7 @@ opendoc(Document *d, char *name)
|
|
|
|
|
return error("Load", "Invalid input file"); |
|
|
|
|
if(!fread(doc.data, sizeof(doc.data), 1, f)) |
|
|
|
|
return error("Load", "Invalid input size"); |
|
|
|
|
d->unsaved = 0; |
|
|
|
|
scpy(name, doc.name, 256); |
|
|
|
|
fclose(f); |
|
|
|
|
printf("Load: %s\n", doc.name); |
|
|
|
|
@ -383,6 +391,7 @@ selectoption(int option)
|
|
|
|
|
case 8: setmode(&brush.mode, 4); break; |
|
|
|
|
case 10: setmode(&BIGPIXEL, !BIGPIXEL); break; |
|
|
|
|
case 11: setmode(&GUIDES, !GUIDES); break; |
|
|
|
|
case HOR - 1: savedoc(&doc, doc.name); break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|