xref: /trunk/main/svtools/source/inc/sgfbram.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _SGFBRAM_HXX
29 #define _SGFBRAM_HXX
30 
31 #include <tools/solar.h>
32 
33 #define SgfBitImag0   1 /* Bitmap                      */
34 #define SgfBitImag1   4 /* Bitmap                      */
35 #define SgfBitImag2   5 /* Bitmap                      */
36 #define SgfBitImgMo   6 /* Monochrome Bitmap           */
37 #define SgfSimpVect   2 /* Einfaches Vectorformat      */
38 #define SgfPostScrp   3 /* Postscript file             */
39 #define SgfStarDraw   7 /* StarDraw SGV-Datei          */
40 #define SgfDontKnow 255 /* Unbekannt oder kein SGF/SGV */
41 
42 // Konstanten f�r SgfHeader.SwGrCol
43 #define SgfBlckWhit 1 /* Schwarz/Wei?Bild                  Ŀ SimpVector,  */
44 #define SgfGrayscal 2 /* Bild mit Graustufen                 ?StarDraw und */
45 #define Sgf16Colors 3 /* Farbbild (16 Farben)               �� Bit Image    */
46 #define SgfVectFarb 4 /* Farben f�r Linien verwenden        Ŀ              */
47 #define SgfVectGray 5 /* Graustufen f�r Linien verwenden     ?Nur f�r      */
48 #define SgfVectWdth 6 /* Strichst�rken f�r Linien verwenden �� SimpVector   */
49 
50 
51 #define SgfHeaderSize 42
52 class SgfHeader
53 {
54 public:
55     sal_uInt16 Magic;
56     sal_uInt16 Version;
57     sal_uInt16 Typ;
58     sal_uInt16 Xsize;
59     sal_uInt16 Ysize;
60     sal_Int16  Xoffs;
61     sal_Int16  Yoffs;
62     sal_uInt16 Planes;    // Layer
63     sal_uInt16 SwGrCol;
64     char   Autor[10];
65     char   Programm[10];
66     sal_uInt16 OfsLo,OfsHi; // DWord-Allignment ist notwendig (38 mod 4 =2) !
67 
68     sal_uInt32 GetOffset();
69     friend SvStream& operator>>(SvStream& rIStream, SgfHeader& rHead);
70     sal_Bool   ChkMagic();
71 };
72 
73 #define SgfEntrySize 22
74 class SgfEntry
75 {
76 public:
77     sal_uInt16 Typ;
78     sal_uInt16 iFrei;
79     sal_uInt16 lFreiLo,lFreiHi;
80     char   cFrei[10];
81     sal_uInt16 OfsLo,OfsHi; // DWord-Allignment ist notwendig (18 mod 4 =2) !
82 
83     sal_uInt32 GetOffset();
84     friend SvStream& operator>>(SvStream& rIStream, SgfEntry& rEntr);
85 };
86 
87 #define SgfVectorSize 10
88 class SgfVector
89 {
90 public:
91     sal_uInt16 Flag;
92     sal_Int16 x;
93     sal_Int16 y;
94     sal_uInt16 OfsLo,OfsHi; // DWord-Allignment ist notwendig (6 mod 4 =2) !
95 
96     friend SvStream& operator>>(SvStream& rIStream, SgfVector& rEntr);
97 };
98 
99 extern long SgfVectXofs;
100 extern long SgfVectYofs;
101 extern long SgfVectXmul;
102 extern long SgfVectYmul;
103 extern long SgfVectXdiv;
104 extern long SgfVectYdiv;
105 extern sal_Bool SgfVectScal;
106 
107 ////////////////////////////////////////////////////////////////////////////////////////////////////
108 // Windows BMP /////////////////////////////////////////////////////////////////////////////////////
109 ////////////////////////////////////////////////////////////////////////////////////////////////////
110 
111 #define BmpFileHeaderSize 14
112 class BmpFileHeader
113 {
114 public:
115     sal_uInt16 Typ;            // = "BM"
116     sal_uInt16 SizeLo,SizeHi;  // Filesize in Bytes
117     sal_uInt16 Reserve1;       // Reserviert
118     sal_uInt16 Reserve2;       // Reserviert
119     sal_uInt16 OfsLo,OfsHi;    // Offset?
120 
121     void   SetSize(sal_uInt32 Size);
122     void   SetOfs(sal_uInt32 Size);
123     sal_uInt32 GetOfs();
124     friend SvStream& operator<<(SvStream& rOStream, BmpFileHeader& rHead);
125 };
126 
127 #define BmpInfoHeaderSize 40
128 class BmpInfoHeader
129 {
130 public:
131     sal_uInt32 Size;       // Gr��e des BmpInfoHeaders
132     sal_Int32  Width;      // Breite in Pixel
133     sal_Int32  Hight;      // H�he in Pixel
134     sal_uInt16 Planes;     // Anzahl der Planes (immer 1)
135     sal_uInt16 PixBits;    // Anzahl der Bit je Pixel (1,4,8,oder 24)
136     sal_uInt32 Compress;   // Datenkompression
137     sal_uInt32 ImgSize;    // Gr��e der Images in Bytes. Ohne Kompression ist auch 0 erlaubt.
138     sal_Int32  xDpmm;      // Dot per Meter (0 ist erlaubt)
139     sal_Int32  yDpmm;      // Dot per Meter (0 ist erlaubt)
140     sal_uInt32 ColUsed;    // Anzahl der verwendeten Farben (0=alle)
141     sal_uInt32 ColMust;    // Anzahl der wichtigen Farben (0=alle)
142 
143     friend SvStream& operator<<(SvStream& rOStream, BmpInfoHeader& rHead);
144 };
145 
146 #define RGBQuadSize 4
147 class RGBQuad {
148 private:
149     sal_uInt8 Red;
150     sal_uInt8 Grn;
151     sal_uInt8 Blu;
152     sal_uInt8 Fil;
153 public:
154     RGBQuad(sal_uInt8 R, sal_uInt8 G, sal_uInt8 B) { Red=R; Grn=G; Blu=B; Fil=0; }
155 };
156 
157 #endif //_SGFBRAM_HXX
158