[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31934] trunk/blender/source/blender/ blenkernel: remove inventor and vrml1 support, we' re better of having these legacy formats as addons.

Campbell Barton ideasman42 at gmail.com
Wed Sep 15 07:57:50 CEST 2010


Revision: 31934
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31934
Author:   campbellbarton
Date:     2010-09-15 07:57:48 +0200 (Wed, 15 Sep 2010)

Log Message:
-----------
remove inventor and vrml1 support, we're better of having these legacy formats as addons.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_exotic.h
    trunk/blender/source/blender/blenkernel/intern/exotic.c

Modified: trunk/blender/source/blender/blenkernel/BKE_exotic.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_exotic.h	2010-09-15 04:42:01 UTC (rev 31933)
+++ trunk/blender/source/blender/blenkernel/BKE_exotic.h	2010-09-15 05:57:48 UTC (rev 31934)
@@ -34,9 +34,6 @@
 struct Mesh;
 struct Scene;
 
-void mcol_to_rgba(unsigned int col, float *r, float *g, float *b, float *a);
-unsigned int *mcol_to_vcol(struct Mesh *me); // used in py_main.c
-
 /**
  * Reads all 3D fileformats other than Blender fileformat
  * @retval 0 The file could not be read.
@@ -46,7 +43,6 @@
 int BKE_read_exotic(struct Scene *scene, char *name);
 
 void write_dxf(struct Scene *scene, char *str);
-void write_vrml(struct Scene *scene, char *str);
 void write_stl(struct Scene *scene, char *str);
 
 #endif

Modified: trunk/blender/source/blender/blenkernel/intern/exotic.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/exotic.c	2010-09-15 04:42:01 UTC (rev 31933)
+++ trunk/blender/source/blender/blenkernel/intern/exotic.c	2010-09-15 05:57:48 UTC (rev 31934)
@@ -449,1328 +449,10 @@
 #undef STLREADLINE
 #undef STLREADVERT
 
-/* ***************** INVENTOR ******************* */
-
-
-#define IV_MAXSTACK 3000000
-#define IV_MAXFIELD 10
-#define IV_MAXCOL 16
-
-static float *iv_data_stack;
-static float ivcolors[IV_MAXCOL][3];
-static Object *ivsurf;
-static ListBase ivbase;
-
-struct IvNode {
-	struct IvNode *next, *prev;
-	char *nodename;
-	char *fieldname[IV_MAXFIELD];
-	int datalen[IV_MAXFIELD];
-	float *data[IV_MAXFIELD];
-};
-
-static int iv_curcol=0;
-
-static int iv_colornumber(struct IvNode *iv)
-{
-	float *fp, fr = 0.0, fg = 0.0, fb = 0.0;
-	int a;
-	char *cp;
-	
-	/* search back to last material */
-	while(iv) {
-		if( strcmp(iv->nodename, "Material")==0) {
-			fp= iv->data[0];
-			if(fp==0) fp= iv->data[1];
-			if(fp) {
-				fr= fp[0];
-				fg= fp[1];
-				fb= fp[2];
-			}
-			break;
-		}
-		else if( strcmp(iv->nodename, "BaseColor")==0) {
-			fp= iv->data[0];
-			fr= fp[0];
-			fg= fp[1];
-			fb= fp[2];
-			break;
-		}
-		else if( strcmp(iv->nodename, "PackedColor")==0) {
-			cp= (char *)iv->data[0];
-			fr= cp[3]/255.0f;
-			fg= cp[2]/255.0f;
-			fb= cp[1]/255.0f;
-			break;
-		}
-		iv= iv->prev;
-		
-	}
-	if(iv==0) return 0;
-	if(iv->datalen[0]<3) return 0;
-	
-	for(a=0; a<iv_curcol; a++) {
-	
-		if(ivcolors[a][0]== fr)
-			if(ivcolors[a][1]== fg)
-				if(ivcolors[a][2]== fb) return a+1
-				;
-	}
-	
-	if(a>=IV_MAXCOL) a= IV_MAXCOL-1;
-	iv_curcol= a+1;
-	ivcolors[a][0]= fr;
-	ivcolors[a][1]= fg;
-	ivcolors[a][2]= fb;
-	
-	return iv_curcol;
-}
-
-static int iv_finddata(struct IvNode *iv, char *field, int fieldnr)
-{
-	/* search for "field", count data size and make datablock. return skipdata */
-	float *fp;
-	int len, stackcount, skipdata=0;
-	char *cpa, terminator, str[64];
-	intptr_t i;
-	
-	len= strlen(field);
-
-	cpa= iv->nodename+1;
-	while( *cpa != '}' ) {
-		
-		if( *cpa == *field ) {
-			if( strncmp(cpa, field, len)==0 ) {
-				iv->fieldname[fieldnr]= cpa;
-				
-				/* read until first character */
-				cpa+= len;
-				skipdata+= len;
-				*cpa= 0;
-				cpa++;
-				skipdata++;
-				
-				while( *cpa==32 || *cpa==13 || *cpa==10 || *cpa==9) cpa++;
-				if( *cpa=='[' ) {
-					terminator= ']';
-					cpa++;
-					skipdata++;
-				}
-				else terminator= 13;
-				
-				stackcount= 0;
-				fp= iv_data_stack;
-				
-				while( *cpa!=terminator && *cpa != '}' ) {
-					
-					/* in fact, isdigit should include the dot and minus */
-					if( (isdigit(*cpa) || *cpa=='.' || *cpa=='-') && (isspace(cpa[-1]) || cpa[-1]==0 || cpa[-1]==',') ) {
-						if(cpa[1]=='x') {
-							memcpy(str, cpa, 16);
-							str[16]= 0;
-							
-							sscanf(str, "%x", (int *)fp);
-						}
-						else {
-							/* atof doesn't stop after the first float
-							 * in a long string at Windows... so we copy 
-							 * the float to a new string then atof... */
-							char *cpa_temp = strpbrk(cpa, ", \n");
-							i = cpa_temp - cpa;
-							
-							if (i>63) *fp= 0.0;
-							else {
-								memcpy(str, cpa, i);
-								str[i]=0;
-							
-								*fp= (float) atof(str);
-							}
-						}
-												
-						stackcount++;
-						if(stackcount>=IV_MAXSTACK) {
-							printf("stackoverflow in IV read\n");
-							break;
-						}
-						fp++;
-					}
-					cpa++;
-					skipdata++;
-				}
-				
-				iv->datalen[fieldnr]= stackcount;
-				if(stackcount) {
-					iv->data[fieldnr]= MEM_mallocN(sizeof(float)*stackcount, "iv_finddata");
-					memcpy(iv->data[fieldnr], iv_data_stack, sizeof(float)*stackcount);
-				}
-				else iv->data[fieldnr]= 0;
-				
-				return skipdata;
-			}
-		}
-		cpa++;
-		skipdata++;
-	}
-	
-	return skipdata;
-}
-
-static void read_iv_index(float *data, float *baseadr, float *index, int nr, int coordtype)
-{
-	/* write in data: baseadr with offset index (and number nr) */
-	float *fp;
-	int ofs;
-	
-	while(nr--) {
-		ofs= (int) *index;
-		fp= baseadr+coordtype*ofs;
-		VECCOPY(data, fp);
-		data+= 3;
-		index++;
-	}
-}
-
-
-
-static void read_inventor(Scene *scene, char *str, struct ListBase *listb)
-{
-	struct IvNode *iv, *ivp, *ivn;
-	char *maindata, *md, *cpa;
-	float *index, *data, *fp;
-	int file, filelen, count, lll, face, nr = 0;
-	int skipdata, ok, a, b, tot, first, colnr, coordtype, polytype, *idata;
-	struct DispList *dl;
-	ReportList *reports= NULL; /* XXX */
-	
-	ivbase.first= ivbase.last= 0;
-	iv_curcol= 0;
-	ivsurf= 0;
-	
-	file= open(str, O_BINARY|O_RDONLY);
-	if(file== -1) {
-		BKE_reportf(reports, RPT_ERROR, "Can't read file: %s.", strerror(errno));
-		return;
-	}
-
-	filelen= BLI_filesize(file);
-	if(filelen < 1) {
-		close(file);
-		return;
-	}
-	
-	maindata= MEM_mallocN(filelen, "leesInventor");
-	if(read(file, maindata, filelen) < filelen) {
-		BKE_reportf(reports, RPT_ERROR, "Failed reading file: premature end of file.");
-		close(file);
-		return;
-	}
-	close(file);
-
-	iv_data_stack= MEM_mallocN(sizeof(float)*IV_MAXSTACK, "ivstack");
-
-	/* preprocess: remove comments */
-	md= maindata+20;
-	count= 20;
-	while(count<filelen) {
-		if( *md=='#' ) {	/* comment */
-			while( *md!=13 && *md!=10) {	/* enters */
-				*md= 32;
-				md++;
-				count++;
-				if(count>=filelen) break;
-			}
-		}
-		md++;
-		count++;	
-	}
-	
-
-	/* now time to collect: which are the nodes and fields? */
-	md= maindata;
-	count= 0;
-	while(count<filelen) {
-		if( *md=='{' ) {	/* read back */
-		
-			cpa= md-1;
-			while( *cpa==32 || *cpa==13 || *cpa==10 || *cpa==9) {	/* remove spaces/enters/tab  */
-				*cpa= 0;
-				cpa--;
-			}		
-				
-			while( *cpa>32 && *cpa<128) cpa--;
-			cpa++;
-			*md= 0;
-			
-			ok= 0;
-			skipdata= 0;
-			iv= MEM_callocN(sizeof(struct IvNode), "leesInventor");
-			iv->nodename= cpa;
-
-			if(strcmp(cpa, "Coordinate3")==0 || strcmp(cpa, "Coordinate4")==0) {
-				skipdata= iv_finddata(iv, "point", 0);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "VertexProperty")==0) {
-				skipdata= iv_finddata(iv, "vertex", 0);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "IndexedLineSet")==0) {
-				skipdata= iv_finddata(iv, "coordIndex", 0);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "IndexedTriangleMesh")==0) {
-				skipdata= iv_finddata(iv, "coordIndex", 0);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "IndexedFaceSet")==0) {
-				skipdata= iv_finddata(iv, "coordIndex", 0);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "FaceSet")==0) {
-				skipdata= iv_finddata(iv, "numVertices", 0);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "Material")==0) {
-				iv_finddata(iv, "diffuseColor", 0);
-				iv_finddata(iv, "ambientColor", 1);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "BaseColor")==0) {
-				iv_finddata(iv, "rgb", 0);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "PackedColor")==0) {
-				iv_finddata(iv, "rgba", 0);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "QuadMesh")==0) {
-				iv_finddata(iv, "verticesPerColumn", 0);
-				iv_finddata(iv, "verticesPerRow", 1);
-				
-				ok= 1;
-			}
-			else if(strcmp(cpa, "IndexedTriangleStripSet")==0) {
-				skipdata= iv_finddata(iv, "coordIndex", 0);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "TriangleStripSet")==0) {
-				skipdata= iv_finddata(iv, "numVertices", 0);
-				ok= 1;
-			}
-			else if(strcmp(cpa, "IndexedNurbsSurface")==0 || strcmp(cpa, "NurbsSurface")==0) {
-				iv_finddata(iv, "numUControlPoints", 0);
-				iv_finddata(iv, "numVControlPoints", 1);
-				iv_finddata(iv, "uKnotVector", 2);
-				iv_finddata(iv, "vKnotVector", 3);
-				ok= 1;
-			}
-			else {
-				/* to the end */
-				while( *md != '}') {
-					md++;
-					count++;
-					if(count<filelen) break;
-				}
-			}
-			
-			
-			if(ok) {
-				BLI_addtail(&ivbase, iv);
-				md+= skipdata;
-				count+= skipdata;
-			}
-			else MEM_freeN(iv);
-			
-		}
-		md++;
-		count++;
-	}
-	
-	/* join nodes */
-	iv= ivbase.first;
-	
-	while(iv) {
-		ivn= iv->next;
-		
-		if( strncmp(iv->nodename, "Indexed", 7)==0) {
-			/* seek back: same name? */
-			
-			ivp= iv->prev;
-			while(ivp) {
-				if(strcmp(iv->nodename, ivp->nodename)==0) break;
-
-				if(strcmp(ivp->nodename, "Coordinate3")==0 || 
-				   strcmp(ivp->nodename, "Coordinate4")==0 ||
-				   strcmp(ivp->nodename, "VertexProperty")==0) {
-					ivp= 0;
-					break;
-				}
-				ivp= ivp->prev;
-			}
-			
-			if(ivp) {
-				/* add iv to ivp */
-				
-				tot= iv->datalen[0] + ivp->datalen[0];
-				if(tot) {
-					data= MEM_mallocN(tot*sizeof(float), "samenvoeg iv");
-					memcpy(data, ivp->data[0], sizeof(float)*ivp->datalen[0]);
-					memcpy(data+ivp->datalen[0], iv->data[0], sizeof(float)*iv->datalen[0]);
-					
-					ivp->datalen[0]+= iv->datalen[0];
-					MEM_freeN(ivp->data[0]);
-					ivp->data[0]= data;
-					
-					BLI_remlink(&ivbase, iv);
-					MEM_freeN(iv->data[0]);
-					MEM_freeN(iv);
-				}
-			}
-		}
-		
-		iv= ivn;
-	}
-
-	
-	/* convert Nodes to DispLists */
-	iv= ivbase.first;
-	while(iv) {
-		
-		/* printf(" Node: %s\n", iv->nodename); */
-		/* if(iv->fieldname[0]) printf(" Field: %s len %d\n", iv->fieldname[0], iv->datalen[0]); */
-		coordtype= 3;
-		
-		if( strcmp(iv->nodename, "IndexedLineSet")==0 ) {
-			
-			colnr= iv_colornumber(iv);
-
-			/* seek back to data */
-			ivp= iv;
-			while(ivp->prev) {
-				ivp= ivp->prev;
-				if( strcmp(ivp->nodename, "Coordinate3")==0 ) {
-					coordtype= 3;
-					break;
-				}
-				if( strcmp(ivp->nodename, "Coordinate4")==0 ) {
-					coordtype= 4;
-					break;
-				}
-			}
-			if(ivp) {
-			
-				/* count the nr of lines */
-				tot= 0;
-				index= iv->data[0];
-								lll = iv->datalen[0]-1;
-				for(a=0; a<lll; a++) {
-					if(index[0]!= -1 && index[1]!= -1) tot++;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list