X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxparagraph.h;h=7852ca9dd5f6a111617ec412af1f86b1d93a311f;hb=245007468d0bb2aaa65dea4feab571b744dd9dec;hp=ad8e21484f1670a2ce7ef1d1bb4998739fec7cbd;hpb=1a0b18b01cf4cf06efb7cd34b350b78cf246c572;p=lyx.git diff --git a/src/lyxparagraph.h b/src/lyxparagraph.h index ad8e21484f..7852ca9dd5 100644 --- a/src/lyxparagraph.h +++ b/src/lyxparagraph.h @@ -24,7 +24,6 @@ #include "vspace.h" #include "layout.h" #include "support/block.h" -#include "direction.h" #include "language.h" class BufferParams; @@ -120,6 +119,7 @@ public: /// LyXParagraph(); /// this konstruktor inserts the new paragraph in a list + explicit LyXParagraph(LyXParagraph * par); /// the destruktors removes the new paragraph from the list ~LyXParagraph(); @@ -127,12 +127,13 @@ public: /// 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; @@ -153,10 +154,11 @@ public: /// 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, @@ -182,10 +184,16 @@ public: /** 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(); } @@ -205,6 +213,9 @@ public: /// VSpace added_space_bottom; + + /// + Spacing spacing; /// LyXTextClass::LayoutList::size_type layout; @@ -400,12 +411,12 @@ public: /// 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); @@ -414,7 +425,7 @@ public: /// void CutIntoMinibuffer(size_type pos); /// - void InsertFromMinibuffer(size_type pos); + bool InsertFromMinibuffer(size_type pos); /// bool IsHfill(size_type pos) const; @@ -501,6 +512,7 @@ public: /// void SimpleDocBookOneTablePar(std::ostream &, string & extra, int & desc_on, int depth); +private: /// struct InsetTable { /// @@ -510,7 +522,23 @@ public: /// 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 @@ -549,7 +577,7 @@ private: 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); /// @@ -563,6 +591,7 @@ private: 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, @@ -572,12 +601,37 @@ private: 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