merge the formfield patch from ooo-build
[ooovba.git] / lotuswordpro / source / filter / lwptablelayout.hxx
blobd3c7d989cf9e96cc34d2336b6a2ccd36c1d9fa31
1 /*************************************************************************
3 * The Contents of this file are made available subject to the terms of
4 * either of the following licenses
6 * - GNU Lesser General Public License Version 2.1
7 * - Sun Industry Standards Source License Version 1.1
9 * Sun Microsystems Inc., October, 2000
11 * GNU Lesser General Public License Version 2.1
12 * =============================================
13 * Copyright 2000 by Sun Microsystems, Inc.
14 * 901 San Antonio Road, Palo Alto, CA 94303, USA
16 * This library is free software; you can redistribute it and/or
17 * modify it under the terms of the GNU Lesser General Public
18 * License version 2.1, as published by the Free Software Foundation.
20 * This library is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23 * Lesser General Public License for more details.
25 * You should have received a copy of the GNU Lesser General Public
26 * License along with this library; if not, write to the Free Software
27 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
28 * MA 02111-1307 USA
31 * Sun Industry Standards Source License Version 1.1
32 * =================================================
33 * The contents of this file are subject to the Sun Industry Standards
34 * Source License Version 1.1 (the "License"); You may not use this file
35 * except in compliance with the License. You may obtain a copy of the
36 * License at http://www.openoffice.org/license.html.
38 * Software provided under this License is provided on an "AS IS" basis,
39 * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
40 * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
41 * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
42 * See the License for the specific provisions governing your rights and
43 * obligations concerning the Software.
45 * The Initial Developer of the Original Code is: IBM Corporation
47 * Copyright: 2008 by IBM Corporation
49 * All Rights Reserved.
51 * Contributor(s): _______________________________________
54 ************************************************************************/
55 /**
56 * @file
57 * For LWP filter architecture prototype - table layouts
59 /*************************************************************************
60 * Change History
61 Mar 2005 Created
62 ************************************************************************/
63 #ifndef _LWPTABLELAYOUT_HXX
64 #define _LWPTABLELAYOUT_HXX
65 #include <vector>
66 #include <map>
67 #include "lwplayout.hxx"
69 class XFTableStyle;
70 class XFTable;
71 class XFCell;
72 class LwpTable;
73 class LwpFrame;
74 class LwpSuperTableLayout;
75 class LwpRowLayout;
76 class LwpCellLayout;
77 class LwpTableHeadingLayout;
78 class LwpRowHeadingLayout;
79 class LwpConnectedCellLayout;
80 class LwpColumnLayout;
82 /**
83 * @brief
84 * VO_TABLELAYOUT object and functions for registering styles and coverting tables
86 class LwpTableLayout: public LwpLayout
88 public:
89 LwpTableLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm);
90 virtual ~LwpTableLayout();
91 virtual LWP_LAYOUT_TYPE GetLayoutType () { return LWP_TABLE_LAYOUT;}
92 LwpObjectID * GetColumnLayoutHead(){return &m_ColumnLayout;};
93 void RegisterStyle();
94 LwpTable * GetTable();
95 LwpCellLayout * GetDefaultCellLayout(){return m_pDefaultCellLayout;};
96 LwpSuperTableLayout * GetSuperTableLayout();
97 LwpObjectID * SearchCellStoryMap(sal_uInt16 nRow, sal_uInt16 nCol);
98 LwpCellLayout * GetCellByRowCol(sal_uInt16 nRow, sal_uInt16 nCol);
99 OUString GetColumnWidth(sal_uInt16 nCol);
100 void SetWordProCellMap(sal_uInt16 nRow, sal_uInt16 nCol, LwpCellLayout * pCell)
102 if (nRow >= m_nRows || nCol >= m_nCols)
103 return;
104 m_WordProCellsMap[nRow * m_nCols + nCol] = pCell;
106 protected:
107 void Read();
108 void TraverseTable();
109 void RegisterColumns();
110 void RegisterRows();
111 void Parse();
112 void PostProcessParagraph(XFCell *pCell, sal_uInt16 nRowID, sal_uInt16 nColID);
114 sal_uInt16 m_nRows;
115 sal_uInt16 m_nCols;
117 private:
118 //CColumnLayoutHead cColumnLayout;
119 LwpObjectID m_ColumnLayout;
120 OUString m_FrameStyleName;
121 LwpCellLayout * m_pDefaultCellLayout;
122 OUString m_DefaultColumnStyleName;
123 OUString m_DefaultRowStyleName;
125 // wordpro cell map
126 std::vector<LwpCellLayout *> m_WordProCellsMap;
127 // column vector
128 LwpColumnLayout ** m_pColumns;
130 //add by ,2005/4/1
131 public:
132 void XFConvert(XFContentContainer* pCont);
133 void ConvertTable(XFTable* pXFTable,sal_uInt16 nStartRow,
134 sal_uInt16 nEndRow,sal_uInt8 nStartCol,sal_uInt8 nEndCol);
135 OUString GetDefaultRowStyleName(){return m_DefaultRowStyleName;}
136 void SetCellsMap(sal_uInt16 nRow,sal_uInt8 nCol,XFCell* pXFCell);
137 XFCell* GetCellsMap(sal_uInt16 nRow,sal_uInt8 nCol);
138 std::map<sal_uInt16,LwpRowLayout*> GetRowsMap(){return m_RowsMap;}
139 LwpRowLayout* GetRowLayout(sal_uInt16 nRow);
140 private:
141 void ConvertDefaultRow(XFTable* pXFTable,sal_uInt8 nStartCol,
142 sal_uInt8 nEndCol,sal_uInt16 nRowID);
143 void ConvertColumn(XFTable *pXFTable,sal_uInt8 nStartCol,sal_uInt8 nEndCol);
144 sal_uInt16 ConvertHeadingRow(XFTable* pXFTable,sal_uInt16 nStartHeadRow,sal_uInt16 nEndHeadRow);
145 sal_Bool FindSplitColMark(XFTable* pXFTable,sal_uInt8* pCellMark,sal_uInt8& nMaxColSpan);
146 void SplitRowToCells(XFTable* pTmpTable,XFTable* pXFTable,
147 sal_uInt8 nFirstColSpann,sal_uInt8* pCellMark);
149 std::map<sal_uInt16,LwpRowLayout*> m_RowsMap;
150 void SplitConflictCells();
151 XFTable* m_pXFTable;
152 std::map<std::pair<sal_uInt16,sal_uInt8>,XFCell*> m_CellsMap;
154 void PutCellVals(LwpFoundry* pFoundry, LwpObjectID aTableID);
157 * @brief
158 * VO_SUPERTABLELAYOUT object
160 class LwpSuperTableLayout: public LwpPlacableLayout
162 public:
163 LwpSuperTableLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm);
164 virtual ~LwpSuperTableLayout();
165 virtual LWP_LAYOUT_TYPE GetLayoutType () { return LWP_SUPERTABLE_LAYOUT;}
166 void RegisterStyle();
167 // for table style
168 // add by , 06/03/2005
169 void ApplyPatternFill(XFTableStyle* pTableStyle);
170 void ApplyBackGround(XFTableStyle* pTableStyle);
171 // end add
173 void ApplyBackColor(XFTableStyle *pTableStyle);
174 void ApplyShadow(XFTableStyle *pTableStyle);
175 double GetWidth();
176 double GetTableWidth();
177 void ApplyWatermark(XFTableStyle *pTableStyle);
178 void ApplyAlignment(XFTableStyle * pTableStyle);
179 void XFConvert(XFContentContainer* pCont);
180 // for frame style
181 virtual void XFConvertFrame(XFContentContainer* pCont, sal_Int32 nStart = 0, sal_Int32 nEnd = 0, sal_Bool bAll = sal_False);
182 void ParseFrame(XFFrame* pXFFrame);
183 void RegisterFrameStyle();
184 LwpTableHeadingLayout* GetTableHeadingLayout();
185 protected:
186 void Read();
187 LwpTableLayout* GetTableLayout();
188 sal_Bool IsSizeRightToContent();
189 sal_Bool IsJustifiable();
190 LwpFrame* m_pFrame;
192 private:
195 * @brief
196 * VO_COLUMNLAYOUT object
198 class LwpColumnLayout : public LwpVirtualLayout
200 public:
201 LwpColumnLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm);
202 virtual ~LwpColumnLayout();
203 virtual LWP_LAYOUT_TYPE GetLayoutType () { return LWP_COLUMN_LAYOUT;}
204 sal_uInt32 GetColumnID(){return ccolid;};
205 double GetWidth(){return LwpTools::ConvertFromUnitsToMetric(cwidth);};
206 void RegisterStyle(double dCalculatedWidth);
207 sal_Bool IsJustifiable(){return (( m_nAttributes2 & STYLE2_JUSTIFIABLE) != 0);};
208 protected:
209 void Read();
210 sal_uInt8 ccolid;
211 sal_Int32 cwidth;
215 * @brief
216 * VO_TABLEHEADINGLAYOUT object
218 class LwpTableHeadingLayout : public LwpTableLayout
220 public:
221 LwpTableHeadingLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm);
222 virtual ~LwpTableHeadingLayout();
223 virtual LWP_LAYOUT_TYPE GetLayoutType () { return LWP_TABLE_HEADING_LAYOUT;}
224 void GetStartEndRow(sal_uInt16& nStartRow, sal_uInt16& nEndRow);
225 LwpRowHeadingLayout * GetFirstRowHeadingLayout();
226 protected:
227 void Read();
228 sal_uInt16 cStartRow;
229 sal_uInt16 cEndRow;
232 * @brief
233 * VO_SUPERPARALLELCOLUMNLAYOUT object
235 class LwpSuperParallelColumnLayout : public LwpSuperTableLayout
237 public:
238 LwpSuperParallelColumnLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm);
239 virtual ~LwpSuperParallelColumnLayout();
240 protected:
241 void Read();
245 * @brief
246 * VO_PCOLLAYOUT object
248 class LwpParallelColumnsLayout : public LwpTableLayout
250 public:
251 LwpParallelColumnsLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm);
252 virtual ~LwpParallelColumnsLayout();
253 protected:
254 void Read();
257 class LwpSuperGlossaryLayout : public LwpSuperTableLayout
259 public:
260 LwpSuperGlossaryLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm);
261 virtual ~LwpSuperGlossaryLayout();
262 protected:
263 void Read();
266 #include "lwpcelllayout.hxx"
267 #include "lwprowlayout.hxx"
269 #endif