Initial revision
[blender.git] / source / blender / imbuf / intern / imbuf_patch.h
1 /**
2  * imbuf_patch.h
3  *
4  * These are some definitions to make imbuf more independent from the
5  * rest of the blender code. Most of these are dirty and should not
6  * really exist.
7  *
8  * $Id$ *
9  *
10  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
11  *
12  * This program is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU General Public License
14  * as published by the Free Software Foundation; either version 2
15  * of the License, or (at your option) any later version. The Blender
16  * Foundation also sells licenses for use in proprietary software under
17  * the Blender License.  See http://www.blender.org/BL/ for information
18  * about this.
19  *
20  * This program is distributed in the hope that it will be useful,
21  * but WITHOUT ANY WARRANTY; without even the implied warranty of
22  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23  * GNU General Public License for more details.
24  *
25  * You should have received a copy of the GNU General Public License
26  * along with this program; if not, write to the Free Software Foundation,
27  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
28  *
29  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
30  * All rights reserved.
31  *
32  * The Original Code is: all of this file.
33  *
34  * Contributor(s): none yet.
35  *
36  * ***** END GPL/BL DUAL LICENSE BLOCK *****
37  */
38 #ifndef IMBUF_PATCH_H
39 #define IMBUF_PATCH_H
40
41 /* most of imbuf uses this aloc, and it will disappear soon
42  * (hopefully) (25-10-2001 nzc) */
43 #include "MEM_guardedalloc.h"
44
45 struct ImBuf;
46
47 /* originally, these were defines ... */
48 typedef unsigned char  uchar;
49
50 /* should not be used at all */
51 #define TRUE 1
52 #define FALSE 0
53
54 /* Endianness: flip the byte order. It's strange that this is needed..
55  * After all, there is an internal endian.{c,h}... */
56 #if defined(__sgi) || defined (__sparc) || defined (__PPC__) || defined (__ppc__) || defined (__BIG_ENDIAN__)
57 #define MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) )
58 #else
59 #define MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) )
60 #endif
61
62 /* These defines loop back to the internal Blender memory management
63  * system, implemented in blenlib. */
64 #define NEW(x) (x*)MEM_mallocN(sizeof(x),# x) 
65 #define mallocstruct(x,y) (x*)malloc((y)* sizeof(x))   
66 #define callocstruct(x,y) (x*)calloc((y), sizeof(x))
67
68 /* These vars are used thoughout the image buffer for conversions. */
69 extern float rgbyuv[4][4];
70 extern float yuvrgb[4][4];
71 extern float rgbbeta[4][4];
72
73 /* This one helps debugging. */
74 extern int IB_verbose;
75
76 /* These ID's are used for checking memory blocks. See blenlib for
77  * more details. This set is only used in the imbuf internally. */
78
79 #define CAT  MAKE_ID('C','A','T',' ')
80 #define FORM MAKE_ID('F','O','R','M')
81 #define ILBM MAKE_ID('I','L','B','M')
82 #define BMHD MAKE_ID('B','M','H','D')
83 #define CMAP MAKE_ID('C','M','A','P')
84 #define CAMG MAKE_ID('C','A','M','G')
85 #define BODY MAKE_ID('B','O','D','Y')
86
87 #define ANIM MAKE_ID('A','N','I','M')
88 #define ADAT MAKE_ID('A','D','A','T')
89 #define CODE MAKE_ID('C','O','D','E')
90 #define ANHD MAKE_ID('A','N','H','D')
91 #define DLTA MAKE_ID('D','L','T','A')
92 #define BLCK MAKE_ID('B','L','C','K')
93
94 #define MAXRUN 126
95 #define MAXDAT 126
96 #define IFFNOP 128
97
98 #define camg ftype
99
100 #define LI_rect         IB_rect
101 #define LI_planes       IB_planes
102 #define LI_kcmap        IB_cmap
103 #define LI_cmap         IB_cmap
104 #define LI_freem        IB_freem
105 #define LI_test         IB_test
106
107 #define SI_rect         IB_rect
108 #define SI_planes       IB_planes
109 #define SI_kcmap        IB_cmap
110 #define SI_cmap         IB_cmap
111 #define SI_vert         IB_vert
112
113 #endif
114