xref: /AOO41X/main/sc/source/filter/inc/scflt.hxx (revision a6014f97afb35a5faf9a63729bb0bd1f4a0674fb)
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