Revision: 22472
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22472
Author:   joeedh
Date:     2009-08-15 19:31:28 +0200 (Sat, 15 Aug 2009)

Log Message:
-----------
made the crash handler disabled by a command line flag, insted of being 
#ifdef'd out on release builds. also did little bit of work on subsurf.  and 
face select can now deselect again, and fixed some other bugs with it (and 
subsurf).

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h
    branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.c
    branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.h
    branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
    branches/bmesh/blender/source/blender/blenkernel/intern/particle_system.c
    branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
    branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h  
2009-08-15 16:43:03 UTC (rev 22471)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h  
2009-08-15 17:31:28 UTC (rev 22472)
@@ -124,6 +124,19 @@
          loop refers to per-face-vertex data.*/
        void *(*getLoopCDData)(void *self, int type, int layer);
        void *(*getVertCDData)(void *self, int type, int layer);
+       
+/* derivedmesh 2.0 interface ideas (will likely never be implemented ;):
+        void (*interpLoopData)(void *self, void **src_blocks, 
+                              float *weights, float *sub_weights, int count);
+
+        //a generic handle for a loop
+       intptr_t lhandle;
+
+       inside DerivedMesh itself:
+       //
+       //void (*interpLoopData)(DerivedMesh *dm, DMLoopIter *destloop, 
+       //                       intptr_t *loop_handles, int totloop);
+*/
 } DMLoopIter;
 
 typedef struct DMFaceIter {
@@ -227,7 +240,7 @@
        void (*copyFromVertCData)(DerivedMesh *dm, int source, CustomData *dst, 
int dest);
        void (*copyFromEdgeCData)(DerivedMesh *dm, int source, CustomData *dst, 
int dest);
        void (*copyFromFaceCData)(DerivedMesh *dm, int source, CustomData *dst, 
int dest);
-
+       
        /* Iterate over each mapped vertex in the derived mesh, calling the
         * given function with the original vert and the mapped vert's new
         * coordinate and normal. For historical reasons the normal can be
@@ -431,6 +444,8 @@
                        void *layer);
 void DM_add_edge_layer(struct DerivedMesh *dm, int type, int alloctype,
                        void *layer);
+void DM_add_tessface_layer(struct DerivedMesh *dm, int type, int alloctype,
+                       void *layer);
 void DM_add_face_layer(struct DerivedMesh *dm, int type, int alloctype,
                        void *layer);
 
@@ -450,6 +465,7 @@
  */
 void *DM_get_vert_data_layer(struct DerivedMesh *dm, int type);
 void *DM_get_edge_data_layer(struct DerivedMesh *dm, int type);
+void *DM_get_tessface_data_layer(struct DerivedMesh *dm, int type);
 void *DM_get_face_data_layer(struct DerivedMesh *dm, int type);
 
 /* custom data setting functions

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.c        
2009-08-15 16:43:03 UTC (rev 22471)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.c        
2009-08-15 17:31:28 UTC (rev 22472)
@@ -31,7 +31,7 @@
        int numEntries, curSize, curSizeIdx;
 
        CCGAllocatorIFC allocatorIFC;
-       CCGAllocatorHDL allocator;
+       CCAllocHDL allocator;
 } EHash;
 
 #define EHASH_alloc(eh, nb)                    
((eh)->allocatorIFC.alloc((eh)->allocator, nb))
@@ -39,7 +39,7 @@
 
 #define EHASH_hash(eh, item)   (((uintptr_t) (item))%((unsigned int) 
(eh)->curSize))
 
-static EHash *_ehash_new(int estimatedNumEntries, CCGAllocatorIFC 
*allocatorIFC, CCGAllocatorHDL allocator) {
+static EHash *_ehash_new(int estimatedNumEntries, CCGAllocatorIFC 
*allocatorIFC, CCAllocHDL allocator) {
        EHash *eh = allocatorIFC->alloc(allocator, sizeof(*eh));
        eh->allocatorIFC = *allocatorIFC;
        eh->allocator = allocator;
@@ -175,13 +175,13 @@
 
 /***/
 
-static void *_stdAllocator_alloc(CCGAllocatorHDL a, int numBytes) {
+static void *_stdAllocator_alloc(CCAllocHDL a, int numBytes) {
        return malloc(numBytes);
 }
-static void *_stdAllocator_realloc(CCGAllocatorHDL a, void *ptr, int newSize, 
int oldSize) {
+static void *_stdAllocator_realloc(CCAllocHDL a, void *ptr, int newSize, int 
oldSize) {
        return realloc(ptr, newSize);
 }
-static void _stdAllocator_free(CCGAllocatorHDL a, void *ptr) {
+static void _stdAllocator_free(CCAllocHDL a, void *ptr) {
        free(ptr);
 }
 
@@ -218,7 +218,7 @@
 #define NormAdd(av, bv)                                        { float *_a = 
(float*) av, *_b = (float*) bv; _a[0]+=_b[0]; _a[1]+=_b[1]; _a[2]+=_b[2]; }
 
 
-static int _edge_isBoundary(CCGEdge *e);
+static int _edge_isBoundary(CCEdge *e);
 
 /***/
 
@@ -229,53 +229,53 @@
 } VertFlags;
 enum {
        Edge_eEffected=         (1<<0),
-} CCGEdgeFlags;
+} CCEdgeFlags;
 enum {
        Face_eEffected=         (1<<0),
 } FaceFlags;
 
-struct _CCGVert {
-       CCGVert         *next;  /* EHData.next */
-       CCGVertHDL      vHDL;   /* EHData.key */
+struct _CCVert {
+       CCVert          *next;  /* EHData.next */
+       CCVertHDL       vHDL;   /* EHData.key */
 
        short numEdges, numFaces, flags, pad;
 
-       CCGEdge **edges;
-       CCGFace **faces;
+       CCEdge **edges;
+       CCFace **faces;
 //     byte *levelData;
 //     byte *userData;
 };
 #define VERT_getLevelData(v)           ((byte*) &(v)[1])
 
-struct _CCGEdge {
-       CCGEdge         *next;  /* EHData.next */
-       CCGEdgeHDL      eHDL;   /* EHData.key */
+struct _CCEdge {
+       CCEdge          *next;  /* EHData.next */
+       CCEdgeHDL       eHDL;   /* EHData.key */
 
        short numFaces, flags;
        float crease;
 
-       CCGVert *v0,*v1;
-       CCGFace **faces;
+       CCVert *v0,*v1;
+       CCFace **faces;
 
 //     byte *levelData;
 //     byte *userData;
 };
 #define EDGE_getLevelData(e)           ((byte*) &(e)[1])
 
-struct _CCGFace {
-       CCGFace         *next;  /* EHData.next */
-       CCGFaceHDL      fHDL;   /* EHData.key */
+struct _CCFace {
+       CCFace          *next;  /* EHData.next */
+       CCFaceHDL       fHDL;   /* EHData.key */
 
        short numVerts, flags, pad1, pad2;
 
-//     CCGVert **verts;
-//     CCGEdge **edges;
+//     CCVert **verts;
+//     CCEdge **edges;
 //     byte *centerData;
 //     byte **gridData;
 //     byte *userData;
 };
-#define FACE_getVerts(f)               ((CCGVert**) &(f)[1])
-#define FACE_getEdges(f)               ((CCGEdge**) 
&(FACE_getVerts(f)[(f)->numVerts]))
+#define FACE_getVerts(f)               ((CCVert**) &(f)[1])
+#define FACE_getEdges(f)               ((CCEdge**) 
&(FACE_getVerts(f)[(f)->numVerts]))
 #define FACE_getCenterData(f)  ((byte*) &(FACE_getEdges(f)[(f)->numVerts]))
 
 typedef enum {
@@ -286,15 +286,15 @@
        eSyncState_Partial,
 } SyncState;
 
-struct _CCGSubSurf {
-       EHash *vMap;    /* map of CCGVertHDL -> Vert */
-       EHash *eMap;    /* map of CCGEdgeHDL -> Edge */
-       EHash *fMap;    /* map of CCGFaceHDL -> Face */
+struct _CSubSurf {
+       EHash *vMap;    /* map of CCVertHDL -> Vert */
+       EHash *eMap;    /* map of CCEdgeHDL -> Edge */
+       EHash *fMap;    /* map of CCFaceHDL -> Face */
 
        CCGMeshIFC meshIFC;
        
        CCGAllocatorIFC allocatorIFC;
-       CCGAllocatorHDL allocator;
+       CCAllocHDL allocator;
 
        int subdivLevels;
        int numGrids;
@@ -320,8 +320,8 @@
 
        EHash *oldVMap, *oldEMap, *oldFMap;
        int lenTempArrays;
-       CCGVert **tempVerts;
-       CCGEdge **tempEdges;
+       CCVert **tempVerts;
+       CCEdge **tempEdges;
 };
 
 #define CCGSUBSURF_alloc(ss, nb)                       
((ss)->allocatorIFC.alloc((ss)->allocator, nb))
@@ -330,8 +330,8 @@
 
 /***/
 
-static CCGVert *_vert_new(CCGVertHDL vHDL, CCGSubSurf *ss) {
-       CCGVert *v = CCGSUBSURF_alloc(ss, sizeof(CCGVert) + 
ss->meshIFC.vertDataSize * (ss->subdivLevels+1) + ss->meshIFC.vertUserSize);
+static CCVert *_vert_new(CCVertHDL vHDL, CSubSurf *ss) {
+       CCVert *v = CCGSUBSURF_alloc(ss, sizeof(CCVert) + 
ss->meshIFC.vertDataSize * (ss->subdivLevels+1) + ss->meshIFC.vertUserSize);
        byte *userData;
 
        v->vHDL = vHDL;
@@ -340,13 +340,13 @@
        v->numEdges = v->numFaces = 0;
        v->flags = 0;
 
-       userData = ccgSubSurf_getVertUserData(ss, v);
+       userData = CCS_getVertUserData(ss, v);
        memset(userData, 0, ss->meshIFC.vertUserSize);
        if (ss->useAgeCounts) *((int*) &userData[ss->vertUserAgeOffset]) = 
ss->currentAge;
 
        return v;
 }
-static void _vert_remEdge(CCGVert *v, CCGEdge *e) {
+static void _vert_remEdge(CCVert *v, CCEdge *e) {
        int i;
        for (i=0; i<v->numEdges; i++) {
                if (v->edges[i]==e) {
@@ -355,7 +355,7 @@
                }
        }
 }
-static void _vert_remFace(CCGVert *v, CCGFace *f) {
+static void _vert_remFace(CCVert *v, CCFace *f) {
        int i;
        for (i=0; i<v->numFaces; i++) {
                if (v->faces[i]==f) {
@@ -364,25 +364,25 @@
                }
        }
 }
-static void _vert_addEdge(CCGVert *v, CCGEdge *e, CCGSubSurf *ss) {
+static void _vert_addEdge(CCVert *v, CCEdge *e, CSubSurf *ss) {
        v->edges = CCGSUBSURF_realloc(ss, v->edges, 
(v->numEdges+1)*sizeof(*v->edges), v->numEdges*sizeof(*v->edges));
        v->edges[v->numEdges++] = e;
 }
-static void _vert_addFace(CCGVert *v, CCGFace *f, CCGSubSurf *ss) {
+static void _vert_addFace(CCVert *v, CCFace *f, CSubSurf *ss) {
        v->faces = CCGSUBSURF_realloc(ss, v->faces, 
(v->numFaces+1)*sizeof(*v->faces), v->numFaces*sizeof(*v->faces));
        v->faces[v->numFaces++] = f;
 }
-static CCGEdge *_vert_findEdgeTo(CCGVert *v, CCGVert *vQ) {
+static CCEdge *_vert_findEdgeTo(CCVert *v, CCVert *vQ) {
        int i;
        for (i=0; i<v->numEdges; i++) {
-               CCGEdge *e = v->edges[v->numEdges-1-i]; // XXX, note reverse
+               CCEdge *e = v->edges[v->numEdges-1-i]; // XXX, note reverse
                if (    (e->v0==v && e->v1==vQ) ||
                                (e->v1==v && e->v0==vQ))
                        return e;
        }
        return 0;
 }
-static int _vert_isBoundary(CCGVert *v) {
+static int _vert_isBoundary(CCVert *v) {
        int i;
        for (i=0; i<v->numEdges; i++)
                if (_edge_isBoundary(v->edges[i]))
@@ -390,27 +390,27 @@
        return 0;
 }
 
-static void *_vert_getCo(CCGVert *v, int lvl, int dataSize) {
+static void *_vert_getCo(CCVert *v, int lvl, int dataSize) {
        return &VERT_getLevelData(v)[lvl*dataSize];
 }
-static float *_vert_getNo(CCGVert *v, int lvl, int dataSize, int 
normalDataOffset) {
+static float *_vert_getNo(CCVert *v, int lvl, int dataSize, int 
normalDataOffset) {
        return (float*) &VERT_getLevelData(v)[lvl*dataSize + normalDataOffset];
 }
 
-static void _vert_free(CCGVert *v, CCGSubSurf *ss) {
+static void _vert_free(CCVert *v, CSubSurf *ss) {
        CCGSUBSURF_free(ss, v->edges);
        CCGSUBSURF_free(ss, v->faces);
        CCGSUBSURF_free(ss, v);
 }
 
-static int VERT_seam(CCGVert *v) {
+static int VERT_seam(CCVert *v) {
        return ((v->flags & Vert_eSeam) != 0);
 }
 
 /***/
 
-static CCGEdge *_edge_new(CCGEdgeHDL eHDL, CCGVert *v0, CCGVert *v1, float 
crease, CCGSubSurf *ss) {
-       CCGEdge *e = CCGSUBSURF_alloc(ss, sizeof(CCGEdge) + 
ss->meshIFC.vertDataSize *((ss->subdivLevels+1) + (1<<(ss->subdivLevels+1))-1) 
+ ss->meshIFC.edgeUserSize);
+static CCEdge *_edge_new(CCEdgeHDL eHDL, CCVert *v0, CCVert *v1, float crease, 
CSubSurf *ss) {
+       CCEdge *e = CCGSUBSURF_alloc(ss, sizeof(CCEdge) + 
ss->meshIFC.vertDataSize *((ss->subdivLevels+1) + (1<<(ss->subdivLevels+1))-1) 
+ ss->meshIFC.edgeUserSize);
        byte *userData;
 
        e->eHDL = eHDL;
@@ -423,13 +423,13 @@
        _vert_addEdge(v0, e, ss);
        _vert_addEdge(v1, e, ss);
 
-       userData = ccgSubSurf_getEdgeUserData(ss, e);
+       userData = CCS_getEdgeUserData(ss, e);
        memset(userData, 0, ss->meshIFC.edgeUserSize);
        if (ss->useAgeCounts) *((int*) &userData[ss->edgeUserAgeOffset]) = 
ss->currentAge;
 
        return e;
 }
-static void _edge_remFace(CCGEdge *e, CCGFace *f) {

@@ 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