A toolkit for working with phylogenetic data.
v0.20.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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-2018 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() = 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
CircularLayout(Tree const &orig_tree, LayoutType const drawing_type=LayoutType::kCladogram, bool ladderize=true)
Class for representing phylogenetic trees.
Definition: tree/tree.hpp:95
CircularLayout & operator=(CircularLayout const &)=default
void ladderize(Tree &tree, LadderizeOrder order)
virtual ~CircularLayout()=default