Browse Source

Remove guides before rendering

main
Devine Lu Linvega 6 years ago
parent
commit
e1e0f2a312
  1. 18
      README.md
  2. 33
      chr6.c
  3. BIN
      export.chr

18
README.md

@ -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

33
chr6.c

@ -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;

BIN
export.chr

Binary file not shown.
Loading…
Cancel
Save