[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19423] branches/blender2.5/blender/source /blender: * sequencer transform needs t-> data not to be freed by postTrans so special_aftertrans_update can use it.

Campbell Barton ideasman42 at gmail.com
Fri Mar 27 07:06:11 CET 2009


Revision: 19423
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19423
Author:   campbellbarton
Date:     2009-03-27 07:06:11 +0100 (Fri, 27 Mar 2009)

Log Message:
-----------
* sequencer transform needs t->data not to be freed by postTrans so special_aftertrans_update can use it.
* text header needs a static char* so text is not rendered as gibberish. (until labels own their own strings)
* epy_doc_gen.py - write out a graphviz representation of the data api.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/space_text/text_header.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
    branches/blender2.5/blender/source/blender/python/epy_doc_gen.py

Modified: branches/blender2.5/blender/source/blender/editors/space_text/text_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_text/text_header.c	2009-03-27 06:05:49 UTC (rev 19422)
+++ branches/blender2.5/blender/source/blender/editors/space_text/text_header.c	2009-03-27 06:06:11 UTC (rev 19423)
@@ -388,7 +388,8 @@
 
 	/* file info */
 	if(text) {
-		char fname[HEADER_PATH_MAX], headtxt[HEADER_PATH_MAX+17];
+		char fname[HEADER_PATH_MAX];
+		static char headtxt[HEADER_PATH_MAX+17];
 		int len;
 
 		if(text->name) {

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c	2009-03-27 06:05:49 UTC (rev 19422)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c	2009-03-27 06:06:11 UTC (rev 19423)
@@ -4386,7 +4386,6 @@
 			ListBase *seqbasep= ed->seqbasep;
 			int a;
 			TransData *td= t->data;
-			TransData2D *td2d= t->data2d;
 			TransDataSeq *tdsq= NULL;
 			Sequence *seq;
 
@@ -4398,7 +4397,7 @@
 			Sequence *seq_prev= NULL;
 
 			/* flush to 2d vector from internally used 3d vector */
-			for(a=0; a<t->total; a++, td++, td2d++) {
+			for(a=0; a<t->total; a++, td++) {
 
 				tdsq= (TransDataSeq *)td->extra;
 				seq= tdsq->seq;
@@ -4429,7 +4428,8 @@
 		
 		if (t->customData)
 			MEM_freeN(t->customData);
-
+		if (t->data)
+			MEM_freeN(t->data); // XXX postTrans useually does this
 	}
 	else if (t->spacetype == SPACE_ACTION) {
 		SpaceAction *saction= (SpaceAction *)t->sa->spacedata.first;

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c	2009-03-27 06:05:49 UTC (rev 19422)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c	2009-03-27 06:06:11 UTC (rev 19423)
@@ -841,7 +841,7 @@
 	}
 	
 	/* postTrans can be called when nothing is selected, so data is NULL already */
-	if (t->data) {
+	if (t->data && (t->spacetype != SPACE_SEQ)) { // XXX SEQ Exception is needed because of special_aftertrans_update using t->data
 		int a;
 
 		/* since ipokeys are optional on objects, we mallocced them per trans-data */

Modified: branches/blender2.5/blender/source/blender/python/epy_doc_gen.py
===================================================================
--- branches/blender2.5/blender/source/blender/python/epy_doc_gen.py	2009-03-27 06:05:49 UTC (rev 19422)
+++ branches/blender2.5/blender/source/blender/python/epy_doc_gen.py	2009-03-27 06:06:11 UTC (rev 19423)
@@ -246,10 +246,7 @@
 	for rna_refs in rna_references_dict.values():
 		rna_refs.sort()
 	
-	structs = [data[2] for data in structs]
-	
-	for rna_struct in structs:
-		# print(type(rna_struct))
+	for (rna_base, identifier, rna_struct) in structs:
 		if rna_struct.nested:
 			continue
 		
@@ -261,6 +258,70 @@
 	
 	# # We could also just run....
 	# os.system('epydoc source/blender/python/doc/rna.py -o ./source/blender/python/doc/html -v')
+	
+	
+	# Write graphviz
+	out= open(target_path.replace('.py', '.dot'), 'w')
+	out.write('digraph "rna data api" {\n')
+	out.write('\tnode [style=filled, shape = "box"];\n')
+	out.write('\toverlap=false;\n')
+	out.write('\trankdir = LR;\n')
+	out.write('\tsplines=true;\n')
+	out.write('\tratio=auto;\n')
+	
+	
+	
+	out.write('\tsize="10,10"\n')
+	#out.write('\tpage="8.5,11"\n')
+	#out.write('\tcenter=""\n')
+	
+	def isop(rna_struct):
+		return '_OT_' in rna_struct.identifier
+	
+	
+	for (rna_base, identifier, rna_struct) in structs:
+		if isop(rna_struct):
+			continue
+		
+		base = rna_struct.base
+		
+		
+		out.write('\t"%s";\n' % identifier)
+	
+	for (rna_base, identifier, rna_struct) in structs:
+		
+		if isop(rna_struct):
+			continue
+			
+		base = rna_struct.base
+		
+		if base and not isop(base):
+			out.write('\t"%s" -> "%s" [label="(base)" weight=1.0];\n' % (base.identifier, identifier))
+		
+		nested = rna_struct.nested
+		if nested and not isop(nested):
+			out.write('\t"%s" -> "%s" [label="(nested)"  weight=1.0];\n' % (nested.identifier, identifier))
+		
+		
+		
+		rna_refs= rna_references_dict[identifier]
+		
+		for rna_ref_string in rna_refs:
+			
+			if '_OT_' in rna_ref_string:
+				continue
+			
+			ref = rna_ref_string.split('.')[-2]
+			out.write('\t"%s" -> "%s" [label="%s" weight=0.01];\n' % (ref, identifier, rna_ref_string))
+		
+		
+	
+	out.write('}\n')
+	out.close()
+	
+	# # We could also just run....
+	# os.system('dot source/blender/python/doc/rna.dot -Tsvg -o ./source/blender/python/doc/rna.svg')
+	
 
 def op2epy(target_path):
 	out = open(target_path, 'w')





More information about the Bf-blender-cvs mailing list