class TexRow;
struct LaTeXFeatures;
class InsetBibKey;
+class BufferView;
/// A LyXParagraph holds all text, attributes and insets in a text paragraph
class LyXParagraph {
///
MINIPAGE_ALIGN_BOTTOM
};
+#ifndef NEW_INSETS
///
enum META_KIND {
///
///
WIDE_TAB // CFO-G, 971106
};
-
+#endif
///
typedef char value_type;
///
bool isMultiLingual(BufferParams const &);
///
- string String(BufferParams const &, bool label);
+ string String(Buffer const *, bool label);
///
- string String(size_type beg, size_type end);
+ string String(Buffer const *, size_type beg, size_type end);
///
- void writeFile(std::ostream &, BufferParams const &, char, char) const;
+ void writeFile(Buffer const *, std::ostream &, BufferParams const &,
+ char, char) const;
///
void validate(LaTeXFeatures &) const;
void read();
///
- LyXParagraph * TeXOnePar(BufferParams const &,
+ LyXParagraph * TeXOnePar(Buffer const *, BufferParams const &,
std::ostream &, TexRow & texrow,
bool moving_arg,
std::ostream & foot, TexRow & foot_texrow,
int & foot_count);
///
- bool SimpleTeXOnePar(BufferParams const &,
+ bool SimpleTeXOnePar(Buffer const *, BufferParams const &,
std::ostream &, TexRow & texrow, bool moving_arg);
///
- LyXParagraph * TeXEnvironment(BufferParams const &,
+ LyXParagraph * TeXEnvironment(Buffer const *, BufferParams const &,
std::ostream &, TexRow & texrow,
std::ostream & foot, TexRow & foot_texrow,
int & foot_count);
///
Inset * InInset() { return inset_owner; }
///
- void SetInsetOwner(Inset * i) { inset_owner = i; }
+ void SetInsetOwner(Inset * i);
+ ///
+ void deleteInsetsLyXText(BufferView *);
private:
///
TextContainer text;
///
LyXTextClass::LayoutList::size_type layout;
-
+#ifndef NEW_INSETS
/**
\begin{itemize}
\item no footnote, closed footnote,
/// footnote, margin, fig, tab
footnote_kind footnotekind;
-
+#endif
//@Man: the LyX- DTP-switches
//@{
///
///
void InsertChar(size_type pos, char c);
///
+ void InsertChar(size_type pos, char c, LyXFont const &);
+ ///
void InsertInset(size_type pos, Inset * inset);
///
+ void InsertInset(size_type pos, Inset * inset, LyXFont const &);
+ ///
bool InsertInsetAllowed(Inset * inset);
///
Inset * GetInset(size_type pos);
int type, char const * width, char const * widthp);
///
void UnsetPExtraType(BufferParams const &);
-#if 0
- ///
- bool RoffContTableRows(std::ostream &, size_type i, int actcell);
-#endif
///
bool linuxDocConvertChar(char c, string & sgml_string);
///
- void DocBookContTableRows(BufferParams const &,
+ void DocBookContTableRows(Buffer const *,
std::ostream &, string & extra,
int & desc_on, size_type i,
int current_cell_number, int & column);
///
- void SimpleDocBookOneTablePar(BufferParams const &,
+ void SimpleDocBookOneTablePar(Buffer const *,
std::ostream &, string & extra,
int & desc_on, int depth);
private:
I don't think it's worth the effort to implement a more effective
datastructure, because the number of different fonts in a paragraph
is limited. (Asger)
+ Nevertheless, I decided to store fontlist using a sorted vector:
+ fontlist = { {pos_1,font_1} , {pos_2,font_2} , ... } where
+ pos_1 < pos_2 < ..., font_{i-1} != font_i for all i,
+ and font_i covers the chars in positions pos_{i-1}+1,...,pos_i
+ (font_1 covers the chars 0,...,pos_1) (Dekel)
*/
struct FontTable {
- /// Start position of paragraph this font attribute covers
+ /// End position of paragraph this font attribute covers
size_type pos;
- /// Ending position of paragraph this font attribute covers
- size_type pos_end;
/** 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
allowed in these font tables.
*/
LyXFont font;
+ ///
+ FontTable(size_type p, LyXFont const & f) {pos = p; font = f;}
+ };
+ friend struct matchFT;
+ ///
+ struct matchFT {
+ /// used by lower_bound
+ inline
+ int operator()(LyXParagraph::FontTable const & a,
+ LyXParagraph::size_type pos) const {
+ return a.pos < pos;
+ }
+ /// used by upper_bound
+ inline
+ int operator()(LyXParagraph::size_type pos,
+ LyXParagraph::FontTable const & a) const {
+ return pos < a.pos;
+ }
};
+
///
- typedef std::list<FontTable> FontList;
+ typedef std::vector<FontTable> FontList;
///
FontList fontlist;
///
///
InsetList insetlist;
///
- LyXParagraph * TeXDeeper(BufferParams const &,
+ LyXParagraph * TeXDeeper(Buffer const *, BufferParams const &,
std::ostream &, TexRow & texrow,
std::ostream & foot, TexRow & foot_texrow,
int & foot_count);
///
- LyXParagraph * TeXFootnote(BufferParams const &,
+ LyXParagraph * TeXFootnote(Buffer const *, BufferParams const &,
std::ostream &, TexRow & texrow,
std::ostream & foot, TexRow & foot_texrow,
int & foot_count,
bool parent_is_rtl);
///
- bool SimpleTeXOneTablePar(BufferParams const &,
+ bool SimpleTeXOneTablePar(Buffer const *, BufferParams const &,
std::ostream &, TexRow & texrow);
///
- bool TeXContTableRows(BufferParams const &,
+ bool TeXContTableRows(Buffer const *, BufferParams const &,
std::ostream &, size_type i,
int current_cell_number,
int & column, TexRow & texrow);
int & column, LyXFont const & font,
LyXLayout const & style);
///
- void SimpleTeXSpecialChars(BufferParams const &,
+ void SimpleTeXSpecialChars(Buffer const *, BufferParams const &,
std::ostream &, TexRow & texrow,
bool moving_arg,
LyXFont & font, LyXFont & running_font,