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,
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 ************************************************************************/
57 * For LWP filter architecture prototype - table object
59 /*************************************************************************
62 ************************************************************************/
64 #include "lwptable.hxx"
66 LwpSuperTable::LwpSuperTable(LwpObjectHeader
&objHdr
, LwpSvStream
* pStrm
):LwpContent(objHdr
, pStrm
)
69 LwpSuperTable::~LwpSuperTable()
72 void LwpSuperTable::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
)
86 /*****************************************************************************/
87 LwpTable::LwpTable(LwpObjectHeader
&objHdr
, LwpSvStream
* pStrm
):LwpContent(objHdr
, pStrm
)
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
)
128 void LwpTable::Parse(IXFStream
* pOutputStream
)
132 LwpSuperTableLayout
* LwpTable::GetSuperTableLayout()
134 LwpTableLayout
* pLayout
= static_cast<LwpTableLayout
*>(m_Layout
.obj());
136 return static_cast<LwpSuperTableLayout
*>(pLayout
->GetParent()->obj());
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
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);
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()
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.
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
));
252 sal_uInt16 EntriesRead
, EntryCount
;
255 cpIndex
= new sal_uInt16
[NumIndexRows
];
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
));
271 m_pObjStrm
->SeekRel(FiledEntries
* sizeof(sal_uInt16
));
274 m_pObjStrm
->SkipExtra();