summaryrefslogtreecommitdiff
path: root/apps/plugins/imageviewer/imageviewer.h
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2012-11-02 13:03:58 +0100
committerMarcin Bukat <marcin.bukat@gmail.com>2012-11-13 18:13:10 +0100
commit0ceaff2b65c50b75ad8cc5b2d12e7b3f864092e5 (patch)
tree49d8d297cbba93902bc612a9aa4ded1b6e2d46e5 /apps/plugins/imageviewer/imageviewer.h
parentb35f82c91ff050b4405b19a3e56e9d031bf940e2 (diff)
downloadrockbox-0ceaff2b65c50b75ad8cc5b2d12e7b3f864092e5.tar.gz
rockbox-0ceaff2b65c50b75ad8cc5b2d12e7b3f864092e5.zip
imageviewer: gif viewer based on giflib-5.0.2
This adds ability to view gif images in rockbox. Works both on color and gray/monochrome targets (greylib). Aspect correction is supported as well. Limitations: - animated gifs are restricted to 32 frames - animated gifs loop always (loopcount is ignored) - plain text extension is not supported - animated gifs with interframe delay = 0 are treated as still images (web browsers usually treat delay 0 as 100ms to prevent exhaustive CPU load by such images) Change-Id: I61501f801ddcd403410e38d83e6bddc9883e7ede
Diffstat (limited to 'apps/plugins/imageviewer/imageviewer.h')
-rw-r--r--apps/plugins/imageviewer/imageviewer.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/apps/plugins/imageviewer/imageviewer.h b/apps/plugins/imageviewer/imageviewer.h
index 9cc1a9117a..19b5db15bb 100644
--- a/apps/plugins/imageviewer/imageviewer.h
+++ b/apps/plugins/imageviewer/imageviewer.h
@@ -58,6 +58,7 @@ enum {
58 58
59 ZOOM_IN, 59 ZOOM_IN,
60 ZOOM_OUT, 60 ZOOM_OUT,
61 NEXT_FRAME,
61}; 62};
62 63
63#if (CONFIG_PLATFORM & PLATFORM_NATIVE) && defined(HAVE_DISK_STORAGE) 64#if (CONFIG_PLATFORM & PLATFORM_NATIVE) && defined(HAVE_DISK_STORAGE)
@@ -82,6 +83,8 @@ struct image_info {
82 int x_size, y_size; /* set size of loaded image in load_image(). */ 83 int x_size, y_size; /* set size of loaded image in load_image(). */
83 int width, height; /* set size of resized image in get_image(). */ 84 int width, height; /* set size of resized image in get_image(). */
84 int x, y; /* display position */ 85 int x, y; /* display position */
86 int frames_count; /* number of subframes */
87 int delay; /* delay expressed in ticks between frames */
85 void *data; /* use freely in decoder. not touched in ui. */ 88 void *data; /* use freely in decoder. not touched in ui. */
86}; 89};
87 90
@@ -115,6 +118,7 @@ struct image_decoder {
115 /* return needed size of buffer to store downscaled image by ds. 118 /* return needed size of buffer to store downscaled image by ds.
116 * this is used to calculate min downscale. */ 119 * this is used to calculate min downscale. */
117 int (*img_mem)(int ds); 120 int (*img_mem)(int ds);
121
118 /* load image from filename. use the passed buffer to store loaded, decoded 122 /* load image from filename. use the passed buffer to store loaded, decoded
119 * or resized image later, so save it to local variables if needed. 123 * or resized image later, so save it to local variables if needed.
120 * set width and height of info properly. also, set buf_size to remaining 124 * set width and height of info properly. also, set buf_size to remaining
@@ -125,7 +129,8 @@ struct image_decoder {
125 /* downscale loaded image by ds. use the buffer passed to load_image to 129 /* downscale loaded image by ds. use the buffer passed to load_image to
126 * reszie image and/or store resized image. 130 * reszie image and/or store resized image.
127 * return PLUGIN_ERROR for error. ui will skip to next image. */ 131 * return PLUGIN_ERROR for error. ui will skip to next image. */
128 int (*get_image)(struct image_info *info, int ds); 132 int (*get_image)(struct image_info *info, int frame, int ds);
133
129 /* draw part of image */ 134 /* draw part of image */
130 void (*draw_image_rect)(struct image_info *info, 135 void (*draw_image_rect)(struct image_info *info,
131 int x, int y, int width, int height); 136 int x, int y, int width, int height);