Python API
authorKen Hughes <khughes@pacific.edu>
Sun, 11 Mar 2007 18:20:55 +0000 (18:20 +0000)
committerKen Hughes <khughes@pacific.edu>
Sun, 11 Mar 2007 18:20:55 +0000 (18:20 +0000)
----------
Fixed some broken/disabled Texture attributes after Image refactor.
Added texture.autoRefresh attribute.

source/blender/python/api2_2x/Texture.c
source/blender/python/api2_2x/doc/Texture.py

index ffa61d3794f8ff92cc57c91487f354b33cc85c55..843c0dbb24d0fc13bb053f539665f3c53ad6297d 100644 (file)
 #define EXPP_TEX_ANIMMONSTART_MAX           ((int)MAXFRAMEF)
 #define EXPP_TEX_ANIMMONDUR_MIN             0
 #define EXPP_TEX_ANIMMONDUR_MAX             250
-#define EXPP_TEX_ANIMOFFSET_MIN             -((int)(MAXFRAMEF)/2)
-#define EXPP_TEX_ANIMOFFSET_MAX             ((int)(MAXFRAMEF)/2)
-#define EXPP_TEX_ANIMSTART_MIN              0
-#define EXPP_TEX_ANIMSTART_MAX              ((int)(MAXFRAMEF)/2)
+#define EXPP_TEX_ANIMOFFSET_MIN             -((int)MAXFRAMEF)
+#define EXPP_TEX_ANIMOFFSET_MAX             ((int)MAXFRAMEF)
+#define EXPP_TEX_ANIMSTART_MIN              1
+#define EXPP_TEX_ANIMSTART_MAX              ((int)MAXFRAMEF)
 #define EXPP_TEX_FIEIMA_MIN                 1
 #define EXPP_TEX_FIEIMA_MAX                 200
 #define EXPP_TEX_NOISEDEPTH_MIN             0
@@ -485,9 +485,14 @@ SETFUNC( setWeight3 );
 SETFUNC( setWeight4 );
 
 static PyObject *Texture_getImageFlags( BPy_Texture *self, void *type );
+static PyObject *Texture_getIUserFlags( BPy_Texture *self, void *type );
+static PyObject *Texture_getIUserCyclic( BPy_Texture *self );
 static PyObject *Texture_getNoiseBasis2( BPy_Texture *self, void *type );
 static int Texture_setImageFlags( BPy_Texture *self, PyObject *args,
                                                                void *type );
+static int Texture_setIUserFlags( BPy_Texture *self, PyObject *args,
+                                                               void *type );
+static int Texture_setIUserCyclic( BPy_Texture *self, PyObject *args );
 static int Texture_setNoiseBasis2( BPy_Texture *self, PyObject *args,
                                                                void *type );
                                                                
@@ -730,16 +735,20 @@ static PyGetSetDef BPy_Texture_getseters[] = {
         (getter)Texture_getImageFlags, (setter)Texture_setImageFlags,
         "X/Y flip for rendering enabled ('ImageFlags')",
         (void *)TEX_IMAROT},
+       {"autoRefresh",
+        (getter)Texture_getIUserFlags, (setter)Texture_setIUserFlags,
+        "Refresh image on frame changes enabled",
+        (void *)IMA_ANIM_ALWAYS},
+       {"cyclic",
+        (getter)Texture_getIUserCyclic, (setter)Texture_setIUserCyclic,
+        "Cycling of animated frames enabled",
+        NULL},
 #if 0
        /* disabled, moved to image */
        {"fields",
         (getter)Texture_getImageFlags, (setter)Texture_setImageFlags,
         "Use of image's fields enabled ('ImageFlags')",
         (void *)TEX_FIELDS},
-       {"cyclic",
-        (getter)Texture_getImageFlags, (setter)Texture_setImageFlags,
-        "Looping of animated frames enabled ('ImageFlags')",
-        (void *)TEX_ANIMCYCLIC},
        {"movie",
         (getter)Texture_getImageFlags, (setter)Texture_setImageFlags,
         "Movie frames as images enabled ('ImageFlags')",
@@ -1412,6 +1421,15 @@ static int Texture_setAnimFrames( BPy_Texture * self, PyObject * value )
                                                                EXPP_TEX_ANIMFRAME_MAX, 'h' );
 }
 
+static int Texture_setIUserCyclic( BPy_Texture * self, PyObject * value )
+{
+       if( PyObject_IsTrue( value ) )
+               self->texture->iuser.cycl = 1;
+       else
+               self->texture->iuser.cycl = 0;
+       return 0;
+}
+
 #if 0
 /* this was stupid to begin with! (ton) */
 static int Texture_setAnimLength( BPy_Texture * self, PyObject * value )
