Page MenuHome

patch-2621.txt

Authored By
Ken Hughes (khughes)
Nov 13 2013, 1:02 PM
Size
8 KB
Subscribers
None

patch-2621.txt

Index: blender/source/blender/python/api2_2x/Material.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/python/api2_2x/Material.c,v
retrieving revision 1.32
diff -u -u -r1.32 Material.c
--- blender/source/blender/python/api2_2x/Material.c 21 Apr 2005 19:44:52 -0000 1.32
+++ blender/source/blender/python/api2_2x/Material.c 26 May 2005 05:57:19 -0000
@@ -1363,89 +1363,109 @@
* haloShaded, haloFlare */
static PyObject *Material_setMode( BPy_Material * self, PyObject * args )
{
- int i, flag = 0;
+ unsigned int i, flag = 0, ok = 0;
+
char *m[28] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL
};
- if( !PyArg_ParseTuple( args, "|ssssssssssssssssssssssssssss",
+ /*
+ * check for a single integer argument; do a quick check for now
+ * that the value is not larger than double the highest flag bit
+ */
+
+ if ( PySequence_Size( args ) > 0
+ && PyInt_Check ( PySequence_Fast_GET_ITEM ( args , 0 ) )
+ && PyArg_ParseTuple( args, "i", &flag )
+ && flag < (EXPP_MAT_MODE_RAYMIRROR >> 1) ) {
+ ok = 1;
+
+ /*
+ * check for either an empty argument list, or up to 22 strings
+ */
+
+ } else if( PyArg_ParseTuple( args, "|ssssssssssssssssssssssssssss",
&m[0], &m[1], &m[2], &m[3], &m[4], &m[5], &m[6],
&m[7], &m[8], &m[9], &m[10], &m[11], &m[12],
&m[13], &m[14], &m[15], &m[16], &m[17], &m[18],
&m[19], &m[20], &m[21], &m[22], &m[23], &m[24],
&m[25], &m[26], &m[27] ) ) {
+ for( i = 0; i < 28; i++ ) {
+ if( m[i] == NULL )
+ break;
+ if( strcmp( m[i], "Traceable" ) == 0 )
+ flag |= EXPP_MAT_MODE_TRACEABLE;
+ else if( strcmp( m[i], "Shadow" ) == 0 )
+ flag |= EXPP_MAT_MODE_SHADOW;
+ else if( strcmp( m[i], "Shadeless" ) == 0 )
+ flag |= EXPP_MAT_MODE_SHADELESS;
+ else if( strcmp( m[i], "Wire" ) == 0 )
+ flag |= EXPP_MAT_MODE_WIRE;
+ else if( strcmp( m[i], "VColLight" ) == 0 )
+ flag |= EXPP_MAT_MODE_VCOL_LIGHT;
+ else if( strcmp( m[i], "VColPaint" ) == 0 )
+ flag |= EXPP_MAT_MODE_VCOL_PAINT;
+ else if( strcmp( m[i], "Halo" ) == 0 )
+ flag |= EXPP_MAT_MODE_HALO;
+ else if( strcmp( m[i], "ZTransp" ) == 0 )
+ flag |= EXPP_MAT_MODE_ZTRANSP;
+ else if( strcmp( m[i], "ZInvert" ) == 0 )
+ flag |= EXPP_MAT_MODE_ZINVERT;
+ else if( strcmp( m[i], "HaloRings" ) == 0 )
+ flag |= EXPP_MAT_MODE_HALORINGS;
+ else if( strcmp( m[i], "HaloLines" ) == 0 )
+ flag |= EXPP_MAT_MODE_HALOLINES;
+ else if( strcmp( m[i], "OnlyShadow" ) == 0 )
+ flag |= EXPP_MAT_MODE_ONLYSHADOW;
+ else if( strcmp( m[i], "HaloXAlpha" ) == 0 )
+ flag |= EXPP_MAT_MODE_HALOXALPHA;
+ else if( strcmp( m[i], "HaloStar" ) == 0 )
+ flag |= EXPP_MAT_MODE_HALOSTAR;
+ else if( strcmp( m[i], "TexFace" ) == 0 )
+ flag |= EXPP_MAT_MODE_TEXFACE;
+ else if( strcmp( m[i], "HaloTex" ) == 0 )
+ flag |= EXPP_MAT_MODE_HALOTEX;
+ else if( strcmp( m[i], "HaloPuno" ) == 0 )
+ flag |= EXPP_MAT_MODE_HALOPUNO;
+ else if( strcmp( m[i], "NoMist" ) == 0 )
+ flag |= EXPP_MAT_MODE_NOMIST;
+ else if( strcmp( m[i], "HaloShaded" ) == 0 )
+ flag |= EXPP_MAT_MODE_HALOSHADE;
+ else if( strcmp( m[i], "HaloFlare" ) == 0 )
+ flag |= EXPP_MAT_MODE_HALOFLARE;
+ else if( strcmp( m[i], "Radio" ) == 0 )
+ flag |= EXPP_MAT_MODE_RADIO;
+ /* ** Mirror ** */
+ else if( strcmp( m[i], "RayMirr" ) == 0 )
+ flag |= EXPP_MAT_MODE_RAYMIRROR;
+ else if( strcmp( m[i], "ZTransp" ) == 0 )
+ flag |= EXPP_MAT_MODE_ZTRA;
+ else if( strcmp( m[i], "RayTransp" ) == 0 )
+ flag |= EXPP_MAT_MODE_RAYTRANSP;
+ else if( strcmp( m[i], "OnlyShadow" ) == 0 )
+ flag |= EXPP_MAT_MODE_ONLYSHADOW;
+ else if( strcmp( m[i], "NoMist" ) == 0 )
+ flag |= EXPP_MAT_MODE_NOMIST;
+ else if( strcmp( m[i], "Env" ) == 0 )
+ flag |= EXPP_MAT_MODE_ENV;
+ /* ** */
+ else
+ return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
+ "unknown Material mode argument" ) );
+ }
+ ok = 1;
+ }
+
+ /* if neither input method worked, then throw an exception */
+
+ if ( ok == 0 )
return ( EXPP_ReturnPyObjError
( PyExc_AttributeError,
- "expected from none to 22 string argument(s)" ) );
- }
+ "expected None, an integer, or up to 22 string argument(s)" ) );
- for( i = 0; i < 28; i++ ) {
- if( m[i] == NULL )
- break;
- if( strcmp( m[i], "Traceable" ) == 0 )
- flag |= EXPP_MAT_MODE_TRACEABLE;
- else if( strcmp( m[i], "Shadow" ) == 0 )
- flag |= EXPP_MAT_MODE_SHADOW;
- else if( strcmp( m[i], "Shadeless" ) == 0 )
- flag |= EXPP_MAT_MODE_SHADELESS;
- else if( strcmp( m[i], "Wire" ) == 0 )
- flag |= EXPP_MAT_MODE_WIRE;
- else if( strcmp( m[i], "VColLight" ) == 0 )
- flag |= EXPP_MAT_MODE_VCOL_LIGHT;
- else if( strcmp( m[i], "VColPaint" ) == 0 )
- flag |= EXPP_MAT_MODE_VCOL_PAINT;
- else if( strcmp( m[i], "Halo" ) == 0 )
- flag |= EXPP_MAT_MODE_HALO;
- else if( strcmp( m[i], "ZTransp" ) == 0 )
- flag |= EXPP_MAT_MODE_ZTRANSP;
- else if( strcmp( m[i], "ZInvert" ) == 0 )
- flag |= EXPP_MAT_MODE_ZINVERT;
- else if( strcmp( m[i], "HaloRings" ) == 0 )
- flag |= EXPP_MAT_MODE_HALORINGS;
- else if( strcmp( m[i], "Env" ) == 0 )
- flag |= EXPP_MAT_MODE_ENV;
- else if( strcmp( m[i], "HaloLines" ) == 0 )
- flag |= EXPP_MAT_MODE_HALOLINES;
- else if( strcmp( m[i], "OnlyShadow" ) == 0 )
- flag |= EXPP_MAT_MODE_ONLYSHADOW;
- else if( strcmp( m[i], "HaloXAlpha" ) == 0 )
- flag |= EXPP_MAT_MODE_HALOXALPHA;
- else if( strcmp( m[i], "HaloStar" ) == 0 )
- flag |= EXPP_MAT_MODE_HALOSTAR;
- else if( strcmp( m[i], "TexFace" ) == 0 )
- flag |= EXPP_MAT_MODE_TEXFACE;
- else if( strcmp( m[i], "HaloTex" ) == 0 )
- flag |= EXPP_MAT_MODE_HALOTEX;
- else if( strcmp( m[i], "HaloPuno" ) == 0 )
- flag |= EXPP_MAT_MODE_HALOPUNO;
- else if( strcmp( m[i], "NoMist" ) == 0 )
- flag |= EXPP_MAT_MODE_NOMIST;
- else if( strcmp( m[i], "HaloShaded" ) == 0 )
- flag |= EXPP_MAT_MODE_HALOSHADE;
- else if( strcmp( m[i], "HaloFlare" ) == 0 )
- flag |= EXPP_MAT_MODE_HALOFLARE;
- else if( strcmp( m[i], "Radio" ) == 0 )
- flag |= EXPP_MAT_MODE_RADIO;
- /* ** Mirror ** */
- else if( strcmp( m[i], "RayMirr" ) == 0 )
- flag |= EXPP_MAT_MODE_RAYMIRROR;
- else if( strcmp( m[i], "ZTransp" ) == 0 )
- flag |= EXPP_MAT_MODE_ZTRA;
- else if( strcmp( m[i], "RayTransp" ) == 0 )
- flag |= EXPP_MAT_MODE_RAYTRANSP;
- else if( strcmp( m[i], "OnlyShadow" ) == 0 )
- flag |= EXPP_MAT_MODE_ONLYSHADOW;
- else if( strcmp( m[i], "NoMist" ) == 0 )
- flag |= EXPP_MAT_MODE_NOMIST;
- else if( strcmp( m[i], "Env" ) == 0 )
- flag |= EXPP_MAT_MODE_ENV;
- /* ** */
- else
- return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
- "unknown Material mode argument" ) );
- }
+ /* update the mode flag, return None */
self->material->mode = flag;
Index: blender/source/blender/python/api2_2x/doc/Material.py
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/python/api2_2x/doc/Material.py,v
retrieving revision 1.11
diff -u -u -r1.11 Material.py
--- blender/source/blender/python/api2_2x/doc/Material.py 21 Apr 2005 19:44:52 -0000 1.11
+++ blender/source/blender/python/api2_2x/doc/Material.py 26 May 2005 05:57:20 -0000
@@ -196,14 +196,27 @@
print "Not a halo"
"""
- def setMode(m = None, m2 = None, m3 = None, and_so_on = None,
- up_to_21 = None):
+ def setMode(param, stringN=None):
"""
- Set this Material's mode flags. Mode strings given are turned 'on'.
- Those not provided are turned 'off', so mat.setMode() -- without
- arguments -- turns off all mode flags for Material mat.
- @type m: string
- @param m: A mode flag. From 1 to 21 can be set at the same time.
+ Set this Material's mode flags. Up to 22 mode strings can be given
+ and specify the modes which are turned 'on'. Those not provided are
+ turned 'off', so mat.setMode() -- without arguments -- turns off all
+ mode flags for Material mat. Valid mode strings are "Traceable",
+ "Shadow", "Shadeless", "Wire", "VColLight", "VColPaint", "Halo",
+ "ZTransp", "ZInvert", "HaloRings", "HaloLines", "OnlyShadow",
+ "HaloXAlpha", "HaloStar", "TexFace", "HaloTex", "HaloPuno", "NoMist",
+ "HaloShaded", "HaloFlare", "Radio", "RayMirr", "ZTransp", "RayTransp",
+ "OnlyShadow", "NoMist", "Env"
+
+ An integer can also be given, which directly sets the mode flag. The
+ Modes dictionary keys can (and should) be added or ORed to specify
+ which modes to turn 'on'. The value returned from getMode() can
+ also be modified and input to this method.
+
+ @type param: string, None or int
+ @param param: A mode value (int) or flag (string). Can also be None.
+ @type stringN: string
+ @param stringN: A mode flag. Up to 22 flags can be set at the same time.
"""
def getRGBCol():

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
67/cc/194f827b537adb00ad5a59a7a2d9

Event Timeline