~rabbits/nasu

e1e0f2a312bead8a40938e322f61d21e8e0ba1dd — Devine Lu Linvega 2 years ago 3e0ac65
Remove guides before rendering
3 files changed, 29 insertions(+), 22 deletions(-)

M README.md
M chr6.c
A export.chr
M README.md => README.md +12 -6
@@ 10,21 10,27 @@ To build chr6, you must have [SDL2](https://wiki.libsdl.org/).
sudo apt-get install libsdl2-dev
```

## I/O

To resume working on a tileset:

```
./chr6 export.chr
```

## Controls

### General

- `E` Export
- `E` Export(export.chr)
- `R` Render(render.bmp)
- `H` Toggle Guides

### Select

- `1` Color1
- `2` Color2
- `3` Color3
- `4` Color4
- `TAB` Cycle between colors

### Paint

- `mouse1` Paint
- `mouse2` Erase
- `mouse1+mouse2` Erase

M chr6.c => chr6.c +17 -16
@@ 252,7 252,7 @@ create(void)
void
save(Brush* b)
{
	FILE* f = fopen("output.chr", "wb");
	FILE* f = fopen("export.chr", "wb");
	if(!fwrite(buffer, sizeof(buffer), 1, f))
		error("Save", "Invalid output file");
	fclose(f);


@@ 267,7 267,7 @@ load(char* path)
	if(f == NULL)
		error("Load", "Invalid input file");
	if(!fread(buffer, sizeof(buffer), 1, f))
		error("Load", "Invalid file size");
		error("Load", "Invalid input size");
	fclose(f);
	redraw(pixels);
}


@@ 276,6 276,8 @@ void
render()
{
	SDL_Surface* surface = SDL_GetWindowSurface(gWindow);
	GUIDES = 0;
	redraw(pixels);
	SDL_RenderReadPixels(gRenderer, NULL, SDL_PIXELFORMAT_ARGB8888, surface->pixels, surface->pitch);
	SDL_SaveBMP(surface, "render.bmp");
	SDL_FreeSurface(surface);


@@ 300,32 302,32 @@ domouse(SDL_Event* event, Brush* b)
{
	switch(event->type) {
	case SDL_MOUSEBUTTONUP:
		if(event->button.button == SDL_BUTTON_LEFT)
		if(event->button.button == SDL_BUTTON_LEFT) {
			b->down = 0;
			setpt(&b->prev, 0, 0);
		}
		if(event->button.button == SDL_BUTTON_RIGHT)
			b->erase = 0;
		setpt(&b->prev, 0, 0);
		break;
	case SDL_MOUSEBUTTONDOWN:
		if(event->button.button == SDL_BUTTON_LEFT)
		if(event->button.button == SDL_BUTTON_LEFT) {
			b->down = 1;
			setpt(&b->prev,
			      (event->motion.x - PAD) / ZOOM,
			      (event->motion.y - PAD) / ZOOM);
		}
		if(event->button.button == SDL_BUTTON_RIGHT)
			b->erase = 1;
		setpt(&b->prev,
		      (event->motion.x - PAD) / ZOOM,
		      (event->motion.y - PAD) / ZOOM);
	case SDL_MOUSEMOTION:
		if(b->down) {
			setpt(&b->pos,
			      (event->motion.x - PAD) / ZOOM,
			      (event->motion.y - PAD) / ZOOM);
			if(dispt(&b->pos, &b->prev) > ZOOM * 2) {
				if(b->mode == 0)
					line(&b->prev, &b->pos, b->erase ? 0 : b->color);
				else
					fill(b, b->mode, b->size, b->pos, b->erase ? 0 : b->color);
				setpt(&b->prev, b->pos.x, b->pos.y);
			}
			if(b->mode == 0)
				line(&b->prev, &b->pos, b->erase ? 0 : b->color);
			else
				fill(b, b->mode, b->size, b->pos, b->erase ? 0 : b->color);
			setpt(&b->prev, b->pos.x, b->pos.y);
		}
		break;
	}


@@ 411,7 413,6 @@ int
main(int argc, char** argv)
{
	int ticknext = 0;
	Point a, b;
	Brush brush;
	brush.down = 0;
	brush.color = 1;

A export.chr => export.chr +0 -0