qualpal 4.0.0
Loading...
Searching...
No Matches
qualpal.h
Go to the documentation of this file.
1
50#pragma once
51
52#include <map>
53#include <optional>
54#include <qualpal/colors.h>
55#include <qualpal/metrics.h>
56#include <vector>
57
62namespace qualpal {
63
73{
74 HSL,
75 LCHab
76};
77
88{
89 std::array<double, 2> h_lim;
90 std::array<double, 2> s_or_c_lim;
91 std::array<double, 2> l_lim;
92};
93
105{
106public:
110 Qualpal() = default;
111
118 Qualpal& setInputRGB(const std::vector<colors::RGB>& colors);
119
126 Qualpal& setInputHex(const std::vector<std::string>& colors);
127
134 Qualpal& setInputPalette(const std::string& palette_name);
135
146 Qualpal& setInputColorspace(const std::array<double, 2>& h_lim,
147 const std::array<double, 2>& s_or_c_lim,
148 const std::array<double, 2>& l_lim,
149 ColorspaceType space = ColorspaceType::HSL);
150
171 const std::vector<ColorspaceRegion>& regions,
172 ColorspaceType space = ColorspaceType::HSL);
173
183 Qualpal& setCvd(const std::map<std::string, double>& cvd_params);
184
191
198
206
214 Qualpal& setColorspaceSize(std::size_t n_points);
215
222
228 Qualpal& setWhitePoint(const std::array<double, 3>& white_point);
229
237 std::vector<colors::RGB> generate(std::size_t n);
238
247 std::vector<colors::RGB> extend(const std::vector<colors::RGB>& palette,
248 std::size_t n);
249
250private:
251 std::vector<colors::RGB> selectColors(
252 std::size_t n,
253 const std::vector<colors::RGB>& fixed_palette = {});
254
255 std::vector<colors::RGB> rgb_colors_in;
256
257 std::vector<std::string> hex_colors;
258
259 std::string palette;
260
261 std::vector<ColorspaceRegion> colorspace_regions;
262 std::size_t n_points = 1000;
263
267 enum class Mode
268 {
269 NONE,
270 RGB,
271 HEX,
272 PALETTE,
273 COLORSPACE
274 } mode = Mode::NONE;
275
276 std::map<std::string, double> cvd;
277 std::optional<colors::RGB> bg;
279 double max_memory = 1;
280 ColorspaceType colorspace_input = ColorspaceType::HSL;
281 std::array<double, 3> white_point = { 0.95047, 1, 1.08883 }; // D65
282};
283
284} // namespace qualpal
Builder for qualitative color palette generation.
Definition qualpal.h:105
Qualpal & setInputRGB(const std::vector< colors::RGB > &colors)
Set input colors from a vector of RGB values.
Qualpal & setColorspaceSize(std::size_t n_points)
Set the number of points in the colorspace grid for HSL and LCHab input.
Qualpal & setMetric(metrics::MetricType metric)
Set the color difference metric to use.
Qualpal & setInputPalette(const std::string &palette_name)
Set input colors from a named palette.
std::vector< colors::RGB > generate(std::size_t n)
Generate a qualitative color palette with the configured options.
Qualpal & setMemoryLimit(double gb)
Set the maximum memory limit (in GB) for color difference matrix.
Qualpal & setInputColorspace(const std::array< double, 2 > &h_lim, const std::array< double, 2 > &s_or_c_lim, const std::array< double, 2 > &l_lim, ColorspaceType space=ColorspaceType::HSL)
Set input colors by sampling a colorspace (HSL or LCHab).
Qualpal & setWhitePoint(WhitePoint wp)
Set the reference white point for color conversions.
std::vector< colors::RGB > extend(const std::vector< colors::RGB > &palette, std::size_t n)
Extend an existing palette by adding n new colors.
Qualpal & setBackground(const colors::RGB &bg_color)
Set the background color for palette generation.
Qualpal()=default
Default constructor. Initializes with no input source.
Qualpal & setInputColorspaceRegions(const std::vector< ColorspaceRegion > &regions, ColorspaceType space=ColorspaceType::HSL)
Set input colors by sampling multiple regions in a colorspace.
Qualpal & setInputHex(const std::vector< std::string > &colors)
Set input colors from a vector of hex color strings.
Qualpal & setCvd(const std::map< std::string, double > &cvd_params)
Set color vision deficiency simulation parameters.
Qualpal & setWhitePoint(const std::array< double, 3 > &white_point)
Set the reference white point using custom XYZ values.
RGB color representation with values in [0,1] range.
Definition colors.h:120
Color representation classes.
Color difference metrics for qualpal.
MetricType
Supported color difference metrics for palette generation and analysis.
Definition metrics.h:91
@ CIEDE2000
CIEDE2000 (Delta E 2000) color difference.
Qualitative color palette generation library.
Definition analyze.h:21
WhitePoint
Standard CIE illuminants for color space conversions.
Definition colors.h:31
ColorspaceType
Supported cylindrical color spaces for input colors.
Definition qualpal.h:73
Defines a rectangular region in a cylindrical color space.
Definition qualpal.h:88
std::array< double, 2 > h_lim
Hue range in degrees [-360, 360].
Definition qualpal.h:89
std::array< double, 2 > l_lim
Lightness range.
Definition qualpal.h:91
std::array< double, 2 > s_or_c_lim
Saturation/Chroma range.
Definition qualpal.h:90