diff options
Diffstat (limited to 'source/blender/blenlib/BLI_graph.h')
-rw-r--r-- | source/blender/blenlib/BLI_graph.h | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/source/blender/blenlib/BLI_graph.h b/source/blender/blenlib/BLI_graph.h deleted file mode 100644 index 7936f5a6fab..00000000000 --- a/source/blender/blenlib/BLI_graph.h +++ /dev/null @@ -1,185 +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. - * - * The Original Code is Copyright (C) 2008 Blender Foundation. - * All rights reserved. - * - * Contributor(s): Joshua Leung - * - * ***** END GPL LICENSE BLOCK ***** - */ -#ifndef __BLI_GRAPH_H__ -#define __BLI_GRAPH_H__ - -/** \file BLI_graph.h - * \ingroup bli - */ - -#include "DNA_listBase.h" - -struct BGraph; -struct BNode; -struct BArc; - -struct RadialArc; - -typedef void (*FreeArc)(struct BArc *); -typedef void (*FreeNode)(struct BNode *); -typedef void (*RadialSymmetry)(struct BNode *root_node, struct RadialArc *ring, int total); -typedef void (*AxialSymmetry)(struct BNode *root_node, struct BNode *node1, struct BNode *node2, struct BArc *arc1, struct BArc *arc2); - -/* IF YOU MODIFY THOSE TYPES, YOU NEED TO UPDATE ALL THOSE THAT "INHERIT" FROM THEM - * - * RigGraph, ReebGraph - * - * */ - -typedef struct BGraph { - ListBase arcs; - ListBase nodes; - - float length; - - /* function pointer to deal with custom fonctionnality */ - FreeArc free_arc; - FreeNode free_node; - RadialSymmetry radial_symmetry; - AxialSymmetry axial_symmetry; -} BGraph; - -typedef struct BNode { - void *next, *prev; - float p[3]; - int flag; - - int degree; - struct BArc **arcs; - - int subgraph_index; - - int symmetry_level; - int symmetry_flag; - float symmetry_axis[3]; -} BNode; - -typedef struct BArc { - void *next, *prev; - struct BNode *head, *tail; - int flag; - - float length; - - int symmetry_level; - int symmetry_group; - int symmetry_flag; -} BArc; - -struct BArcIterator; - -void *IT_head(void *iter); -void *IT_tail(void *iter); -void *IT_peek(void *iter, int n); -void *IT_next(void *iter); -void *IT_nextN(void *iter, int n); -void *IT_previous(void *iter); -int IT_stopped(void *iter); - -typedef void * (*HeadFct)(void *iter); -typedef void * (*TailFct)(void *iter); -typedef void * (*PeekFct)(void *iter, int n); -typedef void * (*NextFct)(void *iter); -typedef void * (*NextNFct)(void *iter, int n); -typedef void * (*PreviousFct)(void *iter); -typedef int (*StoppedFct)(void *iter); - -typedef struct BArcIterator { - HeadFct head; - TailFct tail; - PeekFct peek; - NextFct next; - NextNFct nextN; - PreviousFct previous; - StoppedFct stopped; - - float *p, *no; - float size; - - int length; - int index; -} BArcIterator; - -/* Helper structure for radial symmetry */ -typedef struct RadialArc { - struct BArc *arc; - float n[3]; /* normalized vector joining the nodes of the arc */ -} RadialArc; - -BNode *BLI_otherNode(BArc *arc, BNode *node); - -void BLI_freeNode(BGraph *graph, BNode *node); -void BLI_removeNode(BGraph *graph, BNode *node); - -void BLI_removeArc(BGraph *graph, BArc *arc); - -void BLI_flagNodes(BGraph *graph, int flag); -void BLI_flagArcs(BGraph *graph, int flag); - -bool BLI_hasAdjacencyList(BGraph *rg); -void BLI_buildAdjacencyList(BGraph *rg); -void BLI_rebuildAdjacencyListForNode(BGraph *rg, BNode *node); -void BLI_freeAdjacencyList(BGraph *rg); - -int BLI_FlagSubgraphs(BGraph *graph); -void BLI_ReflagSubgraph(BGraph *graph, int old_subgraph, int new_subgraph); - -#define SHAPE_RADIX 10 /* each shape level is encoded this base */ - -int BLI_subtreeShape(BGraph *graph, BNode *node, BArc *rootArc, int include_root); -float BLI_subtreeLength(BNode *node); -void BLI_calcGraphLength(BGraph *graph); - -void BLI_replaceNode(BGraph *graph, BNode *node_src, BNode *node_replaced); -void BLI_replaceNodeInArc(BGraph *graph, BArc *arc, BNode *node_src, BNode *node_replaced); -void BLI_removeDoubleNodes(BGraph *graph, float limit); -BNode *BLI_FindNodeByPosition(BGraph *graph, const float p[3], const float limit); - -BArc *BLI_findConnectedArc(BGraph *graph, BArc *arc, BNode *v); - -bool BLI_isGraphCyclic(BGraph *graph); - -/*------------ Symmetry handling ------------*/ -void BLI_markdownSymmetry(BGraph *graph, BNode *root_node, float limit); - -void BLI_mirrorAlongAxis(float v[3], float center[3], float axis[3]); - -/* BNode symmetry flags */ -#define SYM_TOPOLOGICAL 1 -#define SYM_PHYSICAL 2 - -/* the following two are exclusive */ -#define SYM_AXIAL 4 -#define SYM_RADIAL 8 - -/* BArc symmetry flags - * - * axial symmetry sides */ -#define SYM_SIDE_POSITIVE 1 -#define SYM_SIDE_NEGATIVE 2 -/* Anything higher is the order in radial symmetry */ -#define SYM_SIDE_RADIAL 3 - -#endif /*__BLI_GRAPH_H__*/ |