diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-05-07 19:18:04 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-05-07 19:18:04 +0400 |
commit | 008863daec1249d1f17bc69e1105e336db690d63 (patch) | |
tree | 78a4001857b26a287125a3f5fa31496052f6ebdd /source/blender/imbuf/intern/IMB_filetype.h | |
parent | 1613829e8e821321da99cad4790b7e6a1d90cea8 (diff) |
Merge image related changes from the render branch. This includes the image
tile cache code in imbuf, but it is not hooked up to the render engine.
Imbuf module: some small refactoring and removing a lot of unused or old code
(about 6.5k lines).
* Added a ImFileType struct with callbacks to make adding an file format type,
or making changes to the API easier.
* Move imbuf init/exit code into IMB_init()/IMB_exit() functions.
* Increased mipmap levels from 10 to 20, you run into this limit already with
a 2k image.
* Removed hamx, amiga, anim5 format support.
* Removed colormap saving, only simple colormap code now for reading tga.
* Removed gen_dynlibtiff.py, editing this is almost as much work as just
editing the code directly.
* Functions removed that were only used for sequencer plugin API:
IMB_anim_nextpic, IMB_clever_double, IMB_antialias, IMB_gamwarp,
IMB_scalefieldImBuf, IMB_scalefastfieldImBuf, IMB_onethird, IMB_halflace,
IMB_dit0, IMB_dit2, IMB_cspace
* Write metadata info into OpenEXR images. Can be viewed with the command
line utility 'exrheader'
For the image tile cache code, see this page:
http://wiki.blender.org/index.php/Dev:2.5/Source/Imaging/ImageTileCache
Diffstat (limited to 'source/blender/imbuf/intern/IMB_filetype.h')
-rw-r--r-- | source/blender/imbuf/intern/IMB_filetype.h | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/source/blender/imbuf/intern/IMB_filetype.h b/source/blender/imbuf/intern/IMB_filetype.h new file mode 100644 index 00000000000..f6afe20cb5c --- /dev/null +++ b/source/blender/imbuf/intern/IMB_filetype.h @@ -0,0 +1,120 @@ +/** + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributor(s): Blender Foundation 2010. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef IMB_FILETYPE_H +#define IMB_FILETYPE_H + +/* Generic File Type */ + +struct ImBuf; + +#define IM_FTYPE_FLOAT 1 + +typedef struct ImFileType { + void (*init)(void); + void (*exit)(void); + + int (*is_a)(unsigned char *buf); + int (*ftype)(struct ImFileType *type, struct ImBuf *ibuf); + struct ImBuf *(*load)(unsigned char *mem, int size, int flags); + int (*save)(struct ImBuf *ibuf, char *name, int flags); + void (*load_tile)(struct ImBuf *ibuf, unsigned char *mem, int size, int tx, int ty, unsigned int *rect); + + int flag; + int filetype; +} ImFileType; + +extern ImFileType IMB_FILE_TYPES[]; + +void imb_filetypes_init(void); +void imb_filetypes_exit(void); + +void imb_tile_cache_init(void); +void imb_tile_cache_exit(void); + +void imb_loadtile(struct ImBuf *ibuf, int tx, int ty, unsigned int *rect); +void imb_tile_cache_tile_free(struct ImBuf *ibuf, int tx, int ty); + +/* Type Specific Functions */ + +/* png */ +int imb_is_a_png(unsigned char *buf); +struct ImBuf *imb_loadpng(unsigned char *mem, int size, int flags); +int imb_savepng(struct ImBuf *ibuf, char *name, int flags); + +/* targa */ +int imb_is_a_targa(unsigned char *buf); +struct ImBuf *imb_loadtarga(unsigned char *mem, int size, int flags); +int imb_savetarga(struct ImBuf * ibuf, char *name, int flags); + +/* iris */ +int imb_is_a_iris(unsigned char *mem); +struct ImBuf *imb_loadiris(unsigned char *mem, int size, int flags); +int imb_saveiris(struct ImBuf * ibuf, char *name, int flags); + +/* jp2 */ +int imb_is_a_jp2(unsigned char *buf); +struct ImBuf *imb_jp2_decode(unsigned char *mem, int size, int flags); +int imb_savejp2(struct ImBuf *ibuf, char *name, int flags); + +/* jpeg */ +int imb_is_a_jpeg(unsigned char *mem); +int imb_savejpeg(struct ImBuf * ibuf, char * name, int flags); +struct ImBuf * imb_ibJpegImageFromFilename (const char * filename, int flags); +struct ImBuf * imb_load_jpeg (unsigned char * buffer, int size, int flags); + +/* bmp */ +int imb_is_a_bmp(unsigned char *buf); +struct ImBuf *imb_bmp_decode(unsigned char *mem, int size, int flags); +int imb_savebmp(struct ImBuf *ibuf, char *name, int flags); + +/* cocoa */ +struct ImBuf *imb_cocoaLoadImage(unsigned char *mem, int size, int flags); +short imb_cocoaSaveImage(struct ImBuf *ibuf, char *name, int flags); + +/* cineon */ +int imb_savecineon(struct ImBuf *buf, char *myfil, int flags); +struct ImBuf *imb_loadcineon(unsigned char *mem, int size, int flags); +int imb_is_cineon(unsigned char *buf); + +/* dpx */ +int imb_save_dpx(struct ImBuf *buf, char *myfile, int flags); +struct ImBuf *imb_loaddpx(unsigned char *mem, int size, int flags); +int imb_is_dpx(unsigned char *buf); + +/* hdr */ +int imb_is_a_hdr(unsigned char *buf); +struct ImBuf *imb_loadhdr(unsigned char *mem, int size, int flags); +int imb_savehdr(struct ImBuf * ibuf, char *name, int flags); + +/* tiff */ +int imb_is_a_tiff(unsigned char *buf); +struct ImBuf *imb_loadtiff(unsigned char *mem, int size, int flags); +void imb_loadtiletiff(struct ImBuf *ibuf, unsigned char *mem, int size, + int tx, int ty, unsigned int *rect); +int imb_savetiff(struct ImBuf *ibuf, char *name, int flags); +void *libtiff_findsymbol(char *name); + +#endif /* IMB_FILETYPE_H */ + |