A toolkit for working with phylogenetic data.
v0.18.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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-2017 Lucas Czech
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 
91 // =================================================================================================
92 // Color Gradients
93 // =================================================================================================
94 
98 Color interpolate (Color const& color1, Color const& color2, double fraction);
99 
131 Color gradient ( std::map<double, Color> const& ranges, double value );
132 
140 Color heat_gradient (double percentage);
141 
142 } // namespace utils
143 } // namespace genesis
144 
145 #endif // include guard
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...
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]".
Color interpolate(Color const &color1, Color const &color2, double fraction)
Linearily interpolate between two Colors.
Color heat_gradient(double percentage)
Return a Color that represents a heat gradient for a given percentage value.
Color gradient(std::map< double, Color > const &ranges, double value)
Returns a Color that is created using a color gradient.
std::ostream & operator<<(std::ostream &os, NexusBlock const &block)
Definition: block.hpp:80
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]".