]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.h
Comment.
[lyx.git] / src / Paragraph.h
index 9ee108efe7600a9b5ad969b884cf7a95dc3ac722..7761c5ff683b54cc31510a52467b01464da2017f 100644 (file)
 #ifndef PARAGRAPH_H
 #define PARAGRAPH_H
 
-#include "LayoutPtr.h"
+#include "FontEnums.h"
+#include "Layout.h"
 
 #include "insets/InsetCode.h"
 
-#include "support/docstring.h"
-// FIXME: would be nice to forward declare odocstream instead of
-// including this:
-#include "support/docstream.h"
+#include "support/strfwd.h"
+#include "support/types.h"
 
 namespace lyx {
 
@@ -32,6 +31,9 @@ class Buffer;
 class BufferParams;
 class Change;
 class Counters;
+class Cursor;
+class CursorSlice;
+class DocumentClass;
 class Inset;
 class InsetBibitem;
 class LaTeXFeatures;
@@ -95,36 +97,30 @@ public:
        ///
        bool isMultiLingual(BufferParams const &) const;
 
+       /// Convert the paragraph to a string.
+       /// Used for building the table of contents
+       docstring asString(bool label) const;
        ///
-       docstring const asString(Buffer const &, bool label) const;
-       ///
-       docstring const asString(Buffer const & buffer,
-                                  pos_type beg,
-                                  pos_type end,
-                                  bool label) const;
+       docstring asString(pos_type beg, pos_type end, bool label) const;
 
        ///
-       void write(Buffer const &, std::ostream &, BufferParams const &,
+       void write(std::ostream &, BufferParams const &,
                   depth_type & depth) const;
        ///
        void validate(LaTeXFeatures &) const;
 
        ///
-       bool latex(Buffer const &, BufferParams const &,
-                            Font const & outerfont, odocstream &,
-                            TexRow & texrow, OutputParams const &) const;
+       bool latex(BufferParams const &, Font const & outerfont, odocstream &,
+               TexRow & texrow, OutputParams const &) const;
 
        /// Can we drop the standard paragraph wrapper?
        bool emptyTag() const;
 
        /// Get the id of the paragraph, usefull for docbook
-       std::string getID(Buffer const & buf,
-                         OutputParams const & runparams) const;
+       std::string getID(Buffer const & buf, OutputParams const & runparams) const;
 
        /// 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;
+       pos_type firstWord(odocstream & os, OutputParams const & runparams) const;
 
        /// Writes to stream the docbook representation
        void simpleDocBookOnePar(Buffer const & buf,
@@ -146,17 +142,22 @@ public:
        ///
        InsetCode ownerCode() const;
        ///
-       bool forceDefaultParagraphs() const;
-
+       bool forceEmptyLayout() const;
+       ///
+       bool allowParagraphCustomization() const;
+       ///
+       bool useEmptyLayout() const;
        ///
        pos_type size() const;
        ///
        bool empty() const;
 
        ///
-       LayoutPtr const & layout() const;
+       Layout const & layout() const;
+       /// Do not pass a temporary to this!
+       void setLayout(Layout const & layout);
        ///
-       void layout(LayoutPtr const & new_layout);
+       void setEmptyOrDefaultLayout(DocumentClass const & tc);
 
        /// This is the item depth, only used by enumerate and itemize
        signed char itemdepth;
@@ -199,7 +200,7 @@ public:
        void setBeginOfBody();
 
        ///
-       docstring const & getLabelstring() const;
+       docstring const & labelString() const;
 
        /// the next two functions are for the manual labels
        docstring const getLabelWidthString() const;
@@ -209,7 +210,7 @@ public:
        docstring const translateIfPossible(docstring const & label,
                BufferParams const & bparams) const;
        /// Expand the counters for the labelstring of \c layout
-       docstring expandLabel(LayoutPtr const &, BufferParams const &,
+       docstring expandLabel(Layout const &, BufferParams const &,
                bool process_appendix = true) const;
        /// Actual paragraph alignment used
        char getAlign() const;
@@ -218,13 +219,16 @@ public:
        /// The maximal possible depth of a paragraph after this one
        depth_type getMaxDepthAfter() const;
        ///
-       void applyLayout(LayoutPtr const & new_layout);
+       void applyLayout(Layout const & new_layout);
 
        /// (logically) erase the char at pos; return true if it was actually erased
        bool eraseChar(pos_type pos, bool trackChanges);
        /// (logically) erase the given range; return the number of chars actually erased
        int eraseChars(pos_type start, pos_type end, bool trackChanges);
 
+       ///
+       void resetFonts(Font const & font);
+
        /** Get uninstantiated font setting. Returns the difference
            between the characters font and the layoutfont.
            This is what is stored in the fonttable
@@ -238,8 +242,8 @@ public:
            font attached to this paragraph.
            If pos == -2, use the label font of the layout attached here.
            In all cases, the font is instantiated, i.e. does not have any
-           attributes with values Font::INHERIT, Font::IGNORE or
-           Font::TOGGLE.
+           attributes with values FONT_INHERIT, FONT_IGNORE or
+           FONT_TOGGLE.
        */
        Font const getFont(BufferParams const &, pos_type pos,
                              Font const & outerfont) const;
@@ -261,8 +265,8 @@ public:
        /// pos <= size() (there is a dummy font change at the end of each par)
        void setFont(pos_type pos, Font const & font);
        /// Returns the height of the highest font in range
-       Font_size highestFontInRange(pos_type startpos,
-                                       pos_type endpos, Font_size def_size) const;
+       FontSize highestFontInRange(pos_type startpos,
+                                       pos_type endpos, FontSize def_size) const;
        ///
        void insert(pos_type pos, docstring const & str,
                    Font const & font, Change const & change);
@@ -340,7 +344,7 @@ public:
        /// an inset, in which case pos is the position from which the inset
        /// was deleted, and the cursor will need to be moved back one if it
        /// was previously past that position. Return 0 otherwise.
-       int checkBiblio(bool track_changes);
+       int checkBiblio(Buffer const & buffer);
 
        /// For each author, set 'used' to true if there is a change
        /// by this author in the paragraph.
@@ -348,7 +352,7 @@ public:
 
        ///
        void changeCase(BufferParams const & bparams, pos_type pos,
-               pos_type right, TextCase action);
+               pos_type right, TextCase action);
 
        /// find \param str string inside Paragraph.
        /// \return true if the specified string is at the specified position
@@ -359,8 +363,18 @@ public:
                bool mw, ///<
                pos_type pos, ///< start from here.
                bool del = true) const;
+       
+       ///
+       void updateWords(CursorSlice const & sl);
 
 private:
+       ///
+       void deregisterWords();
+       ///
+       void collectWords(CursorSlice const & sl);
+       ///
+       void registerWords();
+
        /// Pimpl away stuff
        class Private;
        ///