A library for working with phylogenetic and population genetic data.
v0.27.0
rectangular_layout.hpp
Go to the documentation of this file.
1 #ifndef GENESIS_TREE_DRAWING_RECTANGULAR_LAYOUT_H_
2 #define GENESIS_TREE_DRAWING_RECTANGULAR_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 // Rectangular Layout
45 // =================================================================================================
46 
48 {
49 public:
50 
51  // -------------------------------------------------------------
52  // Constructors and Rule of Five
53  // -------------------------------------------------------------
54 
55  RectangularLayout() = 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 ~RectangularLayout() override = default;
65 
66  RectangularLayout( RectangularLayout const& ) = default;
67  RectangularLayout( RectangularLayout&& ) = default;
68 
69  RectangularLayout& operator= ( RectangularLayout const& ) = default;
71 
72  // -------------------------------------------------------------
73  // Settings
74  // -------------------------------------------------------------
75 
76  RectangularLayout& width( double const value );
77  double width() const;
78 
79  RectangularLayout& height( double const value );
80  double height() const;
81 
82  // -------------------------------------------------------------
83  // Virtual Functions
84  // -------------------------------------------------------------
85 
86 private:
87 
88  utils::SvgDocument to_svg_document_() const override;
89 
90  // -------------------------------------------------------------
91  // Data Members
92  // -------------------------------------------------------------
93 
94 private:
95 
96  double width_ = 0.0;
97  double height_ = 0.0;
98 
99 };
100 
101 } // namespace tree
102 } // namespace genesis
103 
104 #endif // include guard
genesis::tree::RectangularLayout::~RectangularLayout
virtual ~RectangularLayout() override=default
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::RectangularLayout
Definition: rectangular_layout.hpp:47
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::RectangularLayout::RectangularLayout
RectangularLayout()=default
genesis::tree::Tree
Class for representing phylogenetic trees.
Definition: tree/tree.hpp:97
genesis::tree::RectangularLayout::operator=
RectangularLayout & operator=(RectangularLayout const &)=default
genesis::tree::RectangularLayout::height
double height() const
Definition: rectangular_layout.cpp:64
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::RectangularLayout::RectangularLayout
RectangularLayout(Tree const &orig_tree, LayoutType const drawing_type=LayoutType::kCladogram, bool ladderize=true)
Definition: rectangular_layout.hpp:56
genesis::tree::RectangularLayout::width
double width() const
Definition: rectangular_layout.cpp:53