X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftabular.h;h=2486a71e2ddeb2b10f5f11534860d952f6858ac2;hb=eead5ba43d0ddf06544ad1b40063981d3788c635;hp=cb4ffb41626edd18169fccbbd2bde126689461fb;hpb=9987ffaee8932c18807af7f6ce076eb57f0a54cf;p=lyx.git diff --git a/src/tabular.h b/src/tabular.h index cb4ffb4162..2486a71e2d 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 @@ -12,24 +12,16 @@ #ifndef TABULAR_H #define TABULAR_H -#ifdef __GNUG__ -#pragma interface -#endif +#include "lyxlength.h" +#include "insets/insettext.h" #include #include -#include "lyxlex.h" -#include "layout.h" -#include "LString.h" -#include "insets/insettext.h" -#include "lyxlength.h" - class InsetTabular; -class LaTeXFeatures; -class Buffer; +class LatexRunParams; -/* The features the text class offers for tables */ +/* The features the text class offers for tables */ /// class LyXTabular { @@ -59,6 +51,8 @@ public: /// ALIGN_CENTER, /// + ALIGN_BLOCK, + /// VALIGN_TOP, /// VALIGN_BOTTOM, @@ -158,10 +152,10 @@ public: BOX_MINIPAGE = 2 }; - struct lttype { + struct ltType { // constructor - lttype(); - // we have this header type (is set in the GetLT... functions) + ltType(); + // we have this header type (is set in the getLT... functions) bool set; // double borders on top bool topDL; @@ -172,139 +166,135 @@ public: // 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(InsetTabular *, LyXTabular const &, bool same_id = false); + + /// constructor + LyXTabular(BufferParams const &, + InsetTabular *, int columns_arg, int rows_arg); + /// sort of copy constructor + LyXTabular(BufferParams const &, + InsetTabular *, LyXTabular const &); /// explicit LyXTabular(Buffer const *, InsetTabular *, LyXLex & lex); - /// - LyXTabular & operator=(LyXTabular const &); - /// - LyXTabular * clone(InsetTabular *, bool same_id = false); - + /// Returns true if there is a topline, returns false if not - bool TopLine(int cell, bool onlycolumn = false) const; + bool topLine(int cell, bool onlycolumn = false) const; /// Returns true if there is a topline, returns false if not - bool BottomLine(int cell, bool onlycolumn = false) const; + bool bottomLine(int cell, bool onlycolumn = false) const; /// Returns true if there is a topline, returns false if not - bool LeftLine(int cell, bool onlycolumn = false) const; + 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 rightLine(int cell, bool onlycolumn = false) const; + /// - bool TopAlreadyDrawed(int cell) const; + bool topAlreadyDrawn(int cell) const; /// - bool LeftAlreadyDrawed(int cell) const; + bool leftAlreadyDrawn(int cell) const; /// - bool IsLastRow(int cell) const; + bool isLastRow(int cell) const; /// - int GetAdditionalHeight(int row) const; + int getAdditionalHeight(int row) const; /// - int GetAdditionalWidth(int cell) const; - + int getAdditionalWidth(int cell) const; + /* returns the maximum over all rows */ /// - int GetWidthOfColumn(int cell) const; + int getWidthOfColumn(int cell) const; /// - int GetWidthOfTabular() const; + int getWidthOfTabular() const; /// - int GetAscentOfRow(int row) const; + int getAscentOfRow(int row) const; /// - int GetDescentOfRow(int row) const; + int getDescentOfRow(int row) const; /// - int GetHeightOfTabular() const; - /// Returns true if a complete update is necessary, otherwise false - bool SetAscentOfRow(int row, int height); - /// Returns true if a complete update is necessary, otherwise false - bool SetDescentOfRow(int row, int height); + int getHeightOfTabular() const; /// Returns true if a complete update is necessary, otherwise false - bool SetWidthOfCell(int cell, int new_width); + bool setAscentOfRow(int row, int height); /// Returns true if a complete update is necessary, otherwise false - bool SetAllLines(int cell, bool line); + bool setDescentOfRow(int row, int height); /// Returns true if a complete update is necessary, otherwise false - bool SetTopLine(int cell, bool line, bool onlycolumn = false); - /// Returns true if a complete update is necessary, otherwise false - bool SetBottomLine(int cell, bool line, bool onlycolumn = false); - /// Returns true if a complete update is necessary, otherwise false - bool SetLeftLine(int cell, bool line, bool onlycolumn = false); - /// Returns true if a complete update is necessary, otherwise false - bool SetRightLine(int cell, bool line, bool onlycolumn = false); - /// Returns true if a complete update is necessary, otherwise false - bool SetAlignment(int cell, LyXAlignment align, + bool setWidthOfCell(int cell, int new_width); + /// + void setAllLines(int cell, bool line); + /// + void setTopLine(int cell, bool line, bool onlycolumn = false); + /// + void setBottomLine(int cell, bool line, bool onlycolumn = false); + /// + void setLeftLine(int cell, bool line, bool onlycolumn = false); + /// + void setRightLine(int cell, bool line, bool onlycolumn = false); + /// + void setAlignment(int cell, LyXAlignment align, bool onlycolumn = false); - /// Returns true if a complete update is necessary, otherwise false - bool SetVAlignment(int cell, VAlignment align, - bool onlycolumn = false); /// - bool SetColumnPWidth(int cell, LyXLength const & width); + void setVAlignment(int cell, VAlignment align, + bool onlycolumn = false); /// - bool SetMColumnPWidth(int cell, LyXLength const & width); + void setColumnPWidth(int cell, LyXLength const & width); /// - bool SetAlignSpecial(int cell, string const & special, Feature what); + bool setMColumnPWidth(int cell, LyXLength const & width); /// - LyXAlignment GetAlignment(int cell, bool onlycolumn = false) const; + void setAlignSpecial(int cell, string const & special, Feature what); /// - VAlignment GetVAlignment(int cell, bool onlycolumn = false) const; + LyXAlignment getAlignment(int cell, bool onlycolumn = false) const; /// - LyXLength const GetPWidth(int cell) const; + VAlignment getVAlignment(int cell, bool onlycolumn = false) const; /// - LyXLength const GetColumnPWidth(int cell) const; + LyXLength const getPWidth(int cell) const; /// - LyXLength const GetMColumnPWidth(int cell) const; + LyXLength const getColumnPWidth(int cell) const; /// - string const GetAlignSpecial(int cell, int what) const; + LyXLength const getMColumnPWidth(int cell) const; /// - int GetWidthOfCell(int cell) const; + string const getAlignSpecial(int cell, int what) const; /// - int GetBeginningOfTextInCell(int cell) const; + int getWidthOfCell(int cell) const; /// - void AppendRow(int cell); + int getBeginningOfTextInCell(int cell) const; /// - void DeleteRow(int row); + void appendRow(BufferParams const &, int cell); /// - void AppendColumn(int cell); + void deleteRow(int row); /// - void DeleteColumn(int column); + void appendColumn(BufferParams const &, int cell); /// - bool IsFirstCellInRow(int cell) const; + void deleteColumn(int column); /// - int GetFirstCellInRow(int row) const; + bool isFirstCellInRow(int cell) const; /// - bool IsLastCellInRow(int cell) const; + int getFirstCellInRow(int row) const; /// - int GetLastCellInRow(int row) const; + bool isLastCellInRow(int cell) const; /// - int GetNumberOfCells() const; + int getLastCellInRow(int row) const; /// - int NumberOfCellsInRow(int cell) const; + int getNumberOfCells() const; /// - void Write(Buffer const *, std::ostream &) const; + int numberOfCellsInRow(int cell) const; /// - void Read(Buffer const *, LyXLex &); + void write(Buffer const *, std::ostream &) const; /// - void OldFormatRead(LyXLex &, string const &); + void read(Buffer const *, LyXLex &); /// - int latex(Buffer const *, std::ostream &, bool, bool) const; + int latex(Buffer const *, std::ostream &, + LatexRunParams const &) const; + // + int linuxdoc(Buffer const * buf, std::ostream & os) const; /// - int docBook(Buffer const * buf, std::ostream & os) const; + int docbook(Buffer const * buf, std::ostream & os, bool mixcont) const; /// int ascii(Buffer const *, std::ostream &, int const depth, - bool onlydata, unsigned char delim) const; + bool onlydata, unsigned char delim) const; /// - bool IsMultiColumn(int cell, bool real = false) const; + bool isMultiColumn(int cell, bool real = false) const; /// - void SetMultiColumn(int cell, int number); + void setMultiColumn(Buffer *, int cell, int number); /// - int UnsetMultiColumn(int cell); // returns number of new cells + int unsetMultiColumn(int cell); // returns number of new cells /// - bool IsPartOfMultiColumn(int row, int column) const; + bool isPartOfMultiColumn(int row, int column) const; /// int row_of_cell(int cell) const; /// @@ -312,55 +302,55 @@ public: /// int right_column_of_cell(int cell) const; /// - void SetLongTabular(bool); + void setLongTabular(bool); /// - bool IsLongTabular() const; + bool isLongTabular() const; /// - void SetRotateTabular(bool); + void setRotateTabular(bool); /// - bool GetRotateTabular() const; + bool getRotateTabular() const; /// - void SetRotateCell(int cell, bool); + void setRotateCell(int cell, bool); /// - bool GetRotateCell(int cell) const; + bool getRotateCell(int cell) const; /// - bool NeedRotating() const; + bool needRotating() const; /// - bool IsLastCell(int cell) const; + bool isLastCell(int cell) const; /// - int GetCellAbove(int cell) const; + int getCellAbove(int cell) const; /// - int GetCellBelow(int cell) const; + int getCellBelow(int cell) const; /// - int GetLastCellAbove(int cell) const; + int getLastCellAbove(int cell) const; /// - int GetLastCellBelow(int cell) const; + int getLastCellBelow(int cell) const; /// - int GetCellNumber(int row, int column) const; + int getCellNumber(int row, int column) const; /// - void SetUsebox(int cell, BoxType); + void setUsebox(int cell, BoxType); /// - BoxType GetUsebox(int cell) const; + BoxType getUsebox(int cell) const; // // Long Tabular Options support functions /// bool checkLTType(int row, ltType const &) const; /// - void SetLTHead(int row, bool flag, ltType const &, bool first); + void setLTHead(int row, bool flag, ltType const &, bool first); /// - bool GetRowOfLTHead(int row, ltType &) const; + bool getRowOfLTHead(int row, ltType &) const; /// - bool GetRowOfLTFirstHead(int row, ltType &) const; + bool getRowOfLTFirstHead(int row, ltType &) const; /// - void SetLTFoot(int row, bool flag, ltType const &, bool last); + void setLTFoot(int row, bool flag, ltType const &, bool last); /// - bool GetRowOfLTFoot(int row, ltType &) const; + bool getRowOfLTFoot(int row, ltType &) const; /// - bool GetRowOfLTLastFoot(int row, ltType &) const; + bool getRowOfLTLastFoot(int row, ltType &) const; /// - void SetLTNewPage(int row, bool what); + void setLTNewPage(int row, bool what); /// - bool GetLTNewPage(int row) const; + bool getLTNewPage(int row) const; /// bool haveLTHead() const; /// @@ -372,29 +362,31 @@ public: /// // end longtable support /// - InsetText * GetCellInset(int cell) const; + InsetText & getCellInset(int cell) const; /// - InsetText * GetCellInset(int row, int column) 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(InsetOld const * inset, int maybe_cell = -1) const; /// int rows() const { return rows_; } /// int columns() const { return columns_;} /// - InsetTabular * owner() const { return owner_; } - /// - void Validate(LaTeXFeatures &) const; + void validate(LaTeXFeatures &) const; /// - std::vector const getLabelList() const; + void getLabelList(std::vector &) const; /// /// recalculate the widths/heights only! void reinit(); /// +//private: + /// mutable int cur_cell; -private: /// struct cellstruct { /// - cellstruct(); + cellstruct(BufferParams const &); /// int cellno; /// @@ -424,6 +416,7 @@ private: /// InsetText inset; }; + cellstruct & cellinfo_of_cell(int cell) const; /// typedef std::vector cell_vector; /// @@ -478,12 +471,6 @@ private: /// typedef std::vector column_vector; - /// - void ReadNew(Buffer const * buf, std::istream & is, - LyXLex & lex, string const & l, int const version); - /// - void ReadOld(Buffer const * buf, std::istream & is, - LyXLex & lex, string const & l); /// int rows_; /// @@ -521,29 +508,28 @@ private: 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); /// void set_row_column_number_info(bool oldformat = false); /// Returns true if a complete update is necessary, otherwise false - bool SetWidthOfMulticolCell(int cell, int new_width); + 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); + void calculate_width_of_column(int column); /// bool calculate_width_of_column_NMC(int column); // no multi cells /// void calculate_width_of_tabular(); /// - cellstruct * cellinfo_of_cell(int cell) const; - /// void delete_column(int column); /// int cells_in_multicolumn(int cell) const; /// - BoxType UseParbox(int cell) const; + BoxType useParbox(int cell) const; /// void setHeaderFooterRows(int header, int fheader, int footer, int lfooter); /// @@ -558,24 +544,24 @@ private: int TeXCellPostamble(std::ostream &, int cell) const; /// int TeXLongtableHeaderFooter(std::ostream &, Buffer const * buf, - bool fragile, bool fp) const; + LatexRunParams const &) const; /// bool isValidRow(int const row) const; /// int TeXRow(std::ostream &, int const row, Buffer const * buf, - bool fragile, bool fp) const; + LatexRunParams const &) const; /// // helper function for ASCII returns number of newlines /// int asciiTopHLine(std::ostream &, int row, - std::vector const &) const; + std::vector const &) const; /// int asciiBottomHLine(std::ostream &, int row, - std::vector const &) const; + std::vector const &) const; /// int asciiPrintCell(Buffer const *, std::ostream &, - int cell, int row, int column, - std::vector const &, + 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;