]> git.lyx.org Git - lyx.git/blobdiff - src/insets/inset.h
The free_spacing patch and fix to the mess that Rob discovered.
[lyx.git] / src / insets / inset.h
index 9f865c0c3f607a777d326fadd963b079736d9113..6bc007f2327791580e30e7131d23074203828dd0 100644 (file)
 #ifndef INSET_H
 #define INSET_H
 
-
-#include <vector>
 #include "LString.h"
 #include "LColor.h"
 #include "insetbase.h"
-#include "frontends/mouse_state.h"
 #include "support/types.h"
 
+#include <vector>
+
 class LyXFont;
-class BufferView;
+class Dimension;
 class Buffer;
 class Painter;
+class LatexRunParams;
 class LyXText;
 class LyXLex;
 class Paragraph;
+class ParagraphList;
 class LyXCursor;
 class FuncRequest;
 class WordLangTuple;
@@ -102,6 +103,8 @@ public:
                ///
                MINIPAGE_CODE,
                ///
+               SPACE_CODE, 
+               ///
                SPECIALCHAR_CODE, // 25
                ///
                TABULAR_CODE,
@@ -124,7 +127,13 @@ public:
                ///
                INDEX_PRINT_CODE,
                ///
-               OPTARG_CODE
+               OPTARG_CODE,
+               ///
+               ENVIRONMENT_CODE,
+               ///
+               HFILL_CODE,
+               ///
+               NEWLINE_CODE
        };
 
        ///
@@ -151,29 +160,24 @@ public:
        ///
        Inset(Inset const & in, bool same_id = false);
        ///
-       virtual int ascent(BufferView *, LyXFont const &) const = 0;
+       virtual void dimension(BufferView *, LyXFont const &, Dimension &) const = 0;
+       ///
+       int ascent(BufferView *, LyXFont const &) const;
        ///
-       virtual int descent(BufferView *, LyXFont const &) const = 0;
+       int descent(BufferView *, LyXFont const &) const;
        ///
-       virtual int width(BufferView *, LyXFont const &) const = 0;
+       int width(BufferView *, LyXFont const &) const;
        ///
-       virtual void draw(BufferView *, LyXFont const &,
-                         int baseline, float & x, bool cleared) const = 0;
+       virtual void draw(BufferView *, LyXFont const &, int baseline, float & x) const = 0;
        /// update the inset representation
-       virtual void update(BufferView *, LyXFont const &, bool = false)
+       virtual void update(BufferView *, bool = false)
                {}
        /// what appears in the minibuffer when opening
        virtual string const editMessage() const;
        ///
-       virtual void edit(BufferView *, int x, int y, mouse_button::state button);
-       ///
-       virtual void edit(BufferView *, bool front = true);
-       ///
        virtual EDITABLE editable() const;
        ///
        virtual bool isTextInset() const { return false; }
-       ///
-       virtual bool doClearArea() const { return true; }
        /// return true if the inset should be removed automatically
        virtual bool autoDelete() const;
        /// returns true the inset can hold an inset of given type
@@ -184,14 +188,9 @@ public:
        virtual void write(Buffer const *, std::ostream &) const = 0;
        ///
        virtual void read(Buffer const *, LyXLex & lex) = 0;
-       /** returns the number of rows (\n's) of generated tex code.
-           fragile == true means, that the inset should take care about
-           fragile commands by adding a \protect before.
-           If the free_spc (freespacing) variable is set, then this inset
-           is in a free-spacing paragraph.
-       */
-       virtual int latex(Buffer const *, std::ostream &, bool fragile,
-                         bool free_spc) const = 0;
+       /// returns the number of rows (\n's) of generated tex code.
+       virtual int latex(Buffer const *, std::ostream &,
+                         LatexRunParams const &) const = 0;
        ///
        virtual int ascii(Buffer const *,
                          std::ostream &, int linelen = 0) const = 0;
@@ -265,9 +264,11 @@ public:
        virtual Inset * getInsetFromID(int /*id*/) const { return 0; }
        /// if this insets owns paragraphs (f.ex. InsetText) then it
        /// should return it's very first one!
-       virtual Paragraph * firstParagraph() const { return 0; }
+       virtual ParagraphList * getParagraphs(int /*num*/) const { return 0; }
        ///
-       virtual Paragraph * getFirstParagraph(int /*num*/) const { return 0; }
+       virtual bool haveParagraphs() const {
+               return false;
+       }
 
        /// return the cursor if we own one otherwise giv'em just the
        /// BufferView cursor to work with.
@@ -321,7 +322,7 @@ public:
 
        /// mark the inset contents as erased (for change tracking)
        virtual void markErased() {}
+
        /** Adds a LaTeX snippet to the Preview Loader for transformation
         *  into a bitmap image. Does not start the laoding process.
         *
@@ -337,17 +338,11 @@ public:
         *  defaults to empty.
         */
        virtual void generatePreview() const {}
-       ///
-       virtual void cache(BufferView *) const {}
-       ///
-       virtual BufferView * view() const { return 0; }
 
 protected:
        ///
        mutable int top_x;
        ///
-       mutable bool topx_set; /* have we already drawn ourself! */
-       ///
        mutable int top_baseline;
        ///
        mutable int scx;
@@ -385,7 +380,7 @@ bool Inset::checkInsertChar(LyXFont &)
  * returns true if pointer argument is valid
  * and points to an editable inset
  */
-inline bool isEditableInset(Inset * i)
+inline bool isEditableInset(Inset const * i)
 {
        return i && i->editable();
 }
@@ -394,7 +389,7 @@ inline bool isEditableInset(Inset * i)
  * returns true if pointer argument is valid
  * and points to a highly editable inset
  */
-inline bool isHighlyEditableInset(Inset * i)
+inline bool isHighlyEditableInset(Inset const * i)
 {
        return i && i->editable() == Inset::HIGHLY_EDITABLE;
 }