#ifndef COLORCACHE_H
#define COLORCACHE_H
-#include "LColor.h"
-
-#include <map>
+#include "Color.h"
#include <QColor>
-
+#include <QPalette>
namespace lyx {
-struct RGBColor;
-}
-
-// FIXME: use a fixed-size array not a map ?
+struct RGBColor;
/**
- * Cache from LColor to QColor.
+ * Cache from Color to QColor.
*/
-class ColorCache {
+class ColorCache
+{
public:
- ColorCache();
+ ///
+ ColorCache() : initialized_(false) {}
+
+ /// get the given color (depends on LyXRC::use_system_color)
+ QColor get(Color const & color) const;
/// get the given color
- QColor const & get(LColor_color color) const;
+ QColor get(Color const & color, bool use_system_colors) const;
+
+ /// is this color replaced when LyXRC::use_system_color is true?
+ bool isSystem(ColorCode color) const;
+
+ /// change the undelying palette
+ void setPalette(QPalette const pal) { pal_ = pal; clear(); }
/// clear all colors
- void clear();
+ void clear() { initialized_ = false; }
private:
- typedef std::map<LColor_color, QColor> lcolor_map;
-
- mutable lcolor_map colormap;
+ ///
+ void init();
+ ///
+ QColor lcolors_[Color_ignore + 1];
+ ///
+ bool initialized_;
+ ///
+ QPalette pal_;
};
-/// singleton instance
-extern ColorCache lcolorcache;
-
///
-QColor const rgb2qcolor(lyx::RGBColor const &);
+QColor const rgb2qcolor(RGBColor const &);
+
+} // namespace lyx
+
#endif // COLORCACHE_H