[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31742] trunk/blender: rna api
Campbell Barton
ideasman42 at gmail.com
Fri Sep 3 16:53:54 CEST 2010
Revision: 31742
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31742
Author: campbellbarton
Date: 2010-09-03 16:53:54 +0200 (Fri, 03 Sep 2010)
Log Message:
-----------
rna api
- move: material.add_texture(tex, coords, mapto) --> material.texture_slots.add()
- added material.texture_slots.create(index), material.texture_slots.clear(index)
- texture slot functions also work for lamp and world now.
Other minor changes
- allow rna functions to set FUNC_NO_SELF and FUNC_USE_SELF_ID at once.
- [#23317] Changed some operators' RNA to accept lengths, a modification I made to this patch made it not work as intended, removed this edit so unit buttons appier in the UI for certain operators.
- Sphinx doc gen, 2 columns rather then 3, didnt quite fit in some cases.
Modified Paths:
--------------
trunk/blender/release/scripts/op/io_scene_3ds/import_3ds.py
trunk/blender/source/blender/blenkernel/BKE_texture.h
trunk/blender/source/blender/blenkernel/intern/texture.c
trunk/blender/source/blender/makesrna/intern/makesrna.c
trunk/blender/source/blender/makesrna/intern/rna_define.c
trunk/blender/source/blender/makesrna/intern/rna_internal.h
trunk/blender/source/blender/makesrna/intern/rna_lamp.c
trunk/blender/source/blender/makesrna/intern/rna_material.c
trunk/blender/source/blender/makesrna/intern/rna_material_api.c
trunk/blender/source/blender/makesrna/intern/rna_world.c
trunk/blender/source/blender/python/doc/sphinx_doc_gen.py
Modified: trunk/blender/release/scripts/op/io_scene_3ds/import_3ds.py
===================================================================
--- trunk/blender/release/scripts/op/io_scene_3ds/import_3ds.py 2010-09-03 13:02:35 UTC (rev 31741)
+++ trunk/blender/release/scripts/op/io_scene_3ds/import_3ds.py 2010-09-03 14:53:54 UTC (rev 31742)
@@ -183,9 +183,21 @@
if image:
texture.image = image
- material.add_texture(texture, "UV", mapto)
+ mtex = material.texture_slots.add()
+ mtex.texture = texture
+ mtex.texture_coords = 'UV'
+ mtex.use_map_color_diffuse = False
+ if mapto == 'COLOR':
+ mtex.use_map_color_diffuse = True
+ elif mapto == 'SPECULARITY':
+ mtex.use_map_specular = True
+ elif mapto == 'ALPHA':
+ mtex.use_map_alpha = True
+ elif mapto == 'NORMAL':
+ mtex.use_map_normal = True
+
def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH):
#print previous_chunk.bytes_read, 'BYTES READ'
contextObName = None
Modified: trunk/blender/source/blender/blenkernel/BKE_texture.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_texture.h 2010-09-03 13:02:35 UTC (rev 31741)
+++ trunk/blender/source/blender/blenkernel/BKE_texture.h 2010-09-03 14:53:54 UTC (rev 31742)
@@ -70,6 +70,7 @@
void tex_set_type(struct Tex *tex, int type);
void default_mtex(struct MTex *mtex);
struct MTex *add_mtex(void);
+struct MTex *add_mtex_id(struct ID *id, int slot);
struct Tex *copy_texture(struct Tex *tex);
void make_local_texture(struct Tex *tex);
void autotexname(struct Tex *tex);
Modified: trunk/blender/source/blender/blenkernel/intern/texture.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/texture.c 2010-09-03 13:02:35 UTC (rev 31741)
+++ trunk/blender/source/blender/blenkernel/intern/texture.c 2010-09-03 14:53:54 UTC (rev 31742)
@@ -689,6 +689,49 @@
return mtex;
}
+/* slot -1 for first free ID */
+MTex *add_mtex_id(ID *id, int slot)
+{
+ MTex **mtex_ar;
+ short act;
+
+ give_active_mtex(id, &mtex_ar, &act);
+
+ if(mtex_ar==NULL) {
+ return NULL;
+ }
+
+ if(slot==-1) {
+ /* find first free */
+ int i;
+ for (i= 0; i < MAX_MTEX; i++) {
+ if (!mtex_ar[i]) {
+ slot= i;
+ break;
+ }
+ }
+ if(slot == -1) {
+ return NULL;
+ }
+ }
+ else {
+ /* make sure slot is valid */
+ if(slot < 0 || slot >= MAX_MTEX) {
+ return NULL;
+ }
+ }
+
+ if (mtex_ar[slot]) {
+ id_us_min((ID *)mtex_ar[slot]->tex);
+ MEM_freeN(mtex_ar[slot]);
+ mtex_ar[slot]= NULL;
+ }
+
+ mtex_ar[slot]= add_mtex();
+
+ return mtex_ar[slot];
+}
+
/* ------------------------------------------------------------------------- */
Tex *copy_texture(Tex *tex)
Modified: trunk/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/makesrna.c 2010-09-03 13:02:35 UTC (rev 31741)
+++ trunk/blender/source/blender/makesrna/intern/makesrna.c 2010-09-03 14:53:54 UTC (rev 31742)
@@ -1413,10 +1413,12 @@
fprintf(f, "\n{\n");
/* variable definitions */
+
+ if(func->flag & FUNC_USE_SELF_ID) {
+ fprintf(f, "\tstruct ID *_selfid;\n");
+ }
+
if((func->flag & FUNC_NO_SELF)==0) {
- if(func->flag & FUNC_USE_SELF_ID)
- fprintf(f, "\tstruct ID *_selfid;\n");
-
if(dsrna->dnaname) fprintf(f, "\tstruct %s *_self;\n", dsrna->dnaname);
else fprintf(f, "\tstruct %s *_self;\n", srna->identifier);
}
@@ -1455,10 +1457,11 @@
fprintf(f, "\t\n");
/* assign self */
+ if(func->flag & FUNC_USE_SELF_ID) {
+ fprintf(f, "\t_selfid= (struct ID*)_ptr->id.data;\n");
+ }
+
if((func->flag & FUNC_NO_SELF)==0) {
- if(func->flag & FUNC_USE_SELF_ID)
- fprintf(f, "\t_selfid= (struct ID*)_ptr->id.data;\n");
-
if(dsrna->dnaname) fprintf(f, "\t_self= (struct %s *)_ptr->data;\n", dsrna->dnaname);
else fprintf(f, "\t_self= (struct %s *)_ptr->data;\n", srna->identifier);
}
@@ -1521,10 +1524,13 @@
first= 1;
+ if(func->flag & FUNC_USE_SELF_ID) {
+ fprintf(f, "_selfid");
+ first= 0;
+ }
+
if((func->flag & FUNC_NO_SELF)==0) {
- if(func->flag & FUNC_USE_SELF_ID)
- fprintf(f, "_selfid, ");
-
+ if(!first) fprintf(f, ", ");
fprintf(f, "_self");
first= 0;
}
@@ -1826,10 +1832,13 @@
first= 1;
/* self, context and reports parameters */
+ if(func->flag & FUNC_USE_SELF_ID) {
+ fprintf(f, "struct ID *_selfid");
+ first= 0;
+ }
+
if((func->flag & FUNC_NO_SELF)==0) {
- if(func->flag & FUNC_USE_SELF_ID)
- fprintf(f, "struct ID *_selfid, ");
-
+ if(!first) fprintf(f, ", ");
if(dsrna->dnaname) fprintf(f, "struct %s *_self", dsrna->dnaname);
else fprintf(f, "struct %s *_self", srna->identifier);
first= 0;
Modified: trunk/blender/source/blender/makesrna/intern/rna_define.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_define.c 2010-09-03 13:02:35 UTC (rev 31741)
+++ trunk/blender/source/blender/makesrna/intern/rna_define.c 2010-09-03 14:53:54 UTC (rev 31742)
@@ -2207,7 +2207,7 @@
PropertyRNA *prop;
prop= RNA_def_float_vector(cont_, identifier, len, default_value, hardmin, hardmax, ui_name, ui_description, softmin, softmax);
- prop->subtype = PROP_XYZ;
+ prop->subtype = PROP_XYZ_LENGTH;
return prop;
}
Modified: trunk/blender/source/blender/makesrna/intern/rna_internal.h
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_internal.h 2010-09-03 13:02:35 UTC (rev 31741)
+++ trunk/blender/source/blender/makesrna/intern/rna_internal.h 2010-09-03 14:53:54 UTC (rev 31742)
@@ -182,7 +182,7 @@
void rna_def_motionpath_common(struct StructRNA *srna);
void rna_def_texmat_common(struct StructRNA *srna, const char *texspace_editable);
-void rna_def_mtex_common(struct StructRNA *srna, const char *begin, const char *activeget, const char *activeset, const char *structname, const char *update);
+void rna_def_mtex_common(struct BlenderRNA *brna, struct StructRNA *srna, const char *begin, const char *activeget, const char *activeset, const char *structname, const char *structname_slots, const char *update);
void rna_def_render_layer_common(struct StructRNA *srna, int scene);
void rna_ID_name_get(struct PointerRNA *ptr, char *value);
@@ -352,6 +352,10 @@
int rna_parameter_size(struct PropertyRNA *parm);
int rna_parameter_size_alloc(struct PropertyRNA *parm);
+// XXX, these should not need to be defined here~!
+struct MTex *rna_mtex_texture_slots_add(struct ID *self, struct ReportList *reports);
+struct MTex *rna_mtex_texture_slots_create(struct ID *self, struct ReportList *reports, int index);
+void rna_mtex_texture_slots_clear(struct ID *self, struct ReportList *reports, int index);
#endif /* RNA_INTERNAL_H */
Modified: trunk/blender/source/blender/makesrna/intern/rna_lamp.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_lamp.c 2010-09-03 13:02:35 UTC (rev 31741)
+++ trunk/blender/source/blender/makesrna/intern/rna_lamp.c 2010-09-03 14:53:54 UTC (rev 31742)
@@ -386,8 +386,8 @@
rna_def_animdata_common(srna);
/* textures */
- rna_def_mtex_common(srna, "rna_Lamp_mtex_begin", "rna_Lamp_active_texture_get",
- "rna_Lamp_active_texture_set", "LampTextureSlot", "rna_Lamp_update");
+ rna_def_mtex_common(brna, srna, "rna_Lamp_mtex_begin", "rna_Lamp_active_texture_get",
+ "rna_Lamp_active_texture_set", "LampTextureSlot", "LampTextureSlots", "rna_Lamp_update");
}
static void rna_def_lamp_falloff(StructRNA *srna)
Modified: trunk/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_material.c 2010-09-03 13:02:35 UTC (rev 31741)
+++ trunk/blender/source/blender/makesrna/intern/rna_material.c 2010-09-03 14:53:54 UTC (rev 31742)
@@ -276,7 +276,55 @@
return item;
}
+MTex *rna_mtex_texture_slots_add(ID *self_id, ReportList *reports)
+{
+ MTex *mtex= add_mtex_id(self_id, -1);
+ if (mtex == NULL) {
+ BKE_reportf(reports, RPT_ERROR, "maximum number of textures added %d", MAX_MTEX);
+ return NULL;
+ }
+ return mtex;
+}
+
+MTex *rna_mtex_texture_slots_create(ID *self_id, ReportList *reports, int index)
+{
+ MTex *mtex;
+
+ if(index < 0 || index >= MAX_MTEX) {
+ BKE_reportf(reports, RPT_ERROR, "index %d is invalid", index);
+ return NULL;
+ }
+
+ mtex= add_mtex_id(self_id, index);
+
+ return mtex;
+}
+
+void rna_mtex_texture_slots_clear(ID *self_id, ReportList *reports, int index)
+{
+ MTex **mtex_ar;
+ short act;
+
+ give_active_mtex(self_id, &mtex_ar, &act);
+
+ if (mtex_ar == NULL) {
+ BKE_report(reports, RPT_ERROR, "mtex not found for this type");
+ return;
+ }
+
+ if(index < 0 || index >= MAX_MTEX) {
+ BKE_reportf(reports, RPT_ERROR, "index %d is invalid", index);
+ return;
+ }
+
+ if(mtex_ar[index]) {
+ id_us_min((ID *)mtex_ar[index]->tex);
+ MEM_freeN(mtex_ar[index]);
+ mtex_ar[index]= NULL;
+ }
+}
+
#else
static void rna_def_material_mtex(BlenderRNA *brna)
@@ -1741,9 +1789,9 @@
/* common */
rna_def_animdata_common(srna);
- rna_def_mtex_common(srna, "rna_Material_mtex_begin", "rna_Material_active_texture_get",
- "rna_Material_active_texture_set", "MaterialTextureSlot", "rna_Material_update");
-
+ rna_def_mtex_common(brna, srna, "rna_Material_mtex_begin", "rna_Material_active_texture_get",
+ "rna_Material_active_texture_set", "MaterialTextureSlot", "MaterialTextureSlots", "rna_Material_update");
+
/* only material has this one */
prop= RNA_def_property(srna, "use_textures", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "septex", 1);
@@ -1768,8 +1816,44 @@
RNA_api_material(srna);
}
-void rna_def_mtex_common(StructRNA *srna, const char *begin, const char *activeget, const char *activeset, const char *structname, const char *update)
+
+/* curve.splines */
+static void rna_def_texture_slots(BlenderRNA *brna, PropertyRNA *cprop, const char *structname, const char *structname_slots)
{
+ StructRNA *srna;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, structname_slots);
+ srna= RNA_def_struct(brna, structname_slots, NULL);
+ RNA_def_struct_sdna(srna, "ID");
+ RNA_def_struct_ui_text(srna, "Texture Slots", "Collection of texture slots");
+
+ /* functions */
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list