[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20329] branches/nurbs/blender: - Refactored interface between Blender and libNurbana, to make libNurbana code cleaner.

Emmanuel Stone emmanuel.stone at gmail.com
Thu May 21 22:33:09 CEST 2009


Revision: 20329
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20329
Author:   eman
Date:     2009-05-21 22:33:09 +0200 (Thu, 21 May 2009)

Log Message:
-----------
- Refactored interface between Blender and libNurbana, to make libNurbana code cleaner.
 - libNurbana now holds a pointer to Blender Nurb struct, to access directly
- Merged Object_Base and Object_NURBS objects.

This commit does not add any functionality nor should it change any functionality.

Modified Paths:
--------------
    branches/nurbs/blender/intern/nurbana/extern/nurbana.h
    branches/nurbs/blender/intern/nurbana/intern/NURBS_Construct.cpp
    branches/nurbs/blender/intern/nurbana/intern/NURBS_Generate.cpp
    branches/nurbs/blender/intern/nurbana/intern/NURBS_Knot.cpp
    branches/nurbs/blender/intern/nurbana/intern/Object_Base.cpp
    branches/nurbs/blender/intern/nurbana/intern/Object_NURBS.cpp
    branches/nurbs/blender/intern/nurbana/intern/Object_NURBS.h
    branches/nurbs/blender/intern/nurbana/intern/libNurbana.cpp
    branches/nurbs/blender/source/blender/blenkernel/intern/curve.c
    branches/nurbs/blender/source/blender/blenloader/intern/readfile.c
    branches/nurbs/blender/source/blender/makesdna/DNA_curve_types.h
    branches/nurbs/blender/source/blender/src/editcurve.c

Added Paths:
-----------
    branches/nurbs/blender/intern/nurbana/intern/blenderNurbsStruct.h

Modified: branches/nurbs/blender/intern/nurbana/extern/nurbana.h
===================================================================
--- branches/nurbs/blender/intern/nurbana/extern/nurbana.h	2009-05-21 19:38:49 UTC (rev 20328)
+++ branches/nurbs/blender/intern/nurbana/extern/nurbana.h	2009-05-21 20:33:09 UTC (rev 20329)
@@ -30,6 +30,8 @@
 #ifndef NAN_INCLUDED_nurbana_h
 #define NAN_INCLUDED_nurbana_h
 
+#include "../intern/blenderNurbsStruct.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -52,18 +54,18 @@
 }nbReal4;
 
 
-typedef struct Point3d {
+/*typedef struct Point3d {
 	nbReal  x;
 	nbReal  y;
 	nbReal  z;
 	nbReal  H;
 
 	// This extra data should make Point4d 'struct'rally equivalent to BPoint from Blender::DNA_Data_Types.h
-	nbReal alfa, weight;		/* alfa: tilt in 3D View, weight: used for softbody goal weight */
+	nbReal alfa, weight;		// alfa: tilt in 3D View, weight: used for softbody goal weight 
 	short f1, hide;
-	nbReal radius, pad;		/* user-set radius per point for bevelling etc */
+	nbReal radius, pad;		// user-set radius per point for bevelling etc 
 }Point3d;
