]> git.lyx.org Git - lyx.git/blobdiff - src/layout.h
fix typo that put too many include paths for most people
[lyx.git] / src / layout.h
index a31aede905fb092baa6a082c6fc9303ce3c1dcc1..83a6228936b1df6cb3c3c34b8939b6835a715cdf 100644 (file)
@@ -1,32 +1,27 @@
 // -*- C++ -*-
 /* This file is part of
  * ======================================================
-* 
-*           LyX, The Document Processor
-*       
-*          Copyright (C) 1995 Matthias Ettrich
-*
-*======================================================*/
+ *
+ *           LyX, The Document Processor
+ *
+ *           Copyright 1995 Matthias Ettrich
+ *           Copyright 1995-2001 The LyX Team.
+ *
+ * ====================================================== */
 
-#ifndef _LAYOUT_H
-#define _LAYOUT_H
+#ifndef LAYOUT_H
+#define LAYOUT_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include "definitions.h"
-#include "lyxlex.h"
-#include "lyxfont.h"
-#include "Spacing.h"
+enum layout_default {
+       ///
+       LYX_LAYOUT_DEFAULT = 99
+};
 
-/// Reads the style files
-void LyXSetStyle();
 
 /// The different output types
 enum OutputType {
-        ///
-        LATEX,
+       ///
+       LATEX = 1,
        ///
        LINUXDOC,
        ///
@@ -35,10 +30,11 @@ enum OutputType {
        LITERATE
 };
 
+
 /// The different margin types
 enum LYX_MARGIN_TYPE {
        ///
-       MARGIN_MANUAL,
+       MARGIN_MANUAL = 1,
        ///
        MARGIN_FIRST_DYNAMIC,
        ///
@@ -49,8 +45,11 @@ enum LYX_MARGIN_TYPE {
        MARGIN_RIGHT_ADDRESS_BOX
 };
 
+
 ///
-enum LYX_ALIGNMENT {
+enum LyXAlignment {
+       ///
+       LYX_ALIGN_NONE = 0,
        ///
        LYX_ALIGN_BLOCK = 1,
        ///
@@ -62,13 +61,20 @@ enum LYX_ALIGNMENT {
        ///
        LYX_ALIGN_LAYOUT = 16,
        ///
-        LYX_ALIGN_SPECIAL = 32
+       LYX_ALIGN_SPECIAL = 32
 };
 
+///
+inline
+void operator|=(LyXAlignment & la1, LyXAlignment la2) {
+       la1 = static_cast<LyXAlignment>(la1 | la2);
+}
+
+
 /// The different LaTeX-Types
 enum LYX_LATEX_TYPES {
        ///
-       LATEX_PARAGRAPH,
+       LATEX_PARAGRAPH = 1,
        ///
        LATEX_COMMAND,
        ///
@@ -79,6 +85,7 @@ enum LYX_LATEX_TYPES {
        LATEX_LIST_ENVIRONMENT
 };
 
+
 /// The different label types
 enum LYX_LABEL_TYPES {
        ///
@@ -86,7 +93,7 @@ enum LYX_LABEL_TYPES {
        ///
        LABEL_MANUAL,
        ///
-        LABEL_BIBLIO,
+       LABEL_BIBLIO,
        ///
        LABEL_TOP_ENVIRONMENT,
        ///
@@ -116,366 +123,44 @@ enum LYX_LABEL_TYPES {
        ///
        LABEL_COUNTER_ENUMIII,
        ///
-       LABEL_COUNTER_ENUMIV,
-       ///
-       LABEL_FIRST_COUNTER = LABEL_COUNTER_CHAPTER
-};
-
-
-/* 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. 
-* This seems a funny restriction, but I think other combinations are
-* not needed, so I will not change it yet. 
-* Correction: MARGIN_FIRST_DYNAMIC also usable with LABEL_STATIC */
-
-
-/* There is a parindent and a parskip. Which one is used depends on the 
-* paragraph_separation-flag of the text-object. 
-* BUT: parindent is only thrown away, if a parskip is defined! So if you
-* want a space between the paragraphs and a parindent at the same time, 
-* you should set parskip to zero and use topsep, parsep and bottomsep.
-* 
-* The standard layout is an exception: its parindent is only set, if the 
-* previous paragraph is standard too. Well, this is LateX and it is good! */ 
-
-
-/// Attributes of a layout/paragraph environment
-class LyXLayoutList;
-///
-class LyXLayout {
-public:
-       ///
-       LyXLayout ();
-
-       ///
-       ~LyXLayout ();
-
-       ///
-       void Copy (LyXLayout const &l);
-
-       ///
-       bool Read (LyXLex&, LyXLayoutList *);
-
-       /// Name of the layout/paragraph environment
-       LString name;
-
-       /// Name of an layout that has replaced this layout. 
-       /** This is used to rename a layout, while keeping backward
-           compatibility 
-       */
-       LString obsoleted_by;
-
-       /// Default font for this layout/environment
-       /** The main font for this kind of environment. If an attribute has
-       LyXFont::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 LyXFont::IGNORE_* and LyXFont::TOGGLE 
-       are illegal here.
-       */
-       LyXFont font;
-
-       /// Default font for labels
-       /** Interpretation the same as for font above */
-       LyXFont 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. */
-       LyXFont 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. */
-       LyXFont reslabelfont;
-
-       /// Text that dictates how wide the left margin is on the screen
-       LString leftmargin;
-
-       /// Text that dictates how wide the right margin is on the screen
-       LString rightmargin;
-
-       /// Text that dictates how much space to leave after a potential label
-       LString labelsep;
-
-       /// Text that dictates how much space to leave before a potential label
-       LString labelindent;
-
-       /// Text that dictates the width of the indentation of indented paragraphs
-       LString parindent;
-
-       /// Label string. "Abstract", "Reference", "Caption"...
-       LString labelstring;
-
-       /// Label string inside appendix. "Appendix", ...
-       LString labelstring_appendix;
-
-       /// LaTeX name for environment
-       LString latexname;
-
-       /// LaTeX parameter for environment
-        LString latexparam;   //arrae970411
-
-        /// Macro definitions needed for this layout
-       LString preamble;
-
-       ///
-       float parskip;
-
-       ///
-       float itemsep;
-
-       ///
-       float topsep;
-
-       ///
-       float bottomsep;
-
-       ///
-       float labelbottomsep;
-
-       ///
-       float parsep;
-
-       ///
-       Spacing spacing;
-
-       ///
-       char align; // add approp. signedness
-
-       ///
-       char alignpossible; // add approp. signedness
-
-       ///
-       char labeltype; // add approp. signedness
-
-       ///
-       char margintype; // add approp. signedness
-
-       ///
-       bool fill_top;
-
-       ///
-       bool fill_bottom;
-
-       ///
-       bool newline_allowed;
-
-       ///
-       bool nextnoindent;
-
-       ///
-       bool free_spacing;
-       /// true when the fragile commands in the paragraph need to be
-       /// \protect'ed.
-       bool needprotect;
-       /// true when empty paragraphs should be kept.
-       bool keepempty;
-       ///
-       bool isParagraph() const {
-               return latextype == LATEX_PARAGRAPH;
-       }
-       ///
-       bool isCommand() const { 
-           return latextype == LATEX_COMMAND;
-       }
-       ///
-       bool isEnvironment() const {
-               return (latextype == LATEX_ENVIRONMENT
-                       || latextype == LATEX_ITEM_ENVIRONMENT
-                       || latextype == LATEX_LIST_ENVIRONMENT);
-       }
-       /// Type of LaTeX object
-       LYX_LATEX_TYPES latextype;
-       /// Does this object belong in the title part of the document?
-       bool intitle;
+       LABEL_COUNTER_ENUMIV
 };
 
 
 ///
-class LyXLayoutList {
-public:
-       ///
-       LyXLayoutList();
+enum LYX_END_LABEL_TYPES {
        ///
-       ~LyXLayoutList();
+       END_LABEL_NO_LABEL,
        ///
-       void Add (LyXLayout *l);
+       END_LABEL_BOX,
        ///
-       bool Delete (LString const &name);
-        ///
-       LyXLayout *GetLayout (LString const &name);
+       END_LABEL_FILLED_BOX,
        ///
-       LyXLayout *ToAr();
+       END_LABEL_STATIC,
        ///
-       int GetNum();
+       END_LABEL_ENUM_FIRST = END_LABEL_NO_LABEL,
        ///
-       void Clean(); 
-private:
-       ///
-       struct LyXLayoutL {
-               ///
-               LyXLayout* layout;
-               ///
-               LyXLayoutL *next;
-       };
-       ///
-       LyXLayoutL * l;
-       ///
-       LyXLayoutL *eol;
-       ///
-       int num_layouts;
+       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.
+ * This seems a funny restriction, but I think other combinations are
+ * not needed, so I will not change it yet.
+ * Correction: MARGIN_FIRST_DYNAMIC also usable with LABEL_STATIC
+ */
 
-///
-class LyXTextClass  {
-public:
-       ///
-       LyXTextClass (LString const & = LString(), 
-                     LString const & = LString(), 
-                     LString const & = LString());
-       ///
-       ~LyXTextClass();
-
-       /// Not a real copy, just reference!
-       void Copy (LyXTextClass const &l);
 
-       /// Reads a textclass structure from file
-       int Read (LString const & filename, LyXLayoutList *list = NULL);
+/* There is a parindent and a parskip. Which one is used depends on the
+ * paragraph_separation-flag of the text-object.
+ * BUT: parindent is only thrown away, if a parskip is defined! So if you
+ * want a space between the paragraphs and a parindent at the same time,
+ * you should set parskip to zero and use topsep, parsep and bottomsep.
+ *
+ * The standard layout is an exception: its parindent is only set, if the
+ * previous paragraph is standard too. Well, this is LateX and it is good!
+ */
 
-       /// Sees to that the textclass structure has been loaded
-       void load();
-
-       ///
-       LString name;
-       ///
-       LString latexname;
-       ///
-       LString description;
-        ///
-        OutputType output_type;
-
-       /// Specific class options
-        LString opt_fontsize;
-       ///
-        LString opt_pagestyle;
-       ///
-       LString options;
-
-       /// Packages that are already loaded by the class
-       bool provides_amsmath;
-       ///
-       bool provides_makeidx;
-       /// 
-       bool provides_url;
-    
-       /// Base font. This one has to be fully instantiated.
-       /** Base font. The paragraph and layout fonts are resolved against
-       this font. Attributes LyXFont::INHERIT, LyXFont::IGNORE, and 
-       LyXFont::TOGGLE are extremely illegal.
-       */
-       LyXFont defaultfont;
-       /// Array of styles in this textclass
-       LyXLayout* style;
-       ///
-       unsigned char number_of_defined_layouts;
-       ///
-       unsigned char columns;
-       ///
-       unsigned char sides;
-       ///
-       signed char secnumdepth;
-       ///
-       signed char tocdepth;
-       ///
-       LString pagestyle;
-       ///
-       LString preamble;
-       ///
-       /// Text that dictates how wide the left margin is on the screen
-       LString leftmargin;
-        ///
-       /// Text that dictates how wide the right margin is on the screen
-       LString rightmargin;
-        ///
-       char maxcounter; // add approp. signedness
-private:
-       /// Has this layout file been loaded yet?
-       bool loaded;
-};
-
-
-///
-class LyXTextClassList {
-public:
-       ///
-       LyXTextClassList();
-
-       ///
-       ~LyXTextClassList();
-
-       /// Gets layout structure from layout number and textclass number
-       LyXLayout *Style(char textclass, char layout);
-
-       /// Gets layout number from textclass number and layout name
-       char NumberOfLayout(char textclass, LString const & name); // add approp. signedness
-
-       /// Gets a layout name from layout number and textclass number
-       LString NameOfLayout(char textclass, char layout); // add approp. signedness
-
-       /// Gets textclass number from name
-       /** Returns -1 if textclass name does not exist */
-       signed char NumberOfClass(LString const & textclass);
-
-       ///
-       LString NameOfClass(char number); // add approp. signedness
-
-       ///
-       LString LatexnameOfClass(char number); // add approp. signedness
-
-       ///
-       LString DescOfClass(char number); // add approp. signedness
-
-       ///
-       LyXTextClass * TextClass(char textclass); // add approp. signedness
-
-       /// Read textclass list
-       /** Returns false if this fails */
-       bool Read();
-
-       /// Load textclass
-       /** Returns false if this fails */
-       bool Load(const char number);
-private:
-       ///
-       struct LyXTextClassL {
-               ///
-               LyXTextClass * textclass;
-               ///
-               LyXTextClassL * next;
-       };
-
-       ///
-       LyXTextClassL * l;
-
-       ///
-       int num_textclass;
-
-       /// After reading, this arrays holds the textclasses
-       LyXTextClass * ar;
-
-       /// Add a textclass to list
-       void Add (LyXTextClass *l);
-
-       /// Convert final linked list to array
-       /** We read the textclasses into a linked list. After the reading,
-       the list is converted to an array, and the linked list is nuked. */
-       void ToAr();
-};
 
-/// Should not be declared here!! (Lgb) Why not? (Asger)
-extern LyXTextClassList lyxstyle;
 #endif