update dev300-m57
[ooovba.git] / lotuswordpro / source / filter / lwptable.cxx
blob442eeb138d23e505020ec490391bc2d8a8cc38f9
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 object
59 /*************************************************************************
60 * Change History
61 Mar 2005 Created
62 ************************************************************************/
64 #include "lwptable.hxx"
66 LwpSuperTable::LwpSuperTable(LwpObjectHeader &objHdr, LwpSvStream* pStrm):LwpContent(objHdr, pStrm)
69 LwpSuperTable::~LwpSuperTable()
72 void LwpSuperTable::Read()
74 LwpContent::Read();
75 m_pObjStrm->SkipExtra();
78 void LwpSuperTable::Parse(IXFStream* pOutputStream)
82 //Added by for XFConvert refactor, 03/31/2005
83 void LwpSuperTable::XFConvert(XFContentContainer* pCont)
85 //End of Add
86 /*****************************************************************************/
87 LwpTable::LwpTable(LwpObjectHeader &objHdr, LwpSvStream* pStrm):LwpContent(objHdr, pStrm)
90 LwpTable::~LwpTable()
93 void LwpTable::Read()
95 LwpContent::Read();
96 //m_RowCache.Read(m_pObjStrm);
97 //m_ColumnCache.Read(m_pObjStrm);
99 //m_CPNotifyList.Read(m_pObjStrm);
100 //m_CPTempVersionedNotifyList.Read(m_pObjStrm);
102 m_nRow = m_pObjStrm->QuickReaduInt16();
103 m_nColumn = m_pObjStrm->QuickReaduInt16();
105 m_nHeight = m_pObjStrm->QuickReadInt32();
106 m_nWidth = m_pObjStrm->QuickReadInt32();
108 m_nDefaultAutoGrowRowHeight = m_pObjStrm->QuickReadInt32();
110 m_nAttributes = m_pObjStrm->QuickReaduInt16();
112 m_Layout.ReadIndexed(m_pObjStrm);
114 m_DefaultCellStyle.ReadIndexed(m_pObjStrm);
115 if (LwpFileHeader::m_nFileRevision >= 0x0007)
116 m_CPNotifyList.Read(m_pObjStrm);
118 m_pObjStrm->SkipExtra();
121 sal_Bool LwpTable::IsNumberDown()
123 if (m_nAttributes & NUMBER_DOWN)
124 return sal_True;
125 return sal_False;
128 void LwpTable::Parse(IXFStream* pOutputStream)
132 LwpSuperTableLayout* LwpTable::GetSuperTableLayout()
134 LwpTableLayout* pLayout = static_cast<LwpTableLayout*>(m_Layout.obj());
135 if(pLayout)
136 return static_cast<LwpSuperTableLayout*>(pLayout->GetParent()->obj());
138 return NULL;
141 /*****************************************************************************/
142 LwpTableHeading::LwpTableHeading(LwpObjectHeader &objHdr, LwpSvStream* pStrm):LwpTable(objHdr, pStrm)
145 LwpTableHeading::~LwpTableHeading()
148 void LwpTableHeading::Read()
150 m_pObjStrm->SkipExtra();
152 void LwpTableHeading::Parse(IXFStream* pOutputStream)
156 /*****************************************************************************/
157 LwpTableHint::LwpTableHint(LwpObjectHeader &objHdr, LwpSvStream* pStrm):LwpObject(objHdr, pStrm)
160 LwpTableHint::~LwpTableHint()
163 void LwpTableHint::Read()
165 cListNext.ReadIndexed(m_pObjStrm);
166 if (LwpFileHeader::m_nFileRevision < 0x0006)
167 m_pObjStrm->SkipExtra();
169 // not implemented yet
170 //lbool Problem;
171 // ?Problem = cStart.QuickReadNonEmbedded(m_pObjStrm);
173 cLayout.ReadIndexed(m_pObjStrm);
174 cContent.ReadIndexed(m_pObjStrm);
175 cFlags = m_pObjStrm->QuickReaduInt8();
176 cParent.ReadIndexed(m_pObjStrm);
177 //cNumberHint.QuickRead (m_pObjStrm);
178 cLineNumber = m_pObjStrm->QuickReaduInt32();
179 cPageHint.ReadIndexed (m_pObjStrm);
181 m_pObjStrm->SkipExtra ();
183 //CContentHint(pFile, pLoader);
185 cRow = m_pObjStrm->QuickReaduInt16();
186 cCellHint.Read (m_pObjStrm);
187 cRowContinued = (sal_Bool)m_pObjStrm->QuickReaduInt16();
189 cTable.ReadIndexed(m_pObjStrm);
190 //if (!cTable.PointerTest())
191 // cTable = NullObjPtr;
193 //cCellNumberHint.QuickRead (m_pObjStrm);
194 LwpObjectID cList;
195 cList.ReadIndexed(m_pObjStrm);
197 m_pObjStrm->SkipExtra();
199 void LwpTableHint::Parse(IXFStream* pOutputStream)
203 /*****************************************************************************/
204 LwpParallelColumns::LwpParallelColumns(LwpObjectHeader &objHdr, LwpSvStream* pStrm):LwpTable(objHdr, pStrm)
208 LwpParallelColumns::~LwpParallelColumns()
212 void LwpParallelColumns::Read()
214 LwpTable::Read();
215 cDefaultLeftColumnStyle.ReadIndexed(m_pObjStrm);
216 cDefaultRightColumnStyle.ReadIndexed(m_pObjStrm);
218 m_pObjStrm->SkipExtra();
220 /*****************************************************************************/
221 LwpGlossary::LwpGlossary(LwpObjectHeader &objHdr, LwpSvStream* pStrm):LwpParallelColumns(objHdr, pStrm)
225 LwpGlossary::~LwpGlossary()
228 sal_uInt16 LwpGlossary::GetNumIndexRows(void)
230 if (GetRow() > 0 && GetRow() <= MAX_NUM_ROWS)
231 return GetRow() - 1; // Minus one row for repeated heading.
232 return 0;
235 void LwpGlossary::Read()
237 LwpParallelColumns::Read();
239 sal_uInt16 FiledEntries = m_pObjStrm->QuickReaduInt16();
240 sal_uInt16 NumIndexRows = GetNumIndexRows();
242 sal_uInt16 * cpIndex = NULL;
243 if (FiledEntries < NumIndexRows)
245 /* We'll have to do sequential (slow) searches. */
246 m_pObjStrm->SeekRel( FiledEntries * sizeof(sal_uInt16));
248 else
250 if (NumIndexRows)
252 sal_uInt16 EntriesRead, EntryCount;
253 sal_uInt16 *pRowID;
255 cpIndex = new sal_uInt16[NumIndexRows];
257 if (cpIndex)
259 pRowID = cpIndex;
261 EntriesRead = (FiledEntries > NumIndexRows)? NumIndexRows:FiledEntries;
263 for (EntryCount = 1; EntryCount <= EntriesRead; EntryCount++)
264 *pRowID++ = m_pObjStrm->QuickReaduInt16();
266 if (FiledEntries > EntriesRead)
267 m_pObjStrm->SeekRel((FiledEntries - EntriesRead)* sizeof(sal_uInt16));
270 else
271 m_pObjStrm->SeekRel(FiledEntries * sizeof(sal_uInt16));
274 m_pObjStrm->SkipExtra();