diff options
Diffstat (limited to 'source/blender/imbuf/IMB_imbuf.h')
-rw-r--r-- | source/blender/imbuf/IMB_imbuf.h | 479 |
1 files changed, 479 insertions, 0 deletions
diff --git a/source/blender/imbuf/IMB_imbuf.h b/source/blender/imbuf/IMB_imbuf.h new file mode 100644 index 00000000000..ec10c9b39ed --- /dev/null +++ b/source/blender/imbuf/IMB_imbuf.h @@ -0,0 +1,479 @@ +/** + * @mainpage IMB - Imbuf module external interface + * + * @section about About the IMB module + * + * External interface of the IMage Buffer module. This module offers + * import/export of several graphical file formats. It offers the + * ImBuf type as a common structure to refer to different graphical + * file formats, and to enable a uniform way of handling them. + * + * @section issues Known issues with IMB + * + * - imbuf is written in C. + * - Endianness issues are dealt with internally. + * - File I/O must be done externally. The module uses FILE*'s to + * direct input/output. + * - Platform dependency is limited. Some minor patches for + * amiga and Irix are present. A 'posix-compliancy-patch' + * provides the interface to windows. + * + * @section dependencies Dependencies + * + * IMB needs: + * - SDNA module + * The listbase types are used for handling the memory + * management. + * - blenlib module + * blenlib handles guarded memory management in blender-style. + * BLI_winstuff.h makes a few windows specific behaviours + * posix-compliant. + * - avi + * avi defines import/export to the avi format. Only anim.c + * needs this. It uses the following functions: + * - avi_close + * - avi_is_avi + * - avi_print_error + * - avi_open_movie + * - avi_read_frame + * - avi_get_stream + * Additionally, it needs the types from the avi module. + * - external jpeg library + * The jpeg lib defines import/export to the jpeg format. + * only jpeg.c needs these. Used functions are: + * - jpeg_destroy + * - jpeg_resync_to_restart + * - jpeg_set_marker_processor + * - jpeg_read_header + * - jpeg_start_decompress + * - jpeg_abort_decompress + * - jpeg_read_scanlines + * - jpeg_finish_decompress + * - jpeg_std_error + * - jpeg_create_decompress + * - jpeg_stdio_src + * - jpeg_start_compress + * - jpeg_write_marker + * - jpeg_write_scanlines + * - jpeg_finish_compress + * - jpeg_create_compress + * - jpeg_stdio_dest + * - jpeg_set_defaults + * - jpeg_set_quality + * - jpeg_destroy_compress + * Additionally, it needs the types from the jpeg lib. + * + * $Id$ + * + * ***** BEGIN GPL/BL DUAL 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. The Blender + * Foundation also sells licenses for use in proprietary software under + * the Blender License. See http://www.blender.org/BL/ for information + * about this. + * + * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ +#ifndef IMB_IMBUF_H +#define IMB_IMBUF_H + +struct ImBuf; +struct anim; + +/** + * + * @attention Defined in cmap.c + */ +void cspace(struct ImBuf *ibuf, float mat[][4]); + +/** + * + * @attention Defined in cmap.c + */ +void IMB_freeImBufdata(void); + +/** + * + * @attention Defined in cmap.c + */ +void IMB_applycmap(struct ImBuf *ibuf); + +/** + * + * @attention Defined in cmap.c + */ +short IMB_converttocmap(struct ImBuf *ibuf); + +/** + * + * @attention Defined in cmap.c + */ +int IMB_alpha_to_col0(int new); + +/** + * + * @attention Defined in readimage.c + */ +struct ImBuf *IMB_ibImageFromMemory(int *mem, int size, int flags); + +/** + * + * @attention Defined in readimage.c + */ +struct ImBuf *IMB_testiffname(char *naam,int flags); + +/** + * + * @attention Defined in readimage.c + */ +struct ImBuf *IMB_loadiffname(char *naam, int flags); + +/** + * + * @attention Defined in readimage.c + */ +void freezbufImBuf(struct ImBuf * ibuf); + +/** + * + * @attention Defined in allocimbuf.c + */ +void IMB_freeImBuf(struct ImBuf * ibuf); + +/** + * + * @attention Defined in allocimbuf.c + */ +struct ImBuf *IMB_allocImBuf(short x, short y, + unsigned char d, unsigned int flags, + unsigned char bitmap); + +/** + * + * @attention Defined in allocimbuf.c + */ +struct ImBuf *IMB_dupImBuf(struct ImBuf *ibuf1); + +/** + * + * @attention Defined in allocimbuf.c + */ +short IMB_addzbufImBuf(struct ImBuf * ibuf); + +/** + * + * @attention Defined in allocimbuf.c + */ +void IMB_freecmapImBuf(struct ImBuf * ibuf); + +/** + * + * @attention Defined in rectop.c + */ +void IMB_rectop(struct ImBuf *dbuf, + struct ImBuf *sbuf, + int destx, + int desty, + int srcx, + int srcy, + int width, + int height, + void (*operation)(unsigned int *, unsigned int*, int, int), + int value); + +/** + * + * @attention Defined in rectop.c + */ +void IMB_rectoptot(struct ImBuf *dbuf, + struct ImBuf *sbuf, + void (*operation)(unsigned int *, unsigned int*, int, int), + int value); + +/** + * + * @attention Defined in rectop.c + */ +void IMB_rectcpy(unsigned int *drect, unsigned int *srect, int x, int dummy); + +/** + * Return the length (in frames) of the given @a anim. + */ +int IMB_anim_get_duration(struct anim *anim); + +/** + * + * @attention Defined in anim.c + */ +struct anim * IMB_open_anim(char * name, int ib_flags); +void IMB_close_anim(struct anim * anim); + +/** + * + * @attention Defined in anim.c + */ +struct ImBuf * IMB_anim_absolute(struct anim * anim, int position); + +/** + * + * @attention Defined in anim.c + */ +void IMB_free_anim(struct anim * anim); + +/** + * + * @attention Defined in anim.c + */ +int IMB_isanim(char * name); + +/** + * + * @attention Defined in anim.c + */ +struct ImBuf * IMB_anim_nextpic(struct anim * anim); + + +/** + * + * @attention Defined in antialias.c + */ +void IMB_clever_double (struct ImBuf * ibuf); + +/** + * + * @attention Defined in antialias.c + */ +void IMB_antialias(struct ImBuf * ibuf); + +/** + * + * @attention Defined in filter.c + */ +void IMB_filter(struct ImBuf *ibuf); + +/** + * + * @attention Defined in filter.c + */ +void IMB_filtery(struct ImBuf *ibuf); + +/** + * + * @attention Defined in scaling.c + */ +struct ImBuf *IMB_onehalf(struct ImBuf *ibuf1); + +/** + * + * @attention Defined in scaling.c + */ +struct ImBuf *IMB_scaleImBuf(struct ImBuf * ibuf, short newx, short newy); + +/** + * + * @attention Defined in scaling.c + */ +struct ImBuf *IMB_scalefieldImBuf(struct ImBuf *ibuf, short newx, short newy); + +/** + * + * @attention Defined in scaling.c + */ +struct ImBuf *IMB_scalefastImBuf(struct ImBuf *ibuf, short newx, short newy); + +/** + * + * @attention Defined in writeimage.c + */ +short IMB_saveiff(struct ImBuf *ibuf,char *naam,int flags); + +/** + * This function pointer needs to be initialized to enable + * png writing from the ImBuf library. + * + * @attention Defined in writeimage.c + * @attention See also IMB_png_encode() + */ +extern short (*IMB_fp_png_encode)(struct ImBuf *ibuf, int file, int flags); + +/** + * Encodes a png image from an ImBuf + * + * @attention Defined in png_encode.c + * @attention See also IMB_fp_png_encode + */ +short IMB_png_encode(struct ImBuf *ibuf, int file, int flags); + +/** + * + * @attention Defined in util.c + */ +int IMB_ispic(char *name); + +/** + * + * @attention Defined in divers.c + */ +void IMB_de_interlace(struct ImBuf *ibuf); + +/** + * Change the ordering of the colour bytes pointed to by rect from + * rgba to abgr. size * 4 colour bytes are reordered. + * + * @attention Defined in imageprocess.c + */ +void IMB_convert_rgba_to_abgr(int size, unsigned int *rect); + +/** + * + * @attention defined in scaling.c + */ +struct ImBuf *IMB_scalefastfieldImBuf(struct ImBuf *ibuf, + short newx, + short newy); + +/** + * + * @attention defined in readimage.c + * @deprecated Only here for backwards compatibility of the + * @deprecated plugin system. + */ +struct ImBuf *IMB_loadiffmem(int *mem, int flags); + +/** + * + * @attention defined in readimage.c + * @deprecated Only here for backwards compatibility of the + * @deprecated plugin system. + */ +struct ImBuf *IMB_loadifffile(int file, int flags); + +/** + * + * @attention defined in scaling.c + */ +struct ImBuf *IMB_half_x(struct ImBuf *ibuf1); + +/** + * + * @attention defined in scaling.c + */ +struct ImBuf *IMB_double_fast_x(struct ImBuf *ibuf1); + +/** + * + * @attention defined in scaling.c + */ +struct ImBuf *IMB_double_x(struct ImBuf *ibuf1); + +/** + * + * @attention defined in scaling.c + */ +struct ImBuf *IMB_half_y(struct ImBuf *ibuf1); + +/** + * + * @attention defined in scaling.c + */ +struct ImBuf *IMB_double_fast_y(struct ImBuf *ibuf1); + +/** + * + * @attention defined in scaling.c + */ +struct ImBuf *IMB_double_y(struct ImBuf *ibuf1); + +/** + * + * @attention defined in scaling.c + */ +struct ImBuf *IMB_onethird(struct ImBuf *ibuf1); + +/** + * + * @attention defined in scaling.c + */ +struct ImBuf *IMB_halflace(struct ImBuf *ibuf1); + +/** + * + * @attention defined in dither.c + */ +void IMB_dit2(struct ImBuf * ibuf, short ofs, short bits); + +/** + * + * @attention defined in dither.c + */ +void IMB_dit0(struct ImBuf * ibuf, short ofs, short bits); + +/** Externally used vars: fortunately they do not use funny types */ + +/** + * boolean toggle that tells whether or not to + * scale the colour map in the y-direction. + * + * @attention declared in hamx.c + */ +extern int scalecmapY; + +/** + * This 'matrix' defines the transformation from rgb to bw colour + * maps. You need to do a sort of dot-product for that. It is a matrix + * with fixed coefficients, extracted from some book. + * + * @attention Defined in matrix.h, only included in hamx.c + */ +extern float rgb_to_bw[4][4]; + +/** + * + * @attention Defined in rotate.c + */ +void IMB_flipy(struct ImBuf * ibuf); + +/** + * + * @attention Defined in anim.c + */ +void IMB_init_movie_pointers(void); + +/** + * + * @attention Defined in cspace.c + */ +void IMB_cspace(struct ImBuf *ibuf, float mat[][4]); + +/** + * + * @attention Defined in allocimbuf.c + */ +void IMB_freezbufImBuf(struct ImBuf * ibuf); + +/** + * + * @attention Defined in rectop.c + */ +void IMB_rectfill(unsigned int *drect, unsigned int *srect, int x, int value); + +#endif |