X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftabular.h;h=b3432cfcfeb416d14d1723bb34cebd3b72e51f6d;hb=98c966c64594611e469313314abd1e59524adb4a;hp=f13a86ac4effedb3dff403d1c8a34920827db821;hpb=caf1ad7d8df58c63c05040d785ad046f4da3a8a3;p=lyx.git diff --git a/src/tabular.h b/src/tabular.h index f13a86ac4e..b3432cfcfe 100644 --- a/src/tabular.h +++ b/src/tabular.h @@ -1,9 +1,9 @@ // -*- C++ -*- /* This file is part of - * ====================================================== - * + * ====================================================== + * * LyX, The Document Processor - * + * * Copyright 2000-2001 The LyX Team. * * @author: Jürgen Vigna @@ -16,20 +16,21 @@ #pragma interface #endif -#include -#include - #include "lyxlex.h" #include "layout.h" #include "LString.h" -#include "insets/insettext.h" #include "lyxlength.h" +#include "insets/insettext.h" + +#include +#include + class InsetTabular; class LaTeXFeatures; class Buffer; -/* The features the text class offers for tables */ +/* The features the text class offers for tables */ /// class LyXTabular { @@ -161,32 +162,36 @@ public: struct lttype { // constructor lttype(); - // row of the header/footer type end definition - int row; + // we have this header type (is set in the GetLT... functions) + bool set; // double borders on top bool topDL; // double borders on bottom bool bottomDL; // used for FirstHeader & LastFooter and if this is true - // row HAS to be 0! + // all the rows marked as FirstHeader or LastFooter are + // ignored in the output and it is set to be empty! bool empty; }; /// typedef struct lttype ltType; - + /* konstruktor */ /// - LyXTabular(InsetTabular *, int columns_arg, int rows_arg); + LyXTabular(BufferParams const &, + InsetTabular *, int columns_arg, int rows_arg); /// - LyXTabular(InsetTabular *, LyXTabular const &, bool same_id = false); + LyXTabular(BufferParams const &, + InsetTabular *, LyXTabular const &, bool same_id = false); /// explicit LyXTabular(Buffer const *, InsetTabular *, LyXLex & lex); /// LyXTabular & operator=(LyXTabular const &); /// - LyXTabular * clone(InsetTabular *, bool same_id = false); - + LyXTabular * clone(BufferParams const &, + InsetTabular *, bool same_id = false); + /// Returns true if there is a topline, returns false if not bool TopLine(int cell, bool onlycolumn = false) const; /// Returns true if there is a topline, returns false if not @@ -195,7 +200,7 @@ public: bool LeftLine(int cell, bool onlycolumn = false) const; /// Returns true if there is a topline, returns false if not bool RightLine(int cell, bool onlycolumn = false) const; - + /// bool TopAlreadyDrawed(int cell) const; /// @@ -207,7 +212,7 @@ public: int GetAdditionalHeight(int row) const; /// int GetAdditionalWidth(int cell) const; - + /* returns the maximum over all rows */ /// int GetWidthOfColumn(int cell) const; @@ -264,11 +269,11 @@ public: /// int GetBeginningOfTextInCell(int cell) const; /// - void AppendRow(int cell); + void AppendRow(BufferParams const &, int cell); /// void DeleteRow(int row); /// - void AppendColumn(int cell); + void AppendColumn(BufferParams const &, int cell); /// void DeleteColumn(int column); /// @@ -288,41 +293,18 @@ public: /// void Read(Buffer const *, LyXLex &); /// - void OldFormatRead(LyXLex &, string const &); - // - // helper function for Latex returns number of newlines + void OldFormatRead(BufferParams const &, LyXLex &, string const &); /// - int TeXTopHLine(std::ostream &, int row) const; + int latex(Buffer const *, std::ostream &, bool, bool) const; /// - int TeXBottomHLine(std::ostream &, int row) const; + int docBook(Buffer const * buf, std::ostream & os) const; /// - int TeXCellPreamble(std::ostream &, int cell) const; - /// - int TeXCellPostamble(std::ostream &, int cell) const; - /// - int Latex(Buffer const *, std::ostream &, bool, bool) const; - /// auxiliary function for docbook rows - int docbookRow(Buffer const * buf, std::ostream & os, int row) const; - /// - int DocBook(Buffer const * buf, std::ostream & os) const; - /// - // helper function for Latex returns number of newlines - /// - int AsciiTopHLine(std::ostream &, int row, - std::vector const &) const; - /// - int AsciiBottomHLine(std::ostream &, int row, - std::vector const &) const; - /// - int AsciiPrintCell(Buffer const *, std::ostream &, - int cell, int row, int column, - std::vector const &) const; - /// - int Ascii(Buffer const *, std::ostream &) const; + int ascii(Buffer const *, std::ostream &, int const depth, + bool onlydata, unsigned char delim) const; /// bool IsMultiColumn(int cell, bool real = false) const; /// - void SetMultiColumn(int cell, int number); + void SetMultiColumn(Buffer const *, int cell, int number); /// int UnsetMultiColumn(int cell); // returns number of new cells /// @@ -364,17 +346,17 @@ public: /// BoxType GetUsebox(int cell) const; // - // Long Tabular Options + // Long Tabular Options support functions /// bool checkLTType(int row, ltType const &) const; /// - void SetLTHead(ltType const &, bool first); + void SetLTHead(int row, bool flag, ltType const &, bool first); /// bool GetRowOfLTHead(int row, ltType &) const; /// bool GetRowOfLTFirstHead(int row, ltType &) const; /// - void SetLTFoot(ltType const &, bool last); + void SetLTFoot(int row, bool flag, ltType const &, bool last); /// bool GetRowOfLTFoot(int row, ltType &) const; /// @@ -384,9 +366,22 @@ public: /// bool GetLTNewPage(int row) const; /// + bool haveLTHead() const; + /// + bool haveLTFirstHead() const; + /// + bool haveLTFoot() const; + /// + bool haveLTLastFoot() const; + /// + // end longtable support + /// InsetText * GetCellInset(int cell) const; /// InsetText * GetCellInset(int row, int column) const; + /// Search for \param inset in the tabular, with the + /// additional hint that it could be at \param maybe_cell + int GetCellFromInset(Inset const * inset, int maybe_cell = -1) const; /// int rows() const { return rows_; } /// @@ -406,7 +401,7 @@ private: /// struct cellstruct { /// - cellstruct(); + cellstruct(BufferParams const &); /// int cellno; /// @@ -446,14 +441,23 @@ private: /// rowstruct(); /// - bool top_line; - /// - bool bottom_line; - /// int ascent_of_row; /// int descent_of_row; + /// + bool top_line; + /// + bool bottom_line; /// This are for longtabulars only + /// a row of endhead + bool endhead; + /// a row of endfirsthead + bool endfirsthead; + /// a row of endfoot + bool endfoot; + /// row of endlastfoot + bool endlastfoot; + /// row for a pagebreak bool newpage; }; /// @@ -483,7 +487,7 @@ private: /// void ReadNew(Buffer const * buf, std::istream & is, - LyXLex & lex, string const & l); + LyXLex & lex, string const & l, int const version); /// void ReadOld(Buffer const * buf, std::istream & is, LyXLex & lex, string const & l); @@ -509,21 +513,23 @@ private: bool rotate; // // for long tabulars - /// + // bool is_long_tabular; - /// row of endhead + /// endhead data ltType endhead; - /// row of endfirsthead + /// endfirsthead data ltType endfirsthead; - /// row of endfoot + /// endfoot data ltType endfoot; - /// row of endlastfoot + /// endlastfoot data ltType endlastfoot; + // /// InsetTabular * owner_; /// - void Init(int columns_arg, int rows_arg, LyXTabular const * lt = 0); + void Init(BufferParams const &, + int columns_arg, int rows_arg, LyXTabular const * lt = 0); /// void Reinit(bool reset_widths = true); /// @@ -531,7 +537,7 @@ private: /// Returns true if a complete update is necessary, otherwise false bool SetWidthOfMulticolCell(int cell, int new_width); /// - void recalculateMulticolCells(int cell, int new_width); + void recalculateMulticolumnsOfColumn(int column); /// Returns true if change bool calculate_width_of_column(int column); /// @@ -546,6 +552,41 @@ private: int cells_in_multicolumn(int cell) const; /// BoxType UseParbox(int cell) const; + /// + void setHeaderFooterRows(int header, int fheader, int footer, int lfooter); + /// + // helper function for Latex returns number of newlines + /// + int TeXTopHLine(std::ostream &, int row) const; + /// + int TeXBottomHLine(std::ostream &, int row) const; + /// + int TeXCellPreamble(std::ostream &, int cell) const; + /// + int TeXCellPostamble(std::ostream &, int cell) const; + /// + int TeXLongtableHeaderFooter(std::ostream &, Buffer const * buf, + bool fragile, bool fp) const; + /// + bool isValidRow(int const row) const; + /// + int TeXRow(std::ostream &, int const row, Buffer const * buf, + bool fragile, bool fp) const; + /// + // helper function for ASCII returns number of newlines + /// + int asciiTopHLine(std::ostream &, int row, + std::vector const &) const; + /// + int asciiBottomHLine(std::ostream &, int row, + std::vector const &) const; + /// + int asciiPrintCell(Buffer const *, std::ostream &, + int cell, int row, int column, + std::vector const &, + bool onlydata) const; + /// auxiliary function for docbook + int docbookRow(Buffer const * buf, std::ostream & os, int row) const; }; #endif