xref: /trunk/main/sc/source/filter/inc/scflt.hxx (revision a6014f97)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef SC_SCFLT_HXX
25 #define SC_SCFLT_HXX
26 
27 #include "viewopti.hxx"
28 #include "collect.hxx"
29 #include <tools/solar.h>
30 
31 // FehlerNummern
32 #define errUnknownFormat	1
33 #define errUnknownID		2
34 #define errOutOfMemory		3
35 
36 // Identifiers im FileFormat
37 #define ColWidthID			1
38 #define ColAttrID			2
39 #define RowHeightID			3
40 #define RowAttrID			4
41 #define FontID				5
42 #define NameID				6
43 #define TableID				7
44 #define ObjectID			8
45 #define PatternID			9
46 #define DataBaseID			10
47 
48 // Zeilen/Spalten Flags
49 #define crfSoftBreak		1
50 #define crfHardBreak		2
51 #define crfHidden			4
52 
53 // Zelltypen
54 #define ctValue				1
55 #define ctString			2
56 #define ctFormula			3
57 #define ctNote				4
58 
59 // FontStyles
60 #define ffDontCare			0x00
61 #define ffRoman				0x10
62 #define ffSwiss				0x20
63 #define ffModern			0x30
64 #define ffScript			0x40
65 #define ffDecorative		0x50
66 
67 // FontWeight
68 #define fwNormal			400
69 
70 // FontAttribute
71 #define atNone				0
72 #define atBold				1
73 #define atItalic			2
74 #define atUnderline			4
75 #define atStrikeOut			8
76 
77 // Horizontale Ausrichtung
78 #define hjNone				0
79 #define hjLeft				1
80 #define hjCenter			2
81 #define hjRight				3
82 
83 // Vertikale Ausrichtung
84 #define vjNone				0
85 #define vjTop				1
86 #define vjCenter			2
87 #define vjBottom			3
88 
89 // AusrichtungsFlags
90 #define ojWordBreak			0x01
91 #define ojBottomTop			0x02
92 #define ojTopBottom			0x04
93 
94 // ZellRaster
95 #define raNone				0
96 #define raGray12			1
97 #define raGray25			2
98 #define raGray50			3
99 #define raGray75			4
100 #define raGray100			5
101 
102 // Zellschutz
103 #define paProtect			1
104 #define paHideFormula		2
105 #define paHideAll			4
106 #define paHidePrint			8
107 
108 // ZahlenFormatFlags
109 #define vfStandard			0
110 #define vfMoney				1
111 #define vfThousend			2
112 #define vfPercent			3
113 #define vfExponent			4
114 #define vfZerro				5
115 #define vfDate				6
116 #define vfTime				7
117 #define vfBoolean			8
118 #define vfStandardRed		9
119 #define vfMoneyRed			10
120 #define vfThousendRed		11
121 #define vfPercentRed		12
122 #define vfExponentRed		13
123 #define vfFormula			14
124 #define vfString			15
125 #define vfNone				16
126 
127 // DatumsFormatFlags
128 #define df_NDMY_Long		0
129 #define df_DMY_Long			1
130 #define df_MY_Long			2
131 #define df_NDM_Long			3
132 #define df_DM_Long			4
133 #define df_M_Long			5
134 #define df_NDMY_Short		6
135 #define df_DMY_Short		7
136 #define df_MY_Short			8
137 #define df_NDM_Short		9
138 #define df_DM_Short			10
139 #define df_M_Short			11
140 #define df_Q_Long			12
141 #define df_Q_Short			13
142 
143 // ZeitFormatFlags
144 #define tf_HMS_Long			0
145 #define tf_HM_Long			1
146 #define tf_HMS_Short		2
147 #define tf_HM_Short			3
148 
149 // Attribute fuer FormatVorlage
150 #define pfValue				0x01
151 #define pfFont				0x02
152 #define pfJustify			0x04
153 #define pfFrame				0x08
154 #define pfRaster			0x10
155 #define pfProtection		0x20
156 
157 // Displayflags fuer die Tabelle
158 #define dfFormula			0x0001		// Formeln
159 #define dfZerro				0x0002		// Nullwerte
160 #define dfGrid				0x0004		// Gitternetz
161 #define dfPageBreak			0x0008		// Seitenumbruch
162 #define dfColRowBar         0x0010      // Zeilen/Spalten Koepfe (Dummy)
163 #define dfSyntax			0x0020		// Syntax Highlighting
164 #define dfPrintPage			0x0040		// Druckbildansicht (Dummy)
165 #define dfObjectAll			0x0080		// Objekte anzeigen
166 #define dfObjectFrame		0x0100		// Objekte als Platzhalter
167 #define dfObjectNone		0x0200		// Objekte nicht anzeigen
168 #define dfNoteMark			0x0400		// Notizanzeiger
169 #define dfProtectMark		0x0800		// Schutzanzeiger
170 
171 // Objekt Typen
172 #define otNone				0			// s.u.
173 #define otOle				1
174 #define otImage				2
175 #define otChart				3
176 
177 // Grafik Typen
178 #define gtNone				0			// Kann nicht vorkommen
179 #define gtOle				1			// Ole 1.0 Objekt
180 #define gtImage				2			// Image (Bitmap oder Metafile)
181 #define gtChart				3			// Chart
182 
183 // Datum/Uhrzeit
184 struct Sc10DateTime
185 {
186 	sal_uInt16		Year;
187 	sal_uInt16		Month;
188 	sal_uInt16		Day;
189 	sal_uInt16		Hour;
190 	sal_uInt16		Min;
191 	sal_uInt16		Sec;
192 };
193 
194 // ZahlenFormate
195 struct Sc10ValueFormat
196 {
197 	sal_uInt8		Format;			// Zahl, Waehrung, Prozent etc.
198 	sal_uInt8		Info;			// Anzahl Nachkommastellen, Anzahl Stellen, bzw. Datums/Zeitformat
199 };
200 
201 // Fontbeschreibung
202 struct Sc10LogFont
203 {
204 	sal_Int16		lfHeight;
205 	sal_Int16		lfWidth;
206 	sal_Int16		lfEscapement;
207 	sal_Int16		lfOrientation;
208 	sal_Int16		lfWeight;
209 	sal_uInt8		lfItalic;
210 	sal_uInt8		lfUnderline;
211 	sal_uInt8		lfStrikeOut;
212 	sal_uInt8		lfCharSet;
213 	sal_uInt8		lfOutPrecision;
214 	sal_uInt8		lfClipPrecision;
215 	sal_uInt8		lfQuality;
216 	sal_uInt8		lfPitchAndFamily;
217 	sal_Char	lfFaceName[32];
218 
219 	int operator==( const Sc10LogFont& rData ) const;
220 };
221 
222 // RGB-Frabwerte
223 struct Sc10Color
224 {
225 	sal_uInt8		Dummy;
226 	sal_uInt8		Blue;
227 	sal_uInt8		Green;
228 	sal_uInt8		Red;
229 	int operator==( const Sc10Color& rColor ) const;
230 };
231 
232 // Blockbeschreibung
233 struct Sc10BlockRect
234 {
235 	sal_Int16		x1;
236 	sal_Int16		y1;
237 	sal_Int16		x2;
238 	sal_Int16		y2;
239 };
240 
241 // Datenbank-Bereich
242 struct Sc10DataBaseRec
243 {
244 	sal_Char		Name[32];
245 	sal_Int16			Tab;
246 	Sc10BlockRect	Block;
247 	sal_uInt8			RowHeader;
248 	sal_Int16			SortField0;
249 	sal_uInt8			SortUpOrder0;
250 	sal_Int16			SortField1;
251 	sal_uInt8			SortUpOrder1;
252 	sal_Int16			SortField2;
253 	sal_uInt8			SortUpOrder2;
254 	sal_uInt8			IncludeFormat;
255 	sal_Int16			QueryField0;
256 	sal_Int16			QueryOp0;
257 	sal_uInt8			QueryByString0;
258 	sal_Char		QueryString0[64];
259 	double			QueryValue0;
260 	sal_Int16			QueryConnect1;
261 	sal_Int16			QueryField1;
262 	sal_Int16			QueryOp1;
263 	sal_uInt8			QueryByString1;
264 	sal_Char		QueryString1[64];
265 	double   		QueryValue1;
266 	sal_Int16			QueryConnect2;
267 	sal_Int16			QueryField2;
268 	sal_Int16			QueryOp2;
269 	sal_uInt8			QueryByString2;
270 	sal_Char		QueryString2[64];
271 	double   		QueryValue2;
272 };
273 
274 // Kopf/Fusszeilen-Beschreibung
275 struct Sc10HeadFootLine
276 {
277 	sal_Char		Title[128];
278 	Sc10LogFont		LogFont;
279 	sal_uInt8			HorJustify;
280 	sal_uInt8			VerJustify;
281 	sal_uInt16			Raster;
282 	sal_uInt16			Frame;
283 	Sc10Color		TextColor;
284 	Sc10Color		BackColor;
285 	Sc10Color		RasterColor;
286 	sal_uInt16			FrameColor; // Nibble Codierte Farben link oben rechts unten
287 	sal_uInt16			Reserved;
288 
289 	int operator==( const Sc10HeadFootLine& rData ) const;
290 };
291 
292 // Seitenformat
293 struct Sc10PageFormat
294 {
295 	Sc10HeadFootLine	HeadLine;
296 	Sc10HeadFootLine	FootLine;
297 	sal_Int16				Orientation;
298 	sal_Int16				Width;
299 	sal_Int16				Height;
300 	sal_Int16				NonPrintableX;
301 	sal_Int16				NonPrintableY;
302 	sal_Int16				Left;
303 	sal_Int16				Top;
304 	sal_Int16				Right;
305 	sal_Int16				Bottom;
306 	sal_Int16				Head;
307 	sal_Int16				Foot;
308 	sal_uInt8				HorCenter;
309 	sal_uInt8				VerCenter;
310 	sal_uInt8				PrintGrid;
311 	sal_uInt8				PrintColRow;
312 	sal_uInt8				PrintNote;
313 	sal_uInt8				TopBottomDir;
314 	sal_Char			PrintAreaName[32];
315 	Sc10BlockRect		PrintArea;
316 	sal_Char			PrnZoom[6]; // Pascal 6 Byte Realzahl
317 	sal_uInt16				FirstPageNo;
318 	sal_Int16				RowRepeatStart;
319 	sal_Int16				RowRepeatEnd;
320 	sal_Int16				ColRepeatStart;
321 	sal_Int16				ColRepeatEnd;
322 	sal_Char			Reserved[26];
323 
324 	int operator==( const Sc10PageFormat& rData ) const;
325 };
326 
327 // Tabellenschutz
328 struct Sc10TableProtect
329 {
330 	sal_Char	PassWord[16];
331 	sal_uInt16		Flags;
332 	sal_uInt8		Protect;
333 };
334 
335 // Documentschutz
336 struct Sc10SheetProtect
337 {
338 	sal_Char	PassWord[16];
339 	sal_uInt16		Flags;
340 	sal_uInt8		Protect;
341 };
342 
343 // Dateikopf StarCalc 1.0 Datei
344 struct Sc10FileHeader
345 {
346 	sal_Char	CopyRight[30];
347 	sal_uInt16		Version;
348 	sal_Char	Reserved[32];
349 };
350 
351 // Benutzer-Definierte Datei-Beschreibung
352 struct Sc10FileInfo
353 {
354 	sal_Char		Title[64];
355 	sal_Char		Thema[64];
356 	sal_Char		Keys[64];
357 	sal_Char		Note[256];
358 	sal_Char		InfoLabel0[16];
359 	sal_Char		InfoLabel1[16];
360 	sal_Char		InfoLabel2[16];
361 	sal_Char		InfoLabel3[16];
362 	sal_Char		Info0[32];
363 	sal_Char		Info1[32];
364 	sal_Char		Info2[32];
365 	sal_Char		Info3[32];
366 	sal_Char		CreateAuthor[64];
367 	sal_Char		ChangeAuthor[64];
368 	sal_Char		PrintAuthor[64];
369 	Sc10DateTime	CreateDate;
370 	Sc10DateTime	ChangeDate;
371 	Sc10DateTime	PrintDate;
372 	sal_uInt32		PageCount;
373 	sal_uInt32		ChartCount;
374 	sal_uInt32		PictureCount;
375 	sal_uInt32		GraphCount;
376 	sal_uInt32		OleCount;
377 	sal_uInt32		NoteCount;
378 	sal_uInt32		TextCellCount;
379 	sal_uInt32		ValueCellCount;
380 	sal_uInt32		FormulaCellCount;
381 	sal_uInt32		CellCount;
382 	sal_Char		Reserved[52];
383 };
384 
385 // Letze Cursorposition
386 struct Sc10EditStateInfo
387 {
388 	// Cursor Position
389 	sal_uInt16		CarretX;
390 	sal_uInt16		CarretY;
391 	sal_uInt16		CarretZ;
392 	// Linke obere Ecke der Tabelle im Fenster
393 	sal_uInt16		DeltaX;
394 	sal_uInt16		DeltaY;
395 	sal_uInt16		DeltaZ;
396 	// Ueberfluessig in StarCalc 3.0
397 	sal_uInt8		DataBaseMode;
398 	sal_Char	Reserved[51];
399 };
400 
401 // Attribut-Eintrag
402 struct Sc10ColData
403 {
404 	sal_uInt16		Row;
405 	sal_uInt16		Value;
406 };
407 
408 // ZellAttribut-Beschreibung
409 struct Sc10ColAttr
410 {
411 	sal_uInt16			Count;
412 	Sc10ColData*	pData;
413 
Sc10ColAttrSc10ColAttr414 	Sc10ColAttr() : pData(NULL) {}
~Sc10ColAttrSc10ColAttr415     ~Sc10ColAttr() { delete [] pData; }
416 };
417 
418 // GraphHeader
419 struct Sc10GraphHeader
420 {
421 	sal_uInt8		Typ;			// Typ der Grafik (Ole-Objekt, Image (Bitmap oder MetaFile), Chart-Object)
422 	sal_Int16		CarretX;		// ZellPosition der Grafik
423 	sal_Int16		CarretY;
424 	sal_Int16		CarretZ;
425 	sal_Int32		x;				// x,y Abstand zum Zellrand in Pixel (Pixel weil ich Grafiken in Fenstern ablege)
426 	sal_Int32		y;
427 	sal_Int32		w;				// w,h Breite und Hoehe in Pixel
428 	sal_Int32		h;
429 	sal_uInt8		IsRelPos;		// Ist die Position relativ zur Zelle oder absolute in der Tabelle
430 	sal_uInt8		DoPrint;		// Soll die Grafik ausgedruckt werden
431 	sal_uInt16		FrameType;		// Art der Umrandung um die Grafik (Keine, Einfach, Doppelt, Einfach Dick, Doppelt Dick)
432 	sal_uInt8		IsTransparent;	// Soll der Hintergrund gezeichnet werden
433 	Sc10Color	FrameColor;		// Umrandungsfarbe als RGB-Wert
434 	Sc10Color	BackColor;		// Hintergrundfarbe als RGB-Wert
435 	sal_Char	Reserved[32];	// Na was wohl
436 };
437 
438 // ImageHeader
439 struct Sc10ImageHeader
440 {
441     sal_Char    FileName[128];  // Dateiname des urspruenglich eingefuegten Bildes
442 	sal_Int16	Typ;				// Typ der Grafik (Bitmap oder Metafile)
443 	sal_uInt8	Linked;				// Kann nicht vorkommen
444 	sal_Int16	x1;					// Urspruengliche Groesse der Grafik (nur fuer Metafiles)
445 	sal_Int16	y1;
446 	sal_Int16	x2;
447 	sal_Int16	y2;
448 	sal_uInt32 Size;				// Groesse der Grafik in BYTES
449 };
450 
451 // ChartHeader
452 struct Sc10ChartHeader
453 {
454 	sal_Int16	MM;					// Meatfile Struktur MapMode, Breite, Hoehe
455 	sal_Int16	xExt;
456 	sal_Int16	yExt;
457 	sal_uInt32 Size;				// Groesse der Grafik in BYTES
458 };
459 
460 // ChartSheetData
461 struct Sc10ChartSheetData
462 {
463 	sal_uInt8		HasTitle;		// Hat das Chart Daten aus der Tabell fuer einen Titel
464 	sal_Int16		TitleX;			// Zellposition des Titels
465 	sal_Int16		TitleY;
466 	sal_uInt8		HasSubTitle;	// Hat das Chart Daten aus der Tabell fuer einen Untertitel
467 	sal_Int16		SubTitleX;		// Zellposition des Untertitels
468 	sal_Int16		SubTitleY;
469 	sal_uInt8		HasLeftTitle;	// Hat das Chart Daten aus der Tabelle fuer einen Linken-Titel
470 	sal_Int16		LeftTitleX;		// Zellposition des Linken-Titels
471 	sal_Int16		LeftTitleY;
472 	sal_uInt8		HasLegend;		// Hat das Chart Daten aus der Tabelle fuer eine Legende
473 	sal_Int16		LegendX1;		// Zellen der Legende
474 	sal_Int16		LegendY1;
475 	sal_Int16		LegendX2;
476 	sal_Int16		LegendY2;
477 	sal_uInt8		HasLabel;		// Hat das Chart Daten aus der Tabelle fuer die Achsbeschriftung
478 	sal_Int16		LabelX1;		// Zellen der Achsbeschriftung
479 	sal_Int16		LabelY1;
480 	sal_Int16		LabelX2;
481 	sal_Int16		LabelY2;
482 	sal_Int16		DataX1;			// Zellen der Daten
483 	sal_Int16		DataY1;
484 	sal_Int16		DataX2;
485 	sal_Int16		DataY2;
486 	sal_Char	Reserved[64];
487 };
488 
489 #define AGPie2D		1			// Pie Chart 2D
490 #define AGPie3D		2			// Pie Chart 3D
491 #define AGBar2D		3			// Bar Chart 2D
492 #define AGBar3D		4			// Bar Chart 3D
493 #define AGGantt		5			// Gantt Diagramm
494 #define AGLine		6			// Line Chart
495 #define AGLogLine	7			// Logarythmic-Coordinate Chart
496 #define AGArea		8			// Area Chart
497 #define AGHLC		11			// High-Low-Close Chart
498 #define AGPolar		10			// Polar-Coordinate Chart
499 
500 typedef sal_Char Sc10ChartText[30];
501 
502 struct Sc10ChartTypeData
503 {
504 	sal_Int16			NumSets;
505 	sal_Int16			NumPoints;
506 	sal_Int16			DrawMode;
507 	sal_Int16			GraphType;
508 	sal_Int16			GraphStyle;
509 	sal_Char		GraphTitle[80];
510 	sal_Char		BottomTitle[80];
511 	sal_Int16			SymbolData[256];
512 	sal_Int16			ColorData[256];
513 	sal_Int16			ThickLines[256];
514 	sal_Int16			PatternData[256];
515 	sal_Int16			LinePatternData[256];
516 	sal_Int16			NumGraphStyles[11];
517 	sal_Int16			ShowLegend;
518 	Sc10ChartText	LegendText[256];
519 	sal_Int16			ExplodePie;
520 	sal_Int16			FontUse;
521 	sal_Int16			FontFamily[5];
522 	sal_Int16			FontStyle[5];
523 	sal_Int16			FontSize[5];
524 	sal_Int16			GridStyle;
525 	sal_Int16			Labels;
526 	sal_Int16			LabelEvery;
527 	Sc10ChartText	LabelText[50];
528 	sal_Char		LeftTitle[80];
529 	sal_Char		Reserved[4646];
530 };
531 
532 
533 // FontAttribut
534 class Sc10FontData : public ScDataObject
535 {
536 public:
537 	sal_Int16				Height;
538 	sal_uInt8				CharSet;
539 	sal_uInt8				PitchAndFamily;
540 	sal_Char			FaceName[32];
541 
Sc10FontData(const Sc10FontData & rData)542 						Sc10FontData( const Sc10FontData& rData ) :
543                             ScDataObject( rData ),
544 							Height( rData.Height ),
545 							CharSet( rData.CharSet ),
546 							PitchAndFamily( rData.PitchAndFamily )
547                                 {
548                                     strncpy( FaceName, rData.FaceName, sizeof(FaceName) );
549                                     FaceName[sizeof(FaceName)-1] = 0;
550                                 }
551 						Sc10FontData( SvStream& rStream );
Clone() const552 	virtual ScDataObject*	Clone() const { return new Sc10FontData(*this); }
553 };
554 
555 
556 // Font-Collection
557 class Sc10FontCollection : public ScCollection
558 {
559 protected:
560 	sal_uLong nError;
561 public:
562 						Sc10FontCollection( SvStream& rStream );
GetError()563 	sal_uLong				GetError() { return nError; }
At(sal_uInt16 nIndex)564 	Sc10FontData*		At(sal_uInt16 nIndex) { return (Sc10FontData*)ScCollection::At(nIndex); }
565 private:
566     using               ScCollection::At;
567 };
568 
569 
570 //BereichsDaten
571 class Sc10NameData : public ScDataObject
572 {
573 public :
574 	sal_Char			Name[32];
575 	sal_Char			Reference[64];
576 	sal_Char			Reserved[12];
577 
Sc10NameData(const Sc10NameData & rData)578                         Sc10NameData(const Sc10NameData& rData) :
579                             ScDataObject( rData )
580 						{
581 							strncpy(Name, rData.Name, sizeof(Name));
582                             Name[sizeof(Name)-1] = 0;
583 							strncpy(Reference, rData.Reference, sizeof(Reference));
584                             Reference[sizeof(Reference)-1] = 0;
585 							memcpy(Reserved, rData.Reserved, sizeof(Reserved));
586 						}
587 						Sc10NameData(SvStream& rStream);
Clone() const588 	virtual ScDataObject*	Clone() const { return new Sc10NameData(*this); }
589 };
590 
591 
592 // Bereichs-Collection
593 class Sc10NameCollection : public ScCollection
594 {
595 protected:
596 	sal_uLong				nError;
597 public:
598 						Sc10NameCollection(SvStream& rStream);
GetError()599 sal_uLong					GetError() { return nError; }
At(sal_uInt16 nIndex)600 Sc10NameData*			At(sal_uInt16 nIndex) { return (Sc10NameData*)ScCollection::At(nIndex); }
601 private:
602     using               ScCollection::At;
603 };
604 
605 
606 // Vorlage-Daten
607 class Sc10PatternData : public ScDataObject
608 {
609 public:
610 	sal_Char			Name[32];
611 	Sc10ValueFormat		ValueFormat;
612 	Sc10LogFont			LogFont;
613 	sal_uInt16				Attr;
614 	sal_uInt16				Justify;
615 	sal_uInt16				Frame;
616 	sal_uInt16				Raster;
617 	sal_uInt16				nColor;
618 	sal_uInt16				FrameColor;
619 	sal_uInt16				Flags;
620 	sal_uInt16				FormatFlags;
621 	sal_Char			Reserved[8];
622 
Sc10PatternData(const Sc10PatternData & rData)623                         Sc10PatternData(const Sc10PatternData& rData) :
624                             ScDataObject( rData )
625 						{
626 							strncpy(Name, rData.Name, sizeof(Name));
627                             Name[sizeof(Name)-1] = 0;
628 							memcpy(&ValueFormat, &rData.ValueFormat, sizeof(ValueFormat));
629 							memcpy(&LogFont, &rData.LogFont, sizeof(LogFont));
630 							Attr = rData.Attr;
631 							Justify = rData.Justify;
632 							Frame = rData.Frame;
633 							Raster = rData.Raster;
634 							nColor = rData.nColor;
635 							FrameColor = rData.FrameColor;
636 							Flags = rData.Flags;
637 							FormatFlags = rData.FormatFlags;
638 							memcpy(Reserved, rData.Reserved, sizeof(Reserved));
639 						}
640 						Sc10PatternData(SvStream& rStream);
Clone() const641 virtual ScDataObject*		Clone() const { return new Sc10PatternData(*this); }
642 };
643 
644 
645 // Vorlage-Collection
646 class Sc10PatternCollection : public ScCollection
647 {
648 protected:
649 	sal_uLong				nError;
650 public:
651 						Sc10PatternCollection(SvStream& rStream);
GetError()652 	sal_uLong				GetError() { return nError; }
At(sal_uInt16 nIndex)653 	Sc10PatternData*	At(sal_uInt16 nIndex) { return (Sc10PatternData*)ScCollection::At(nIndex); }
654 private:
655     using               ScCollection::At;
656 };
657 
658 
659 // DatenBank-Daten
660 class Sc10DataBaseData : public ScDataObject
661 {
662 public:
663 	Sc10DataBaseRec		DataBaseRec;
664 
Sc10DataBaseData(const Sc10DataBaseData & rData)665                         Sc10DataBaseData(const Sc10DataBaseData& rData) :
666                             ScDataObject( rData )
667 						{
668 							memcpy(&DataBaseRec, &rData.DataBaseRec, sizeof(DataBaseRec));
669 						}
670 						Sc10DataBaseData(SvStream& rStream);
Clone() const671 virtual ScDataObject*		Clone() const { return new Sc10DataBaseData(*this); }
672 };
673 
674 
675 // DatenBank-Collection
676 class Sc10DataBaseCollection : public ScCollection
677 {
678 protected:
679 	sal_uLong				nError;
680 	sal_Char			ActName[32];
681 public:
682 						Sc10DataBaseCollection(SvStream& rStream);
GetError()683 	sal_uLong				GetError() { return nError; }
At(sal_uInt16 nIndex)684 	Sc10DataBaseData*	At(sal_uInt16 nIndex) { return (Sc10DataBaseData*)ScCollection::At(nIndex); }
685 private:
686     using               ScCollection::At;
687 };
688 
689 
690 class Sc10PageData : public ScDataObject
691 {
692 public:
693 	Sc10PageFormat		aPageFormat;
Sc10PageData(const Sc10PageFormat & rFormat)694 						Sc10PageData( const Sc10PageFormat& rFormat ) : aPageFormat(rFormat) {}
operator ==(const Sc10PageData & rData) const695 	int					operator==( const Sc10PageData& rData ) const
696 							{ return aPageFormat == rData.aPageFormat; }
697 	virtual ScDataObject*	Clone() const;
698 };
699 
700 // Seitenformat-Collection
701 class Sc10PageCollection : public ScCollection
702 {
703 public:
Sc10PageCollection()704 						Sc10PageCollection() : ScCollection(1,1) {};
At(sal_uInt16 nIndex)705 	Sc10PageData*		At(sal_uInt16 nIndex) { return (Sc10PageData*)ScCollection::At(nIndex); }
706     sal_uInt16              InsertFormat( const Sc10PageFormat& rData );
707 	void				PutToDoc( ScDocument* pDoc );
708 private:
709     using               ScCollection::At;
710 };
711 
712 
713 class ScfStreamProgressBar;
714 
715 // Import-Klasse
716 class Sc10Import
717 {
718 	SvStream&				rStream;
719 	ScDocument*				pDoc;
720 	Sc10Color				TextPalette[16];
721 	Sc10Color				BackPalette[16];
722 	Sc10Color				RasterPalette[16];
723 	Sc10Color				FramePalette[16];
724 	Sc10SheetProtect		SheetProtect;
725 	Sc10FontCollection*		pFontCollection;
726 	Sc10NameCollection*		pNameCollection;
727 	Sc10PatternCollection*	pPatternCollection;
728 	Sc10DataBaseCollection*	pDataBaseCollection;
729     sal_uLong                   nError;
730 	sal_Int16					TabCount;
731 	SCTAB					nShowTab;
732 	ScViewOptions			aSc30ViewOpt;
733     ScfStreamProgressBar*   pPrgrsBar;
734 
735 public:
736 							  Sc10Import( SvStream& rStr, ScDocument* pDocument );
737 							  ~Sc10Import();
738 
739 	sal_uLong					Import();
740 	void					LoadFileHeader();
741 	void					LoadFileInfo();
742 	void					LoadEditStateInfo();
743 	void					LoadProtect();
744 	void					LoadViewColRowBar();
745 	void					LoadScrZoom();
746 	void					LoadPalette();
747 	void					LoadFontCollection();
748 	void					LoadNameCollection();
749 	void					ImportNameCollection();
750 	void					LoadPatternCollection();
751 	void					LoadDataBaseCollection();
752 	void					LoadTables();
753 	void					LoadCol(SCCOL Col, SCTAB Tab);
754 	void					LoadColAttr(SCCOL Col, SCTAB Tab);
755 	void					LoadAttr(Sc10ColAttr& rAttr);
756 	void					ChangeFormat(sal_uInt16 nFormat, sal_uInt16 nInfo, sal_uLong& nKey);
757 	void					LoadObjects();
758 };
759 
760 #endif
761 
762