7#ifndef SEEN_COLORS_PARSING_H
8#define SEEN_COLORS_PARSING_H
31 static bool css_number(std::istringstream &ss,
double &value, std::string &unit,
bool &
end,
char const sep = 0x0);
32 static bool append_css_value(std::istringstream &ss, std::vector<double> &output,
bool &
end,
char const sep = 0x0,
36 virtual bool parse(std::istringstream &ss, std::vector<double> &output)
const {
return false; };
37 virtual bool parse(std::istringstream &ss, std::vector<double> &output,
bool &more)
const
39 return parse(ss, output);
41 virtual std::string
parseColor(std::istringstream &ss, std::vector<double> &output,
bool &more)
const;
52 :
Parser(alpha ? prefix +
"a" : prefix, type)
66 bool parse(std::istringstream &ss, std::vector<double> &output)
const override;
73 :
Parser(
"#", Space::Type::RGB)
75 bool parse(std::istringstream &input, std::vector<double> &output,
bool &more)
const override;
87 bool parse(std::istringstream &ss, std::vector<double> &output)
const override;
108 bool parse(std::string
const &input,
Space::Type &type, std::string &cms, std::vector<double> &values,
109 std::vector<double> &fallback)
const;
117 bool _parse(std::istringstream &ss,
Space::Type &type, std::string &cms, std::vector<double> &values,
118 std::vector<double> &fallback)
const;
120 std::map<std::string, std::vector<std::shared_ptr<Parser>>>
_parsers;
bool parse(std::istringstream &ss, std::vector< double > &output) const override
Prase the given string stream as a CSS Color Module Level 4/5 string.
CssParser(std::string prefix, Space::Type type, unsigned int channels)
bool parse(std::istringstream &input, std::vector< double > &output, bool &more) const override
Parse either a hex code or an rgb() css string.
bool parse(std::istringstream &ss, std::vector< double > &output) const override
HueParser(std::string const &prefix, Space::Type type, bool alpha)
LegacyParser(std::string const &prefix, Space::Type type, bool alpha)
virtual bool parse(std::istringstream &ss, std::vector< double > &output, bool &more) const
Parser(std::string prefix, Space::Type type)
Space::Type getType() const
static bool css_number(std::istringstream &ss, double &value, std::string &unit, bool &end, char const sep=0x0)
Parse a CSS color number after the function name.
virtual ~Parser()=default
static bool append_css_value(std::istringstream &ss, std::vector< double > &output, bool &end, char const sep=0x0, double scale=1.0)
Parse a CSS color number and format it according to it's unit.
static std::string getCssPrefix(std::istringstream &ss)
Parse CSS color numbers after the function name.
std::string const getPrefix() const
virtual std::string parseColor(std::istringstream &ss, std::vector< double > &output, bool &more) const
Parse this specific color format into output values.
virtual bool parse(std::istringstream &ss, std::vector< double > &output) const
Parsers(Parsers const &)=delete
bool parse(std::string const &input, Space::Type &type, std::string &cms, std::vector< double > &values, std::vector< double > &fallback) const
Turn a string into a color data, used in Color object creation.
std::map< std::string, std::vector< std::shared_ptr< Parser > > > _parsers
void addParser(Parser *parser)
Add a prser to the list of parser objects used when parsing color strings.
void operator=(Parsers const &)=delete
bool _parse(std::istringstream &ss, Space::Type &type, std::string &cms, std::vector< double > &values, std::vector< double > &fallback) const
Internal recursive parser that scans through a string stream.
A set of useful color modifying functions which do not fit as generic methods on the color class itse...