#pragma interface
#endif
+#include "LString.h"
+
#include <vector>
#include <list>
+#include <boost/array.hpp>
#include "insets/lyxinset.h"
-#include "vspace.h"
-#include "layout.h"
-#include <boost/array.hpp>
#include "language.h"
+#include "ParagraphParameters.h"
class BufferParams;
class LyXBuffer;
// I dare you to enable this and help me find all the bugs that then show
// up. (Lgb)
-//#define NEW_INSETS 1
+#define NEW_INSETS 1
+#define NO_PEXTRA 1
/// A LyXParagraph holds all text, attributes and insets in a text paragraph
class LyXParagraph {
public:
+#ifndef NO_PEXTRA_REALLY
///
enum PEXTRA_TYPE {
///
///
MINIPAGE_ALIGN_BOTTOM
};
+#endif
///
enum META_KIND {
#ifndef NEW_INSETS
void setContentsFromPar(LyXParagraph * par);
///
void clearContents();
- ///
- VSpace added_space_top;
-
- ///
- VSpace added_space_bottom;
- ///
- Spacing spacing;
+ ParagraphParameters params;
///
LyXTextClass::LayoutList::size_type layout;
/// footnote, margin, fig, tab
footnote_kind footnotekind;
#endif
- ///
- bool line_top;
-
- ///
- bool line_bottom;
-
- ///
- bool pagebreak_top;
-
- ///
- bool pagebreak_bottom;
-
- ///
- LyXAlignment align;
-
- ///
- char depth;
-
- ///
- bool noindent;
private:
///
int getCounter(int i) const;
///
void incCounter(int i);
- ///
- bool start_of_appendix;
-
- ///
- bool appendix;
///
char enumdepth;
///
char itemdepth;
-
- /* This is for the paragraph extra stuff */
- ///
- int pextra_type;
- ///
- string pextra_width;
- ///
- string pextra_widthp;
- ///
- int pextra_alignment;
- ///
- bool pextra_hfill;
- ///
- bool pextra_start_minipage;
-
- ///
- string labelstring;
-
- ///
- string labelwidthstring;
-
+#ifdef NEW_INSETS
+private:
+#endif
///
- LyXParagraph * next;
+ LyXParagraph * next_;
///
- LyXParagraph * previous;
-
+ LyXParagraph * previous_;
+public:
///
InsetBibKey * bibkey; // ale970302
+ ///
+ void next(LyXParagraph *);
/** these function are able to hide closed footnotes
*/
- LyXParagraph * Next();
-
+ LyXParagraph * next();
+ ///
+ LyXParagraph const * next() const;
+
+ ///
+ void previous(LyXParagraph *);
///
- LyXParagraph * Previous();
+ LyXParagraph * previous();
///
- LyXParagraph const * Previous() const;
+ LyXParagraph const * previous() const;
#ifndef NEW_INSETS
/** these function are able to hide open and closed footnotes
LyXTextClass::LayoutList::size_type new_layout);
///
int GetFirstCounter(int i) const;
+#ifndef NEW_INSETS
///
size_type Last() const;
+#endif
///
void Erase(size_type pos);
/** the flag determines wether the layout should be copied
first paragraph keeps information about layoutparameters, */
bool IsDummy() const;
#endif
+#ifndef NO_PEXTRA_REALLY
/* If I set a PExtra Indent on one paragraph of a ENV_LIST-TYPE
I have to set it on each of it's elements */
///
string const & width, string const & widthp);
///
void UnsetPExtraType(BufferParams const &);
+#endif
///
bool linuxDocConvertChar(char c, string & sgml_string);
private:
///
Inset * inset;
///
- InsetTable(size_type p, Inset * i) { pos = p; inset = i;}
+ InsetTable(size_type p, Inset * i) : pos(p), inset(i) {}
};
///
friend struct matchIT;
(font_1 covers the chars 0,...,pos_1) (Dekel)
*/
struct FontTable {
+ ///
+ FontTable(size_type p, LyXFont const & f)
+ : pos_(p)
+ {
+ font_ = container.get(f);
+ }
+ ///
+ size_type pos() const { return pos_; }
+ ///
+ void pos(size_type p) { pos_ = p; }
+ ///
+ LyXFont const & font() const { return *font_; }
+ ///
+ void font(LyXFont const & f) { font_ = container.get(f);}
+ private:
/// End position of paragraph this font attribute covers
- size_type pos;
+ size_type pos_;
/** Font. Interpretation of the font values:
If a value is LyXFont::INHERIT_*, it means that the font
attribute is inherited from either the layout of this
The values LyXFont::IGNORE_* and LyXFont::TOGGLE are NOT
allowed in these font tables.
*/
- LyXFont font;
+ boost::shared_ptr<LyXFont> font_;
///
- FontTable(size_type p, LyXFont const & f) {pos = p; font = f;}
+ static ShareContainer<LyXFont> container;
};
///
friend struct matchFT;
inline
int operator()(LyXParagraph::FontTable const & a,
LyXParagraph::FontTable const & b) const {
- return a.pos < b.pos;
+ return a.pos() < b.pos();
}
};