diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/file.c | 15 | ||||
-rw-r--r-- | src/main.c | 13 |
2 files changed, 27 insertions, 1 deletions
diff --git a/src/lib/file.c b/src/lib/file.c new file mode 100644 index 0000000..b6ec1d0 --- /dev/null +++ b/src/lib/file.c @@ -0,0 +1,15 @@ +#include <lib/file.h> +#include <stdio.h> + +// Write array to a file +bool_t write_array(char* output_file_name, void* array, size_t size) +{ + FILE *file = fopen(output_file_name, "wb"); + if (file == NULL) { + fprintf(stderr, "Error opening file %s\n", output_file_name); + return FALSE; + } + fwrite(array, size, 1, file); + fclose(file); + return TRUE; +} @@ -6,6 +6,7 @@ #include <lib/lib.h> #include <lib/bool.h> #include <lib/dir.h> +#include <lib/file.h> #include <lib/time.h> #include <lib/color.h> #include <lib/algo/flood_fill.h> @@ -80,7 +81,9 @@ int main(int argc, char** argv) // This assumes 4096 (2^12) > labels for (size_t y = 0; y < height; y++) { for (size_t x = 0; x < width; x++) { - masks[x + y*width] |= 0xFF000000; + /// RGBA channels: Move labels to RGB + masks[x + y*width] <<= 4; + masks[x + y*width] |= 0x000F; } } //----------------------------------------------- @@ -139,6 +142,14 @@ int main(int argc, char** argv) } if (masks != NULL) { + for (size_t y = 0; y < height; y++) { + for (size_t x = 0; x < width; x++) { + /// Restore labels from RGBA + masks[x + y*width] &= 0xFFF0; + masks[x + y*width] >>= 4; + } + } + write_array("../out.bin", masks, width*height*sizeof(uint16_t)); free(masks); } CloseWindow(); |