code cleanup: make header defines more consistent, JOYSENSOR header guard had a typo...
[blender-staging.git] / source / blender / imbuf / IMB_imbuf_types.h
index 2cb1dfe149a4388e3ceed26336cf44e523146cab..76c247b219507a73cd05713a5fea49a6c3f72335 100644 (file)
@@ -50,6 +50,13 @@ struct ImMetaData;
 #define IB_MIPMAP_LEVELS       20
 #define IB_FILENAME_SIZE       1024
 
+typedef struct DDSData {
+       unsigned int fourcc; /* DDS fourcc info */
+       unsigned int nummipmaps; /* The number of mipmaps in the dds file */
+       unsigned char *data; /* The compressed image data */
+       unsigned int size; /* The size of the compressed data */
+} DDSData;
+
 /**
  * \ingroup imbuf
  * This is the abstraction of an image.  ImBuf is the basic type used for all
@@ -94,7 +101,6 @@ typedef struct ImBuf {
 
        /* parameters used by conversion between byte and float */
        float dither;                           /* random dither value, for conversion from float -> byte rect */
-       short profile;                          /* color space/profile preset that the byte rect buffer represents */
 
        /* mipmapping */
        struct ImBuf *mipmap[IB_MIPMAP_LEVELS]; /* MipMap levels, a series of halved images */
@@ -119,6 +125,16 @@ typedef struct ImBuf {
        unsigned char *encodedbuffer;     /* Compressed image only used with png currently */
        unsigned int   encodedsize;       /* Size of data written to encodedbuffer */
        unsigned int   encodedbuffersize; /* Size of encodedbuffer */
+
+       /* color management */
+       struct ColorSpace *rect_colorspace;          /* color space of byte buffer */
+       struct ColorSpace *float_colorspace;         /* color space of float buffer, used by sequencer only */
+       unsigned int *display_buffer_flags;          /* array of per-display display buffers dirty flags */
+       struct ColormanageCache *colormanage_cache;  /* cache used by color management */
+       int colormanage_flag;
+
+       /* information for compressed textures */
+       struct DDSData dds_data;
 } ImBuf;
 
 /* Moved from BKE_bmfont_types.h because it is a userflag bit mask. */
@@ -126,10 +142,11 @@ typedef struct ImBuf {
  * \brief userflags: Flags used internally by blender for imagebuffers
  */
 
-#define IB_BITMAPFONT          (1 << 0)        /* this image is a font */
-#define IB_BITMAPDIRTY         (1 << 1)        /* image needs to be saved is not the same as filename */
-#define IB_MIPMAP_INVALID      (1 << 2)        /* image mipmaps are invalid, need recreate */
-#define IB_RECT_INVALID                (1 << 3)    /* float buffer changed, needs recreation of byte rect */
+#define IB_BITMAPFONT                  (1 << 0)        /* this image is a font */
+#define IB_BITMAPDIRTY                 (1 << 1)        /* image needs to be saved is not the same as filename */
+#define IB_MIPMAP_INVALID              (1 << 2)        /* image mipmaps are invalid, need recreate */
+#define IB_RECT_INVALID                        (1 << 3)        /* float buffer changed, needs recreation of byte rect */
+#define IB_DISPLAY_BUFFER_INVALID      (1 << 4)        /* either float or byte buffer changed, need to re-calculate display buffers */
 
 /**
  * \name Imbuf Component flags
@@ -155,8 +172,10 @@ typedef struct ImBuf {
 
 /*
  * The bit flag is stored in the ImBuf.ftype variable.
- * Note that the lower 10 bits is used for storing custom flags 
+ * Note that the lower 10 bits is used for storing custom flags
  */
+#define IB_CUSTOM_FLAGS_MASK 0x3ff
+
 #define PNG                            (1 << 30)
 #define TGA                            (1 << 28)
 #define JPG                            (1 << 27)
@@ -215,9 +234,35 @@ typedef struct ImBuf {
 #define IB_PROFILE_SRGB                        2
 #define IB_PROFILE_CUSTOM              3
 
+/* dds */
+#ifdef WITH_DDS
+#ifndef MAKEFOURCC
+#define MAKEFOURCC(ch0, ch1, ch2, ch3)\
+       ((unsigned long)(unsigned char)(ch0) | \
+       ((unsigned long)(unsigned char)(ch1) << 8) | \
+       ((unsigned long)(unsigned char)(ch2) << 16) | \
+       ((unsigned long)(unsigned char)(ch3) << 24))
+#endif  /* MAKEFOURCC */
+
+/*
+ * FOURCC codes for DX compressed-texture pixel formats
+ */
+
+#define FOURCC_DDS   (MAKEFOURCC('D','D','S',' '))
+#define FOURCC_DXT1  (MAKEFOURCC('D','X','T','1'))
+#define FOURCC_DXT2  (MAKEFOURCC('D','X','T','2'))
+#define FOURCC_DXT3  (MAKEFOURCC('D','X','T','3'))
+#define FOURCC_DXT4  (MAKEFOURCC('D','X','T','4'))
+#define FOURCC_DXT5  (MAKEFOURCC('D','X','T','5'))
+
+#endif  /* DDS */
 extern const char *imb_ext_image[];
 extern const char *imb_ext_image_qt[];
 extern const char *imb_ext_movie[];
 extern const char *imb_ext_audio[];
 
+enum {
+       IMB_COLORMANAGE_IS_DATA = (1 << 0)
+};
+
 #endif