xref: /AOO41X/main/filter/source/graphicfilter/icgm/cgm.hxx (revision 22e87013b212da8c80c93e291ad90de8f36964c2)
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 CGM_HXX_
25 #define CGM_HXX_
26 
27 #include <com/sun/star/frame/XModel.hpp>
28 
29 // ---------------------------------------------------------------
30 #undef CGM_USER_BREAKPOINT
31 
32 #define CGM_IMPORT_CGM      0x00000001
33 
34 #define CGM_EXPORT_IMPRESS  0x00000100
35 #define CGM_EXPORT_META     0x00000200
36 //#define CGM_EXPORT_COMMENT    0x00000400
37 
38 // ---------------------------------------------------------------
39 
40 #include <tools/solar.h>
41 #include <rtl/ustring.hxx>
42 #include <tools/list.hxx>
43 #include "cgmtypes.hxx"
44 
45 // ---------------------------------------------------------------
46 
47 class   List;
48 class   Bundle;
49 class   Graphic;
50 class   SvStream;
51 class   CGMChart;
52 class   CGMBitmap;
53 class   CGMOutAct;
54 class   CGMElements;
55 class   BitmapColor;
56 class   GDIMetaFile;
57 class   VirtualDevice;
58 class   CGMBitmapDescriptor;
59 
60 class CGM
61 {
62         friend class CGMChart;
63         friend class CGMBitmap;
64         friend class CGMElements;
65         friend class CGMOutAct;
66         friend class CGMImpressOutAct;
67 
68         double              mnOutdx;                // Ausgabe Groesse in 1/100TH mm
69         double              mnOutdy;                // auf das gemappt wird
70         double              mnVDCXadd;
71         double              mnVDCYadd;
72         double              mnVDCXmul;
73         double              mnVDCYmul;
74         double              mnVDCdx;
75         double              mnVDCdy;
76         double              mnXFraction;
77         double              mnYFraction;
78         sal_Bool                mbAngReverse;           // AngularDirection
79 
80         Graphic*            mpGraphic;              // ifdef CGM_EXPORT_META
81         SvStream*           mpCommentOut;           // ifdef CGM_EXPORT_COMMENT
82 
83         sal_Bool                mbStatus;
84         sal_Bool                mbMetaFile;
85         sal_Bool                mbIsFinished;
86         sal_Bool                mbPicture;
87         sal_Bool                mbPictureBody;
88         sal_Bool                mbFigure;
89         sal_Bool                mbFirstOutPut;
90         sal_uInt32              mnAct4PostReset;
91         CGMBitmap*          mpBitmapInUse;
92         CGMChart*           mpChart;                // if sal_True->"SHWSLIDEREC"
93                                                     //  otherwise "BEGINPIC" commands
94                                                     // controlls page inserting
95         CGMElements*        pElement;
96         CGMElements*        pCopyOfE;
97         CGMOutAct*          mpOutAct;
98         List                maDefRepList;
99         List                maDefRepSizeList;
100 
101         sal_uInt8*              mpSource;       // source buffer that is not increased
102                                             // ( instead use mnParaCount to index )
103         sal_uInt32              mnParaSize;     // actual parameter size which has been done so far
104         sal_uInt32              mnActCount;     // increased by each action
105         sal_uInt8*              mpBuf;          // source stream operation -> then this is allocated for
106                                             //                            the temp input buffer
107 
108         sal_uInt32              mnMode;         // source description
109         sal_uInt32              mnEscape;       //
110         sal_uInt32              mnElementClass; //
111         sal_uInt32              mnElementID;    //
112         sal_uInt32              mnElementSize;  // full parameter size for the latest action
113 
114         void                ImplCGMInit();
115         sal_uInt32          ImplGetUI16( sal_uInt32 nAlign = 0 );
116         sal_uInt8           ImplGetByte( sal_uInt32 nSource, sal_uInt32 nPrecision );
117         long                ImplGetI( sal_uInt32 nPrecision );
118         sal_uInt32          ImplGetUI( sal_uInt32 nPrecision );
119         void                ImplGetSwitch4( sal_uInt8* pSource, sal_uInt8* pDest );
120         void                ImplGetSwitch8( sal_uInt8* pSource, sal_uInt8* pDest );
121         double              ImplGetFloat( RealPrecision, sal_uInt32 nRealSize );
122         sal_uInt32          ImplGetBitmapColor( sal_Bool bDirectColor = sal_False );
123         void                ImplSetMapMode();
124         void                ImplMapDouble( double& );
125         void                ImplMapX( double& );
126         void                ImplMapY( double& );
127         void                ImplMapPoint( FloatPoint& );
128         inline double       ImplGetIY();
129         inline double       ImplGetFY();
130         inline double       ImplGetIX();
131         inline double       ImplGetFX();
132         sal_uInt32              ImplGetPointSize();
133         void                ImplGetPoint( FloatPoint& rFloatPoint, sal_Bool bMap = sal_False );
134         void                ImplGetRectangle( FloatRect&, sal_Bool bMap = sal_False );
135         void                ImplGetRectangleNS( FloatRect& );
136         void                ImplGetVector( double* );
137         double              ImplGetOrientation( FloatPoint& rCenter, FloatPoint& rPoint );
138         void                ImplSwitchStartEndAngle( double& rStartAngle, double& rEndAngle );
139         sal_Bool                ImplGetEllipse( FloatPoint& rCenter, FloatPoint& rRadius, double& rOrientation );
140 
141         void                ImplDefaultReplacement();
142         void                ImplDoClass();
143         void                ImplDoClass0();
144         void                ImplDoClass1();
145         void                ImplDoClass2();
146         void                ImplDoClass3();
147         void                ImplDoClass4();
148         void                ImplDoClass5();
149         void                ImplDoClass6();
150         void                ImplDoClass7();
151         void                ImplDoClass8();
152         void                ImplDoClass9();
153         void                ImplDoClass15();
154 
155     public:
156 
157                             ~CGM();
158 
159                             CGM( sal_uInt32 nMode, ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & rModel );
160 #ifdef CGM_EXPORT_META
161         VirtualDevice*      mpVirDev;
162         GDIMetaFile*        mpGDIMetaFile;
163 #endif
164         void                ImplComment( sal_uInt32, const char* );
165         sal_uInt32              GetBackGroundColor();
IsValid()166         sal_Bool                IsValid() { return mbStatus; };
IsFinished()167         sal_Bool                IsFinished() { return mbIsFinished; };
168         sal_Bool                Write( SvStream& rIStm );
169 
170         friend SvStream& operator>>( SvStream& rOStm, CGM& rCGM );
171 
172 };
173 #endif
174 
175