NCBI C++ ToolKit
|
#include <corelib/ncbistd.hpp>
#include <corelib/ncbiobj.hpp>
#include <gui/utils/vect2.hpp>
#include <gui/opengl/glrect.hpp>
#include <gui/widgets/phylo_tree/tree_model.hpp>
#include <gui/widgets/phylo_tree/tree_graphics_model.hpp>
#include <gui/widgets/phylo_tree/phylo_selection_set.hpp>
#include <gui/widgets/phylo_tree/phylo_tree_node.hpp>
Go to the source code of this file.
Go to the SVN repository for this file.
Classes | |
class | CPhyloTree |
Tree subclass also has functions and data needed for rendering and selection. More... | |
Functions | |
template<class TTreeModel , class Fun > | |
void | TreeDepthFirstEx (TTreeModel &tree_model, typename TTreeModel::TTreeIdx node_idx, Fun &func) |
Depth-first tree traversal that skips collapsed nodes. More... | |
template<class TTreeModel , class Fun > | |
void | TreeDepthFirstEx (TTreeModel &tree_model, Fun &func) |
Calls TreeDepthFirst with the root node of 'tree_model'. More... | |
template<class TTreeModel , class Fun > | |
void | TreeBreadthFirstEx (TTreeModel &tree_model, typename TTreeModel::TTreeIdx node_idx, Fun &func) |
Breadth-first tree traversal that skips collapsed nodes. More... | |
template<class TTreeModel , class Fun > | |
void | TreeBreadthFirstEx (TTreeModel &tree_model, Fun &func) |
Calls TreeBreadthFirstEx with the root node of 'tree_model'. More... | |
void TreeBreadthFirstEx | ( | TTreeModel & | tree_model, |
Fun & | func | ||
) |
Calls TreeBreadthFirstEx with the root node of 'tree_model'.
Definition at line 588 of file phylo_tree.hpp.
References TreeBreadthFirstEx().
void TreeBreadthFirstEx | ( | TTreeModel & | tree_model, |
typename TTreeModel::TTreeIdx | node_idx, | ||
Fun & | func | ||
) |
Breadth-first tree traversal that skips collapsed nodes.
Traverse the tree in breadth-first order, skipping collapsed nodes.
Takes tree and visitor function and calls function for every node in the subtree rooted at node_idx
Functor should have the next prototype: ETreeTraverseCode Func(TTreeType& tree, TTreeType::TTreeIdx node, int delta) where node is a reference to the visited node index and delta_level reflects the current traverse direction(depth wise) in the tree, 0 - algorithm stays on the same level 1 - we are going one level deep into the tree (from the root)
Definition at line 525 of file phylo_tree.hpp.
References eTreeTraverse, eTreeTraverseStepOver, and eTreeTraverseStop.
Referenced by TreeBreadthFirstEx(), and CPhyloRectCladogram::x_DrawSplineTree().
void TreeDepthFirstEx | ( | TTreeModel & | tree_model, |
Fun & | func | ||
) |
Calls TreeDepthFirst with the root node of 'tree_model'.
Definition at line 500 of file phylo_tree.hpp.
References TreeDepthFirstEx().
void TreeDepthFirstEx | ( | TTreeModel & | tree_model, |
typename TTreeModel::TTreeIdx | node_idx, | ||
Fun & | func | ||
) |
Depth-first tree traversal that skips collapsed nodes.
Identical to TreeDepthFirst except for the skipping of collapsed nodes.
Takes tree and visitor function and calls function for every node in the subtree rooted at node_idx
Functor should have the next prototype: ETreeTraverseCode Func(TTreeType& tree, TTreeType::TTreeIdx node, int delta) where node is a reference to the visited node index and delta_level reflects the current traverse direction(depth wise) in the tree, 0 - algorithm stays is on the same level 1 - we are going one level deep into the tree (from the root) -1 - we are traveling back by one level (getting close to the root)
The specificts of the algorithm is that it calls visitor both on the way from the root to leafs and on the way back Using this template we can implement both variants of tree traversal (pre-order and post-order) Visitor controls the traversal by returning ETreeTraverseCode
Definition at line 429 of file phylo_tree.hpp.
References eTreeTraverse, eTreeTraverseStepOver, and eTreeTraverseStop.
Referenced by TreeDepthFirstEx(), CPhyloCircularCladogram::x_Calculate(), CPhyloRadial::x_Calculate(), CPhyloRectCladogram::x_Calculate(), CPhyloSlantedCladogram::x_Calculate(), CPhyloForce::x_CalculateBoundary(), CPhyloRectCladogram::x_DrawPseudoSplineTree(), CPhyloCircularCladogram::x_DrawTree(), CPhyloRadial::x_DrawTreeVbo(), CPhyloSlantedCladogram::x_DrawTreeVbo(), and CPhyloTreePS::x_Init().