aboutsummaryrefslogtreecommitdiff
path: root/fastiv-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'fastiv-io.c')
-rw-r--r--fastiv-io.c69
1 files changed, 34 insertions, 35 deletions
diff --git a/fastiv-io.c b/fastiv-io.c
index db0efb9..119d778 100644
--- a/fastiv-io.c
+++ b/fastiv-io.c
@@ -17,8 +17,8 @@
#include "config.h"
-#include <glib.h>
#include <cairo.h>
+#include <glib.h>
#include <turbojpeg.h>
#ifdef HAVE_LIBRAW
#include <libraw.h>
@@ -53,7 +53,7 @@ const char *fastiv_io_supported_media_types[] = {
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-#define FASTIV_IO_ERROR fastiv_io_error_quark()
+#define FASTIV_IO_ERROR fastiv_io_error_quark()
G_DEFINE_QUARK(fastiv-io-error-quark, fastiv_io_error)
@@ -64,8 +64,7 @@ enum FastivIoError {
static void
set_error(GError **error, const char *message)
{
- g_set_error_literal(error,
- FASTIV_IO_ERROR, FASTIV_IO_ERROR_OPEN, message);
+ g_set_error_literal(error, FASTIV_IO_ERROR, FASTIV_IO_ERROR_OPEN, message);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -74,8 +73,8 @@ set_error(GError **error, const char *message)
// is pure C, and a good reference. I can't use the auxiliary libraries,
// since they depend on C++, which is undesirable.
static cairo_surface_t *
-open_wuffs(wuffs_base__image_decoder *dec,
- wuffs_base__io_buffer src, GError **error)
+open_wuffs(
+ wuffs_base__image_decoder *dec, wuffs_base__io_buffer src, GError **error)
{
wuffs_base__image_config cfg;
wuffs_base__status status =
@@ -148,7 +147,7 @@ open_wuffs(wuffs_base__image_decoder *dec,
status = wuffs_base__pixel_buffer__set_from_slice(&pb, &cfg.pixcfg,
wuffs_base__make_slice_u8(cairo_image_surface_get_data(surface),
cairo_image_surface_get_stride(surface) *
- cairo_image_surface_get_height(surface)));
+ cairo_image_surface_get_height(surface)));
if (!wuffs_base__status__is_ok(&status)) {
set_error(error, wuffs_base__status__message(&status));
cairo_surface_destroy(surface);
@@ -170,8 +169,8 @@ open_wuffs(wuffs_base__image_decoder *dec,
// Starting to modify pixel data directly. Probably an unnecessary call.
cairo_surface_flush(surface);
- status = wuffs_base__image_decoder__decode_frame(dec, &pb, &src,
- WUFFS_BASE__PIXEL_BLEND__SRC, workbuf, NULL);
+ status = wuffs_base__image_decoder__decode_frame(
+ dec, &pb, &src, WUFFS_BASE__PIXEL_BLEND__SRC, workbuf, NULL);
if (!wuffs_base__status__is_ok(&status)) {
set_error(error, wuffs_base__status__message(&status));
cairo_surface_destroy(surface);
@@ -196,8 +195,8 @@ open_wuffs_using(wuffs_base__image_decoder *(*allocate)(),
return NULL;
}
- cairo_surface_t *surface = open_wuffs(dec,
- wuffs_base__ptr_u8__reader((uint8_t *) data, len, TRUE), error);
+ cairo_surface_t *surface = open_wuffs(
+ dec, wuffs_base__ptr_u8__reader((uint8_t *) data, len, TRUE), error);
free(dec);
return surface;
}
@@ -255,8 +254,8 @@ open_libjpeg_turbo(const gchar *data, gsize len, GError **error)
int stride = cairo_image_surface_get_stride(surface);
if (tjDecompress2(dec, (const unsigned char *) data, len,
- cairo_image_surface_get_data(surface), width, stride,
- height, pixel_format, TJFLAG_ACCURATEDCT)) {
+ cairo_image_surface_get_data(surface), width, stride, height,
+ pixel_format, TJFLAG_ACCURATEDCT)) {
set_error(error, tjGetErrorStr2(dec));
cairo_surface_destroy(surface);
tjDestroy(dec);
@@ -267,8 +266,8 @@ open_libjpeg_turbo(const gchar *data, gsize len, GError **error)
if (pixel_format == TJPF_CMYK) {
// CAIRO_STRIDE_ALIGNMENT is 4 bytes, so there will be no padding with
// ARGB/BGR/XRGB/BGRX.
- trivial_cmyk_to_bgra(cairo_image_surface_get_data(surface),
- width * height);
+ trivial_cmyk_to_bgra(
+ cairo_image_surface_get_data(surface), width * height);
}
// Pixel data has been written, need to let Cairo know.
@@ -284,8 +283,8 @@ static cairo_surface_t *
open_libraw(const gchar *data, gsize len, GError **error)
{
// https://github.com/LibRaw/LibRaw/issues/418
- libraw_data_t *iprc = libraw_init(LIBRAW_OPIONS_NO_MEMERR_CALLBACK
- | LIBRAW_OPIONS_NO_DATAERR_CALLBACK);
+ libraw_data_t *iprc = libraw_init(
+ LIBRAW_OPIONS_NO_MEMERR_CALLBACK | LIBRAW_OPIONS_NO_DATAERR_CALLBACK);
if (!iprc) {
set_error(error, "failed to obtain a LibRaw handle");
return NULL;
@@ -300,7 +299,7 @@ open_libraw(const gchar *data, gsize len, GError **error)
// TODO(p): Check if we need to set anything for autorotation (sizes.flip).
iprc->params.use_camera_wb = 1;
iprc->params.output_color = 1; // sRGB, TODO(p): Is this used?
- iprc->params.output_bps = 8; // This should be the default value.
+ iprc->params.output_bps = 8; // This should be the default value.
int err = 0;
if ((err = libraw_open_buffer(iprc, (void *) data, len))) {
@@ -368,8 +367,8 @@ open_libraw(const gchar *data, gsize len, GError **error)
unsigned char *p = image->data;
for (ushort y = 0; y < image->height; y++) {
for (ushort x = 0; x < image->width; x++) {
- *pixels++ = 0xff000000 | (uint32_t) p[0] << 16
- | (uint32_t) p[1] << 8 | (uint32_t) p[2];
+ *pixels++ = 0xff000000 | (uint32_t) p[0] << 16 |
+ (uint32_t) p[1] << 8 | (uint32_t) p[2];
p += 3;
}
}
@@ -407,18 +406,18 @@ fastiv_io_open(const gchar *path, GError **error)
// Note that BMP can redirect into another format,
// which is so far unsupported here.
surface = open_wuffs_using(
- wuffs_bmp__decoder__alloc_as__wuffs_base__image_decoder,
- data, len, error);
+ wuffs_bmp__decoder__alloc_as__wuffs_base__image_decoder, data, len,
+ error);
break;
case WUFFS_BASE__FOURCC__GIF:
surface = open_wuffs_using(
- wuffs_gif__decoder__alloc_as__wuffs_base__image_decoder,
- data, len, error);
+ wuffs_gif__decoder__alloc_as__wuffs_base__image_decoder, data, len,
+ error);
break;
case WUFFS_BASE__FOURCC__PNG:
surface = open_wuffs_using(
- wuffs_png__decoder__alloc_as__wuffs_base__image_decoder,
- data, len, error);
+ wuffs_png__decoder__alloc_as__wuffs_base__image_decoder, data, len,
+ error);
break;
case WUFFS_BASE__FOURCC__JPEG:
surface = open_libjpeg_turbo(data, len, error);
@@ -446,8 +445,8 @@ fastiv_io_open(const gchar *path, GError **error)
// scaled, linear encoded, pre-multiplied component values must be used!"
//
// We can use the pixman library to scale, PIXMAN_a8r8g8b8_sRGB.
-#include <png.h>
#include <glib/gstdio.h>
+#include <png.h>
// TODO(p): Reorganize the sources.
gchar *get_xdg_home_dir(const char *var, const char *default_);
@@ -467,8 +466,8 @@ discard_png_warning(png_structp pngp, const char *warning)
}
static int
-check_png_thumbnail(png_structp pngp, png_infop infop, const gchar *target,
- time_t mtime)
+check_png_thumbnail(
+ png_structp pngp, png_infop infop, const gchar *target, time_t mtime)
{
// May contain Thumb::Image::Width Thumb::Image::Height,
// but those aren't interesting currently (would be for fast previews).
@@ -496,8 +495,8 @@ check_png_thumbnail(png_structp pngp, png_infop infop, const gchar *target,
// TODO(p): Support spng as well (it can't premultiply alpha by itself,
// but at least it won't gamma-adjust it for us).
static cairo_surface_t *
-read_png_thumbnail(const gchar *path, const gchar *uri, time_t mtime,
- GError **error)
+read_png_thumbnail(
+ const gchar *path, const gchar *uri, time_t mtime, GError **error)
{
FILE *fp;
if (!(fp = fopen(path, "rb"))) {
@@ -506,8 +505,8 @@ read_png_thumbnail(const gchar *path, const gchar *uri, time_t mtime,
}
cairo_surface_t *volatile surface = NULL;
- png_structp pngp = png_create_read_struct(PNG_LIBPNG_VER_STRING,
- error, redirect_png_error, discard_png_warning);
+ png_structp pngp = png_create_read_struct(
+ PNG_LIBPNG_VER_STRING, error, redirect_png_error, discard_png_warning);
png_infop infop = png_create_info_struct(pngp);
if (!infop) {
set_error(error, g_strerror(errno));
@@ -617,8 +616,8 @@ fastiv_io_lookup_thumbnail(const gchar *target)
const gchar *sizes[] = {"large", "x-large", "xx-large", "normal"};
GError *error = NULL;
for (gsize i = 0; !result && i < G_N_ELEMENTS(sizes); i++) {
- gchar *path = g_strdup_printf("%s/thumbnails/%s/%s.png",
- cache_dir, sizes[i], sum);
+ gchar *path = g_strdup_printf(
+ "%s/thumbnails/%s/%s.png", cache_dir, sizes[i], sum);
result = read_png_thumbnail(path, uri, st.st_mtim.tv_sec, &error);
if (error) {
g_debug("%s: %s", path, error->message);