-
+*/
 //typedef Point3d nbReal3;
 
 typedef struct Nurb_Extern {
@@ -95,12 +97,24 @@
 
 
 typedef Nurb_Extern* Nurb_ExternPtr;
+
+// forward declare as void
+//typedef void Point3d; 
+//typedef void* Point3d_ptr;
 typedef Point3d* Point3d_ptr;
 typedef nbReal3* nbReal3_ptr;
+typedef void* BlenderNurbs_ptr;
 typedef void* NurbanaObj_ptr; // to hide pointer to C++ object in C space
 
-extern NurbanaObj_ptr NRB_addObject(Point3d** CtlPts, short* numCPu, short* numCPv, short* orderU, short* orderV, nbReal** knotsU, nbReal** knotsV,  short* cyclicU,  short* cyclicV, short* knottypeu, short* knottypev,  short* resolu,  short* resolv, short* isores, short* isoden, short* isovis) ;
+//extern NurbanaObj_ptr NRB_addObject(Point3d** CtlPts, short* numCPu, short* numCPv, short* orderU, short* orderV, nbReal** knotsU, nbReal** knotsV,  short* cyclicU,  short* cyclicV, short* knottypeu, short* knottypev,  short* resolu,  short* resolv, short* isores, short* isoden, short* isovis) ;
+extern NurbanaObj_ptr NRB_addObject(BlenderNurbs_ptr bNurbs);
 
+//extern NurbanaObj_ptr NRB_allocate();
+//extern void NRB_deallocate(NurbanaObj_ptr nop);
+extern void NRB_init(NurbanaObj_ptr nop);
+
+extern NurbanaObj_ptr NRB_reallocate(BlenderNurbs_ptr bNurbs);
+
 extern NurbanaObj_ptr NRB_CreatePrimitive(NurbanaObj_ptr nop, unsigned char type);
 extern void NRB_removeObject(NurbanaObj_ptr nop);
 

Modified: branches/nurbs/blender/intern/nurbana/intern/NURBS_Construct.cpp
===================================================================
--- branches/nurbs/blender/intern/nurbana/intern/NURBS_Construct.cpp	2009-05-21 19:38:49 UTC (rev 20328)
+++ branches/nurbs/blender/intern/nurbana/intern/NURBS_Construct.cpp	2009-05-21 20:33:09 UTC (rev 20329)
@@ -112,7 +112,7 @@
     } //eof
   } //eof
 
-  objs[0] -> _ReCalcTssPts= 1;
+  objs[0] -> m_recalcTssPts = 1;
 
 
 //  free(KVfnl);

Modified: branches/nurbs/blender/intern/nurbana/intern/NURBS_Generate.cpp
===================================================================
--- branches/nurbs/blender/intern/nurbana/intern/NURBS_Generate.cpp	2009-05-21 19:38:49 UTC (rev 20328)
+++ branches/nurbs/blender/intern/nurbana/intern/NURBS_Generate.cpp	2009-05-21 20:33:09 UTC (rev 20329)
@@ -6,9 +6,9 @@
 }
 
 void NURBS_Generate::CurveOnSurface(Object_NURBS *obj, nbReal* buffer, int res, float t, int uv, int dim) {
-	int sizeU = (*obj->_TessUV[0])*obj->Length(0);
-	int sizeV = (*obj->_TessUV[1])*obj->Length(1);
-	nbReal3 *tessBuffer = (nbReal3*)(obj -> _OldBuffer);	
+	int sizeU = obj->Tess(0)*obj->Length(0);
+	int sizeV = obj->Tess(1)*obj->Length(1);
+	nbReal3 *tessBuffer = (nbReal3*)(obj -> m_oldBuffer);	
 	nbReal3 *buffer3 = (nbReal3*)buffer;
 
 	if(t == 1.0)
@@ -230,14 +230,14 @@
 		// Set the contents of the 'oldBuffer' for the next pass
 		if(Update) {
 			for(i = 0; i < (TessU+1)*(TessV+1)*dim; i++) {
-				obj -> _OldBuffer[i] = TssPts[i];
+				obj -> m_oldBuffer[i] = TssPts[i];
 			}
 		}
 	} else {  // Incremental Surface Calculations
 		if(dim == 4)
-			TssPts4 = (nbReal4*)(obj->_OldBuffer);
+			TssPts4 = (nbReal4*)(obj->m_oldBuffer);
 		else
-			TssPts3 = (nbReal3*)(obj->_OldBuffer);
+			TssPts3 = (nbReal3*)(obj->m_oldBuffer);
 
 		nbReal dh, dx, dy, dz, da;
 		nbReal *sumold, sumratio;
@@ -329,7 +329,7 @@
 		}
 		// Set the contents of the tess buffer to 'oldBuffer' for renderer
 		for(i = 0; i < (TessU+1)*(TessV+1)*dim; i++) {
-			TssPts[i] = obj -> _OldBuffer[i];
+			TssPts[i] = obj -> m_oldBuffer[i];
 	//		printf("OldBuff: %f\n",TssPts[i]);
 		}
 		MEM_freeN(sumold);
@@ -814,3 +814,4 @@
 	return(sum);
 }
 
+

Modified: branches/nurbs/blender/intern/nurbana/intern/NURBS_Knot.cpp
===================================================================
--- branches/nurbs/blender/intern/nurbana/intern/NURBS_Knot.cpp	2009-05-21 19:38:49 UTC (rev 20328)
+++ branches/nurbs/blender/intern/nurbana/intern/NURBS_Knot.cpp	2009-05-21 20:33:09 UTC (rev 20329)
@@ -610,7 +610,7 @@
 
 			}
 
