X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fparagraph.h;h=1d63feeb038137c533f4a76343c0d9508d05c339;hb=2b378ca3fdbd701b0d5e350e1c6b22155c07a2dc;hp=fedd97c3c3e0da1f50d99733d30ece73e4100da5;hpb=34bca87dd83897a193fdc8ab02b524d9577a7be4;p=lyx.git diff --git a/src/paragraph.h b/src/paragraph.h index fedd97c3c3..1d63feeb03 100644 --- a/src/paragraph.h +++ b/src/paragraph.h @@ -30,7 +30,6 @@ namespace lyx { class Buffer; class BufferParams; -class BufferView; class Counters; class InsetBase; class InsetBibitem; @@ -60,6 +59,8 @@ public: /// A Paragraph holds all text, attributes and insets in a text paragraph +/// \todo FIXME: any reference to ParagraphMetrics (including inheritance) +/// should go in order to complete the Model/View separation of this class. class Paragraph { public: /// @@ -142,7 +143,7 @@ public: std::string getID(Buffer const & buf, OutputParams const & runparams) const; - // Get the first word of a paragraph, return the position where it left + /// Get the first word of a paragraph, return the position where it left pos_type getFirstWord(Buffer const & buf, odocstream & os, OutputParams const & runparams) const; @@ -178,8 +179,6 @@ public: /// bool empty() const { return text_.empty(); } /// - void setContentsFromPar(Paragraph const & par); - /// void clearContents(); /// @@ -198,6 +197,10 @@ public: /// is there a change within the given range ? bool isChanged(pos_type start, pos_type end) const; + /// is there an unchanged char at the given pos ? + bool isUnchanged(pos_type pos) const { + return lookupChange(pos).type == Change::UNCHANGED; + } /// is there an insertion at the given pos ? bool isInserted(pos_type pos) const { return lookupChange(pos).type == Change::INSERTED; @@ -207,17 +210,21 @@ public: return lookupChange(pos).type == Change::DELETED; } + /// will the paragraph be physically merged with the next + /// one if the imaginary end-of-par character is logically deleted? + bool isMergedOnEndOfParDeletion(bool trackChanges) const; + /// set change for the entire par void setChange(Change const & change); /// set change at given pos void setChange(pos_type pos, Change const & change); - /// accept change - void acceptChange(pos_type start, pos_type end); + /// accept changes within the given range + void acceptChanges(pos_type start, pos_type end); - /// reject change - void rejectChange(pos_type start, pos_type end); + /// reject changes within the given range + void rejectChanges(pos_type start, pos_type end); /// Paragraphs can contain "manual labels", for example, Description /// environment. The text for this user-editable label is stored in @@ -235,7 +242,7 @@ public: docstring const getLabelWidthString() const; /// void setLabelWidthString(docstring const & s); - /// + /// Actual paragraph alignment used char getAlign() const; /// The nesting depth of a paragraph depth_type getDepth() const; @@ -275,8 +282,7 @@ public: * The font returned by the above functions is the same in a * span of characters. This method will return the first and * the last positions in the paragraph for which that font is - * the same. This can be used to avoid unnecessary calls to - * getFont. + * the same. This can be used to avoid unnecessary calls to getFont. */ FontSpan fontSpan(pos_type pos) const; /// @@ -332,8 +338,8 @@ public: bool isSeparator(pos_type pos) const { return getChar(pos) == ' '; } /// bool isLineSeparator(pos_type pos) const; - /// True if the character/inset at this point can be part of a word - // Note that digits in particular are considered as letters + /// True if the character/inset at this point can be part of a word. + /// Note that digits in particular are considered as letters bool isLetter(pos_type pos) const; /// returns -1 if inset not found @@ -353,49 +359,18 @@ public: ParagraphParameters & params(); /// ParagraphParameters const & params() const; - - /// - Row & getRow(pos_type pos, bool boundary); - /// - Row const & getRow(pos_type pos, bool boundary) const; - /// - size_t pos2row(pos_type pos) const; - - /// total height of paragraph - unsigned int height() const { return dim_.height(); } - /// total width of paragraph, may differ from workwidth - unsigned int width() const { return dim_.width(); } - /// ascend of paragraph above baseline - unsigned int ascent() const { return dim_.ascent(); } - /// descend of paragraph below baseline - unsigned int descent() const { return dim_.descent(); } - /// LyXText updates the rows using this access point - RowList & rows() { return rows_; } - /// The painter and others use this - RowList const & rows() const { return rows_; } - /// - RowSignature & rowSignature() const { return rowSignature_; } /// bool hfillExpansion(Row const & row, pos_type pos) const; - /// LyXText::redoParagraph updates this - Dimension & dim() { return dim_; } - - /// dump some information to lyxerr - void dump() const; + /// Check if we are in a Biblio environment. + /// \retval true if the cursor needs to be moved right. + bool checkBiblio(bool track_changes); public: /// InsetList insetlist; private: - /// cached dimensions of paragraph - Dimension dim_; - - /// - mutable RowList rows_; - /// - mutable RowSignature rowSignature_; /// LyXLayout_ptr layout_; @@ -415,7 +390,6 @@ private: Pimpl * pimpl_; }; - } // namespace lyx #endif // PARAGRAPH_H