X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FColor.h;h=865f0ab8a8e6e25e61b7670e4301eebc6aca30b6;hb=689e54f34a4d735e6081b1b1ac8487bf028f3982;hp=05e670806ef6ea587d69b8b0aca33e542591aba1;hpb=eea79637c78bb9916031924eca7b305cfb8e83df;p=lyx.git diff --git a/src/Color.h b/src/Color.h index 05e670806e..865f0ab8a8 100644 --- a/src/Color.h +++ b/src/Color.h @@ -5,131 +5,66 @@ * Licence details can be found in the file COPYING. * * \author Asger Alstrup - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * \author Matthias Ettrich * \author Jean-Marc Lasgouttes * \author Angus Leeming * \author John Levon - * \author André Pönitz + * \author André Pönitz * \author Martin Vermeer * * Full author contact details are available in file CREDITS. */ -#ifndef LCOLOR_H -#define LCOLOR_H +#ifndef COLOR_H +#define COLOR_H #include "ColorCode.h" -#include "support/docstring.h" - -#include - +#include "support/strfwd.h" namespace lyx { -/** - * This is a stateless class. - * - * It has one basic purposes: - * To serve as a color-namespace container (the Color enum). - */ /** * \class Color * - * A class holding color definitions and associated names for - * LaTeX, X11, the GUI, and LyX internally. + * A class holding a definition of a certain color. * * A color can be one of the following kinds: * - * - A real, predefined color, such as black, white, red or green. - * - A logical color, such as no color, inherit, math + * - a single color, then mergeColor = Color_ignore + * - a merged color, i.e. the average of the base and merge colors. */ class Color -// made copyable for same reasons as LyXRC was made copyable. See there for -// explanation. { public: /// - Color(); - /// - Color(Color const &); - /// - ~Color(); - /// - Color & operator=(Color); - - /** set the given LyX color to the color defined by the X11 name given - * \returns true if successful. - */ - bool setColor(ColorCode col, std::string const & x11name); - - /** set the given LyX color to the color defined by the X11 - * name given \returns true if successful. A new color entry - * is created if the color is unknown - */ - bool setColor(std::string const & lyxname, std::string const & x11name); - - /// Get the GUI name of \c color. - docstring const getGUIName(ColorCode c) const; - - /// Get the X11 name of \c color. - std::string const getX11Name(ColorCode c) const; - - /// Get the LaTeX name of \c color. - std::string const getLaTeXName(ColorCode c) const; - - /// Get the LyX name of \c color. - std::string const getLyXName(ColorCode c) const; - - /// \returns the ColorCode associated with the LyX name. - ColorCode getFromLyXName(std::string const & lyxname) const; - /// \returns the ColorCode associated with the LaTeX name. - ColorCode getFromLaTeXName(std::string const & latexname) const; -private: - /// - void addColor(ColorCode c, std::string const & lyxname) const; - /// - class Pimpl; - /// - boost::scoped_ptr pimpl_; + Color(ColorCode base_color = Color_none); + + /// \name Comparison operators + //@{ + bool operator==(Color const & color) const; + bool operator!=(Color const & color) const; + bool operator<(Color const & color) const; + bool operator<=(Color const & color) const; + //@} + + /// the base color + ColorCode baseColor; + /// The color that is merged with the base color. Set + /// mergeColor to Color_ignore if no merging is wanted. + ColorCode mergeColor; }; +std::ostream & operator<<(std::ostream & os, Color color); -/// the current color definitions -extern Color lcolor; -/// the system color definitions -extern Color system_lcolor; - - -struct RGBColor { - unsigned int r; - unsigned int g; - unsigned int b; - RGBColor() : r(0), g(0), b(0) {} - RGBColor(unsigned int red, unsigned int green, unsigned int blue) - : r(red), g(green), b(blue) {} - /// \param x11hexname is of the form "#ffa071" - RGBColor(std::string const & x11hexname); -}; - -inline -bool operator==(RGBColor const & c1, RGBColor const & c2) -{ - return (c1.r == c2.r && c1.g == c2.g && c1.b == c2.b); -} - - -inline -bool operator!=(RGBColor const & c1, RGBColor const & c2) -{ - return !(c1 == c2); -} - -/// returns a string of form #rrggbb, given an RGBColor struct std::string const X11hexname(RGBColor const & col); +RGBColor rgbFromHexName(std::string const & x11hexname); +std::string const outputLaTeXColor(RGBColor const & color); +/// Inverse of outputLaTeXColor +RGBColor const RGBColorFromLaTeX(std::string const & color); } // namespace lyx -#endif +#endif // COLOR_H