#ifndef COLORCACHE_H
#define COLORCACHE_H
-#include "ColorCode.h"
+#include "Color.h"
#include <QColor>
-
-#include <map>
+#include <QPalette>
namespace lyx {
struct RGBColor;
-
-// FIXME: use a fixed-size array not a map ?
-
/**
* 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(ColorCode 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<ColorCode, QColor> lcolor_map;
-
- mutable lcolor_map colormap;
+ ///
+ void init();
+ ///
+ QColor lcolors_[Color_ignore + 1];
+ ///
+ bool initialized_;
+ ///
+ QPalette pal_;
};
///