Revision: 15181
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15181
Author:   bdiego
Date:     2008-06-09 21:53:23 +0200 (Mon, 09 Jun 2008)

Log Message:
-----------
branches/blender-2.47

Merge from trunk:
        Revision: 14976
        Revision: 14978
        Revision: 15129
        Revision: 15136
        Revision: 15144
        Revision: 15147
        Revision: 15149
        Revision: 15157
        Revision: 15158
        Revision: 15159
        Revision: 15160
        Revision: 15161
        Revision: 15168
        Revision: 15177

NOTE: The big change to RAS_2DFilterManager.cpp is because the ^M (EOL).

Modified Paths:
--------------
    branches/blender-2.47/extern/bFTGL/SConscript
    branches/blender-2.47/source/blender/blenkernel/BKE_curve.h
    branches/blender-2.47/source/blender/blenkernel/intern/DerivedMesh.c
    branches/blender-2.47/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/blender-2.47/source/blender/blenkernel/intern/curve.c
    branches/blender-2.47/source/blender/blenkernel/intern/displist.c
    branches/blender-2.47/source/blender/blenkernel/intern/font.c
    branches/blender-2.47/source/blender/blenkernel/intern/pointcache.c
    branches/blender-2.47/source/blender/blenlib/intern/freetypefont.c
    branches/blender-2.47/source/blender/blenlib/intern/psfont.c
    branches/blender-2.47/source/blender/include/BSE_view.h
    branches/blender-2.47/source/blender/python/api2_2x/Object.c
    branches/blender-2.47/source/blender/python/api2_2x/Particle.c
    branches/blender-2.47/source/blender/src/buttons_editing.c
    branches/blender-2.47/source/blender/src/buttons_object.c
    branches/blender-2.47/source/blender/src/drawipo.c
    branches/blender-2.47/source/blender/src/drawview.c
    branches/blender-2.47/source/blender/src/editcurve.c
    branches/blender-2.47/source/blender/src/editnode.c
    branches/blender-2.47/source/blender/src/transform.c
    branches/blender-2.47/source/blender/src/view.c
    branches/blender-2.47/source/gameengine/Ketsji/KX_RayCast.cpp
    branches/blender-2.47/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp

Modified: branches/blender-2.47/extern/bFTGL/SConscript
===================================================================
--- branches/blender-2.47/extern/bFTGL/SConscript       2008-06-09 18:41:16 UTC 
(rev 15180)
+++ branches/blender-2.47/extern/bFTGL/SConscript       2008-06-09 19:53:23 UTC 
(rev 15181)
@@ -22,7 +22,7 @@
 
 #ftgl_env.Append (CPPDEFINES = defines)
 
-incs = 'include src ' + env['BF_FREETYPE_INC']
+incs = 'include src ' + env['BF_FREETYPE_INC'] + ' ' + env['BF_OPENGL_INC']
 defs = ''
 
 sources = env.Glob('src/*.cpp')

Modified: branches/blender-2.47/source/blender/blenkernel/BKE_curve.h
===================================================================
--- branches/blender-2.47/source/blender/blenkernel/BKE_curve.h 2008-06-09 
18:41:16 UTC (rev 15180)
+++ branches/blender-2.47/source/blender/blenkernel/BKE_curve.h 2008-06-09 
19:53:23 UTC (rev 15181)
@@ -39,8 +39,8 @@
 struct BezTriple;
 struct BevList;
 
-#define KNOTSU(nu)         ( (nu)->orderu+ (nu)->pntsu+ 
(nu->orderu-1)*((nu)->flagu & 1) )
-#define KNOTSV(nu)         ( (nu)->orderv+ (nu)->pntsv+ 
(nu->orderv-1)*((nu)->flagv & 1) )
+#define KNOTSU(nu)         ( (nu)->orderu+ (nu)->pntsu+ 
(nu->orderu-1)*((nu)->flagu & CU_CYCLIC) )
+#define KNOTSV(nu)         ( (nu)->orderv+ (nu)->pntsv+ 
(nu->orderv-1)*((nu)->flagv & CU_CYCLIC) )
 
 
 void unlink_curve( struct Curve *cu);
