]> git.lyx.org Git - lyx.git/blobdiff - src/LColor.h
Fix bug 2115 ("blueline bug")
[lyx.git] / src / LColor.h
index 685d0ac518b77cce27cac2bdc784c7b74d238a1a..b9595e393f061cf3efe547bf27498bed369689df 100644 (file)
@@ -1,40 +1,49 @@
 // -*- C++ -*-
-/* This file is part of
- * ======================================================
- * 
- *           LyX, The Document Processor
- *      
- *         Copyright 1998-2000 The LyX Team
+/**
+ * \file LColor.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Asger Alstrup
+ * \author Lars Gullik Bjønnes
+ * \author Matthias Ettrich
+ * \author Jean-Marc Lasgouttes
+ * \author Angus Leeming
+ * \author John Levon
+ * \author André Pönitz
+ * \author Martin Vermeer
  *
- *======================================================*/
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef LCOLOR_H
 #define LCOLOR_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include <map>
-
-#include "LString.h"
-
-using std::map;
+#include <boost/scoped_ptr.hpp>
+#include <string>
 
 /**
-  This is a stateless class. 
-
-  It has one basic purposes:
-  To serve as a color-namespace container (the Color enum).
-  
-  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
-
-  */
-
-class LColor {
+ * This is a stateless class.
+ *
+ * It has one basic purposes:
+ * To serve as a color-namespace container (the Color enum).
+ */
+/**
+ * \class LColor
+ *
+ * A class holding color definitions and associated names for
+ * LaTeX, X11, the GUI, and LyX internally.
+ *
+ * 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
+ */
+
+class LColor
+// made copyable for same reasons as LyXRC was made copyable. See there for
+// explanation.
+{
 public:
        /// Names of colors, including all logical colors
        enum color {
@@ -57,8 +66,10 @@ public:
                ///
                yellow,
 
-               /// Needed interface colors
+               // Needed interface colors
 
+               /// Cursor color
+               cursor,
                /// Background color
                background,
                /// Foreground color
@@ -67,17 +78,28 @@ public:
                selection,
                /// Text color in LaTeX mode
                latex,
-               /// Titles color of floats
-               floats,
+               /// The color used for previews
+               preview,
 
                /// Text color for notes
                note,
                /// Background color of notes
                notebg,
-               /// Frame color for notes
-               noteframe,
+               /// Text color for comments
+               comment,
+               /// Background color of comments
+               commentbg,
+               /// Text color for greyedout inset
+               greyedout,
+               /// Background color of greyedout inset
+               greyedoutbg,
 
 
+               /// Color for the depth bars in the margin
+               depthbar,
+               /// Color for marking foreign language words
+               language,
+
                /// Text color for command insets
                command,
                /// Background color for command insets
@@ -85,42 +107,30 @@ public:
                /// Frame color for command insets
                commandframe,
 
-               /// Text color for accents we can't handle nicely
-               accent,
-               ///
-               accentbg,
-               ///
-               accentframe,
-
-               /// Minipage line color
-               minipageline,
-
                /// Special chars text color
                special,
 
+               /// Graphics inset background color
+               graphicsbg,
                /// Math inset text color
                math,
                /// Math inset background color
                mathbg,
+               /// Macro math inset background color
+               mathmacrobg,
                /// Math inset frame color
                mathframe,
-               /// Math cursor color
-               mathcursor,
                /// Math line color
                mathline,
 
-               /// Footnote marker text
-               footnote,
-               /// Footnote marker background color
-               footnotebg,
-               /// Footnote line color
-               footnoteframe,
-
-               /// ERT marker text
-               ert,
-               
-               /// Text color for inset marker
-               inset,
+               /// caption frame color
+               captionframe,
+
+               /// collapsable insets text
+               collapsable,
+               /// collapsable insets frame
+               collapsableframe,
+
                /// Inset marker background color
                insetbg,
                /// Inset marker frame color
@@ -130,19 +140,28 @@ public:
                error,
                /// EOL marker color
                eolmarker,
-               /// Appendix line color
-               appendixline,
-               /// VFill line color
-               vfillline,
+               /// Added space colour
+               added_space,
+               /// Appendix marker color
+               appendix,
+               /// changebar color
+               changebar,
+               /// strike-out color
+               strikeout,
+               /// added text color
+               newtext,
                /// Top and bottom line color
                topline,
                /// Table line color
-               tableline,
+               tabularline,
+               /// Table line color
+               tabularonoffline,
                /// Bottom area color
                bottomarea,
                /// Page break color
                pagebreak,
 
+               // FIXME: why are the next four separate ??
                /// Color used for top of boxes
                top,
                /// Color used for bottom of boxes
@@ -154,7 +173,7 @@ public:
                /// Color used for bottom background
                buttonbg,
 
-               /// Logical attributes
+               // Logical attributes
 
                /// Color is inherited
                inherit,
@@ -162,46 +181,74 @@ public:
                ignore
        };
 
+
        ///
        LColor();
        ///
-       void setColor(LColor::color col, string const & x11name);
-       /// Get GUI name of color
-       string getGUIName(LColor::color c) const;
+       LColor(LColor const &);
+       ///
+       ~LColor();
+       ///
+       LColor & operator=(LColor);
+
+       /** set the given LyX color to the color defined by the X11 name given
+        *  \returns true if successful.
+        */
+       bool setColor(LColor::color 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.
+       std::string const getGUIName(LColor::color c) const;
 
-       /// Get X11 name of color
-       string getX11Name(LColor::color c) const;
+       /// Get the X11 name of \c color.
+       std::string const getX11Name(LColor::color c) const;
 
-       /// Get LaTeX name of color
-       string getLaTeXName(LColor::color c) const;
+       /// Get the LaTeX name of \c color.
+       std::string const getLaTeXName(LColor::color c) const;
 
-       /// Get LyX name of color
-       string getLyXName(LColor::color c) const;
+       /// Get the LyX name of \c color.
+       std::string const getLyXName(LColor::color c) const;
+
+       /// \returns the LColor::color associated with the GUI name.
+       LColor::color getFromGUIName(std::string const & guiname) const;
+       /// \returns the LColor::color associated with the LyX name.
+       LColor::color getFromLyXName(std::string const & lyxname) const;
+       /// \returns the LColor::color associated with the LaTeX name.
+       LColor::color getFromLaTeXName(std::string const & latexname) const;
+private:
        ///
-       LColor::color getFromGUIName(string const & guiname) const;
+       void addColor(LColor::color c, std::string const & lyxname) const;
        ///
-       LColor::color getFromLyXName(string const & lyxname) const;
-private:
+       class Pimpl;
        ///
-       struct information {
-               string guiname;
-               string latexname;
-               string x11name;
-               string lyxname;
-       };
+       boost::scoped_ptr<Pimpl> pimpl_;
+};
 
-       ///
-       void fill(LColor::color col, string const & gui,
-                 string const & latex, string const & x11,
-                 string const & lyx);
 
-       ///
-       //typedef map<LColor::color, information, less<LColor::color> > InfoTab;
-       typedef map<LColor::color, information> InfoTab;
+/** \c LColor_color is a wrapper for LColor::color. It can be forward-declared and
+ *  passed as a function argument without having to expose LColor.h.
+ */
+class LColor_color {
+       LColor::color val_;
+public:
+       /** The default constructor is nasty,
+        *  but allows us to use LColor_color in STL containers.
+        */
+       LColor_color() : val_(static_cast<LColor::color>(-1)) {}
 
-       InfoTab infotab;
+       LColor_color(LColor::color val) : val_(val) {}
+       operator LColor::color() const{ return val_; }
 };
 
+
+/// the current color definitions
 extern LColor lcolor;
+/// the system color definitions
+extern LColor system_lcolor;
 
 #endif