diff options
Diffstat (limited to 'source/blender/editors/armature/reeb.h')
-rw-r--r-- | source/blender/editors/armature/reeb.h | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/source/blender/editors/armature/reeb.h b/source/blender/editors/armature/reeb.h deleted file mode 100644 index 9eed343f18a..00000000000 --- a/source/blender/editors/armature/reeb.h +++ /dev/null @@ -1,207 +0,0 @@ -/* - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * Contributor(s): Martin Poirier - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** \file blender/editors/armature/reeb.h - * \ingroup edarmature - */ - - -#ifndef __REEB_H__ -#define __REEB_H__ - -#define WITH_BF_REEB - -#include "DNA_listBase.h" - -#include "BLI_graph.h" - -struct GHash; -struct EdgeHash; -struct ReebArc; -struct ReebEdge; -struct ReebNode; - -typedef struct ReebGraph { - ListBase arcs; - ListBase nodes; - - float length; - - FreeArc free_arc; - FreeNode free_node; - RadialSymmetry radial_symmetry; - AxialSymmetry axial_symmetry; - /*********************************/ - - int resolution; - int totnodes; - struct EdgeHash *emap; - int multi_level; - struct ReebGraph *link_up; /* for multi resolution filtering, points to higher levels */ -} ReebGraph; - -typedef struct EmbedBucket { - float val; - int nv; - float p[3]; - float no[3]; /* if non-null, normal of the bucket */ -} EmbedBucket; - -typedef struct ReebNode { - void *next, *prev; - float p[3]; - int flag; - - int degree; - struct ReebArc **arcs; - - int subgraph_index; - - int symmetry_level; - int symmetry_flag; - float symmetry_axis[3]; - /*********************************/ - - float no[3]; - - int index; - float weight; - int multi_level; - struct ReebNode *link_down; /* for multi resolution filtering, points to lower levels, if present */ - struct ReebNode *link_up; -} ReebNode; - -typedef struct ReebEdge { - struct ReebEdge *next, *prev; - struct ReebArc *arc; - struct ReebNode *v1, *v2; - struct ReebEdge *nextEdge; - int flag; -} ReebEdge; - -typedef struct ReebArc { - void *next, *prev; - struct ReebNode *head, *tail; - int flag; - - float length; - - int symmetry_level; - int symmetry_group; - int symmetry_flag; - /*********************************/ - - ListBase edges; - int bcount; - struct EmbedBucket *buckets; - - struct GHash *faces; - float angle; - struct ReebArc *link_up; /* for multi resolution filtering, points to higher levels */ -} ReebArc; - -typedef struct ReebArcIterator { - HeadFct head; - TailFct tail; - PeekFct peek; - NextFct next; - NextNFct nextN; - PreviousFct previous; - StoppedFct stopped; - - float *p, *no; - float size; - - int length; - int index; - /*********************************/ - struct ReebArc *arc; - int start; - int end; - int stride; -} ReebArcIterator; - -#if 0 -struct EditMesh; -struct EdgeIndex; - -int weightToHarmonic(struct EditMesh *em, struct EdgeIndex *indexed_edges); -int weightFromDistance(struct EditMesh *em, struct EdgeIndex *indexed_edges); -int weightFromLoc(struct EditMesh *me, int axis); -//void weightToVCol(struct EditMesh *em, int index); -void arcToVCol(struct ReebGraph *rg, struct EditMesh *em, int index); -//void angleToVCol(struct EditMesh *em, int index); -void renormalizeWeight(struct EditMesh *em, float newmax); - -ReebGraph *generateReebGraph(struct EditMesh *me, int subdivisions); -#endif - -ReebGraph *newReebGraph(void); - -void initArcIterator(BArcIterator *iter, struct ReebArc *arc, struct ReebNode *head); -void initArcIterator2(BArcIterator *iter, struct ReebArc *arc, int start, int end); -void initArcIteratorStart(BArcIterator *iter, struct ReebArc *arc, struct ReebNode *head, int start); - -/* Filtering */ -void filterNullReebGraph(ReebGraph *rg); -int filterSmartReebGraph(ReebGraph *rg, float threshold); - -/* Post-Build processing */ -void repositionNodes(ReebGraph *rg); -void postprocessGraph(ReebGraph *rg, char mode); -void removeNormalNodes(ReebGraph *rg); - -void sortNodes(ReebGraph *rg); -void sortArcs(ReebGraph *rg); - -/*------------ Sanity check ------------*/ -void verifyBuckets(ReebGraph *rg); -void verifyFaces(ReebGraph *rg); -void verifyArcs(ReebGraph *rg); -void verifyNodeDegree(ReebGraph *rg); - -/*********************** PUBLIC *********************************/ - -#define REEB_MAX_MULTI_LEVEL 10 - -struct bContext; - -ReebGraph *BIF_ReebGraphFromEditMesh(void); -ReebGraph *BIF_ReebGraphMultiFromEditMesh(struct bContext *C); -void BIF_flagMultiArcs(ReebGraph *rg, int flag); - -void BIF_GlobalReebGraphFromEditMesh(void); -void BIF_GlobalReebFree(void); - -ReebNode *BIF_otherNodeFromIndex(ReebArc *arc, ReebNode *node); -ReebNode *BIF_NodeFromIndex(ReebArc *arc, ReebNode *node); -ReebNode *BIF_lowestLevelNode(ReebNode *node); - -ReebGraph *BIF_graphForMultiNode(ReebGraph *rg, ReebNode *node); - -void REEB_freeGraph(ReebGraph *rg); -void REEB_freeArc(BArc *barc); -void REEB_exportGraph(ReebGraph *rg, int count); -void REEB_draw(void); - - -#endif /*__REEB_H__*/ |