@@ -84,5 +84,12 @@
 float (*curve_getVertexCos(struct Curve *cu, struct ListBase *lb, int 
*numVerts_r))[3];
 void curve_applyVertexCos(struct Curve *cu, struct ListBase *lb, float 
(*vertexCos)[3]);
 
+/* nurb checks if they can be drawn, also clamp order func */
+int check_valid_nurb_u( struct Nurb *nu);
+int check_valid_nurb_v( struct Nurb *nu);
+
+int clamp_nurb_order_u( struct Nurb *nu);
+int clamp_nurb_order_v( struct Nurb *nu);
+
 #endif
 

Modified: branches/blender-2.47/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- branches/blender-2.47/source/blender/blenkernel/intern/DerivedMesh.c        
2008-06-09 18:41:16 UTC (rev 15180)
+++ branches/blender-2.47/source/blender/blenkernel/intern/DerivedMesh.c        
2008-06-09 19:53:23 UTC (rev 15181)
@@ -186,10 +186,6 @@
 void DM_init(DerivedMesh *dm,
              int numVerts, int numEdges, int numFaces)
 {
-       CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, 
numVerts);
-       CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, 
numEdges);
-       CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, 
numFaces);
-
        dm->numVertData = numVerts;
        dm->numEdgeData = numEdges;
        dm->numFaceData = numFaces;

Modified: branches/blender-2.47/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/blender-2.47/source/blender/blenkernel/intern/cdderivedmesh.c      
2008-06-09 18:41:16 UTC (rev 15180)
+++ branches/blender-2.47/source/blender/blenkernel/intern/cdderivedmesh.c      
2008-06-09 19:53:23 UTC (rev 15181)
@@ -732,6 +732,10 @@
 
        DM_init(dm, numVerts, numEdges, numFaces);
 
+       CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, 
numVerts);
+       CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, 
numEdges);
+       CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, 
numFaces);
+
        CustomData_add_layer(&dm->vertData, CD_MVERT, CD_CALLOC, NULL, 
numVerts);
        CustomData_add_layer(&dm->edgeData, CD_MEDGE, CD_CALLOC, NULL, 
numEdges);
        CustomData_add_layer(&dm->faceData, CD_MFACE, CD_CALLOC, NULL, 
numFaces);
@@ -753,6 +757,11 @@
         * with an exception for fluidsim */
 
        DM_init(dm, mesh->totvert, mesh->totedge, mesh->totface);
+
+       CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, 
mesh->totvert);
+       CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, 
mesh->totedge);
+       CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, 
mesh->totface);
+
        dm->deformedOnly = 1;
 
        if(ob && ob->fluidsimSettings && ob->fluidsimSettings->meshSurface)

Modified: branches/blender-2.47/source/blender/blenkernel/intern/curve.c
===================================================================
--- branches/blender-2.47/source/blender/blenkernel/intern/curve.c      
2008-06-09 18:41:16 UTC (rev 15180)
+++ branches/blender-2.47/source/blender/blenkernel/intern/curve.c      
2008-06-09 19:53:23 UTC (rev 15181)
@@ -348,9 +348,9 @@
        if(nu->bp) MEM_freeN(nu->bp);
        nu->bp= 0;
        if(nu->knotsu) MEM_freeN(nu->knotsu);
-       nu->knotsu= 0;
+       nu->knotsu= NULL;
        if(nu->knotsv) MEM_freeN(nu->knotsv);
-       nu->knotsv= 0;
+       nu->knotsv= NULL;
        /* if(nu->trim.first) freeNurblist(&(nu->trim)); */
 
        MEM_freeN(nu);
@@ -393,7 +393,7 @@
                        (BPoint*)MEM_mallocN((len)* 
sizeof(BPoint),"duplicateNurb3");
                memcpy(newnu->bp, nu->bp, len*sizeof(BPoint));
                
-               newnu->knotsu=newnu->knotsv= 0;
+               newnu->knotsu= newnu->knotsv= NULL;
                
                if(nu->knotsu) {
                        len= KNOTSU(nu);
@@ -506,6 +506,7 @@
                }
        }
        else if(type==2) {
+               /* Warning, the order MUST be 2 or 4, if this is not enforced, 
the displist will be corrupt */
                if(order==4) {
                        k= 0.34;
                        for(a=0;a<t;a++) {
@@ -520,6 +521,9 @@
                                knots[a]= (float)floor(k);
                        }
                }
+               else {
+                       printf("bez nurb curve order is not 3 or 4, should 
never happen\n");
+               }
        }
 }
 
