diff options
author | Aiden Gall <aiden@aidengall.xyz> | 2024-01-16 19:24:18 +0000 |
---|---|---|
committer | Aiden Gall <aiden@aidengall.xyz> | 2024-01-16 19:37:42 +0000 |
commit | 5ff9d6184771970c14e682ecf55cbd9d27b2fada (patch) | |
tree | d55405ac036c80a6cef1b34164fccbd5eeff67f6 /src/farbfeld.c |
initial commit
Diffstat (limited to 'src/farbfeld.c')
-rw-r--r-- | src/farbfeld.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/farbfeld.c b/src/farbfeld.c new file mode 100644 index 0000000..71903b1 --- /dev/null +++ b/src/farbfeld.c @@ -0,0 +1,40 @@ +/* Copyright (C) 2024 Aiden Gall + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include "util.h" + +#include <arpa/inet.h> +#include <stdint.h> +#include <stdio.h> + +/* write farbfeld image to fd + * - canvas will be mutated unless host architecture is big endian */ +void +farbfeld_write(FILE *const fd, uint16_t *const canvas, const size_t canvas_size, + uint32_t width, uint32_t height) +{ + size_t i; + + width = htonl(width); + height = htonl(height); + + for (i = 0; i < canvas_size; i++) + canvas[i] = htons(canvas[i]); + + efwrite("farbfeld", sizeof(char), 8, fd); + efwrite(&width, sizeof(uint32_t), 1, fd); + efwrite(&height, sizeof(uint32_t), 1, fd); + efwrite(canvas, sizeof(uint16_t), canvas_size, fd); +} |