summaryrefslogtreecommitdiffstats
path: root/src/logo/image/image.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/logo/image/image.h')
-rw-r--r--src/logo/image/image.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/logo/image/image.h b/src/logo/image/image.h
new file mode 100644
index 0000000..da3b2d2
--- /dev/null
+++ b/src/logo/image/image.h
@@ -0,0 +1,43 @@
+#pragma once
+
+#include "../logo.h"
+
+#if defined(FF_HAVE_IMAGEMAGICK7) || defined(FF_HAVE_IMAGEMAGICK6)
+
+typedef enum FF_A_PACKED FFLogoImageResult {
+ FF_LOGO_IMAGE_RESULT_SUCCESS, // Logo printed
+ FF_LOGO_IMAGE_RESULT_INIT_ERROR, // Failed to load library, try again with next IM version
+ FF_LOGO_IMAGE_RESULT_RUN_ERROR // Failed to load / convert image, cancel whole sixel code
+} FFLogoImageResult;
+
+typedef struct FFLogoRequestData {
+ FFLogoType type;
+ FFstrbuf cacheDir;
+
+ double characterPixelWidth;
+ double characterPixelHeight;
+
+ uint32_t logoPixelWidth;
+ uint32_t logoPixelHeight;
+
+ uint32_t logoCharacterHeight;
+ uint32_t logoCharacterWidth;
+} FFLogoRequestData;
+
+typedef struct FFIMData {
+ void* library;
+ void* (*resizeFunc)(const void* image, size_t width, size_t height, void* exceptionInfo);
+} FFIMData;
+
+FFLogoImageResult ffLogoPrintImageImpl(FFLogoRequestData* requestData, const FFIMData* imData);
+
+#endif
+
+#ifdef FF_HAVE_IMAGEMAGICK7
+FFLogoImageResult ffLogoPrintImageIM7(FFLogoRequestData* requestData);
+#endif
+
+#ifdef FF_HAVE_IMAGEMAGICK6
+ #include <math.h>
+FFLogoImageResult ffLogoPrintImageIM6(FFLogoRequestData* requestData);
+#endif