@@ -529,8 +533,9 @@
        int a, b, order2, c;
 
        if(knots==0) return;
-        order2=order-1;
 
+       order2=order-1;
+
        /* do first long rows (order -1), remove identical knots at endpoints */
        if(order>2) {
                b= pnts+order2;
@@ -549,26 +554,35 @@
 }
 
 
-void makeknots(Nurb *nu, short uv, short type) /* 0: uniform, 1: endpoints, 2: 
bezier */
+/* type - 0: uniform, 1: endpoints, 2: bezier, note, cyclic nurbs are always 
uniform */
+void makeknots(Nurb *nu, short uv, short type)
 {
        if( (nu->type & 7)==CU_NURBS ) {
-               if(uv & 1) {
+               if(uv == 1) {
                        if(nu->knotsu) MEM_freeN(nu->knotsu);
-                       if(nu->pntsu>1) {
+                       if(check_valid_nurb_u(nu)) {
                                nu->knotsu= 
MEM_callocN(4+sizeof(float)*KNOTSU(nu), "makeknots");
-                               calcknots(nu->knotsu, nu->pntsu, nu->orderu, 
type);
-                               if(nu->flagu & 1) makecyclicknots(nu->knotsu, 
nu->pntsu, nu->orderu);
+                               if(nu->flagu & CU_CYCLIC) {
+                                       calcknots(nu->knotsu, nu->pntsu, 
nu->orderu, 0);  /* cyclic should be uniform */
+                                       makecyclicknots(nu->knotsu, nu->pntsu, 
nu->orderu);
+                               } else {
+                                       calcknots(nu->knotsu, nu->pntsu, 
nu->orderu, type);
+                               }
                        }
-                       else nu->knotsu= 0;
-               }
-               if(uv & 2) {
+                       else nu->knotsu= NULL;
+               
+               } else if(uv == 2) {
                        if(nu->knotsv) MEM_freeN(nu->knotsv);
-                       if(nu->pntsv>1) {
+                       if(check_valid_nurb_v(nu)) {
                                nu->knotsv= 
MEM_callocN(4+sizeof(float)*KNOTSV(nu), "makeknots");
-                               calcknots(nu->knotsv, nu->pntsv, nu->orderv, 
type);
-                               if(nu->flagv & 1) makecyclicknots(nu->knotsv, 
nu->pntsv, nu->orderv);
+                               if(nu->flagv & CU_CYCLIC) {
+                                       calcknots(nu->knotsv, nu->pntsv, 
nu->orderv, 0);  /* cyclic should be uniform */
+                                       makecyclicknots(nu->knotsv, nu->pntsv, 
nu->orderv);
+                               } else {
+                                       calcknots(nu->knotsv, nu->pntsv, 
nu->orderv, type);
+                               }
                        }
-                       else nu->knotsv= 0;
+                       else nu->knotsv= NULL;
                }
        }
 }
@@ -645,7 +659,7 @@
        int i, j, iofs, jofs, cycl, len, resolu, resolv;
        int istart, iend, jsta, jen, *jstart, *jend, ratcomp;
 
-       if(nu->knotsu==0 || nu->knotsv==0) return;
+       if(nu->knotsu==NULL || nu->knotsv==NULL) return;
        if(nu->orderu>nu->pntsu) return;
        if(nu->orderv>nu->pntsv) return;
        if(data==0) return;
@@ -679,24 +693,24 @@
 
        fp= nu->knotsu;
        ustart= fp[nu->orderu-1];
-       if(nu->flagu & 1) uend= fp[nu->pntsu+nu->orderu-1];
+       if(nu->flagu & CU_CYCLIC) uend= fp[nu->pntsu+nu->orderu-1];
        else uend= fp[nu->pntsu];
-       ustep= (uend-ustart)/(resolu-1+(nu->flagu & 1));
+       ustep= (uend-ustart)/(resolu-1+(nu->flagu & CU_CYCLIC));
        basisu= (float *)MEM_mallocN(sizeof(float)*KNOTSU(nu), 
"makeNurbfaces3");
 
        fp= nu->knotsv;
        vstart= fp[nu->orderv-1];
        
-       if(nu->flagv & 1) vend= fp[nu->pntsv+nu->orderv-1];
+       if(nu->flagv & CU_CYCLIC) vend= fp[nu->pntsv+nu->orderv-1];
        else vend= fp[nu->pntsv];
-       vstep= (vend-vstart)/(resolv-1+(nu->flagv & 1));
+       vstep= (vend-vstart)/(resolv-1+(nu->flagv & CU_CYCLIC));
        len= KNOTSV(nu);
        basisv= (float *)MEM_mallocN(sizeof(float)*len*resolv, 
"makeNurbfaces3");
        jstart= (int *)MEM_mallocN(sizeof(float)*resolv, "makeNurbfaces4");
        jend= (int *)MEM_mallocN(sizeof(float)*resolv, "makeNurbfaces5");
 
        /* precalculation of basisv and jstart,jend */
-       if(nu->flagv & 1) cycl= nu->orderv-1; 
+       if(nu->flagv & CU_CYCLIC) cycl= nu->orderv-1; 
        else cycl= 0;
        v= vstart;
        basis= basisv;
@@ -706,7 +720,7 @@
                v+= vstep;
        }
 
-       if(nu->flagu & 1) cycl= nu->orderu-1; 
+       if(nu->flagu & CU_CYCLIC) cycl= nu->orderu-1; 
        else cycl= 0;
        in= data;
        u= ustart;
@@ -803,7 +817,7 @@
        float *basisu, *sum, *fp,  *in;
        int i, len, istart, iend, cycl;
 
-       if(nu->knotsu==0) return;
+       if(nu->knotsu==NULL) return;
        if(nu->orderu>nu->pntsu) return;
        if(data==0) return;
 
@@ -820,12 +834,12 @@
 
        fp= nu->knotsu;
        ustart= fp[nu->orderu-1];
-       if(nu->flagu & 1) uend= fp[nu->pntsu+nu->orderu-1];
+       if(nu->flagu & CU_CYCLIC) uend= fp[nu->pntsu+nu->orderu-1];
        else uend= fp[nu->pntsu];
-       ustep= (uend-ustart)/(resolu-1+(nu->flagu & 1));
+       ustep= (uend-ustart)/(resolu-1+(nu->flagu & CU_CYCLIC));
        basisu= (float *)MEM_mallocN(sizeof(float)*KNOTSU(nu), 
"makeNurbcurve3");
 
-       if(nu->flagu & 1) cycl= nu->orderu-1; 
+       if(nu->flagu & CU_CYCLIC) cycl= nu->orderu-1; 
        else cycl= 0;
 
        in= data;
@@ -1425,14 +1439,14 @@
        
        /* returns a point */
        if(prevbezt==nu->bezt) {
-               if(nu->flagu & 1) pprev= last;
+               if(nu->flagu & CU_CYCLIC) pprev= last;
                else pprev= prevbezt;
        }
        else pprev= prevbezt-1;
        
        /* next point */
        if(bezt==last) {
-               if(nu->flagu & 1) next= nu->bezt;
+               if(nu->flagu & CU_CYCLIC) next= nu->bezt;
                else next= bezt;
        }
        else next= bezt+1;
@@ -1478,7 +1492,7 @@
        while(nu) {
                /* check we are a single point? also check we are not a surface 
and that the orderu is sane,
                 * enforced in the UI but can go wrong possibly */
-               if(nu->pntsu<2 || ((nu->type & 7)==CU_NURBS && nu->pntsu < 
nu->orderu)) {
+               if(!check_valid_nurb_u(nu)) {
                        bl= MEM_callocN(sizeof(BevList)+1*sizeof(BevPoint), 
"makeBevelList");
                        BLI_addtail(&(cu->bev), bl);
                        bl->nr= 0;
@@ -1493,7 +1507,7 @@
                                bl= 
MEM_callocN(sizeof(BevList)+len*sizeof(BevPoint), "makeBevelList");
                                BLI_addtail(&(cu->bev), bl);
        
-                               if(nu->flagu & 1) bl->poly= 0;
+                               if(nu->flagu & CU_CYCLIC) bl->poly= 0;
                                else bl->poly= -1;
                                bl->nr= len;
                                bl->flag= 0;
@@ -1512,17 +1526,17 @@
                        }

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to