~rabbits/nasu

aa2fce317bbefaef7bbcb81df96425029e21a41f — neauoire 2 years ago 0e5d287
Added save button
1 files changed, 10 insertions(+), 1 deletions(-)

M nasu.c
M nasu.c => nasu.c +10 -1
@@ 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;
	}
}