All pastes #830555 Raw Edit

Mine

public text v1 · immutable
#830555 ·published 2007-12-24 01:21 UTC
rendered paste body
Index: source/blender/python/api2_2x/Image.c
===================================================================
--- source/blender/python/api2_2x/Image.c       (revision 12980)
+++ source/blender/python/api2_2x/Image.c       (working copy)
@@ -1,5 +1,5 @@
 /* 
- * $Id: Image.c 11241 2007-07-12 11:51:21Z campbellbarton $
+ * $Id$
  *
  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
  *
@@ -98,6 +98,7 @@
 static PyObject *Image_getStart( BPy_Image * self );
 static PyObject *Image_getEnd( BPy_Image * self );
 static PyObject *Image_getSpeed( BPy_Image * self );
+static PyObject *Image_getStamp( BPy_Image * self, PyObject * args );
 static int Image_setFilename( BPy_Image * self, PyObject * args );
 static PyObject *Image_oldsetFilename( BPy_Image * self, PyObject * args );
 static PyObject *Image_setXRep( BPy_Image * self, PyObject * value );
@@ -155,6 +156,8 @@
         "() - Return Image object end frame."},
        {"getSpeed", ( PyCFunction ) Image_getSpeed, METH_NOARGS,
         "() - Return Image object speed (fps)."},
+       {"getStamp", ( PyCFunction ) Image_getStamp, METH_VARARGS,
+        "(str) - Return Image stamp info"},
        {"getBindCode", ( PyCFunction ) Image_getBindCode, METH_NOARGS,
         "() - Return Image object's bind code value"},
        {"reload", ( PyCFunction ) Image_reload, METH_NOARGS,
@@ -851,6 +854,31 @@
        return PyInt_FromLong( self->image->animspeed );
 }
 
+static PyObject *Image_getStamp( BPy_Image * self, PyObject * value )
+{
+       PyObject *attr;
+       ImBuf *ibuf;
+       char *key;
+       char field[512];
+
+       key = PyString_AsString(value);
+       if( !key )
+               return ( EXPP_ReturnPyObjError ( PyExc_RuntimeError,
+                       "expected a string argument" ) );
+
+       ibuf = BKE_image_get_ibuf (self->image, NULL);
+       if (IMB_imginfo_get_field (ibuf, key, field, 511))
+               attr = PyString_FromString("No stamp info available");
+       else
+               attr = PyString_FromString(field);
+
+       if (attr)
+               return (attr);
+
+       return ( EXPP_ReturnPyObjError (PyExc_RuntimeError,
+                       "couldn't get Image.img_info attribute") );
+}
+
 static PyObject *Image_getBindCode( BPy_Image * self )
 {
        return PyLong_FromUnsignedLong( self->image->bindcode );
Index: source/blender/imbuf/intern/IMB_imginfo.h
===================================================================
--- source/blender/imbuf/intern/IMB_imginfo.h   (revision 12980)
+++ source/blender/imbuf/intern/IMB_imginfo.h   (working copy)
@@ -55,16 +55,6 @@
 /* free blender ImgInfo struct */
 void IMB_imginfo_free(struct ImBuf* img);
 
-/** read the field from the image info into the field 
- *  @param img - the ImBuf that contains the image data
- *  @param key - the key of the field
- *  @param value - the data in the field, first one found with key is returned, 
-                  memory has to be allocated by user.
- *  @param len - length of value buffer allocated by user.
- *  @return    - 1 (true) if ImageInfo present and value for the key found, 0 (false) otherwise
- */
-int IMB_imginfo_get_field(struct ImBuf* img, const char* key, char* value, int len);
-
 /** set user data in the ImgInfo struct, which has to be allocated with IMB_imginfo_create
  *  before calling this function.
  *  @param img - the ImBuf that contains the image data
Index: source/blender/imbuf/IMB_imbuf.h
===================================================================
--- source/blender/imbuf/IMB_imbuf.h    (revision 12980)
+++ source/blender/imbuf/IMB_imbuf.h    (working copy)
@@ -550,6 +550,16 @@
 /* this should not be here, really, we needed it for operating on render data, IMB_rectfill_area calls it */
 void buf_rectfill_area(unsigned char *rect, float *rectf, int width, int height, float *col, int x1, int y1, int x2, int y2);
 
+/** read the field from the image info into the field 
+ *  @param img - the ImBuf that contains the image data
+ *  @param key - the key of the field
+ *  @param value - the data in the field, first one found with key is returned, 
+                  memory has to be allocated by user.
+ *  @param len - length of value buffer allocated by user.
+ *  @return    - 1 (true) if ImageInfo present and value for the key found, 0 (false) otherwise
+ */
+int IMB_imginfo_get_field(struct ImBuf* img, const char* key, char* value, int len);
+
 /* defined in imginfo.c */
 int IMB_imginfo_change_field(struct ImBuf *img, const char *key, const char *field);