Browse Source

Implemented render

main
Devine Lu Linvega 6 years ago
parent
commit
cc729c884c
  1. 32
      chr6.c

32
chr6.c

@ -1,6 +1,8 @@
#include <SDL2/SDL.h>
#include <stdio.h>
#define HOR 24
#define VER 16
#define PAD 32
#define ZOOM 4
#define color1 0x000000
@ -22,8 +24,8 @@ typedef struct Brush {
unsigned char buffer[4096];
int colors[] = {color1, color2, color3, color4, color0};
int WIDTH = 128 * ZOOM + PAD * 2;
int HEIGHT = 128 * ZOOM + PAD * 2;
int WIDTH = 8 * HOR * ZOOM + PAD * 2;
int HEIGHT = 8 * VER * ZOOM + PAD * 2;
int FPS = 30;
int GUIDES = 1;
SDL_Window* gWindow = NULL;
@ -54,10 +56,10 @@ void
draw(uint32_t* dst, int id, int color)
{
int ti = id / 64;
int px = (ti / 256) * 128;
int tx = (ti % 16) * 8;
int ty = ((ti / 16) * 8) % 128;
int odd = (ti + (ti / 16 + 2)) % 2 == 0;
int px = (ti / 256) * (8 * HOR);
int tx = (ti % HOR) * 8;
int ty = ((ti / HOR) * 8) % 128;
int odd = (ti + (ti / HOR + 2)) % 2 == 0;
Point p;
p.x = px + tx + (id % 8);
p.y = ty + ((id % 64) / 8);
@ -86,8 +88,8 @@ redraw(void)
void
write(int tx, int ty, int px, int py, int color)
{
int id = tx + ty * 16;
int row = py + id * 16;
int id = tx + ty * HOR;
int row = py + id * VER;
if(id > 255)
return;
if(color == 0) {
@ -110,7 +112,7 @@ edit(Brush* b)
{
Point p1;
setpt(&p1, b->pos.x - PAD, b->pos.y - PAD);
if(p1.x < 0 || p1.y < 0 || p1.x > 128 * ZOOM || p1.y > 128 * ZOOM)
if(p1.x < 0 || p1.y < 0 || p1.x > (8 * HOR) * ZOOM || p1.y > (8 * VER) * ZOOM)
return;
write(
p1.x / (8 * ZOOM),
@ -177,6 +179,15 @@ load(char* path)
redraw();
}
void
render()
{
SDL_Surface* surface = SDL_GetWindowSurface(gWindow);
SDL_RenderReadPixels(gRenderer, NULL, SDL_PIXELFORMAT_ARGB8888, surface->pixels, surface->pitch);
SDL_SaveBMP(surface, "render.bmp");
SDL_FreeSurface(surface);
}
void
quit(void)
{
@ -225,6 +236,9 @@ dokey(SDL_Event* event, Brush* b)
case SDLK_e:
save();
break;
case SDLK_r:
render();
break;
case SDLK_h:
GUIDES = !GUIDES;
redraw();

Loading…
Cancel
Save