]> git.lyx.org Git - lyx.git/blobdiff - src/TextClass.h
pimpl not needed here
[lyx.git] / src / TextClass.h
index 699dae557d020701a92c8dea56138f4558c463df..a6b0bbb13d786fa7f1b7b9f0aef1a2c4db2dace2 100644 (file)
 #ifndef LYXTEXTCLASS_H
 #define LYXTEXTCLASS_H
 
-#include "Color.h"
-#include "Layout.h"
-#include "lyxlayout_ptr_fwd.h"
+#include "ColorCode.h"
+#include "FontInfo.h"
+#include "LayoutEnums.h"
+#include "LayoutPtr.h"
+
+#include "support/docstring.h"
 
 #include <boost/shared_ptr.hpp>
 
@@ -24,6 +27,7 @@ namespace lyx {
 
 namespace support { class FileName; }
 
+class Layout;
 class Lexer;
 class Counters;
 class FloatList;
@@ -39,16 +43,19 @@ public:
        std::string latextype;
        std::string latexname;
        std::string latexparam;
-       Font font;
-       Font labelfont;
-       Color::color bgcolor;
+       FontInfo font;
+       FontInfo labelfont;
+       ColorCode bgcolor;
        std::string preamble;
+       bool multipar;
+       bool passthru;
+       bool needprotect;
+       bool freespacing;
+       bool keepempty;
+       bool forceltr;
 };
 
 
-/// List of semantically defined character style insets
-typedef std::vector<InsetLayout> CharStyles;
-
 /// List of inset layouts
 typedef std::map<docstring, InsetLayout> InsetLayouts;
 
@@ -115,8 +122,6 @@ public:
        FloatList const & floats() const;
        /// The Counters present in this document class.
        Counters & counters() const;
-       /// CharStyles of this doc class
-       CharStyles & charstyles() const { return charstylelist_; };
        /// Inset layouts of this doc class
        InsetLayouts & insetlayouts() const { return insetlayoutlist_; };
        ///
@@ -174,7 +179,7 @@ public:
        OutputType outputType() const;
 
        ///
-       Font const & defaultfont() const;
+       FontInfo const & defaultfont() const;
 
        /// Text that dictates how wide the left margin is on the screen
        docstring const & leftmargin() const;
@@ -183,7 +188,7 @@ public:
        docstring const & rightmargin() const;
 
        /// The type of command used to produce a title
-       LYX_TITLE_LATEX_TYPES titletype() const;
+       TitleLatexType titletype() const;
        /// The name of the title command
        std::string const & titlename() const;
 
@@ -237,10 +242,10 @@ private:
        OutputType outputType_;
        /** Base font. The paragraph and layout fonts are resolved against
            this font. This has to be fully instantiated. Attributes
-           Font::INHERIT, Font::IGNORE, and Font::TOGGLE are
+           FONT_INHERIT, FONT_IGNORE, and FONT_TOGGLE are
            extremely illegal.
        */
-       Font defaultfont_;
+       FontInfo defaultfont_;
        /// Text that dictates how wide the left margin is on the screen
        docstring leftmargin_;
 
@@ -248,14 +253,12 @@ private:
        docstring rightmargin_;
 
        /// The type of command used to produce a title
-       LYX_TITLE_LATEX_TYPES titletype_;
+       TitleLatexType titletype_;
        /// The name of the title command
        std::string titlename_;
 
        /// Paragraph styles used in this layout
        LayoutList layoutlist_;
-       /// CharStyles available to this layout
-       mutable CharStyles charstylelist_;
 
        /// Input layouts available to this layout
        mutable InsetLayouts insetlayoutlist_;
@@ -282,6 +285,12 @@ private:
 /// convert page sides option to text 1 or 2
 std::ostream & operator<<(std::ostream & os, TextClass::PageSides p);
 
+/** Shared pointer for possibly modular layout. Needed so that paste,
+ *  for example, will still be able to retain the pointer, even when
+ *  the buffer itself is closed.
+ */
+typedef boost::shared_ptr<TextClass> TextClassPtr;
+
 
 } // namespace lyx