From cc729c884cd9545f1247e73872ad61b5a0373264 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Thu, 24 Sep 2020 16:50:34 -0700 Subject: [PATCH] Implemented render --- chr6.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/chr6.c b/chr6.c index 5bb460e..6867f77 100644 --- a/chr6.c +++ b/chr6.c @@ -1,6 +1,8 @@ #include #include +#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();