From 2b17ed838afb1ac1d63ca6e4d60945844263ca40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Eric=20Janouch?= Date: Sun, 21 Nov 2021 16:03:54 +0100 Subject: Add ability to use different thumbnail sizes --- fastiv-io.h | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'fastiv-io.h') diff --git a/fastiv-io.h b/fastiv-io.h index 5a90e91..101db6c 100644 --- a/fastiv-io.h +++ b/fastiv-io.h @@ -19,12 +19,39 @@ #include #include +#include extern const char *fastiv_io_supported_media_types[]; char **fastiv_io_all_supported_media_types(void); +// And this is how you avoid glib-mkenums. +typedef enum _FastivIoThumbnailSize { +#define FASTIV_IO_THUMBNAIL_SIZES(XX) \ + XX(SMALL, 128, "normal") \ + XX(NORMAL, 256, "large") \ + XX(LARGE, 512, "x-large") \ + XX(HUGE, 1024, "xx-large") +#define XX(name, value, dir) FASTIV_IO_THUMBNAIL_SIZE_ ## name = value, + FASTIV_IO_THUMBNAIL_SIZES(XX) +#undef XX + FASTIV_IO_THUMBNAIL_SIZE_MIN = FASTIV_IO_THUMBNAIL_SIZE_SMALL, + FASTIV_IO_THUMBNAIL_SIZE_MAX = FASTIV_IO_THUMBNAIL_SIZE_HUGE +} FastivIoThumbnailSize; + +GType fastiv_io_thumbnail_size_get_type(void) G_GNUC_CONST; +#define FASTIV_TYPE_IO_THUMBNAIL_SIZE (fastiv_io_thumbnail_size_get_type()) + +typedef struct _FastivIoThumbnailSizeInfo { + FastivIoThumbnailSize size; ///< Nominal size in pixels + const char *directory_name; ///< thumbnail-spec directory name +} FastivIoThumbnailSizeInfo; + +// The array is null-terminated. +extern FastivIoThumbnailSizeInfo fastiv_io_thumbnail_sizes[]; + cairo_surface_t *fastiv_io_open(const gchar *path, GError **error); cairo_surface_t *fastiv_io_open_from_data( const char *data, size_t len, const gchar *path, GError **error); -cairo_surface_t *fastiv_io_lookup_thumbnail(const gchar *target); +cairo_surface_t *fastiv_io_lookup_thumbnail( + const gchar *target, FastivIoThumbnailSize size); -- cgit v1.2.3