]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetTabular.h
Cocoa based Qt-4.6 needs to paint every character separately to match metrics computa...
[lyx.git] / src / insets / InsetTabular.h
index 1c97c173aaee7af8e41d9ed6781885ceea671b16..00124eab7ad73c075be10455028c80c3dfff9368 100644 (file)
@@ -192,6 +192,8 @@ public:
                ///
                UNSET_MULTIROW,
                ///
+               SET_MROFFSET,
+               ///
                SET_ALL_LINES,
                ///
                UNSET_ALL_LINES,
@@ -268,6 +270,8 @@ public:
                ///
                SET_DECIMAL_POINT,
                ///
+               SET_TABULAR_WIDTH,
+               ///
                LAST_ACTION
        };
        ///
@@ -400,10 +404,16 @@ public:
        void setVAlignment(idx_type cell, VAlignment align,
                           bool onlycolumn = false);
        ///
+       void setTabularWidth(Length const & l) { tabular_width = l; }
+       ///
+       Length tabularWidth() const { return tabular_width; }
+       ///
        void setColumnPWidth(Cursor &, idx_type, Length const &);
        ///
        bool setMColumnPWidth(Cursor &, idx_type, Length const &);
        ///
+       bool setMROffset(Cursor &, idx_type, Length const &);
+       ///
        void setAlignSpecial(idx_type cell, docstring const & special,
                             Feature what);
        ///
@@ -415,6 +425,8 @@ public:
        ///
        Length const getPWidth(idx_type cell) const;
        ///
+       Length const getMROffset(idx_type cell) const;
+       ///
        int textHOffset(idx_type cell) const;
        ///
        int textVOffset(idx_type cell) const;
@@ -441,7 +453,7 @@ public:
        ///
        void read(Lexer &);
        ///
-       int latex(odocstream &, OutputParams const &) const;
+       void latex(otexstream &, OutputParams const &) const;
        ///
        int docbook(odocstream & os, OutputParams const &) const;
        ///
@@ -561,6 +573,8 @@ public:
                ///
                int multirow;
                ///
+               Length mroffset;
+               ///
                LyXAlignment alignment;
                ///
                VAlignment valignment;
@@ -667,6 +681,8 @@ public:
        ///
        mutable cell_vvector cell_info;
        ///
+       Length tabular_width;
+       ///
        bool use_booktabs;
        ///
        bool rotate;
@@ -703,22 +719,22 @@ public:
        ///
        BoxType useParbox(idx_type cell) const;
        ///
-       // helper function for Latex returns number of newlines
+       // helper function for Latex
        ///
-       int TeXTopHLine(odocstream &, row_type row, std::string const lang) const;
+       void TeXTopHLine(otexstream &, row_type row, std::string const lang) const;
        ///
-       int TeXBottomHLine(odocstream &, row_type row, std::string const lang) const;
+       void TeXBottomHLine(otexstream &, row_type row, std::string const lang) const;
        ///
-       int TeXCellPreamble(odocstream &, idx_type cell, bool & ismulticol, bool & ismultirow) const;
+       void TeXCellPreamble(otexstream &, idx_type cell, bool & ismulticol, bool & ismultirow) const;
        ///
-       int TeXCellPostamble(odocstream &, idx_type cell, bool ismulticol, bool ismultirow) const;
+       void TeXCellPostamble(otexstream &, idx_type cell, bool ismulticol, bool ismultirow) const;
        ///
-       int TeXLongtableHeaderFooter(odocstream &, OutputParams const &) const;
+       void TeXLongtableHeaderFooter(otexstream &, OutputParams const &) const;
        ///
        bool isValidRow(row_type const row) const;
        ///
-       int TeXRow(odocstream &, row_type const row,
-                  OutputParams const &) const;
+       void TeXRow(otexstream &, row_type const row,
+                   OutputParams const &) const;
        ///
        // helper functions for plain text
        ///
@@ -736,7 +752,8 @@ public:
        /// auxiliary function for docbook
        int docbookRow(odocstream & os, row_type, OutputParams const &) const;
        ///
-       docstring xhtmlRow(XHTMLStream & xs, row_type, OutputParams const &) const;
+       docstring xhtmlRow(XHTMLStream & xs, row_type, OutputParams const &,
+                          bool header = false) const;
 
        /// change associated Buffer
        void setBuffer(Buffer & buffer);
@@ -775,6 +792,8 @@ public:
        ///
        void drawSelection(PainterInfo & pi, int x, int y) const;
        ///
+       void drawBackground(PainterInfo & pi, int x, int y) const;
+       ///
        bool editable() const { return true; }
        ///
        bool hasSettings() const { return true; }
@@ -784,14 +803,14 @@ public:
        bool allowSpellCheck() const { return true; }
        ///
        bool canTrackChanges() const { return true; }
-       /** returns true if, when outputing LaTeX, font changes should
+       /** returns false if, when outputing LaTeX, font changes should
            be closed before generating this inset. This is needed for
            insets that may contain several paragraphs */
-       bool noFontChange() const { return true; }
+       bool inheritFont() const { return false; }
        ///
        DisplayType display() const;
        ///
-       int latex(odocstream &, OutputParams const &) const;
+       void latex(otexstream &, OutputParams const &) const;
        ///
        int plaintext(odocstream &, OutputParams const &) const;
        ///
@@ -803,7 +822,9 @@ public:
        ///
        InsetCode lyxCode() const { return TABULAR_CODE; }
        ///
-       docstring contextMenu(BufferView const & bv, int x, int y) const;
+       docstring contextMenu(BufferView const &, int, int) const;
+       ///
+       docstring contextMenuName() const;
        /// get offset of this cursor slice relative to our upper left corner
        void cursorPos(BufferView const & bv, CursorSlice const & sl,
                bool boundary, int & x, int & y) const;
@@ -851,7 +872,7 @@ public:
        /// Update the counters of this inset and of its contents
        void updateBuffer(ParIterator const &, UpdateType);
        ///
-       void addToToc(DocIterator const &);
+       void addToToc(DocIterator const &) const;
 
        ///
        bool completionSupported(Cursor const &) const;
@@ -899,8 +920,6 @@ private:
        ///
        bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const;
        ///
-       int scroll() const { return scx_; }
-       ///
        Inset * clone() const { return new InsetTabular(*this); }
 
        ///
@@ -918,6 +937,8 @@ private:
        ///
        int cellXPos(idx_type cell) const;
        ///
+       int cellYPos(idx_type cell) const;
+       ///
        void resetPos(Cursor & cur) const;
        ///
        bool copySelection(Cursor & cur);
@@ -944,6 +965,9 @@ private:
        mutable idx_type first_visible_cell;
        ///
        mutable int scx_;
+       /// The vertical offset of the table due to the vertical
+       /// alignment with respect to the baseline.
+       mutable int offset_valign_;
        /// true when selecting rows with the mouse
        bool rowselect_;
        /// true when selecting columns with the mouse