A toolkit for working with phylogenetic data.
v0.19.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-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 
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
Color resolve_color_string(std::string const &color_str)
Resolve a string representing a color.
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]".
std::ostream & operator<<(std::ostream &os, const Matrix< T > &matrix)
Print the elements of a Matrix to a stream, using operator << for each element.
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::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]".