X-Git-Url: https://harrygodden.com/git/?p=fishladder.git;a=blobdiff_plain;f=qoiconv.c;fp=qoiconv.c;h=0000000000000000000000000000000000000000;hp=366e92c0e5fc797b9a36e264e34dd673ab359eb4;hb=30490c4c08d5c0f811017a901aa9e25a95be7c40;hpb=3363633178b1eea582304742ad1202487af0feb1 diff --git a/qoiconv.c b/qoiconv.c deleted file mode 100644 index 366e92c..0000000 --- a/qoiconv.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - -Command line tool to convert between png <> qoi format - -Requires "stb_image.h" and "stb_image_write.h" -Compile with: - gcc qoiconv.c -std=c99 -O3 -o qoiconv - -Dominic Szablewski - https://phoboslab.org - - --- LICENSE: The MIT License(MIT) - -Copyright(c) 2021 Dominic Szablewski - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files(the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions : -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -*/ - - -#define STB_IMAGE_IMPLEMENTATION -#define STBI_ONLY_PNG -#define STBI_NO_LINEAR -#include "stb/stb_image.h" - -//#define STB_IMAGE_WRITE_IMPLEMENTATION -//#include "stb_image_write.h" - -#define QOI_IMPLEMENTATION -#include "phoboslab/qoi.h" - - -#define STR_ENDS_WITH(S, E) (strcmp(S + strlen(S) - (sizeof(E)-1), E) == 0) - -int main(int argc, char **argv) { - if (argc < 3) { - printf("Usage: qoiconv \n"); - printf("Examples:\n"); - printf(" qoiconv input.png output.qoi\n"); - printf(" qoiconv input.qoi output.png\n"); - exit(1); - } - - stbi_set_flip_vertically_on_load(1); - - void *pixels = NULL; - int w, h, channels; - if (STR_ENDS_WITH(argv[1], ".png")) { - pixels = (void *)stbi_load(argv[1], &w, &h, &channels, 4); - } - else if (STR_ENDS_WITH(argv[1], ".qoi")) { - qoi_desc desc; - pixels = qoi_read(argv[1], &desc, 0); - channels = desc.channels; - w = desc.width; - h = desc.height; - } - - if (pixels == NULL) { - printf("Couldn't load/decode %s\n", argv[1]); - exit(1); - } - - int encoded = 0; - if (STR_ENDS_WITH(argv[2], ".png")) { - //encoded = stbi_write_png(argv[2], w, h, channels, pixels, 0); - } - else if (STR_ENDS_WITH(argv[2], ".qoi")) { - encoded = qoi_write(argv[2], pixels, &(qoi_desc){ - .width = w, - .height = h, - .channels = 4, - .colorspace = QOI_SRGB - }); - } - - if (!encoded) { - printf("Couldn't write/encode %s\n", argv[2]); - exit(1); - } - - free(pixels); - return 0; -}