[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