xref: /AOO41X/main/filter/source/graphicfilter/idxf/dxfreprd.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 _DXFREPRD_HXX
25 #define _DXFREPRD_HXX
26 
27 #include <dxfblkrd.hxx>
28 #include <dxftblrd.hxx>
29 
30 
31 //----------------------------------------------------------------------------
32 //--------------------Nebensachen---------------------------------------------
33 //----------------------------------------------------------------------------
34 
35 //-------------------Eine 3D-Min/Max-Box--------------------------------------
36 
37 class DXFBoundingBox {
38 public:
39     sal_Bool bEmpty;
40     double fMinX;
41     double fMinY;
42     double fMinZ;
43     double fMaxX;
44     double fMaxY;
45     double fMaxZ;
46 
DXFBoundingBox()47     DXFBoundingBox() { bEmpty=sal_True; }
48     void Union(const DXFVector & rVector);
49 };
50 
51 
52 //-------------------Die (konstante) Palette fuer DXF-------------------------
53 
54 class DXFPalette {
55 
56 public:
57 
58     DXFPalette();
59     ~DXFPalette();
60 
61     sal_uInt8 GetRed(sal_uInt8 nIndex) const;
62     sal_uInt8 GetGreen(sal_uInt8 nIndex) const;
63     sal_uInt8 GetBlue(sal_uInt8 nIndex) const;
64 
65 private:
66     sal_uInt8 * pRed;
67     sal_uInt8 * pGreen;
68     sal_uInt8 * pBlue;
69     void SetColor(sal_uInt8 nIndex, sal_uInt8 nRed, sal_uInt8 nGreen, sal_uInt8 nBlue);
70 };
71 
72 
73 //----------------------------------------------------------------------------
74 //-----------------DXF Datei lesen und repraesentieren------------------------
75 //----------------------------------------------------------------------------
76 
77 class DXFRepresentation {
78 
79 public:
80 
81     DXFPalette aPalette;
82         // Die immer gleiche DXF-Farb-Palette
83 
84     DXFBoundingBox aBoundingBox;
85         // Ist gleich den AutoCAD-Variablen EXTMIN, EXTMAX sofern in DXF-Datei
86         // vorhanden, anderenfalls wird die BoundingBox berechnet (in Read()).
87 
88     DXFTables aTables;
89         // Die Tabellen der DXF-Datei
90 
91     DXFBlocks aBlocks;
92         // Die Bloecke der DXF-Datei
93 
94     DXFEntities aEntities;
95         // Die Entities (aus der Entities-Section) der DXF-Datei
96 
97     rtl_TextEncoding mEnc;  // $DWGCODEPAGE
98 
99     double mfGlobalLineTypeScale; // $LTSCALE
100 
101     DXFRepresentation();
102     ~DXFRepresentation();
103 
104         rtl_TextEncoding getTextEncoding() const;
105         void setTextEncoding(rtl_TextEncoding aEnc);
106 
107         double getGlobalLineTypeScale() const;
108         void setGlobalLineTypeScale(double fGlobalLineTypeScale);
109 
110     sal_Bool Read( SvStream & rIStream, sal_uInt16 nMinPercent, sal_uInt16 nMaxPercent);
111         // Liesst die komplette DXF-Datei ein.
112 
113 private:
114 
115     void ReadHeader(DXFGroupReader & rDGR);
116     void CalcBoundingBox(const DXFEntities & rEntities,
117                          DXFBoundingBox & rBox);
118 };
119 
120 //----------------------------------------------------------------------------
121 //-------------------inlines--------------------------------------------------
122 //----------------------------------------------------------------------------
123 
GetRed(sal_uInt8 nIndex) const124 inline sal_uInt8 DXFPalette::GetRed(sal_uInt8 nIndex) const { return pRed[nIndex]; }
GetGreen(sal_uInt8 nIndex) const125 inline sal_uInt8 DXFPalette::GetGreen(sal_uInt8 nIndex) const { return pGreen[nIndex]; }
GetBlue(sal_uInt8 nIndex) const126 inline sal_uInt8 DXFPalette::GetBlue(sal_uInt8 nIndex) const { return pBlue[nIndex]; }
getTextEncoding() const127 inline rtl_TextEncoding DXFRepresentation::getTextEncoding() const { return mEnc; }
setTextEncoding(rtl_TextEncoding aEnc)128 inline void DXFRepresentation::setTextEncoding(rtl_TextEncoding aEnc) { mEnc = aEnc; }
getGlobalLineTypeScale() const129 inline double DXFRepresentation::getGlobalLineTypeScale() const { return mfGlobalLineTypeScale; }
setGlobalLineTypeScale(double fGlobalLineTypeScale)130 inline void DXFRepresentation::setGlobalLineTypeScale(double fGlobalLineTypeScale) { mfGlobalLineTypeScale = fGlobalLineTypeScale; }
131 
132 #endif
133 
134 
135