瀏覽代碼

Basic image loading

master
Bert 14 年之前
父節點
當前提交
2a2f0307c1
共有 4 個檔案被更改,包括 35 行新增1 行删除
  1. +8
    -0
      app.c
  2. +2
    -0
      app.h
  3. +18
    -1
      image.c
  4. +7
    -0
      image.h

+ 8
- 0
app.c 查看文件

@@ -40,8 +40,16 @@ void app_init(app_t *app) {
} }


void app_run(app_t *app) { void app_run(app_t *app) {
app_load_image(app);
event_loop(app); event_loop(app);
} }


void app_quit(app_t *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]);
}

+ 2
- 0
app.h 查看文件

@@ -34,4 +34,6 @@ void app_init(app_t*);
void app_run(app_t*); void app_run(app_t*);
void app_quit(app_t*); void app_quit(app_t*);


void app_load_image(app_t*);

#endif /* APP_H */ #endif /* APP_H */

+ 18
- 1
image.c 查看文件

@@ -16,7 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */


#include <Imlib2.h> #include <stdlib.h>
#include <stdio.h>


#include "sxiv.h" #include "sxiv.h"
#include "image.h" #include "image.h"
@@ -30,3 +31,19 @@ void imlib_init(win_t *win) {
imlib_context_set_colormap(win->env.cmap); imlib_context_set_colormap(win->env.cmap);
imlib_context_set_drawable(win->xwin); 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();
}

+ 7
- 0
image.h 查看文件

@@ -19,6 +19,8 @@
#ifndef IMAGE_H #ifndef IMAGE_H
#define IMAGE_H #define IMAGE_H


#include <Imlib2.h>

#include "window.h" #include "window.h"


typedef enum scalemode_e { typedef enum scalemode_e {
@@ -34,8 +36,13 @@ typedef struct img_s {
int h; int h;
int x; int x;
int y; int y;

Imlib_Image *im;
} img_t; } img_t;


void imlib_init(win_t*); void imlib_init(win_t*);


void img_load(img_t*, char*);
void img_display(img_t*, win_t*);

#endif /* IMAGE_H */ #endif /* IMAGE_H */

||||||
x
 
000:0
Loading…
取消
儲存