diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2017-04-18 12:33:09 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2017-04-18 12:33:09 +0200 |
commit | 85bb618f1bb8b2a73f3a37df56a88b858b1f1d46 (patch) | |
tree | 322e96e8a6ef1a35bda6e1eb9ebd5b489ae7ea14 /image.c | |
parent | ec2fd3af076bacdfa90185b3e3bc26dd76f964c7 (diff) | |
download | drminfo-85bb618f1bb8b2a73f3a37df56a88b858b1f1d46.tar.gz |
image loading update
Diffstat (limited to 'image.c')
-rw-r--r-- | image.c | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -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; +} |