@@ -1507,7 +1525,7 @@ static int Texture_setIntExtend( BPy_Texture * self, PyObject * value )
 static int Texture_setFieldsPerImage( BPy_Texture * self,
                                            PyObject * value )
 {
-       return EXPP_setIValueClamped ( value, &self->texture->fie_ima,
+       return EXPP_setIValueClamped ( value, &self->texture->iuser.fie_ima,
                                                                EXPP_TEX_FIEIMA_MIN,
                                                                EXPP_TEX_FIEIMA_MAX, 'h' );
 
@@ -1619,6 +1637,16 @@ static int Texture_setImageFlags( BPy_Texture * self, PyObject * value,
        return 0;
 }
 
+static int Texture_setIUserFlags( BPy_Texture * self, PyObject * value,
+                                                                       void *flag )
+{
+       if( PyObject_IsTrue(value) )
+               self->texture->iuser.flag |= (int)flag;
+       else
+               self->texture->iuser.flag &= ~(int)flag;
+       return 0;
+}
+
 static int Texture_setNoiseDepth( BPy_Texture * self, PyObject * value )
 {
        short max = EXPP_TEX_NOISEDEPTH_MAX;
@@ -1970,7 +1998,7 @@ static int Texture_setIpo( BPy_Texture * self, PyObject * value )
 
 static PyObject *Texture_getAnimFrames( BPy_Texture *self )
 {
-       PyObject *attr = PyInt_FromLong( self->texture->frames );
+       PyObject *attr = PyInt_FromLong( self->texture->iuser.frames );
 
        if( !attr )
                return EXPP_ReturnPyObjError( PyExc_RuntimeError,
@@ -1979,6 +2007,14 @@ static PyObject *Texture_getAnimFrames( BPy_Texture *self )
        return attr;
 }
 
+static PyObject *Texture_getIUserCyclic( BPy_Texture *self )
+{
+       if( self->texture->iuser.cycl )
+               Py_RETURN_TRUE;
+       else
+               Py_RETURN_FALSE;
+}
+
 #if 0
 /* disabled. this option was too stupid! (ton) */
 static PyObject *Texture_getAnimLength( BPy_Texture *self )
@@ -2183,6 +2219,14 @@ static PyObject *Texture_getImageFlags( BPy_Texture *self, void *type )
        return attr;
 }
 
+static PyObject *Texture_getIUserFlags( BPy_Texture *self, void *flag )
+{
+       if( self->texture->iuser.flag & (int)flag )
+               Py_RETURN_TRUE;
+       else
+               Py_RETURN_FALSE;
+}
+
 static PyObject *Texture_getIScale( BPy_Texture *self )
 {
        PyObject *attr = PyFloat_FromDouble( self->texture->ns_outscale );
index 01a0d5c89082f35b78cfe6ec778776d1f48f2ad4..9b1c3e0d7d3aa340e9e9abce11650f56383c5a39 100644 (file)
@@ -254,18 +254,13 @@ class Texture:
                specific texture types.
 
        @ivar animFrames:  Number of frames of a movie to use.
-       Value is clamped to the range [0,30000].
+       Value is clamped to the range [0,300000].
        @type animFrames:  int
-       @ivar animLength:  Number of frames of a movie to use (0 for all).
-       Value is clamped to the range [0,9000].
-       @type animLength:  int
-       @ivar animMontage: Montage mode, start frames and durations. Example: C{( (fra1,dur1), (fra2,dur2), (fra3,dur3), (fra4,dur4) )}.
-       @type animMontage:  tuple of 4 (int,int)
        @ivar animOffset:  Offsets the number of the first movie frame to use.
-       Value is clamped to the range [-9000,9000].
+       Value is clamped to the range [-300000,300000].
        @type animOffset:  int
        @ivar animStart:  Starting frame of the movie to use.
-       Value is clamped to the range [1,9000].
+       Value is clamped to the range [1,300000].
        @type animStart:  int
        @ivar anti:  Image anti-aliasing enabled.  Also see L{ImageFlags}.
        @type anti:  int
@@ -280,7 +275,7 @@ class Texture:
        @ivar crop:  Sets the cropping extents (for image textures).
        @type crop:  tuple of 4 ints
        @ivar cyclic:  Looping of animated frames enabled. Also see L{ImageFlags}.
-       @type cyclic:  int
+       @type cyclic:  boolean
        @ivar distAmnt:  Amount of distortion (for distorted noise textures).
        Value is clamped to the range [0.0,10.0].
        @type distAmnt:  float
@@ -385,6 +380,8 @@ class Texture:
        each color a list of 5 floats [0 - 1], [r,g,b,a,pos].
        The colorband can have between 1 and 31 colors.
        @type colorband:  list
+       @ivar autoRefresh: Refresh image on frame changes enabled.
+       @type autoRefresh:  boolean
        """
        
        def getExtend():