aboutsummaryrefslogtreecommitdiffstats
path: root/image.c
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2017-04-18 12:33:09 +0200
committerGerd Hoffmann <kraxel@redhat.com>2017-04-18 12:33:09 +0200
commit85bb618f1bb8b2a73f3a37df56a88b858b1f1d46 (patch)
tree322e96e8a6ef1a35bda6e1eb9ebd5b489ae7ea14 /image.c
parentec2fd3af076bacdfa90185b3e3bc26dd76f964c7 (diff)
downloaddrminfo-85bb618f1bb8b2a73f3a37df56a88b858b1f1d46.tar.gz
image loading update
Diffstat (limited to 'image.c')
-rw-r--r--image.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/image.c b/image.c
index 62e3da1..a1a1bb5 100644
--- a/image.c
+++ b/image.c
@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
+#include <strings.h>
#include <unistd.h>
#include <errno.h>
#include <endian.h>
@@ -12,7 +13,7 @@
#include "image.h"
-cairo_surface_t *load_jpeg(const char* filename)
+static cairo_surface_t *load_jpeg(const char* filename)
{
struct jpeg_decompress_struct info;
struct jpeg_error_mgr err;
@@ -56,3 +57,20 @@ cairo_surface_t *load_jpeg(const char* filename)
fclose(file);
return surface;
}
+
+cairo_surface_t *load_image(const char* filename)
+{
+ char *ext = strrchr(filename, '.');
+
+ if (!ext)
+ return NULL;
+
+ if (strcasecmp(ext, ".jpeg") == 0 ||
+ strcasecmp(ext, ".jpg"))
+ return load_jpeg(filename);
+
+ if (strcasecmp(ext, ".png") == 0)
+ return cairo_image_surface_create_from_png(filename);
+
+ return NULL;
+}