A library for working with phylogenetic and population genetic data.
v0.27.0
utils/tools/color/functions.hpp
Go to the documentation of this file.
1 #ifndef GENESIS_UTILS_TOOLS_COLOR_FUNCTIONS_H_
2 #define GENESIS_UTILS_TOOLS_COLOR_FUNCTIONS_H_
3 
4 /*
5  Genesis - A toolkit for working with phylogenetic data.
6  Copyright (C) 2014-2020 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 <iosfwd>
35 #include <map>
36 #include <string>
37 #include <vector>
38 
39 namespace genesis {
40 namespace utils {
41 
42 // =================================================================================================
43 // Forward Declarations
44 // =================================================================================================
45 
46 class Color;
47 
48 // =================================================================================================
49 // Color Conversion
50 // =================================================================================================
51 
56 Color color_from_bytes( unsigned char r, unsigned char g, unsigned char b, unsigned char a = 255 );
57 
65 Color color_from_hex( std::string const& hex_color, std::string const& prefix = "#" );
66 
75 std::string color_to_hex(
76  Color const& c,
77  std::string const& prefix = "#",
78  bool uppercase = false,
79  bool with_alpha = false
80 );
81 
82 // =================================================================================================
83 // Color Operators
84 // =================================================================================================
85 
89 std::ostream& operator<< ( std::ostream& os, Color const& h );
90 
97 Color resolve_color_string( std::string const& color_str );
98 
99 // =================================================================================================
100 // Color Gradients
101 // =================================================================================================
102 
106 Color interpolate (Color const& color1, Color const& color2, double fraction);
107 
139 Color gradient ( std::map<double, Color> const& ranges, double value );
140 
148 Color heat_gradient (double percentage);
149 
150 } // namespace utils
151 } // namespace genesis
152 
153 #endif // include guard
genesis::utils::operator<<
std::ostream & operator<<(std::ostream &os, const Matrix< signed char > &matrix)
Template specialization for signed char, in order to print nicely.
Definition: utils/containers/matrix/operators.cpp:89
genesis::utils::color_from_hex
Color color_from_hex(std::string const &hex_color, std::string const &prefix)
Create a Color given a hex color string in the format "#003366[ff]".
Definition: utils/tools/color/functions.cpp:63
genesis::utils::gradient
Color gradient(std::map< double, Color > const &ranges, double value)
Returns a Color that is created using a color gradient.
Definition: utils/tools/color/functions.cpp:170
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::heat_gradient
Color heat_gradient(double percentage)
Return a Color that represents a heat gradient for a given percentage value.
Definition: utils/tools/color/functions.cpp:203
genesis::utils::interpolate
Color interpolate(Color const &color1, Color const &color2, double fraction)
Linearily interpolate between two Colors.
Definition: utils/tools/color/functions.cpp:154
genesis::utils::color_from_bytes
Color color_from_bytes(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
Create a Color given three or four values in the range [ 0, 255 ] for each of the components red,...
Definition: utils/tools/color/functions.cpp:53
genesis::utils::resolve_color_string
Color resolve_color_string(std::string const &color_str)
Resolve a string representing a color.
Definition: utils/tools/color/functions.cpp:138
genesis::utils::color_to_hex
std::string color_to_hex(Color const &c, std::string const &prefix, bool uppercase, bool with_alpha)
Return a hex string representation of a Color in the format "#003366[ff]".
Definition: utils/tools/color/functions.cpp:100