X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.h;h=fa4bdc2da23f3f8da951ee5bf071e82ad0101689;hb=6b651f2ad9f698c01993dcc6e340682c279f1c55;hp=ee5905f141490de89a2050e5f765dfce626a3005;hpb=82309f0c2df9a10a119e3f3d5ce97c81b3113d69;p=lyx.git diff --git a/src/Layout.h b/src/Layout.h index ee5905f141..fa4bdc2da2 100644 --- a/src/Layout.h +++ b/src/Layout.h @@ -11,149 +11,22 @@ * Full author contact details are available in file CREDITS. */ -#ifndef LYX_LAYOUT_H -#define LYX_LAYOUT_H +#ifndef LAYOUT_H +#define LAYOUT_H -#include "Font.h" +#include "FontInfo.h" +#include "LayoutEnums.h" #include "Spacing.h" #include "support/docstring.h" +#include #include - namespace lyx { class Lexer; class TextClass; - -/// The different output types -enum OutputType { - /// - LATEX = 1, - /// - DOCBOOK, - /// - LITERATE -}; - - -/// The different margin types -enum LYX_MARGIN_TYPE { - /// - MARGIN_MANUAL = 1, - /// - MARGIN_FIRST_DYNAMIC, - /// - MARGIN_DYNAMIC, - /// - MARGIN_STATIC, - /// - MARGIN_RIGHT_ADDRESS_BOX -}; - - -/// -enum LyXAlignment { - /// - LYX_ALIGN_NONE = 0, - /// - LYX_ALIGN_BLOCK = 1, - /// - LYX_ALIGN_LEFT = 2, - /// - LYX_ALIGN_RIGHT = 4, - /// - LYX_ALIGN_CENTER = 8, - /// - LYX_ALIGN_LAYOUT = 16, - /// - LYX_ALIGN_SPECIAL = 32 -}; - -/// -inline -void operator|=(LyXAlignment & la1, LyXAlignment la2) { - la1 = static_cast(la1 | la2); -} - - -/// -inline -LyXAlignment operator|(LyXAlignment la1, LyXAlignment la2) { - return static_cast(static_cast(la1) | static_cast(la2)); -} - - -/// The different LaTeX-Types -enum LYX_LATEX_TYPES { - /// - LATEX_PARAGRAPH = 1, - /// - LATEX_COMMAND, - /// - LATEX_ENVIRONMENT, - /// - LATEX_ITEM_ENVIRONMENT, - /// - LATEX_BIB_ENVIRONMENT, - /// - LATEX_LIST_ENVIRONMENT -}; - - -/// The different title types -enum LYX_TITLE_LATEX_TYPES { - /// - TITLE_COMMAND_AFTER = 1, - /// - TITLE_ENVIRONMENT -}; - - -/// The different label types -enum LYX_LABEL_TYPES { - /// - LABEL_NO_LABEL, - /// - LABEL_MANUAL, - /// - LABEL_BIBLIO, - /// - LABEL_TOP_ENVIRONMENT, - /// - LABEL_CENTERED_TOP_ENVIRONMENT, - - // the flushright labels following now must start with LABEL_STATIC - /// - LABEL_STATIC, - /// - LABEL_SENSITIVE, - /// - LABEL_COUNTER, - /// - LABEL_ENUMERATE, - /// - LABEL_ITEMIZE -}; - - -/// -enum LYX_END_LABEL_TYPES { - /// - END_LABEL_NO_LABEL, - /// - END_LABEL_BOX, - /// - END_LABEL_FILLED_BOX, - /// - END_LABEL_STATIC, - /// - END_LABEL_ENUM_FIRST = END_LABEL_NO_LABEL, - /// - END_LABEL_ENUM_LAST = END_LABEL_STATIC -}; - /* Fix labels are printed flushright, manual labels flushleft. * MARGIN_MANUAL and MARGIN_FIRST_DYNAMIC are *only* for LABEL_MANUAL, * MARGIN_DYNAMIC and MARGIN_STATIC are *not* for LABEL_MANUAL. @@ -178,7 +51,7 @@ class Layout { public: /// Layout(); - /// + /// Reads a layout definition from file bool read(Lexer &, TextClass const &); /// void readAlign(Lexer &); @@ -211,6 +84,8 @@ public: /// docstring const & preamble() const { return preamble_; } /// + std::set const & requires() const { return requires_; } + /// std::string const & latexparam() const { return latexparam_; } /// std::string const & innertag() const { return innertag_; } @@ -224,30 +99,30 @@ public: } /** Default font for this layout/environment. The main font for this kind of environment. If an attribute has - Font::INHERITED_*, it means that the value is specified by + INHERITED_*, it means that the value is specified by the defaultfont for the entire layout. If we are nested, the font is inherited from the font in the environment one level - up until the font is resolved. The values Font::IGNORE_* - and Font::TOGGLE are illegal here. + up until the font is resolved. The values :IGNORE_* + and FONT_TOGGLE are illegal here. */ - Font font; + FontInfo font; /** Default font for labels. Interpretation the same as for font above */ - Font labelfont; + FontInfo labelfont; /** Resolved version of the font for this layout/environment. This is a resolved version the default font. The font is resolved against the defaultfont of the entire layout. */ - Font resfont; + FontInfo resfont; /** Resolved version of the font used for labels. This is a resolved version the label font. The font is resolved against the defaultfont of the entire layout. */ - Font reslabelfont; + FontInfo reslabelfont; /// Text that dictates how wide the left margin is on the screen docstring leftmargin; @@ -278,11 +153,11 @@ public: /// LyXAlignment alignpossible; /// - LYX_LABEL_TYPES labeltype; + LabelType labeltype; /// - LYX_END_LABEL_TYPES endlabeltype; + EndLabelType endlabeltype; /// - LYX_MARGIN_TYPE margintype; + MarginType margintype; /// bool fill_top; /// @@ -320,22 +195,18 @@ public: /// true when empty paragraphs should be kept. bool keepempty; /// - bool isParagraph() const { - return latextype == LATEX_PARAGRAPH; - } + bool isParagraph() const { return latextype == LATEX_PARAGRAPH; } /// - bool isCommand() const { - return latextype == LATEX_COMMAND; - } + bool isCommand() const { return latextype == LATEX_COMMAND; } /// bool isEnvironment() const { - return (latextype == LATEX_ENVIRONMENT + return latextype == LATEX_ENVIRONMENT || latextype == LATEX_BIB_ENVIRONMENT || latextype == LATEX_ITEM_ENVIRONMENT - || latextype == LATEX_LIST_ENVIRONMENT); + || latextype == LATEX_LIST_ENVIRONMENT; } /// Type of LaTeX object - LYX_LATEX_TYPES latextype; + LatexType latextype; /// Does this object belong in the title part of the document? bool intitle; /// Does this layout allow for an optional parameter? @@ -384,9 +255,10 @@ private: std::string itemtag_; /// Macro definitions needed for this layout docstring preamble_; + /// Packages needed for this layout + std::set requires_; }; - } // namespace lyx #endif