-			if(*obj->_KnotTypeUV[0] == NURBS_KV_Open) { // Open = endtied
+			if(obj->KnotType(0) == NURBS_KV_Open) { // Open = endtied
 				//#define KNOTSU(nu) ( (nu)->orderu+ (nu)->pntsu+ (nu->orderu-1)*((nu)->flagu & 1) )
 				KV= (nbReal*)MEM_callocN(sizeof(nbReal)*2*(knotLen),"Subdivide() KVu");
 				for (i= n= 0; i < knotLen -1; i++) { //FIXME adjust for cyclic
@@ -623,7 +623,7 @@
 				//  MEM_freeN(KV);
 
 			}
-			else if(*obj->_KnotTypeUV[0] == NURBS_KV_Periodic) { // periodic = cyclic
+			else if(obj->KnotType(0) == NURBS_KV_Periodic) { // periodic = cyclic
 				//if(obj->Cyclic(0)) { // not cyclic
 				KV= (nbReal*)MEM_callocN(sizeof(nbReal)*2*(knotLen),"Subdivide() KVu");
 				for (i= n= 0; i < knotLen - 1; i++) { //FIXME adjust for cyclic
@@ -652,7 +652,7 @@
 			else { // not cyclic in V
 				knotLen = obj -> Length(1) + (obj -> Order(1));
 			}
-			if(*obj->_KnotTypeUV[1] == NURBS_KV_Open) { // Open = endtied
+			if(obj->KnotType(1) == NURBS_KV_Open) { // Open = endtied
 				//#define KNOTSU(nu) ( (nu)->orderu+ (nu)->pntsu+ (nu->orderu-1)*((nu)->flagu & 1) )
 				KV= (nbReal*)MEM_callocN(sizeof(nbReal)*2*(knotLen),"Subdivide() KVu");
 				for (i= n= 0; i < knotLen -1; i++) { //FIXME adjust for cyclic
@@ -665,7 +665,7 @@
 				//  MEM_freeN(KV);
 
 			}
-			else if(*obj->_KnotTypeUV[1] == NURBS_KV_Periodic) { // periodic = cyclic
+			else if(obj->KnotType(1) == NURBS_KV_Periodic) { // periodic = cyclic
 				KV= (nbReal*)MEM_callocN(sizeof(nbReal)*2*(knotLen),"Subdivide() KVu");
 				for (i= n= 0; i < knotLen - 1; i++) { //FIXME adjust for cyclic
 					KV[n++]= obj -> KnotVector(1)[i];
@@ -932,3 +932,4 @@
     memcpy(outKnots, inKnots, sizeof(*inKnots) * length);
 }
 
+

Modified: branches/nurbs/blender/intern/nurbana/intern/Object_Base.cpp
===================================================================
--- branches/nurbs/blender/intern/nurbana/intern/Object_Base.cpp	2009-05-21 19:38:49 UTC (rev 20328)
+++ branches/nurbs/blender/intern/nurbana/intern/Object_Base.cpp	2009-05-21 20:33:09 UTC (rev 20329)
@@ -31,8 +31,6 @@
   _TessUV[0]= resolu;
   _TessUV[1]= resolv;
 
-  _IPCDensity = isoden;
-  _IPCResolution = isores;
   //_IPCDensity= 5;
   //_IPCResolution= OBJECT_MAX_DENSITY;
   // Allocate memory for ISO Curves

Modified: branches/nurbs/blender/intern/nurbana/intern/Object_NURBS.cpp
===================================================================
--- branches/nurbs/blender/intern/nurbana/intern/Object_NURBS.cpp	2009-05-21 19:38:49 UTC (rev 20328)
+++ branches/nurbs/blender/intern/nurbana/intern/Object_NURBS.cpp	2009-05-21 20:33:09 UTC (rev 20329)
@@ -1,130 +1,187 @@
 #include "Object_NURBS.h"
-
-Object_NURBS::Object_NURBS(Point3d** CtlPts, short* numCPu, short* numCPv, short *orderU, short *orderV, nbReal** knotsU, nbReal** knotsV,short* flagU, short* flagV, short* knotTypeU, short* knotTypeV, short* resolu, short* resolv, short* isores, short* isoden, short* isovis) : Object_Base(CtlPts, numCPu, numCPv, resolu, resolv, isores, isoden) {
-	int	i;
-	recalculateKnotVectorU = recalculateKnotVectorU = false;
-	_Change[0]= _Change[1]= 0;
-	_RecalculateKnotVector= 0;//_FlagUV[0]= _FlagUV[1]= 0;
-	//_KnotTypeUV[0]= _KnotTypeUV[1]= NURBS_KV_Open;//	_OrderUV[0]= _OrderUV[1]= 4;
-	_KnotTypeUV[0] = knotTypeU ;
-	_KnotTypeUV[1] = knotTypeV ;
-//	*_KnotTypeUV[0] = (*flagU>>1);//knotTypeU ;
-//	*_KnotTypeUV[1] = (*flagV>>1);// knotTypeV ;
-	_OrderUV[0] = orderU;
-	_OrderUV[1] = orderV;
+/*
+Object_NURBS::Object_NURBS(Point3d** CtlPts, short* numCPu, short* numCPv, short *orderU, short *orderV, nbReal** knotsU, nbReal** knotsV,short* flagU, short* flagV, short* knotTypeU, short* knotTypeV, short* resolu, short* resolv, short* isores, short* isoden, short* isovis) {//: Object_Base(CtlPts, numCPu, numCPv, resolu, resolv, isores, isoden) {
+//	int	i;
+	m_recalculateKnotVectorU = m_recalculateKnotVectorU = false;
+	m_change[0]= m_change[1]= 0;
+	m_recalculateKnotVector= 0;//_FlagUV[0]= _FlagUV[1]= 0;
 	
-	_FlagUV[0] = flagU;
-	_FlagUV[1] = flagV;
+	m_sumIPC[0] = NULL;
+	m_sumIPC[1] = NULL;
 	
-	_IsoVis = isovis;
-	_SumIPC[0] = NULL;
-	_SumIPC[1] = NULL;
-
-	_KnotVectorU = knotsU;
-	_KnotVectorV = knotsV;
+	m_ctlPtsOld = NULL;
+	m_oldBuffer = NULL;
+	m_sum = NULL;
 	
-	_CtlPtsOld = NULL;
-	_OldBuffer = NULL;
-	_Sum = NULL;
-	
-	if (*_LengthUV[0] + *_LengthUV[1]) {
+	if (m_blenderData->m_pntsuv[0] + m_blenderData->m_pntsuv[1]) {
 		SetCacheBuffer();
 		ResetIsoLines();
 	}
-	// Allocate tessU*pntsU*tessV*pntsV control points ala Blender
-	// FIXME for curves.
+	//_Normals= (nbReal3*)MEM_callocN(sizeof(nbReal3)*(2*OBJECT_MAX_DENSITY*OBJECT_MAX_DENSITY),"_Normals");
 
-	//len= nu->resolu*nu->resolv;
-	//_LengthUV[0]= numcpu;
-	//_LengthUV[1]= numcpv;
-	//_TessUV[0]= resolu;
-//	_TessUV[1]= resolv;
-
-	//dl= MEM_callocN(sizeof(DispList), "makeDispListsurf");
-	//dl->verts= MEM_callocN(len*3*sizeof(float), "dlverts");
-	
-	/* // Trim Curves, Let first Curve ID be 1
-		_TCID= 1;
-	_TCHead= NULL;
-	*/
 } //eof Object_NURBS::Object_NURBS()
+*/
+Object_NURBS::Object_NURBS(){
+	m_blenderData = NULL;
+/*	m_next = NULL;
+	m_prev = NULL;
+	m_type = 0;
+	m_mat_nr = 0;
+	m_hide = 0;
+	m_flag = 0;
+	m_blenderData->m_pntsuv[0] = 0;
+	m_blenderData->m_pntsuv[1] = 0;
+	m_blenderData->m_resoluv[0] = 0;
+	m_blenderData->m_resoluv[1] = 0;
+	m_blenderData->m_orderuv[0] = 0;
+	m_blenderData->m_orderuv[1] = 0;
+	m_blenderData->m_flaguv[0] = 0;
+	m_blenderData->m_flaguv[1] = 0;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list