* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author André Pönitz
+ * \author André Pönitz
* \author Stefan Schimanski
*
* Full author contact details are available in file CREDITS.
#ifndef METRICSINFO_H
#define METRICSINFO_H
+#include "Changes.h"
#include "ColorCode.h"
#include "FontInfo.h"
#include "support/strfwd.h"
-#include "support/types.h"
#include <string>
namespace lyx {
namespace frontend { class Painter; }
+class Inset;
class MacroContext;
void draw(int x, int y, char_type c);
///
void draw(int x, int y, docstring const & str);
+ /// Determines the background color for the specified inset based on the
+ /// selection state, the background color inherited from the parent inset
+ /// and the inset's own background color.
+ /// \param sel whether to take the selection state into account
+ ColorCode backgroundColor(Inset const * inset, bool sel = true) const;
+
+ /// Determines the text color based on the intended color, the
+ /// change tracking state and the selection state.
+ /// \param color what the color should be by default
+ Color textColor(Color const & color) const;
///
MetricsBase base;
frontend::Painter & pain;
/// Whether the text at this point is right-to-left (for InsetNewline)
bool ltr_pos;
- /// Whether the parent is deleted (change tracking)
- bool erased_;
+ /// The change the parent is part of (change tracking)
+ Change change_;
+ /// Whether the parent is selected as a whole
+ bool selected;
+ /// Whether the spell checker is enabled for the parent
+ bool do_spellcheck;
///
bool full_repaint;
- ///
+ /// Current background color
ColorCode background_color;
};
class TextMetricsInfo {};
-/// Generic base for temporarily changing things.
-/// The original state gets restored when the Changer is destructed.
+/// Generic base for temporarily changing things. The derived class is
+/// responsible for restoring the original state when the Changer is
+/// destructed.
template <class Struct, class Temp = Struct>
class Changer {
-public:
- ///
- Changer(Struct & orig) : orig_(orig) {}
protected:
+ ///
+ Changer(Struct & orig, Temp const & save) : orig_(orig), save_(save) {}
+ ///
+ Changer(Struct & orig) : orig_(orig), save_(orig) {}
///
Struct & orig_;
///
class FontSetChanger : public Changer<MetricsBase> {
public:
///
- FontSetChanger(MetricsBase & mb, docstring const & font);
- FontSetChanger(MetricsBase & mb, char const * const font);
+ FontSetChanger(MetricsBase & mb, docstring const & font,
+ bool really_change_font = true);
+ FontSetChanger(MetricsBase & mb, char const * const font,
+ bool really_change_font = true);
///
~FontSetChanger();
+private:
+ ///
+ bool change_;
};
// temporarily change the used color
-class ColorChanger : public Changer<FontInfo, std::string> {
+class ColorChanger : public Changer<FontInfo, ColorCode> {
public:
///
- ColorChanger(FontInfo & font, std::string const & color);
+ ColorChanger(FontInfo & font, ColorCode color,
+ bool really_change_color = true);
///
~ColorChanger();
+private:
+ ///
+ bool change_;
};
} // namespace lyx