Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/imbuf/IMB_imbuf.h')
-rw-r--r--source/blender/imbuf/IMB_imbuf.h479
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