aboutsummaryrefslogtreecommitdiff
path: root/fastiv-io.h
diff options
context:
space:
mode:
Diffstat (limited to 'fastiv-io.h')
-rw-r--r--fastiv-io.h122
1 files changed, 0 insertions, 122 deletions
diff --git a/fastiv-io.h b/fastiv-io.h
deleted file mode 100644
index 01150a6..0000000
--- a/fastiv-io.h
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// fastiv-io.h: image operations
-//
-// Copyright (c) 2021, Přemysl Eric Janouch <p@janouch.name>
-//
-// Permission to use, copy, modify, and/or distribute this software for any
-// purpose with or without fee is hereby granted.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
-// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
-// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-//
-
-#pragma once
-
-#include <cairo.h>
-#include <glib.h>
-#include <gio/gio.h>
-
-extern const char *fastiv_io_supported_media_types[];
-
-char **fastiv_io_all_supported_media_types(void);
-
-// Userdata are typically attached to all Cairo surfaces in an animation.
-
-/// GBytes with plain Exif/TIFF data.
-extern cairo_user_data_key_t fastiv_io_key_exif;
-/// FastivIoOrientation, as a uintptr_t.
-extern cairo_user_data_key_t fastiv_io_key_orientation;
-/// GBytes with plain ICC profile data.
-extern cairo_user_data_key_t fastiv_io_key_icc;
-/// GBytes with plain XMP data.
-extern cairo_user_data_key_t fastiv_io_key_xmp;
-
-/// The next frame in a sequence, as a surface, in a chain, pre-composited.
-/// There is no wrap-around.
-extern cairo_user_data_key_t fastiv_io_key_frame_next;
-/// The previous frame in a sequence, as a surface, in a chain, pre-composited.
-/// This is a weak pointer that wraps around, and needn't be present
-/// for static images.
-extern cairo_user_data_key_t fastiv_io_key_frame_previous;
-/// Frame duration in milliseconds as an intptr_t.
-extern cairo_user_data_key_t fastiv_io_key_frame_duration;
-/// How many times to repeat the animation, or zero for +inf, as a uintptr_t.
-extern cairo_user_data_key_t fastiv_io_key_loops;
-
-/// The first frame of the next page, as a surface, in a chain.
-/// There is no wrap-around.
-extern cairo_user_data_key_t fastiv_io_key_page_next;
-/// The first frame of the previous page, as a surface, in a chain.
-/// There is no wrap-around. This is a weak pointer.
-extern cairo_user_data_key_t fastiv_io_key_page_previous;
-
-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);
-
-int fastiv_io_filecmp(GFile *f1, GFile *f2);
-
-// --- Export ------------------------------------------------------------------
-
-/// Requires libwebp.
-/// If no exact frame is specified, this potentially creates an animation.
-gboolean fastiv_io_save(cairo_surface_t *page, cairo_surface_t *frame,
- const gchar *path, GError **error);
-
-// --- Metadata ----------------------------------------------------------------
-
-// https://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf Table 6
-typedef enum _FastivIoOrientation {
- FastivIoOrientationUnknown = 0,
- FastivIoOrientation0 = 1,
- FastivIoOrientationMirror0 = 2,
- FastivIoOrientation180 = 3,
- FastivIoOrientationMirror180 = 4,
- FastivIoOrientationMirror270 = 5,
- FastivIoOrientation90 = 6,
- FastivIoOrientationMirror90 = 7,
- FastivIoOrientation270 = 8
-} FastivIoOrientation;
-
-FastivIoOrientation fastiv_io_exif_orientation(const guint8 *exif, gsize len);
-
-/// Save metadata attached by this module in Exiv2 format.
-gboolean fastiv_io_save_metadata(
- cairo_surface_t *page, const gchar *path, GError **error);
-
-// --- Thumbnails --------------------------------------------------------------
-
-// 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,
- FASTIV_IO_THUMBNAIL_SIZES(XX)
-#undef XX
- FASTIV_IO_THUMBNAIL_SIZE_COUNT,
-
- FASTIV_IO_THUMBNAIL_SIZE_MIN = 0,
- FASTIV_IO_THUMBNAIL_SIZE_MAX = FASTIV_IO_THUMBNAIL_SIZE_COUNT - 1
-} 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 {
- int size; ///< Nominal size in pixels
- const char *thumbnail_spec_name; ///< thumbnail-spec directory name
-} FastivIoThumbnailSizeInfo;
-
-extern FastivIoThumbnailSizeInfo
- fastiv_io_thumbnail_sizes[FASTIV_IO_THUMBNAIL_SIZE_COUNT];
-
-cairo_surface_t *fastiv_io_lookup_thumbnail(
- GFile *target, FastivIoThumbnailSize size);