#include <graphbase.h>
Basic undirected graph template.
| NODE | The node type in the graph. |
| EDGE | The edge type in the graph. |
Public Types | |
| typedef GraphBase< NODE, EDGE > | Super |
| typedef NODE | NodeType |
| typedef EDGE | EdgeType |
Public Member Functions | |
| GraphBase () | |
| ~GraphBase () | |
| GraphBase (GraphBase &&src) | |
| Result< void > | CopyFrom (const GraphBase &src) |
| Result< void > | AppendGraph (const GraphBase &src) |
| GRAPH_TYPE | GetType () const |
| void | SetType (GRAPH_TYPE type) |
| Int | GetNodesCount (Bool subPoint=false) const |
| Int | GetEdgesCount () const |
| NODE * | GetFirstNode () |
| NODE * | GetLastNode () |
| NODE * | FindNodeByPosition (const Vector &position, Float tolerance=0.0) |
| const NODE * | FindNodeByPosition (const Vector &position, Float tolerance=0.0) const |
| Result< NODE * > | GetNode (Int idx) |
| Result< const NODE * > | GetNode (Int idx) const |
| Result< NODE * > | GetSuccessor (NODE *node) |
| Result< NODE * > | GetPredecessor (NODE *node) |
| Result< EDGE * > | GetSuccessorEdge (NODE *node) |
| Result< EDGE * > | GetPredecessorEdge (NODE *node) |
| Int | FindNode (NODE *node) |
| Result< EDGE * > | GetEdge (Int idx) |
| Result< const EDGE * > | GetEdge (Int idx) const |
| Int | FindEdge (EDGE *edge) |
| Result< EDGE * > | GetEdgeByPoints (NodeType *p1, NodeType *p2) const |
| Result< NODE * > | AddNode (const NodeType &node, Int pos=NOTOK) |
| Result< EDGE * > | AddEdge (NodeType *p1, NodeType *p2, Int pos=NOTOK) |
| Result< NODE * > | SplitEdge (const NODE &node, EdgeType *edge) |
| Result< EDGE * > | SplitEdge (NodeType *node, EdgeType *edge) |
| Result< void > | DeleteNode (NodeType *node, Bool replaceEdge=true) |
| Result< void > | DeleteNode (Int pos, Bool replaceEdge=true) |
| Result< void > | DeleteEdge (EdgeType *edge, Bool nodes=false) |
| Result< void > | DeleteEdge (Int pos, Bool nodes=false) |
| Result< void > | WeldNodes (NodeType *p1, NodeType *p2) |
| Result< void > | MeltEdge (EdgeType *edge) |
| Result< void > | MeltEdge (Int pos) |
| void | Reset () |
Protected Attributes | |
| GRAPH_TYPE | _type |
| PointerArray< NODE > | _nodes |
| PointerArray< EDGE > | _edges |
| typedef NODE NodeType |
| typedef EDGE EdgeType |
|
explicit |
| ~GraphBase | ( | ) |
Append src graph t this graph, the existing graph is mantained.
| [in] | src | The graph to append. |
| GRAPH_TYPE GetType | ( | ) | const |
Get The graph type.
| void SetType | ( | GRAPH_TYPE | type | ) |
Set The graph type.
| [in] | type | The new graph type. |
Get All nodes count in the graph.
| Int GetEdgesCount | ( | ) | const |
Get All edge count in the graph.
| NODE* GetFirstNode | ( | ) |
Get a pointer to the first node.
| NODE* GetLastNode | ( | ) |
Get a pointer to the last node.
Serch a node with at passed position.
| [in] | position | The 3d position where search the node. |
| [in] | tolerance | Search can be tolerat if passed value is != 0. |
Serch a node with at passed position.
| [in] | position | The 3d position where search the node. |
| [in] | tolerance | Search can be tolerat if passed value is != 0. |
Get a node in the list.
| [in] | idx | The node index in the list. |
Get a node in the list.
| [in] | idx | The node index in the list. |
| Result<NODE*> GetSuccessor | ( | NODE * | node | ) |
Get the successor node, valid only in continuos graph case.
| [in] | node | The node. |
| Result<NODE*> GetPredecessor | ( | NODE * | node | ) |
Get the predecessor node, valid only in continuos graph case.
| [in] | node | The node. |
| Result<EDGE*> GetSuccessorEdge | ( | NODE * | node | ) |
Get the successor edge, valid only in continuos graph case.
| [in] | node | The node. |
| Result<EDGE*> GetPredecessorEdge | ( | NODE * | node | ) |
Get the predecessor edge, valid only in continuos graph case.
| [in] | node | The node. |
| Int FindNode | ( | NODE * | node | ) |
Check if node exist in the node list and return the index.
| [in] | node | The node to check for. |
Get a edge at idx in the list.
| [in] | idx | The edge index in the list. |
Get a edge at idx in the list.
| [in] | idx | The edge index in the list. |
| Int FindEdge | ( | EDGE * | edge | ) |
Check if edge exist in the edge list and return the index.
| [in] | edge | The edge to check for. |
Check if exist a edge in between p1 and p2, if yes return the pointer.
| [in] | p1 | First edge point. |
| [in] | p2 | Second edge point. |
Add a new node to the list.
| [in] | node | The new pen node to add. |
| [in] | pos | Optional position in to the array if NOTOK or not passed the point is added at the end of the list. |
Add a new edge in between p1 and p2 with type and initialize it. Automatically map the stoke to the points list.
| [in] | p1 | First edge node. |
| [in] | p2 | Second edge node. |
| [in] | pos | If not NOTOK new stroke will be inserted at pos in the list. |
Split edge in 2 parts by adding the new node.
| [in] | node | The new node to insert in to the list. |
| [in] | edge | The edge to split. |
Split edge in 2 parts by attaching it to an existing node.
| [in] | node | The node to attach the strokes. |
| [in] | edge | The edge to split. |
Remove node and the connected edges.
| [in] | node | The node to be removed. |
| [in] | replaceEdge | If true a new edge will be added to fill the gap, just if the graph is not sparse (max 2 edges per node). |
Remove node at pos and the connected edges.
| [in] | pos | The index position of node to be removed. |
| [in] | replaceEdge | If true a new edge will be added to fill the gap, just if the graph is not sparse (max 2 edges per node). |
Remove the edge and adjust the nodes<->edges mapping.
| [in] | edge | The edge to be removed. |
| [in] | nodes | If True also node will be deleted if any other edge use it. |
Remove the edge and adjust the nodes<->edges mapping.
| [in] | pos | The position in to edge list. |
| [in] | nodes | If True also nodes will be deleted if any other edge use it. |
Weld disconnected nodes.
| [in] | p1 | First node, this node will be stay alive. |
| [in] | p2 | Second node. |
Shrink edge to a single node and refresh the graph.
| [in] | edge | The edge to be removed. |
Shrink edge at pos to a single node and refresh the graph.
| [in] | pos | The position in to edge list. |
| void Reset | ( | ) |
Free memory and reset all values.
|
protected |
|
protected |
|
protected |