[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17224] branches/animsys2/source/blender: Merge from trunk 17215-17223
Joshua Leung
aligorith at gmail.com
Thu Oct 30 05:26:30 CET 2008
Revision: 17224
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17224
Author: aligorith
Date: 2008-10-30 05:26:29 +0100 (Thu, 30 Oct 2008)
Log Message:
-----------
Merge from trunk 17215-17223
Modified Paths:
--------------
branches/animsys2/source/blender/blenkernel/BKE_utildefines.h
branches/animsys2/source/blender/blenkernel/SConscript
branches/animsys2/source/blender/blenkernel/intern/node.c
branches/animsys2/source/blender/blenkernel/intern/text.c
branches/animsys2/source/blender/src/buttons_editing.c
branches/animsys2/source/blender/src/reeb.c
Modified: branches/animsys2/source/blender/blenkernel/BKE_utildefines.h
===================================================================
--- branches/animsys2/source/blender/blenkernel/BKE_utildefines.h 2008-10-29 21:49:58 UTC (rev 17223)
+++ branches/animsys2/source/blender/blenkernel/BKE_utildefines.h 2008-10-30 04:26:29 UTC (rev 17224)
@@ -102,7 +102,7 @@
#define AVG2(x, y) ( 0.5 * ((x) + (y)) )
-#define FTOCHAR(val) (val<=0.0f)? 0 : ((val>(1.0f-0.5f/255.0f))? 255 : (char)((255.0f*val)+0.5f))
+#define FTOCHAR(val) ((val)<=0.0f)? 0 : (((val)>(1.0f-0.5f/255.0f))? 255 : (char)((255.0f*(val))+0.5f))
#define VECCOPY(v1,v2) {*(v1)= *(v2); *(v1+1)= *(v2+1); *(v1+2)= *(v2+2);}
#define VECCOPY2D(v1,v2) {*(v1)= *(v2); *(v1+1)= *(v2+1);}
Modified: branches/animsys2/source/blender/blenkernel/SConscript
===================================================================
--- branches/animsys2/source/blender/blenkernel/SConscript 2008-10-29 21:49:58 UTC (rev 17223)
+++ branches/animsys2/source/blender/blenkernel/SConscript 2008-10-30 04:26:29 UTC (rev 17224)
@@ -4,7 +4,7 @@
sources = env.Glob('intern/*.c')
incs = '. #/intern/guardedalloc ../include ../blenlib ../makesdna'
-incs += ' ../python ../render/extern/include #/intern/decimation/extern'
+incs += ' ../render/extern/include #/intern/decimation/extern'
incs += ' ../imbuf ../avi #/intern/elbeem/extern ../nodes'
incs += ' #/intern/iksolver/extern ../blenloader ../quicktime'
incs += ' #/extern/bullet2/src'
@@ -12,7 +12,6 @@
incs += ' #/intern/opennl/extern'
incs += ' ../gpu #/extern/glew/include'
-incs += ' ' + env['BF_PYTHON_INC']
incs += ' ' + env['BF_OPENGL_INC']
incs += ' ' + env['BF_ZLIB_INC']
incs += ' ' + env['BF_SDL_INC']
@@ -21,6 +20,9 @@
if not env['WITH_BF_PYTHON']:
defs += 'DISABLE_PYTHON'
+else:
+ incs += ' ../python'
+ incs += ' ' + env['BF_PYTHON_INC']
if env['WITH_BF_INTERNATIONAL']:
defs += ' WITH_FREETYPE2'
@@ -52,7 +54,4 @@
if env['WITH_BF_PLAYER']:
SConscript(['bad_level_call_stubs/SConscript'])
-if not env['WITH_BF_PYTHON']:
- defs += ' DISABLE_PYTHON'
-
env.BlenderLib ( libname = 'bf_blenkernel', sources = sources, includes = Split(incs), defines = Split(defs), libtype=['core','player'], priority = [65, 20] )
Modified: branches/animsys2/source/blender/blenkernel/intern/node.c
===================================================================
--- branches/animsys2/source/blender/blenkernel/intern/node.c 2008-10-29 21:49:58 UTC (rev 17223)
+++ branches/animsys2/source/blender/blenkernel/intern/node.c 2008-10-30 04:26:29 UTC (rev 17224)
@@ -27,7 +27,10 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#ifndef DISABLE_PYTHON
#include <Python.h>
+#endif
+
#include <stdlib.h>
#include <string.h>
Modified: branches/animsys2/source/blender/blenkernel/intern/text.c
===================================================================
--- branches/animsys2/source/blender/blenkernel/intern/text.c 2008-10-29 21:49:58 UTC (rev 17223)
+++ branches/animsys2/source/blender/blenkernel/intern/text.c 2008-10-30 04:26:29 UTC (rev 17224)
@@ -47,7 +47,7 @@
#include "BKE_global.h"
#include "BKE_main.h"
-#ifdef DISABLE_PYTHON
+#ifndef DISABLE_PYTHON
#include "BPY_extern.h"
#endif
Modified: branches/animsys2/source/blender/src/buttons_editing.c
===================================================================
--- branches/animsys2/source/blender/src/buttons_editing.c 2008-10-29 21:49:58 UTC (rev 17223)
+++ branches/animsys2/source/blender/src/buttons_editing.c 2008-10-30 04:26:29 UTC (rev 17224)
@@ -5833,11 +5833,11 @@
for(i=-1; i<8; i++) {
char str[64];
int loos;
- mtex= sd->mtex[i];
if(i==-1)
strcpy(str, "Default");
else {
+ mtex= sd->mtex[i];
if(mtex && mtex->tex) splitIDname(mtex->tex->id.name+2, str, &loos);
else strcpy(str, "");
}
@@ -5848,12 +5848,12 @@
cy= orig_y-20;
cx+= 85;
- mtex= sd->mtex[sd->texact];
if(sd->texact == -1) {
uiBlockBeginAlign(block);
uiDefBut(block,LABEL,B_NOP,"",cx,cy,115,20,0,0,0,0,0,""); /* Padding */
} else {
+ mtex= sd->mtex[sd->texact];
ID *id= NULL;
uiBlockBeginAlign(block);
Modified: branches/animsys2/source/blender/src/reeb.c
===================================================================
--- branches/animsys2/source/blender/src/reeb.c 2008-10-29 21:49:58 UTC (rev 17223)
+++ branches/animsys2/source/blender/src/reeb.c 2008-10-30 04:26:29 UTC (rev 17224)
@@ -91,6 +91,13 @@
#define DEBUG_REEB
#define DEBUG_REEB_NODE
+typedef struct VertexData
+{
+ float w; /* weight */
+ int i; /* index */
+ ReebNode *n;
+} VertexData;
+
typedef struct EdgeIndex
{
EditEdge **edges;
@@ -106,7 +113,7 @@
int mergeArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1);
void mergeArcEdges(ReebGraph *rg, ReebArc *aDst, ReebArc *aSrc, MergeDirection direction);
int mergeConnectedArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1);
-EditEdge * NextEdgeForVert(EdgeIndex *indexed_edges, EditVert *eve);
+EditEdge * NextEdgeForVert(EdgeIndex *indexed_edges, int index);
void mergeArcFaces(ReebGraph *rg, ReebArc *aDst, ReebArc *aSrc);
void addFacetoArc(ReebArc *arc, EditFace *efa);
@@ -118,6 +125,51 @@
/***************************************** UTILS **********************************************/
+VertexData *allocVertexData(EditMesh *em)
+{
+ VertexData *data;
+ EditVert *eve;
+ int totvert, index;
+
+ totvert = BLI_countlist(&em->verts);
+
+ data = MEM_callocN(sizeof(VertexData) * totvert, "VertexData");
+
+ for(index = 0, eve = em->verts.first; eve; index++, eve = eve->next)
+ {
+ data[index].i = index;
+ data[index].w = 0;
+ eve->tmp.p = data + index;
+ }
+
+ return data;
+}
+
+int indexData(EditVert *eve)
+{
+ return ((VertexData*)eve->tmp.p)->i;
+}
+
+float weightData(EditVert *eve)
+{
+ return ((VertexData*)eve->tmp.p)->w;
+}
+
+void weightSetData(EditVert *eve, float w)
+{
+ ((VertexData*)eve->tmp.p)->w = w;
+}
+
+ReebNode* nodeData(EditVert *eve)
+{
+ return ((VertexData*)eve->tmp.p)->n;
+}
+
+void nodeSetData(EditVert *eve, ReebNode *n)
+{
+ ((VertexData*)eve->tmp.p)->n = n;
+}
+
void REEB_freeArc(BArc *barc)
{
ReebArc *arc = (ReebArc*)barc;
@@ -190,10 +242,13 @@
}
}
-ReebNode * addNode(ReebGraph *rg, EditVert *eve, float weight)
+ReebNode * addNode(ReebGraph *rg, EditVert *eve)
{
+ float weight;
ReebNode *node = NULL;
+ weight = weightData(eve);
+
node = MEM_callocN(sizeof(ReebNode), "reeb node");
node->flag = 0; // clear flag on init
@@ -207,6 +262,8 @@
BLI_addtail(&rg->nodes, node);
rg->totnodes++;
+ nodeSetData(eve, node);
+
return node;
}
@@ -747,7 +804,7 @@
void fillArcEmptyBuckets(ReebArc *arc)
{
float *start_p, *end_p;
- int start_index, end_index;
+ int start_index = 0, end_index = 0;
int missing = 0;
int i;
@@ -1262,7 +1319,7 @@
for (subgraph = 1; subgraph <= nb_subgraphs; subgraph++)
{
ReebNode *start_node, *end_node;
- ReebNode *min_node_start, *min_node_end = NULL;
+ ReebNode *min_node_start = NULL, *min_node_end = NULL;
float min_distance = FLT_MAX;
for (start_node = rg->nodes.first; start_node; start_node = start_node->next)
@@ -1906,11 +1963,11 @@
EditVert *vb = *(EditVert**)b;
int value = 0;
- if (va->tmp.fp < vb->tmp.fp)
+ if (weightData(va) < weightData(vb))
{
value = -1;
}
- else if (va->tmp.fp > vb->tmp.fp)
+ else if (weightData(va) > weightData(vb))
{
value = 1;
}
@@ -1942,15 +1999,15 @@
{
eve = verts[i];
- if (i == 0 || (eve->tmp.fp - lastWeight) > FLT_EPSILON)
+ if (i == 0 || (weightData(eve) - lastWeight) > FLT_EPSILON)
{
- lastWeight = eve->tmp.fp;
+ lastWeight = weightData(eve);
}
else
{
work_needed = 1;
- eve->tmp.fp = lastWeight + FLT_EPSILON * 2;
- lastWeight = eve->tmp.fp;
+ weightSetData(eve, lastWeight + FLT_EPSILON * 2);
+ lastWeight = weightData(eve);
}
}
}
@@ -2496,7 +2553,6 @@
ReebGraph * generateReebGraph(EditMesh *em, int subdivisions)
{
ReebGraph *rg;
- struct DynamicList * dlist;
EditVert *eve;
EditFace *efa;
int index;
@@ -2526,16 +2582,12 @@
{
if (eve->h == 0)
{
- eve->hash = index;
+ addNode(rg, eve);
eve->f2 = 0;
- eve->tmp.p = addNode(rg, eve, eve->tmp.fp);
index++;
}
}
- /* Temporarely convert node list to dynamic list, for indexed access */
- dlist = BLI_dlist_from_listbase(&rg->nodes);
-
/* Adding face, edge per edge */
for(efa = em->faces.first; efa; efa = efa->next)
{
@@ -2543,15 +2595,15 @@
{
ReebNode *n1, *n2, *n3;
- n1 = (ReebNode*)BLI_dlist_find_link(dlist, efa->v1->hash);
- n2 = (ReebNode*)BLI_dlist_find_link(dlist, efa->v2->hash);
- n3 = (ReebNode*)BLI_dlist_find_link(dlist, efa->v3->hash);
+ n1 = nodeData(efa->v1);
+ n2 = nodeData(efa->v2);
+ n3 = nodeData(efa->v3);
addTriangleToGraph(rg, n1, n2, n3, efa);
if (efa->v4)
{
- ReebNode *n4 = (ReebNode*)efa->v4->tmp.p;
+ ReebNode *n4 = nodeData(efa->v4);
addTriangleToGraph(rg, n1, n3, n4, efa);
}
#ifdef DEBUG_REEB
@@ -2566,8 +2618,6 @@
printf("\n");
- BLI_listbase_from_dlist(dlist, &rg->nodes);
-
removeZeroNodes(rg);
removeNormalNodes(rg);
@@ -2587,12 +2637,12 @@
/* First pass, determine maximum and minimum */
eve = em->verts.first;
- minimum = eve->tmp.fp;
- maximum = eve->tmp.fp;
+ minimum = weightData(eve);
+ maximum = minimum;
for(eve = em->verts.first; eve; eve = eve->next)
{
- maximum = MAX2(maximum, eve->tmp.fp);
- minimum = MIN2(minimum, eve->tmp.fp);
+ maximum = MAX2(maximum, weightData(eve));
+ minimum = MIN2(minimum, weightData(eve));
}
range = maximum - minimum;
@@ -2600,7 +2650,8 @@
/* Normalize weights */
for(eve = em->verts.first; eve; eve = eve->next)
{
- eve->tmp.fp = (eve->tmp.fp - minimum) / range * newmax;
+ float weight = (weightData(eve) - minimum) / range * newmax;
+ weightSetData(eve, weight);
}
}
@@ -2615,7 +2666,7 @@
/* Copy coordinate in weight */
for(eve = em->verts.first; eve; eve = eve->next)
{
- eve->tmp.fp = eve->co[axis];
+ weightSetData(eve, eve->co[axis]);
}
return 1;
@@ -2648,9 +2699,9 @@
/* Angle opposite e3 */
float t3 = cotan_weight(v3->co, v1->co, v2->co) / e1;
- int i1 = v1->hash;
- int i2 = v2->hash;
- int i3 = v3->hash;
+ int i1 = indexData(v1);
+ int i2 = indexData(v2);
+ int i3 = indexData(v3);
nlMatrixAdd(i1, i1, t2+t3);
nlMatrixAdd(i2, i2, t1+t3);
@@ -2699,8 +2750,8 @@
int maximum = 1;
int minimum = 1;
- NextEdgeForVert(indexed_edges, NULL); /* Reset next edge */
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list