From 2a2f0307c1e313dde979de2086d93971c57d342b Mon Sep 17 00:00:00 2001 From: Bert Date: Tue, 18 Jan 2011 17:20:41 +0100 Subject: Basic image loading --- app.c | 8 ++++++++ app.h | 2 ++ image.c | 19 ++++++++++++++++++- image.h | 7 +++++++ 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/app.c b/app.c index e9ff727..2a3e0c2 100644 --- a/app.c +++ b/app.c @@ -40,8 +40,16 @@ void app_init(app_t *app) { } void app_run(app_t *app) { + app_load_image(app); event_loop(app); } void app_quit(app_t *app) { } + +void app_load_image(app_t *app) { + if (!app || app->fileidx >= app->filecnt || !app->filenames) + return; + + img_load(&app->img, app->filenames[app->fileidx]); +} diff --git a/app.h b/app.h index 1f66bec..d4b2990 100644 --- a/app.h +++ b/app.h @@ -34,4 +34,6 @@ void app_init(app_t*); void app_run(app_t*); void app_quit(app_t*); +void app_load_image(app_t*); + #endif /* APP_H */ diff --git a/image.c b/image.c index 2ffa07c..a2742f4 100644 --- a/image.c +++ b/image.c @@ -16,7 +16,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include +#include #include "sxiv.h" #include "image.h" @@ -30,3 +31,19 @@ void imlib_init(win_t *win) { imlib_context_set_colormap(win->env.cmap); imlib_context_set_drawable(win->xwin); } + +void img_load(img_t *img, char *filename) { + if (!img || !filename) + return; + + if (imlib_context_get_image()) + imlib_free_image(); + + if (!(img->im = imlib_load_image(filename))) + FATAL("could not open image: %s", filename); + + imlib_context_set_image(img->im); + + img->w = imlib_image_get_width(); + img->h = imlib_image_get_height(); +} diff --git a/image.h b/image.h index 2634fe1..78d4126 100644 --- a/image.h +++ b/image.h @@ -19,6 +19,8 @@ #ifndef IMAGE_H #define IMAGE_H +#include + #include "window.h" typedef enum scalemode_e { @@ -34,8 +36,13 @@ typedef struct img_s { int h; int x; int y; + + Imlib_Image *im; } img_t; void imlib_init(win_t*); +void img_load(img_t*, char*); +void img_display(img_t*, win_t*); + #endif /* IMAGE_H */ -- cgit v1.2.3