A library for working with phylogenetic and population genetic data.
v0.32.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
34
#include "
genesis/utils/formats/svg/svg.hpp
"
35
#include "
genesis/tree/drawing/layout_base.hpp
"
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
;
56
CircularLayout
(
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
;
70
CircularLayout
&
operator=
(
CircularLayout
&& ) =
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:50
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
lib
genesis
tree
drawing
circular_layout.hpp
Generated on Mon Aug 5 2024 16:57:51 for genesis by
1.8.17