xref: /aoo4110/main/sc/source/filter/inc/lotimpop.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef SC_LOTIMPOP_HXX
25*b1cdbd2cSJim Jagielski #define SC_LOTIMPOP_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <tools/string.hxx>
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include "imp_op.hxx"
30*b1cdbd2cSJim Jagielski #include "flttypes.hxx"
31*b1cdbd2cSJim Jagielski #include "ftools.hxx"
32*b1cdbd2cSJim Jagielski #include "lotform.hxx"
33*b1cdbd2cSJim Jagielski #include "lotattr.hxx"
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski class ScFormulaCell;
36*b1cdbd2cSJim Jagielski class LotusFontBuffer;
37*b1cdbd2cSJim Jagielski class SvxBorderLine;
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski class ImportLotus : public ImportTyp
41*b1cdbd2cSJim Jagielski {
42*b1cdbd2cSJim Jagielski private:
43*b1cdbd2cSJim Jagielski 	SvStream*			pIn;			// benoetigt wegen multiplem Read()!
44*b1cdbd2cSJim Jagielski 	LotusToSc			aConv;
45*b1cdbd2cSJim Jagielski     sal_uInt16              nTab;           // z.Zt. bearbeitete Tabelle
46*b1cdbd2cSJim Jagielski 	sal_Int32				nExtTab;
47*b1cdbd2cSJim Jagielski 	// -------------------------------------------------------------------
48*b1cdbd2cSJim Jagielski 	// in WK?-Datei
49*b1cdbd2cSJim Jagielski 	void				Bof( void );						// 0x0000	00
50*b1cdbd2cSJim Jagielski 	sal_Bool				BofFm3( void );						// 0x0000	00
51*b1cdbd2cSJim Jagielski 	void				Columnwidth( sal_uInt16 nRecLen );		// 0x0007	07
52*b1cdbd2cSJim Jagielski 	void				Hiddencolumn( sal_uInt16 nRecLen );		// 0x0008	08
53*b1cdbd2cSJim Jagielski 	void				Userrange( void );					// 0x0009	09
54*b1cdbd2cSJim Jagielski 	void				Errcell( void );					// 0x0014	20
55*b1cdbd2cSJim Jagielski 	void				Nacell( void );						// 0x0015	21
56*b1cdbd2cSJim Jagielski 	void				Labelcell( void );					// 0x0016	22
57*b1cdbd2cSJim Jagielski 	void				Numbercell( void );					// 0x0017	23
58*b1cdbd2cSJim Jagielski 	void				Smallnumcell( void );				// 0x0018	24
59*b1cdbd2cSJim Jagielski 	ScFormulaCell*		Formulacell( sal_uInt16 nRecLen );		// 0x0019	25
60*b1cdbd2cSJim Jagielski 	void				Formulastring( ScFormulaCell& );	// 0x001a	26
61*b1cdbd2cSJim Jagielski 															// 0x001b	27 special
62*b1cdbd2cSJim Jagielski 	void				NamedSheet( void );					//			14000
63*b1cdbd2cSJim Jagielski 	void				RowPresentation( sal_uInt16 nRecLen );	//			 2007
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski 	// -------------------------------------------------------------------
66*b1cdbd2cSJim Jagielski 	// in FM?-Datei
67*b1cdbd2cSJim Jagielski 	void				Font_Face( void );					// 174
68*b1cdbd2cSJim Jagielski 	void				Font_Type( void );					// 176
69*b1cdbd2cSJim Jagielski 	void				Font_Ysize( void );					// 177
70*b1cdbd2cSJim Jagielski 	void				_Row( const sal_uInt16 nRecLen );		// 197 ?
71*b1cdbd2cSJim Jagielski 	// -------------------------------------------------------------------
72*b1cdbd2cSJim Jagielski 	inline void			Read( ScAddress& );
73*b1cdbd2cSJim Jagielski 	inline void			Read( ScRange& );
74*b1cdbd2cSJim Jagielski 		// fuer Addresses/Ranges im Format Row(16)/Tab(8)/Col(8)
75*b1cdbd2cSJim Jagielski 	inline void			Read( sal_Char& );
76*b1cdbd2cSJim Jagielski 	inline void			Read( sal_uInt8& );
77*b1cdbd2cSJim Jagielski 	inline void			Read( sal_uInt16& );
78*b1cdbd2cSJim Jagielski 	inline void			Read( sal_Int16& );
79*b1cdbd2cSJim Jagielski 	inline void			Read( sal_uInt32& );
80*b1cdbd2cSJim Jagielski 	inline void			Read( double& );					// 10-Byte-IEEE lesen
81*b1cdbd2cSJim Jagielski 	inline void			Read( LotAttrWK3& );
82*b1cdbd2cSJim Jagielski 	void				Read( String& );					// 0-terminierten String einlesen
83*b1cdbd2cSJim Jagielski 	inline void			Skip( const sal_uInt16 nNumBytes );
84*b1cdbd2cSJim Jagielski 	// -------------------------------------------------------------------
85*b1cdbd2cSJim Jagielski public:
86*b1cdbd2cSJim Jagielski 						ImportLotus( SvStream&, ScDocument*, CharSet eSrc );
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski 	virtual				~ImportLotus();
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski 	FltError			Read();
91*b1cdbd2cSJim Jagielski 	FltError			Read( SvStream& );					// special for *.fm3-Dateien
92*b1cdbd2cSJim Jagielski };
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski 
Read(ScAddress & rAddr)95*b1cdbd2cSJim Jagielski inline void ImportLotus::Read( ScAddress& rAddr )
96*b1cdbd2cSJim Jagielski {
97*b1cdbd2cSJim Jagielski 	sal_uInt16 nRow;
98*b1cdbd2cSJim Jagielski 	*pIn >> nRow;
99*b1cdbd2cSJim Jagielski 	rAddr.SetRow( static_cast<SCROW>(nRow) );
100*b1cdbd2cSJim Jagielski 	sal_uInt8 nByte;
101*b1cdbd2cSJim Jagielski 	*pIn >> nByte;
102*b1cdbd2cSJim Jagielski 	rAddr.SetTab( static_cast<SCTAB>(nByte) );
103*b1cdbd2cSJim Jagielski 	*pIn >> nByte;
104*b1cdbd2cSJim Jagielski 	rAddr.SetCol( static_cast<SCCOL>(nByte) );
105*b1cdbd2cSJim Jagielski }
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski 
Read(ScRange & rRange)108*b1cdbd2cSJim Jagielski inline void ImportLotus::Read( ScRange& rRange )
109*b1cdbd2cSJim Jagielski {
110*b1cdbd2cSJim Jagielski 	Read( rRange.aStart );
111*b1cdbd2cSJim Jagielski 	Read( rRange.aEnd );
112*b1cdbd2cSJim Jagielski }
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 
Read(sal_Char & r)115*b1cdbd2cSJim Jagielski inline void ImportLotus::Read( sal_Char& r )
116*b1cdbd2cSJim Jagielski {
117*b1cdbd2cSJim Jagielski 	*pIn >> r;
118*b1cdbd2cSJim Jagielski }
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski 
Read(sal_uInt8 & r)121*b1cdbd2cSJim Jagielski inline void ImportLotus::Read( sal_uInt8& r )
122*b1cdbd2cSJim Jagielski {
123*b1cdbd2cSJim Jagielski 	*pIn >> r;
124*b1cdbd2cSJim Jagielski }
125*b1cdbd2cSJim Jagielski 
126*b1cdbd2cSJim Jagielski 
Read(sal_uInt16 & r)127*b1cdbd2cSJim Jagielski inline void ImportLotus::Read( sal_uInt16& r )
128*b1cdbd2cSJim Jagielski {
129*b1cdbd2cSJim Jagielski 	*pIn >> r;
130*b1cdbd2cSJim Jagielski }
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski 
Read(sal_Int16 & r)133*b1cdbd2cSJim Jagielski inline void ImportLotus::Read( sal_Int16& r )
134*b1cdbd2cSJim Jagielski {
135*b1cdbd2cSJim Jagielski 	*pIn >> r;
136*b1cdbd2cSJim Jagielski }
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski 
Read(sal_uInt32 & r)139*b1cdbd2cSJim Jagielski inline void ImportLotus::Read( sal_uInt32& r )
140*b1cdbd2cSJim Jagielski {
141*b1cdbd2cSJim Jagielski 	*pIn >> r;
142*b1cdbd2cSJim Jagielski }
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski 
Read(double & r)145*b1cdbd2cSJim Jagielski inline void ImportLotus::Read( double& r )
146*b1cdbd2cSJim Jagielski {
147*b1cdbd2cSJim Jagielski     r = ScfTools::ReadLongDouble( *pIn );
148*b1cdbd2cSJim Jagielski }
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski 
Read(LotAttrWK3 & r)151*b1cdbd2cSJim Jagielski inline void ImportLotus::Read( LotAttrWK3& r )
152*b1cdbd2cSJim Jagielski {
153*b1cdbd2cSJim Jagielski 	*pIn >> r.nFont >> r.nFontCol >> r.nBack >> r.nLineStyle;
154*b1cdbd2cSJim Jagielski }
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski 
Skip(const sal_uInt16 n)157*b1cdbd2cSJim Jagielski inline void ImportLotus::Skip( const sal_uInt16 n )
158*b1cdbd2cSJim Jagielski {
159*b1cdbd2cSJim Jagielski 	pIn->SeekRel( n );
160*b1cdbd2cSJim Jagielski }
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski #endif
165