+write to image support

Writes output to "data.png"
This commit is contained in:
2023-08-26 00:50:08 +01:00
parent 0a5d5fc87c
commit 1bc283b195

35
main.c
View File

@@ -13,6 +13,8 @@
#include <raylib.h>
#include <raymath.h>
#include <stb/stb_image_write.h>
#include "./lib.h"
void step(state_t *state)
@@ -101,11 +103,11 @@ int main(void)
if (sandpile == 0)
c = BLACK;
else if (sandpile == 1)
c = GREEN;
c = MAGENTA;
else if (sandpile == 2)
c = PURPLE;
c = RED;
else if (sandpile == 3)
c = YELLOW;
c = BLUE;
DrawRectangle(i * state.multiplier, j * state.multiplier,
state.multiplier, state.multiplier, c);
@@ -121,6 +123,33 @@ int main(void)
}
CloseWindow();
unsigned char *image_data =
calloc(3 * state.dwidth * state.dwidth, sizeof(*image_data));
size_t image_ptr = 0;
for (size_t i = 0; i < state.dwidth; ++i)
for (size_t j = 0; j < state.dwidth; ++j, image_ptr += 3)
{
Color c = {0};
uint64_t sandpile = state.data[(i * state.dwidth) + j];
if (sandpile == 0)
c = BLACK;
else if (sandpile == 1)
c = MAGENTA;
else if (sandpile == 2)
c = RED;
else if (sandpile == 3)
c = BLUE;
image_data[image_ptr] = c.r;
image_data[image_ptr + 1] = c.g;
image_data[image_ptr + 2] = c.b;
}
stbi_write_png("data.png", state.dwidth, state.dwidth, 3, image_data,
3 * state.dwidth);
free(image_data);
free(state.data);
return 0;
}