diff options
author | Fong Lin <pflin@novell.com> | 2010-10-08 17:04:46 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@novell.com> | 2010-10-08 17:04:46 +0100 |
commit | cc316b39d9110c536e1758a4f814738ca209bb02 (patch) | |
tree | 0ff290d366ff8fea16ebc7e7781cc14b563f9b37 /lotuswordpro/source/filter/lwptablelayout.hxx | |
parent | Port of Lotus Word Pro filter, by Fong Lin and Noel Power (diff) | |
download | core-cc316b39d9110c536e1758a4f814738ca209bb02.tar.gz core-cc316b39d9110c536e1758a4f814738ca209bb02.zip |
Port of Lotus Word Pro filter, by Fong Lin and Noel Power
Diffstat (limited to 'lotuswordpro/source/filter/lwptablelayout.hxx')
-rw-r--r-- | lotuswordpro/source/filter/lwptablelayout.hxx | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/lotuswordpro/source/filter/lwptablelayout.hxx b/lotuswordpro/source/filter/lwptablelayout.hxx new file mode 100644 index 000000000000..a9a6f484bbff --- /dev/null +++ b/lotuswordpro/source/filter/lwptablelayout.hxx @@ -0,0 +1,269 @@ +/************************************************************************* + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: IBM Corporation + * + * Copyright: 2008 by IBM Corporation + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +/** + * @file + * For LWP filter architecture prototype - table layouts + */ +/************************************************************************* + * Change History + Mar 2005 Created + ************************************************************************/ +#ifndef _LWPTABLELAYOUT_HXX +#define _LWPTABLELAYOUT_HXX +#include <vector> +#include <map> +#include "lwplayout.hxx" + +class XFTableStyle; +class XFTable; +class XFCell; +class LwpTable; +class LwpFrame; +class LwpSuperTableLayout; +class LwpRowLayout; +class LwpCellLayout; +class LwpTableHeadingLayout; +class LwpRowHeadingLayout; +class LwpConnectedCellLayout; +class LwpColumnLayout; + +/** + * @brief + * VO_TABLELAYOUT object and functions for registering styles and coverting tables + */ +class LwpTableLayout: public LwpLayout +{ +public: + LwpTableLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm); + virtual ~LwpTableLayout(); + virtual LWP_LAYOUT_TYPE GetLayoutType () { return LWP_TABLE_LAYOUT;} + LwpObjectID * GetColumnLayoutHead(){return &m_ColumnLayout;}; + void RegisterStyle(); + LwpTable * GetTable(); + LwpCellLayout * GetDefaultCellLayout(){return m_pDefaultCellLayout;}; + LwpSuperTableLayout * GetSuperTableLayout(); + LwpObjectID * SearchCellStoryMap(sal_uInt16 nRow, sal_uInt16 nCol); + LwpCellLayout * GetCellByRowCol(sal_uInt16 nRow, sal_uInt16 nCol); + OUString GetColumnWidth(sal_uInt16 nCol); + void SetWordProCellMap(sal_uInt16 nRow, sal_uInt16 nCol, LwpCellLayout * pCell) + { + if (nRow >= m_nRows || nCol >= m_nCols) + return; + m_WordProCellsMap[nRow * m_nCols + nCol] = pCell; + }; +protected: + void Read(); + void TraverseTable(); + void RegisterColumns(); + void RegisterRows(); + void Parse(); + void PostProcessParagraph(XFCell *pCell, sal_uInt16 nRowID, sal_uInt16 nColID); + + sal_uInt16 m_nRows; + sal_uInt16 m_nCols; + +private: + //CColumnLayoutHead cColumnLayout; + LwpObjectID m_ColumnLayout; + OUString m_FrameStyleName; + LwpCellLayout * m_pDefaultCellLayout; + OUString m_DefaultColumnStyleName; + OUString m_DefaultRowStyleName; + + // wordpro cell map + std::vector<LwpCellLayout *> m_WordProCellsMap; + // column vector + LwpColumnLayout ** m_pColumns; + +//add by ,2005/4/1 +public: + void XFConvert(XFContentContainer* pCont); + void ConvertTable(XFTable* pXFTable,sal_uInt16 nStartRow, + sal_uInt16 nEndRow,sal_uInt8 nStartCol,sal_uInt8 nEndCol); + OUString GetDefaultRowStyleName(){return m_DefaultRowStyleName;} + void SetCellsMap(sal_uInt16 nRow,sal_uInt8 nCol,XFCell* pXFCell); + XFCell* GetCellsMap(sal_uInt16 nRow,sal_uInt8 nCol); + std::map<sal_uInt16,LwpRowLayout*> GetRowsMap(){return m_RowsMap;} + LwpRowLayout* GetRowLayout(sal_uInt16 nRow); +private: + void ConvertDefaultRow(XFTable* pXFTable,sal_uInt8 nStartCol, + sal_uInt8 nEndCol,sal_uInt16 nRowID); + void ConvertColumn(XFTable *pXFTable,sal_uInt8 nStartCol,sal_uInt8 nEndCol); + sal_uInt16 ConvertHeadingRow(XFTable* pXFTable,sal_uInt16 nStartHeadRow,sal_uInt16 nEndHeadRow); + sal_Bool FindSplitColMark(XFTable* pXFTable,sal_uInt8* pCellMark,sal_uInt8& nMaxColSpan); + void SplitRowToCells(XFTable* pTmpTable,XFTable* pXFTable, + sal_uInt8 nFirstColSpann,sal_uInt8* pCellMark); + + std::map<sal_uInt16,LwpRowLayout*> m_RowsMap; + void SplitConflictCells(); + XFTable* m_pXFTable; + std::map<std::pair<sal_uInt16,sal_uInt8>,XFCell*> m_CellsMap; + + void PutCellVals(LwpFoundry* pFoundry, LwpObjectID aTableID); +}; +/** + * @brief + * VO_SUPERTABLELAYOUT object + */ +class LwpSuperTableLayout: public LwpPlacableLayout +{ +public: + LwpSuperTableLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm); + virtual ~LwpSuperTableLayout(); + virtual LWP_LAYOUT_TYPE GetLayoutType () { return LWP_SUPERTABLE_LAYOUT;} + void RegisterStyle(); + // for table style + // add by , 06/03/2005 + void ApplyPatternFill(XFTableStyle* pTableStyle); + void ApplyBackGround(XFTableStyle* pTableStyle); + // end add + + void ApplyBackColor(XFTableStyle *pTableStyle); + void ApplyShadow(XFTableStyle *pTableStyle); + double GetWidth(); + double GetTableWidth(); + void ApplyWatermark(XFTableStyle *pTableStyle); + void ApplyAlignment(XFTableStyle * pTableStyle); + void XFConvert(XFContentContainer* pCont); + // for frame style + virtual void XFConvertFrame(XFContentContainer* pCont, sal_Int32 nStart = 0, sal_Int32 nEnd = 0, sal_Bool bAll = sal_False); + void ParseFrame(XFFrame* pXFFrame); + void RegisterFrameStyle(); + LwpTableHeadingLayout* GetTableHeadingLayout(); +protected: + void Read(); + LwpTableLayout* GetTableLayout(); + sal_Bool IsSizeRightToContent(); + sal_Bool IsJustifiable(); + LwpFrame* m_pFrame; + +private: +}; +/** + * @brief + * VO_COLUMNLAYOUT object + */ +class LwpColumnLayout : public LwpVirtualLayout +{ +public: + LwpColumnLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm); + virtual ~LwpColumnLayout(); + virtual LWP_LAYOUT_TYPE GetLayoutType () { return LWP_COLUMN_LAYOUT;} + sal_uInt32 GetColumnID(){return ccolid;}; + double GetWidth(){return LwpTools::ConvertFromUnitsToMetric(cwidth);}; + void RegisterStyle(double dCalculatedWidth); + sal_Bool IsJustifiable(){return (( m_nAttributes2 & STYLE2_JUSTIFIABLE) != 0);}; +protected: + void Read(); + sal_uInt8 ccolid; + sal_Int32 cwidth; + +}; +/** + * @brief + * VO_TABLEHEADINGLAYOUT object + */ +class LwpTableHeadingLayout : public LwpTableLayout +{ +public: + LwpTableHeadingLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm); + virtual ~LwpTableHeadingLayout(); + virtual LWP_LAYOUT_TYPE GetLayoutType () { return LWP_TABLE_HEADING_LAYOUT;} + void GetStartEndRow(sal_uInt16& nStartRow, sal_uInt16& nEndRow); + LwpRowHeadingLayout * GetFirstRowHeadingLayout(); +protected: + void Read(); + sal_uInt16 cStartRow; + sal_uInt16 cEndRow; +}; +/** + * @brief + * VO_SUPERPARALLELCOLUMNLAYOUT object + */ +class LwpSuperParallelColumnLayout : public LwpSuperTableLayout +{ +public: + LwpSuperParallelColumnLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm); + virtual ~LwpSuperParallelColumnLayout(); +protected: + void Read(); +}; + +/** + * @brief + * VO_PCOLLAYOUT object + */ +class LwpParallelColumnsLayout : public LwpTableLayout +{ +public: + LwpParallelColumnsLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm); + virtual ~LwpParallelColumnsLayout(); +protected: + void Read(); +}; + +class LwpSuperGlossaryLayout : public LwpSuperTableLayout +{ +public: + LwpSuperGlossaryLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm); + virtual ~LwpSuperGlossaryLayout(); +protected: + void Read(); +}; + +#include "lwpcelllayout.hxx" +#include "lwprowlayout.hxx" + +#endif |