A library for working with phylogenetic and population genetic data.
v0.27.0
circular_layout.hpp
Go to the documentation of this file.
1 #ifndef GENESIS_TREE_DRAWING_CIRCULAR_LAYOUT_H_
2 #define GENESIS_TREE_DRAWING_CIRCULAR_LAYOUT_H_
3 
4 /*
5  Genesis - A toolkit for working with phylogenetic data.
6  Copyright (C) 2014-2019 Lucas Czech and HITS gGmbH
7 
8  This program is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program. If not, see <http://www.gnu.org/licenses/>.
20 
21  Contact:
22  Lucas Czech <lucas.czech@h-its.org>
23  Exelixis Lab, Heidelberg Institute for Theoretical Studies
24  Schloss-Wolfsbrunnenweg 35, D-69118 Heidelberg, Germany
25 */
26 
36 
37 #include <string>
38 #include <vector>
39 
40 namespace genesis {
41 namespace tree {
42 
43 // =================================================================================================
44 // Circular Layout
45 // =================================================================================================
46 
47 class CircularLayout : public LayoutBase
48 {
49 public:
50 
51  // -------------------------------------------------------------
52  // Constructors and Rule of Five
53  // -------------------------------------------------------------
54 
55  CircularLayout() = default;
57  Tree const& orig_tree,
58  LayoutType const drawing_type = LayoutType::kCladogram,
59  bool ladderize = true
60  )
61  : LayoutBase( orig_tree, drawing_type, ladderize )
62  {}
63 
64  virtual ~CircularLayout() override = default;
65 
66  CircularLayout( CircularLayout const& ) = default;
67  CircularLayout( CircularLayout&& ) = default;
68 
69  CircularLayout& operator= ( CircularLayout const& ) = default;
71 
72  // -------------------------------------------------------------
73  // Settings
74  // -------------------------------------------------------------
75 
76  CircularLayout& radius( double const value );
77  double radius() const;
78 
79  // -------------------------------------------------------------
80  // Virtual Functions
81  // -------------------------------------------------------------
82 
83 private:
84 
85  utils::SvgDocument to_svg_document_() const override;
86 
87  // -------------------------------------------------------------
88  // Data Members
89  // -------------------------------------------------------------
90 
91 private:
92 
93  double radius_ = 0.0;
94 
95 };
96 
97 } // namespace tree
98 } // namespace genesis
99 
100 #endif // include guard
genesis::tree::LayoutBase
Definition: layout_base.hpp:91
genesis::tree::LayoutType
LayoutType
Type of tree for drawing, either phylogram or cladogram.
Definition: layout_base.hpp:62
genesis::tree::CircularLayout::CircularLayout
CircularLayout(Tree const &orig_tree, LayoutType const drawing_type=LayoutType::kCladogram, bool ladderize=true)
Definition: circular_layout.hpp:56
layout_base.hpp
genesis::tree::ladderize
void ladderize(Tree &tree, LadderizeOrder order)
Ladderize a Tree, that is, order its subtrees by size.
Definition: tree/function/manipulation.cpp:840
genesis::tree::CircularLayout::CircularLayout
CircularLayout()=default
genesis::tree::Tree
Class for representing phylogenetic trees.
Definition: tree/tree.hpp:97
genesis::tree::CircularLayout::operator=
CircularLayout & operator=(CircularLayout const &)=default
genesis
Container namespace for all symbols of genesis in order to keep them separate when used as a library.
Definition: placement/formats/edge_color.cpp:42
genesis::utils::SvgDocument
Definition: svg/document.hpp:49
genesis::tree::LayoutType::kCladogram
@ kCladogram
svg.hpp
genesis::tree::CircularLayout::radius
double radius() const
Definition: circular_layout.cpp:56
genesis::tree::CircularLayout::~CircularLayout
virtual ~CircularLayout() override=default
genesis::tree::CircularLayout
Definition: circular_layout.hpp:47