[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28607] branches/render25/source/blender/ imbuf/intern: write metadata info into OpenEXR images.
Campbell Barton
ideasman42 at gmail.com
Thu May 6 09:10:56 CEST 2010
Revision: 28607
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28607
Author: campbellbarton
Date: 2010-05-06 09:10:56 +0200 (Thu, 06 May 2010)
Log Message:
-----------
write metadata info into OpenEXR images.
can be viewed with the command line utility 'exrheader'
Modified Paths:
--------------
branches/render25/source/blender/imbuf/intern/IMB_metadata.h
branches/render25/source/blender/imbuf/intern/openexr/openexr_api.cpp
Modified: branches/render25/source/blender/imbuf/intern/IMB_metadata.h
===================================================================
--- branches/render25/source/blender/imbuf/intern/IMB_metadata.h 2010-05-06 03:49:26 UTC (rev 28606)
+++ branches/render25/source/blender/imbuf/intern/IMB_metadata.h 2010-05-06 07:10:56 UTC (rev 28607)
@@ -30,10 +30,6 @@
#ifndef _IMB_IMGINFO_H
#define _IMB_IMGINFO_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
struct ImBuf;
typedef struct ImMetaData {
@@ -82,4 +78,3 @@
int IMB_metadata_del_field(struct ImBuf *img, const char *key);
#endif /* _IMB_IMGINFO_H */
-
Modified: branches/render25/source/blender/imbuf/intern/openexr/openexr_api.cpp
===================================================================
--- branches/render25/source/blender/imbuf/intern/openexr/openexr_api.cpp 2010-05-06 03:49:26 UTC (rev 28606)
+++ branches/render25/source/blender/imbuf/intern/openexr/openexr_api.cpp 2010-05-06 07:10:56 UTC (rev 28607)
@@ -50,6 +50,7 @@
#include "IMB_imbuf_types.h"
#include "IMB_imbuf.h"
#include "IMB_allocimbuf.h"
+#include "IMB_metadata.h"
#include "openexr_multi.h"
}
@@ -177,6 +178,14 @@
}
}
+static void openexr_header_metadata(Header *header, struct ImBuf *ibuf)
+{
+ ImMetaData* info;
+
+ for(info= ibuf->metadata; info; info= info->next)
+ header->insert(info->key, StringAttribute(info->value));
+}
+
static int imb_save_openexr_half(struct ImBuf *ibuf, char *name, int flags)
{
int channels = ibuf->channels;
@@ -189,6 +198,7 @@
Header header (width, height);
openexr_header_compression(&header, ibuf->ftype & OPENEXR_COMPRESS);
+ openexr_header_metadata(&header, ibuf);
header.channels().insert ("R", Channel (HALF));
header.channels().insert ("G", Channel (HALF));
@@ -281,6 +291,7 @@
Header header (width, height);
openexr_header_compression(&header, ibuf->ftype & OPENEXR_COMPRESS);
+ openexr_header_metadata(&header, ibuf);
header.channels().insert ("R", Channel (FLOAT));
header.channels().insert ("G", Channel (FLOAT));
@@ -435,6 +446,7 @@
BLI_addtail(&data->channels, echan);
}
+/* only used for writing temp. render results (not image files) */
void IMB_exr_begin_write(void *handle, char *filename, int width, int height, int compress)
{
ExrHandle *data= (ExrHandle *)handle;
@@ -448,6 +460,7 @@
header.channels().insert (echan->name, Channel (FLOAT));
openexr_header_compression(&header, compress);
+ // openexr_header_metadata(&header, ibuf); // no imbuf. cant write
/* header.lineOrder() = DECREASING_Y; this crashes in windows for file read! */
header.insert ("BlenderMultiChannel", StringAttribute ("Blender V2.43 and newer"));
More information about the Bf-blender-cvs
mailing list