// -*- C++ -*-
-/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright 1995 Matthias Ettrich
- * Copyright 1995-2000 The LyX Team.
+/**
+ * \file Color.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- *======================================================*/
+ * \author Angus Leeming
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+/* structs RGBColor and HSVColor to enable simple conversion between
+ * color spaces.
+ */
#ifndef COLOR_H
#define COLOR_H
-#include <utility> // for pair
+#include <string>
-#ifdef __GNUG_
-#pragma interface
-#endif
-#include "LString.h"
+class LColor_color;
+
+
+/** Given col, fills r, g, b in the range 0-255.
+ The function returns true if successful.
+ It returns false on failure and sets r, g, b to 0. */
+bool getRGBColor(LColor_color col,
+ unsigned int & r, unsigned int & g, unsigned int & b);
struct RGBColor;
+/// returns a string of form #rrggbb, given an RGBColor struct
+std::string const X11hexname(RGBColor const & col);
struct HSVColor {
double h;
};
struct RGBColor {
- int r;
- int g;
- int b;
+ unsigned int r;
+ unsigned int g;
+ unsigned int b;
RGBColor() : r(0), g(0), b(0) {}
- RGBColor(int red, int green, int blue)
+ RGBColor(unsigned int red, unsigned int green, unsigned int blue)
: r(red), g(green), b(blue) {}
RGBColor(HSVColor const &);
+ /// \param x11hexname is of the form "#ffa071"
+ RGBColor(std::string const & x11hexname);
};
-typedef std::pair<string, RGBColor> X11Color;
-
-/// struct holding xform-specific colors
-struct XformColor {
- string name;
- int colorID;
- RGBColor col;
- XformColor() : colorID(0) {}
- string const & getname() const { return name; }
- static bool read(string const &);
- static bool write(string const &);
+struct NamedColor : public RGBColor {
+ std::string name;
+ NamedColor() : RGBColor() {}
+ NamedColor(std::string const & n, RGBColor const & c)
+ : RGBColor(c), name(n) {}
+ RGBColor const & color() const { return *this; }
+ std::string const & getname() const { return name; }
};
inline