#include "vspace.h"
#include "layout.h"
#include "support/block.h"
-#include "direction.h"
#include "language.h"
class BufferParams;
///
LyXParagraph();
/// this konstruktor inserts the new paragraph in a list
+ explicit
LyXParagraph(LyXParagraph * par);
/// the destruktors removes the new paragraph from the list
~LyXParagraph();
///
Language const * getParLanguage() const;
///
- Language const * getLetterLanguage(size_type pos) const;
-
+ bool isRightToLeftPar() const;
+ ///
+ void ChangeLanguage(Language const * from, Language const * to);
///
- LyXDirection getParDirection() const;
+ bool isMultiLingual();
///
- LyXDirection getLetterDirection(size_type pos) const;
+ string String(bool label);
///
void writeFile(std::ostream &, BufferParams const &, char, char) const;
///
LyXParagraph * TeXOnePar(std::ostream &, TexRow & texrow,
+ bool moving_arg,
std::ostream & foot, TexRow & foot_texrow,
int & foot_count);
///
- bool SimpleTeXOnePar(std::ostream &, TexRow & texrow);
+ bool SimpleTeXOnePar(std::ostream &, TexRow & texrow, bool moving_arg);
///
LyXParagraph * TeXEnvironment(std::ostream &, TexRow & texrow,
/** Check if the current paragraph is the last paragraph in a
proof environment */
int GetEndLabel() const;
-
+ ///
+ Inset * InInset() { return inset_owner; }
+ ///
+ void SetInsetOwner(Inset * i) { inset_owner = i; }
private:
///
TextContainer text;
+ ///
+ Inset * inset_owner;
+
public:
///
size_type size() const { return text.size(); }
///
VSpace added_space_bottom;
+
+ ///
+ Spacing spacing;
///
LyXTextClass::LayoutList::size_type layout;
///
void InsertInset(size_type pos, Inset * inset);
///
+ bool InsertInsetAllowed(Inset * inset);
+ ///
Inset * GetInset(size_type pos);
///
Inset const * GetInset(size_type pos) const;
///
- Inset * ReturnNextInsetPointer(size_type & pos);
- ///
void OpenFootnote(size_type pos);
///
void CloseFootnote(size_type pos);
///
void CutIntoMinibuffer(size_type pos);
///
- void InsertFromMinibuffer(size_type pos);
+ bool InsertFromMinibuffer(size_type pos);
///
bool IsHfill(size_type pos) const;
///
void SimpleDocBookOneTablePar(std::ostream &, string & extra,
int & desc_on, int depth);
+private:
///
struct InsetTable {
///
///
InsetTable(size_type p, Inset * i) { pos = p; inset = i;}
};
-private:
+ ///
+ friend struct matchIT;
+ ///
+ struct matchIT {
+ /// used by lower_bound
+ inline
+ int operator()(LyXParagraph::InsetTable const & a,
+ LyXParagraph::size_type pos) const {
+ return a.pos < pos;
+ }
+ /// used by upper_bound
+ inline
+ int operator()(LyXParagraph::size_type pos,
+ LyXParagraph::InsetTable const & a) const {
+ return pos < a.pos;
+ }
+ };
/** A font entry covers a range of positions. Notice that the
entries in the list are inserted in random order.
I don't think it's worth the effort to implement a more effective
LyXParagraph * TeXFootnote(std::ostream &, TexRow & texrow,
std::ostream & foot, TexRow & foot_texrow,
int & foot_count,
- LyXDirection par_direction);
+ bool parent_is_rtl);
///
bool SimpleTeXOneTablePar(std::ostream &, TexRow & texrow);
///
LyXLayout const & style);
///
void SimpleTeXSpecialChars(std::ostream &, TexRow & texrow,
+ bool moving_arg,
LyXFont & font, LyXFont & running_font,
LyXFont & basefont, bool & open_font,
LyXLayout const & style,
unsigned int id_;
///
static unsigned int paragraph_id;
-};
+public:
+ class inset_iterator {
+ public:
+ inset_iterator() {}
+ inset_iterator(InsetList::iterator const & iter) : it(iter) {};
+ inset_iterator & operator++() {
+ ++it;
+ return *this;
+ }
+ Inset * operator*() { return (*it).inset; }
+ size_type getPos() {return (*it).pos; }
+ bool operator==(inset_iterator const & iter) const {
+ return it == iter.it;
+ }
+ bool operator!=(inset_iterator const & iter) const {
+ return it != iter.it;
+ }
+ private:
+ InsetList::iterator it;
+ };
+ ///
+ inset_iterator inset_iterator_begin() {
+ return inset_iterator(insetlist.begin());
+ }
+ ///
+ inset_iterator inset_iterator_end() {
+ return inset_iterator(insetlist.end());
+ }
+ ///
+ inset_iterator InsetIterator(size_type pos);
-inline bool operator<(LyXParagraph::InsetTable const & a,
- LyXParagraph::InsetTable const & b)
-{
- return a.pos < b.pos;
-}
+};
#endif