1*9e0fc027SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*9e0fc027SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*9e0fc027SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*9e0fc027SAndrew Rist  * distributed with this work for additional information
6*9e0fc027SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*9e0fc027SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*9e0fc027SAndrew Rist  * "License"); you may not use this file except in compliance
9*9e0fc027SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*9e0fc027SAndrew Rist  *
11*9e0fc027SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*9e0fc027SAndrew Rist  *
13*9e0fc027SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*9e0fc027SAndrew Rist  * software distributed under the License is distributed on an
15*9e0fc027SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*9e0fc027SAndrew Rist  * KIND, either express or implied.  See the License for the
17*9e0fc027SAndrew Rist  * specific language governing permissions and limitations
18*9e0fc027SAndrew Rist  * under the License.
19*9e0fc027SAndrew Rist  *
20*9e0fc027SAndrew Rist  *************************************************************/
21*9e0fc027SAndrew Rist 
22*9e0fc027SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_filter.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <string.h>
28cdf0e10cSrcweir #include <dxfentrd.hxx>
29cdf0e10cSrcweir 
30cdf0e10cSrcweir //--------------------------DXFBasicEntity--------------------------------------
31cdf0e10cSrcweir 
DXFBasicEntity(DXFEntityType eThisType)32cdf0e10cSrcweir DXFBasicEntity::DXFBasicEntity(DXFEntityType eThisType)
33cdf0e10cSrcweir {
34cdf0e10cSrcweir 	eType=eThisType;
35cdf0e10cSrcweir 	pSucc=NULL;
36cdf0e10cSrcweir 	strncpy(sLayer,"0", 2 );
37cdf0e10cSrcweir 	strncpy(sLineType,"BYLAYER", 8 );
38cdf0e10cSrcweir 	fElevation=0;
39cdf0e10cSrcweir 	fThickness=0;
40cdf0e10cSrcweir 	nColor=256;
41cdf0e10cSrcweir 	nSpace=0;
42cdf0e10cSrcweir 	aExtrusion.fx=0.0;
43cdf0e10cSrcweir 	aExtrusion.fy=0.0;
44cdf0e10cSrcweir 	aExtrusion.fz=1.0;
45cdf0e10cSrcweir }
46cdf0e10cSrcweir 
Read(DXFGroupReader & rDGR)47cdf0e10cSrcweir void DXFBasicEntity::Read(DXFGroupReader & rDGR)
48cdf0e10cSrcweir {
49cdf0e10cSrcweir 	while (rDGR.Read()!=0) EvaluateGroup(rDGR);
50cdf0e10cSrcweir }
51cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)52cdf0e10cSrcweir void DXFBasicEntity::EvaluateGroup(DXFGroupReader & rDGR)
53cdf0e10cSrcweir {
54cdf0e10cSrcweir 	switch (rDGR.GetG())
55cdf0e10cSrcweir 	{
56cdf0e10cSrcweir 		case   8: strncpy( sLayer, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
57cdf0e10cSrcweir 		case   6: strncpy( sLineType, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
58cdf0e10cSrcweir 		case  38: fElevation=rDGR.GetF(); break;
59cdf0e10cSrcweir 		case  39: fThickness=rDGR.GetF(); break;
60cdf0e10cSrcweir 		case  62: nColor=rDGR.GetI(); break;
61cdf0e10cSrcweir 		case  67: nSpace=rDGR.GetI(); break;
62cdf0e10cSrcweir 		case 210: aExtrusion.fx=rDGR.GetF(); break;
63cdf0e10cSrcweir 		case 220: aExtrusion.fy=rDGR.GetF(); break;
64cdf0e10cSrcweir 		case 230: aExtrusion.fz=rDGR.GetF(); break;
65cdf0e10cSrcweir 	}
66cdf0e10cSrcweir }
67cdf0e10cSrcweir 
~DXFBasicEntity()68cdf0e10cSrcweir DXFBasicEntity::~DXFBasicEntity()
69cdf0e10cSrcweir {
70cdf0e10cSrcweir }
71cdf0e10cSrcweir 
72cdf0e10cSrcweir //--------------------------DXFLineEntity---------------------------------------
73cdf0e10cSrcweir 
DXFLineEntity()74cdf0e10cSrcweir DXFLineEntity::DXFLineEntity() : DXFBasicEntity(DXF_LINE)
75cdf0e10cSrcweir {
76cdf0e10cSrcweir }
77cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)78cdf0e10cSrcweir void DXFLineEntity::EvaluateGroup(DXFGroupReader & rDGR)
79cdf0e10cSrcweir {
80cdf0e10cSrcweir 	switch (rDGR.GetG()) {
81cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
82cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
83cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
84cdf0e10cSrcweir 		case 11: aP1.fx=rDGR.GetF(); break;
85cdf0e10cSrcweir 		case 21: aP1.fy=rDGR.GetF(); break;
86cdf0e10cSrcweir 		case 31: aP1.fz=rDGR.GetF(); break;
87cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
88cdf0e10cSrcweir 	}
89cdf0e10cSrcweir }
90cdf0e10cSrcweir 
91cdf0e10cSrcweir //--------------------------DXFPointEntity--------------------------------------
92cdf0e10cSrcweir 
DXFPointEntity()93cdf0e10cSrcweir DXFPointEntity::DXFPointEntity() : DXFBasicEntity(DXF_POINT)
94cdf0e10cSrcweir {
95cdf0e10cSrcweir }
96cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)97cdf0e10cSrcweir void DXFPointEntity::EvaluateGroup(DXFGroupReader & rDGR)
98cdf0e10cSrcweir {
99cdf0e10cSrcweir 	switch (rDGR.GetG()) {
100cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
101cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
102cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
103cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
104cdf0e10cSrcweir 	}
105cdf0e10cSrcweir }
106cdf0e10cSrcweir 
107cdf0e10cSrcweir //--------------------------DXFCircleEntity-------------------------------------
108cdf0e10cSrcweir 
DXFCircleEntity()109cdf0e10cSrcweir DXFCircleEntity::DXFCircleEntity() : DXFBasicEntity(DXF_CIRCLE)
110cdf0e10cSrcweir {
111cdf0e10cSrcweir 	fRadius=1.0;
112cdf0e10cSrcweir }
113cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)114cdf0e10cSrcweir void DXFCircleEntity::EvaluateGroup(DXFGroupReader & rDGR)
115cdf0e10cSrcweir {
116cdf0e10cSrcweir 	switch (rDGR.GetG()) {
117cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
118cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
119cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
120cdf0e10cSrcweir 		case 40: fRadius=rDGR.GetF(); break;
121cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
122cdf0e10cSrcweir 	}
123cdf0e10cSrcweir }
124cdf0e10cSrcweir 
125cdf0e10cSrcweir //--------------------------DXFArcEntity----------------------------------------
126cdf0e10cSrcweir 
DXFArcEntity()127cdf0e10cSrcweir DXFArcEntity::DXFArcEntity() : DXFBasicEntity(DXF_ARC)
128cdf0e10cSrcweir {
129cdf0e10cSrcweir 	fRadius=1.0;
130cdf0e10cSrcweir 	fStart=0;
131cdf0e10cSrcweir 	fEnd=360.0;
132cdf0e10cSrcweir }
133cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)134cdf0e10cSrcweir void DXFArcEntity::EvaluateGroup(DXFGroupReader & rDGR)
135cdf0e10cSrcweir {
136cdf0e10cSrcweir 	switch (rDGR.GetG()) {
137cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
138cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
139cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
140cdf0e10cSrcweir 		case 40: fRadius=rDGR.GetF(); break;
141cdf0e10cSrcweir 		case 50: fStart=rDGR.GetF(); break;
142cdf0e10cSrcweir 		case 51: fEnd=rDGR.GetF(); break;
143cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
144cdf0e10cSrcweir 	}
145cdf0e10cSrcweir }
146cdf0e10cSrcweir 
147cdf0e10cSrcweir //--------------------------DXFTraceEntity--------------------------------------
148cdf0e10cSrcweir 
DXFTraceEntity()149cdf0e10cSrcweir DXFTraceEntity::DXFTraceEntity() : DXFBasicEntity(DXF_TRACE)
150cdf0e10cSrcweir {
151cdf0e10cSrcweir }
152cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)153cdf0e10cSrcweir void DXFTraceEntity::EvaluateGroup(DXFGroupReader & rDGR)
154cdf0e10cSrcweir {
155cdf0e10cSrcweir 	switch (rDGR.GetG()) {
156cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
157cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
158cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
159cdf0e10cSrcweir 		case 11: aP1.fx=rDGR.GetF(); break;
160cdf0e10cSrcweir 		case 21: aP1.fy=rDGR.GetF(); break;
161cdf0e10cSrcweir 		case 31: aP1.fz=rDGR.GetF(); break;
162cdf0e10cSrcweir 		case 12: aP2.fx=rDGR.GetF(); break;
163cdf0e10cSrcweir 		case 22: aP2.fy=rDGR.GetF(); break;
164cdf0e10cSrcweir 		case 32: aP2.fz=rDGR.GetF(); break;
165cdf0e10cSrcweir 		case 13: aP3.fx=rDGR.GetF(); break;
166cdf0e10cSrcweir 		case 23: aP3.fy=rDGR.GetF(); break;
167cdf0e10cSrcweir 		case 33: aP3.fz=rDGR.GetF(); break;
168cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
169cdf0e10cSrcweir 	}
170cdf0e10cSrcweir }
171cdf0e10cSrcweir 
172cdf0e10cSrcweir //--------------------------DXFSolidEntity--------------------------------------
173cdf0e10cSrcweir 
DXFSolidEntity()174cdf0e10cSrcweir DXFSolidEntity::DXFSolidEntity() : DXFBasicEntity(DXF_SOLID)
175cdf0e10cSrcweir {
176cdf0e10cSrcweir }
177cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)178cdf0e10cSrcweir void DXFSolidEntity::EvaluateGroup(DXFGroupReader & rDGR)
179cdf0e10cSrcweir {
180cdf0e10cSrcweir 	switch (rDGR.GetG()) {
181cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
182cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
183cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
184cdf0e10cSrcweir 		case 11: aP1.fx=rDGR.GetF(); break;
185cdf0e10cSrcweir 		case 21: aP1.fy=rDGR.GetF(); break;
186cdf0e10cSrcweir 		case 31: aP1.fz=rDGR.GetF(); break;
187cdf0e10cSrcweir 		case 12: aP2.fx=rDGR.GetF(); break;
188cdf0e10cSrcweir 		case 22: aP2.fy=rDGR.GetF(); break;
189cdf0e10cSrcweir 		case 32: aP2.fz=rDGR.GetF(); break;
190cdf0e10cSrcweir 		case 13: aP3.fx=rDGR.GetF(); break;
191cdf0e10cSrcweir 		case 23: aP3.fy=rDGR.GetF(); break;
192cdf0e10cSrcweir 		case 33: aP3.fz=rDGR.GetF(); break;
193cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
194cdf0e10cSrcweir 	}
195cdf0e10cSrcweir }
196cdf0e10cSrcweir 
197cdf0e10cSrcweir //--------------------------DXFTextEntity---------------------------------------
198cdf0e10cSrcweir 
DXFTextEntity()199cdf0e10cSrcweir DXFTextEntity::DXFTextEntity() : DXFBasicEntity(DXF_TEXT)
200cdf0e10cSrcweir {
201cdf0e10cSrcweir 	fHeight=1.0;
202cdf0e10cSrcweir 	sText[0]=0;
203cdf0e10cSrcweir 	fRotAngle=0.0;
204cdf0e10cSrcweir 	fXScale=1.0;
205cdf0e10cSrcweir 	fOblAngle=0.0;
206cdf0e10cSrcweir 	strncpy( sStyle, "STANDARD", 9 );
207cdf0e10cSrcweir 	nGenFlags=0;
208cdf0e10cSrcweir 	nHorzJust=0;
209cdf0e10cSrcweir 	nVertJust=0;
210cdf0e10cSrcweir }
211cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)212cdf0e10cSrcweir void DXFTextEntity::EvaluateGroup(DXFGroupReader & rDGR)
213cdf0e10cSrcweir {
214cdf0e10cSrcweir 	switch (rDGR.GetG()) {
215cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
216cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
217cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
218cdf0e10cSrcweir 		case 40: fHeight=rDGR.GetF(); break;
219cdf0e10cSrcweir 		case  1: strncpy( sText, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
220cdf0e10cSrcweir 		case 50: fRotAngle=rDGR.GetF(); break;
221cdf0e10cSrcweir 		case 41: fXScale=rDGR.GetF(); break;
222cdf0e10cSrcweir 		case 42: fOblAngle=rDGR.GetF(); break;
223cdf0e10cSrcweir 		case  7: strncpy( sStyle, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
224cdf0e10cSrcweir 		case 71: nGenFlags=rDGR.GetI(); break;
225cdf0e10cSrcweir 		case 72: nHorzJust=rDGR.GetI(); break;
226cdf0e10cSrcweir 		case 73: nVertJust=rDGR.GetI(); break;
227cdf0e10cSrcweir 		case 11: aAlign.fx=rDGR.GetF(); break;
228cdf0e10cSrcweir 		case 21: aAlign.fy=rDGR.GetF(); break;
229cdf0e10cSrcweir 		case 31: aAlign.fz=rDGR.GetF(); break;
230cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
231cdf0e10cSrcweir 	}
232cdf0e10cSrcweir }
233cdf0e10cSrcweir 
234cdf0e10cSrcweir //--------------------------DXFShapeEntity--------------------------------------
235cdf0e10cSrcweir 
DXFShapeEntity()236cdf0e10cSrcweir DXFShapeEntity::DXFShapeEntity() : DXFBasicEntity(DXF_SHAPE)
237cdf0e10cSrcweir {
238cdf0e10cSrcweir 	fSize=1.0;
239cdf0e10cSrcweir 	sName[0]=0;
240cdf0e10cSrcweir 	fRotAngle=0;
241cdf0e10cSrcweir 	fXScale=1.0;
242cdf0e10cSrcweir 	fOblAngle=0;
243cdf0e10cSrcweir }
244cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)245cdf0e10cSrcweir void DXFShapeEntity::EvaluateGroup(DXFGroupReader & rDGR)
246cdf0e10cSrcweir {
247cdf0e10cSrcweir 	switch (rDGR.GetG()) {
248cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
249cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
250cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
251cdf0e10cSrcweir 		case 40: fSize=rDGR.GetF(); break;
252cdf0e10cSrcweir 		case  2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
253cdf0e10cSrcweir 		case 50: fRotAngle=rDGR.GetF(); break;
254cdf0e10cSrcweir 		case 41: fXScale=rDGR.GetF(); break;
255cdf0e10cSrcweir 		case 51: fOblAngle=rDGR.GetF(); break;
256cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
257cdf0e10cSrcweir 	}
258cdf0e10cSrcweir }
259cdf0e10cSrcweir 
260cdf0e10cSrcweir //--------------------------DXFInsertEntity-------------------------------------
261cdf0e10cSrcweir 
DXFInsertEntity()262cdf0e10cSrcweir DXFInsertEntity::DXFInsertEntity() : DXFBasicEntity(DXF_INSERT)
263cdf0e10cSrcweir {
264cdf0e10cSrcweir 	nAttrFlag=0;
265cdf0e10cSrcweir 	sName[0]=0;
266cdf0e10cSrcweir 	fXScale=1.0;
267cdf0e10cSrcweir 	fYScale=1.0;
268cdf0e10cSrcweir 	fZScale=1.0;
269cdf0e10cSrcweir 	fRotAngle=0.0;
270cdf0e10cSrcweir 	nColCount=1;
271cdf0e10cSrcweir 	nRowCount=1;
272cdf0e10cSrcweir 	fColSpace=0.0;
273cdf0e10cSrcweir 	fRowSpace=0.0;
274cdf0e10cSrcweir }
275cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)276cdf0e10cSrcweir void DXFInsertEntity::EvaluateGroup(DXFGroupReader & rDGR)
277cdf0e10cSrcweir {
278cdf0e10cSrcweir 	switch (rDGR.GetG()) {
279cdf0e10cSrcweir 		case 66: nAttrFlag=rDGR.GetI(); break;
280cdf0e10cSrcweir 		case  2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
281cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
282cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
283cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
284cdf0e10cSrcweir 		case 41: fXScale=rDGR.GetF(); break;
285cdf0e10cSrcweir 		case 42: fYScale=rDGR.GetF(); break;
286cdf0e10cSrcweir 		case 43: fZScale=rDGR.GetF(); break;
287cdf0e10cSrcweir 		case 50: fRotAngle=rDGR.GetF(); break;
288cdf0e10cSrcweir 		case 70: nColCount=rDGR.GetI(); break;
289cdf0e10cSrcweir 		case 71: nRowCount=rDGR.GetI(); break;
290cdf0e10cSrcweir 		case 44: fColSpace=rDGR.GetF(); break;
291cdf0e10cSrcweir 		case 45: fRowSpace=rDGR.GetF(); break;
292cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
293cdf0e10cSrcweir 	}
294cdf0e10cSrcweir }
295cdf0e10cSrcweir 
296cdf0e10cSrcweir //--------------------------DXFAttDefEntity-------------------------------------
297cdf0e10cSrcweir 
DXFAttDefEntity()298cdf0e10cSrcweir DXFAttDefEntity::DXFAttDefEntity() : DXFBasicEntity(DXF_ATTDEF)
299cdf0e10cSrcweir {
300cdf0e10cSrcweir 	fHeight=1.0;
301cdf0e10cSrcweir 	sDefVal[0]=0;
302cdf0e10cSrcweir 	sPrompt[0]=0;
303cdf0e10cSrcweir 	sTagStr[0]=0;
304cdf0e10cSrcweir 	nAttrFlags=0;
305cdf0e10cSrcweir 	nFieldLen=0;
306cdf0e10cSrcweir 	fRotAngle=0.0;
307cdf0e10cSrcweir 	fXScale=1.0;
308cdf0e10cSrcweir 	fOblAngle=0.0;
309cdf0e10cSrcweir 	strncpy( sStyle, "STANDARD", 9 );
310cdf0e10cSrcweir 	nGenFlags=0;
311cdf0e10cSrcweir 	nHorzJust=0;
312cdf0e10cSrcweir 	nVertJust=0;
313cdf0e10cSrcweir }
314cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)315cdf0e10cSrcweir void DXFAttDefEntity::EvaluateGroup(DXFGroupReader & rDGR)
316cdf0e10cSrcweir {
317cdf0e10cSrcweir 	switch (rDGR.GetG()) {
318cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
319cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
320cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
321cdf0e10cSrcweir 		case 40: fHeight=rDGR.GetF(); break;
322cdf0e10cSrcweir 		case  1: strncpy( sDefVal, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
323cdf0e10cSrcweir 		case  3: strncpy( sPrompt, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
324cdf0e10cSrcweir 		case  2: strncpy( sTagStr, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
325cdf0e10cSrcweir 		case 70: nAttrFlags=rDGR.GetI(); break;
326cdf0e10cSrcweir 		case 73: nFieldLen=rDGR.GetI(); break;
327cdf0e10cSrcweir 		case 50: fRotAngle=rDGR.GetF(); break;
328cdf0e10cSrcweir 		case 41: fXScale=rDGR.GetF(); break;
329cdf0e10cSrcweir 		case 51: fOblAngle=rDGR.GetF(); break;
330cdf0e10cSrcweir 		case  7: strncpy( sStyle, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
331cdf0e10cSrcweir 		case 71: nGenFlags=rDGR.GetI(); break;
332cdf0e10cSrcweir 		case 72: nHorzJust=rDGR.GetI(); break;
333cdf0e10cSrcweir 		case 74: nVertJust=rDGR.GetI(); break;
334cdf0e10cSrcweir 		case 11: aAlign.fx=rDGR.GetF(); break;
335cdf0e10cSrcweir 		case 21: aAlign.fy=rDGR.GetF(); break;
336cdf0e10cSrcweir 		case 31: aAlign.fz=rDGR.GetF(); break;
337cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
338cdf0e10cSrcweir 	}
339cdf0e10cSrcweir }
340cdf0e10cSrcweir 
341cdf0e10cSrcweir //--------------------------DXFAttribEntity-------------------------------------
342cdf0e10cSrcweir 
DXFAttribEntity()343cdf0e10cSrcweir DXFAttribEntity::DXFAttribEntity() : DXFBasicEntity(DXF_ATTRIB)
344cdf0e10cSrcweir {
345cdf0e10cSrcweir 	fHeight=1.0;
346cdf0e10cSrcweir 	sText[0]=0;
347cdf0e10cSrcweir 	sTagStr[0]=0;
348cdf0e10cSrcweir 	nAttrFlags=0;
349cdf0e10cSrcweir 	nFieldLen=0;
350cdf0e10cSrcweir 	fRotAngle=0.0;
351cdf0e10cSrcweir 	fXScale=1.0;
352cdf0e10cSrcweir 	fOblAngle=0.0;
353cdf0e10cSrcweir 	strncpy( sStyle, "STANDARD", 9 );
354cdf0e10cSrcweir 	nGenFlags=0;
355cdf0e10cSrcweir 	nHorzJust=0;
356cdf0e10cSrcweir 	nVertJust=0;
357cdf0e10cSrcweir }
358cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)359cdf0e10cSrcweir void DXFAttribEntity::EvaluateGroup(DXFGroupReader & rDGR)
360cdf0e10cSrcweir {
361cdf0e10cSrcweir 	switch (rDGR.GetG()) {
362cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
363cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
364cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
365cdf0e10cSrcweir 		case 40: fHeight=rDGR.GetF(); break;
366cdf0e10cSrcweir 		case  1: strncpy( sText, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
367cdf0e10cSrcweir 		case  2: strncpy( sTagStr, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
368cdf0e10cSrcweir 		case 70: nAttrFlags=rDGR.GetI(); break;
369cdf0e10cSrcweir 		case 73: nFieldLen=rDGR.GetI(); break;
370cdf0e10cSrcweir 		case 50: fRotAngle=rDGR.GetF(); break;
371cdf0e10cSrcweir 		case 41: fXScale=rDGR.GetF(); break;
372cdf0e10cSrcweir 		case 51: fOblAngle=rDGR.GetF(); break;
373cdf0e10cSrcweir 		case  7: strncpy( sStyle, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
374cdf0e10cSrcweir 		case 71: nGenFlags=rDGR.GetI(); break;
375cdf0e10cSrcweir 		case 72: nHorzJust=rDGR.GetI(); break;
376cdf0e10cSrcweir 		case 74: nVertJust=rDGR.GetI(); break;
377cdf0e10cSrcweir 		case 11: aAlign.fx=rDGR.GetF(); break;
378cdf0e10cSrcweir 		case 21: aAlign.fy=rDGR.GetF(); break;
379cdf0e10cSrcweir 		case 31: aAlign.fz=rDGR.GetF(); break;
380cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
381cdf0e10cSrcweir 	}
382cdf0e10cSrcweir }
383cdf0e10cSrcweir 
384cdf0e10cSrcweir //--------------------------DXFPolyLine-----------------------------------------
385cdf0e10cSrcweir 
DXFPolyLineEntity()386cdf0e10cSrcweir DXFPolyLineEntity::DXFPolyLineEntity() : DXFBasicEntity(DXF_POLYLINE)
387cdf0e10cSrcweir {
388cdf0e10cSrcweir 	fElevation=0.0;
389cdf0e10cSrcweir 	nFlags=0;
390cdf0e10cSrcweir 	fSWidth=0.0;
391cdf0e10cSrcweir 	fEWidth=0.0;
392cdf0e10cSrcweir 	nMeshMCount=0;
393cdf0e10cSrcweir 	nMeshNCount=0;
394cdf0e10cSrcweir 	nMDensity=0;
395cdf0e10cSrcweir 	nNDensity=0;
396cdf0e10cSrcweir 	nCSSType=0;
397cdf0e10cSrcweir }
398cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)399cdf0e10cSrcweir void DXFPolyLineEntity::EvaluateGroup(DXFGroupReader & rDGR)
400cdf0e10cSrcweir {
401cdf0e10cSrcweir 	switch (rDGR.GetG()) {
402cdf0e10cSrcweir 		case 30: fElevation=rDGR.GetF(); break;
403cdf0e10cSrcweir 		case 70: nFlags=rDGR.GetI(); break;
404cdf0e10cSrcweir 		case 40: fSWidth=rDGR.GetF(); break;
405cdf0e10cSrcweir 		case 41: fEWidth=rDGR.GetF(); break;
406cdf0e10cSrcweir 		case 71: nMeshMCount=rDGR.GetI(); break;
407cdf0e10cSrcweir 		case 72: nMeshNCount=rDGR.GetI(); break;
408cdf0e10cSrcweir 		case 73: nMDensity=rDGR.GetI(); break;
409cdf0e10cSrcweir 		case 74: nNDensity=rDGR.GetI(); break;
410cdf0e10cSrcweir 		case 75: nCSSType=rDGR.GetI(); break;
411cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
412cdf0e10cSrcweir 	}
413cdf0e10cSrcweir }
414cdf0e10cSrcweir 
415cdf0e10cSrcweir //--------------------------DXFLWPolyLine---------------------------------------
416cdf0e10cSrcweir 
DXFLWPolyLineEntity()417cdf0e10cSrcweir DXFLWPolyLineEntity::DXFLWPolyLineEntity() :
418cdf0e10cSrcweir 	DXFBasicEntity( DXF_LWPOLYLINE ),
419cdf0e10cSrcweir 	nIndex( 0 ),
420cdf0e10cSrcweir 	nCount( 0 ),
421cdf0e10cSrcweir 	nFlags( 0 ),
422cdf0e10cSrcweir 	fConstantWidth( 0.0 ),
423cdf0e10cSrcweir 	fStartWidth( 0.0 ),
424cdf0e10cSrcweir 	fEndWidth( 0.0 ),
425cdf0e10cSrcweir 	pP( NULL )
426cdf0e10cSrcweir {
427cdf0e10cSrcweir }
428cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)429cdf0e10cSrcweir void DXFLWPolyLineEntity::EvaluateGroup( DXFGroupReader & rDGR )
430cdf0e10cSrcweir {
431cdf0e10cSrcweir 	switch ( rDGR.GetG() )
432cdf0e10cSrcweir 	{
433cdf0e10cSrcweir 		case 90 :
434cdf0e10cSrcweir 		{
435cdf0e10cSrcweir 			nCount = rDGR.GetI();
436cdf0e10cSrcweir 			if ( nCount )
437cdf0e10cSrcweir 				pP = new DXFVector[ nCount ];
438cdf0e10cSrcweir 		}
439cdf0e10cSrcweir 		break;
440cdf0e10cSrcweir 		case 70: nFlags = rDGR.GetI(); break;
441cdf0e10cSrcweir 		case 43: fConstantWidth = rDGR.GetF(); break;
442cdf0e10cSrcweir 		case 40: fStartWidth = rDGR.GetF(); break;
443cdf0e10cSrcweir 		case 41: fEndWidth = rDGR.GetF(); break;
444cdf0e10cSrcweir 		case 10:
445cdf0e10cSrcweir 		{
446cdf0e10cSrcweir 			if ( pP && ( nIndex < nCount ) )
447cdf0e10cSrcweir 				pP[ nIndex ].fx = rDGR.GetF();
448cdf0e10cSrcweir 		}
449cdf0e10cSrcweir 		break;
450cdf0e10cSrcweir 		case 20:
451cdf0e10cSrcweir 		{
452cdf0e10cSrcweir 			if ( pP && ( nIndex < nCount ) )
453cdf0e10cSrcweir 				pP[ nIndex++ ].fy = rDGR.GetF();
454cdf0e10cSrcweir 		}
455cdf0e10cSrcweir 		break;
456cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
457cdf0e10cSrcweir 	}
458cdf0e10cSrcweir }
459cdf0e10cSrcweir 
~DXFLWPolyLineEntity()460cdf0e10cSrcweir DXFLWPolyLineEntity::~DXFLWPolyLineEntity()
461cdf0e10cSrcweir {
462cdf0e10cSrcweir 	delete[] pP;
463cdf0e10cSrcweir }
464cdf0e10cSrcweir 
465cdf0e10cSrcweir //--------------------------DXFHatchEntity-------------------------------------
466cdf0e10cSrcweir 
DXFEdgeTypeLine()467cdf0e10cSrcweir DXFEdgeTypeLine::DXFEdgeTypeLine() :
468cdf0e10cSrcweir 	DXFEdgeType( 1 )
469cdf0e10cSrcweir {
470cdf0e10cSrcweir 
471cdf0e10cSrcweir }
~DXFEdgeTypeLine()472cdf0e10cSrcweir DXFEdgeTypeLine::~DXFEdgeTypeLine()
473cdf0e10cSrcweir {
474cdf0e10cSrcweir 
475cdf0e10cSrcweir }
EvaluateGroup(DXFGroupReader & rDGR)476cdf0e10cSrcweir sal_Bool DXFEdgeTypeLine::EvaluateGroup( DXFGroupReader & rDGR )
477cdf0e10cSrcweir {
478cdf0e10cSrcweir 	sal_Bool bExecutingGroupCode = sal_True;
479cdf0e10cSrcweir 	switch ( rDGR.GetG() )
480cdf0e10cSrcweir 	{
481cdf0e10cSrcweir 		case 10 : aStartPoint.fx = rDGR.GetF(); break;
482cdf0e10cSrcweir 		case 20 : aStartPoint.fy = rDGR.GetF(); break;
483cdf0e10cSrcweir 		case 11 : aEndPoint.fx = rDGR.GetF(); break;
484cdf0e10cSrcweir 		case 21 : aEndPoint.fy = rDGR.GetF(); break;
485cdf0e10cSrcweir 		default : bExecutingGroupCode = sal_False; break;
486cdf0e10cSrcweir 	}
487cdf0e10cSrcweir 	return  bExecutingGroupCode;
488cdf0e10cSrcweir }
489cdf0e10cSrcweir 
DXFEdgeTypeCircularArc()490cdf0e10cSrcweir DXFEdgeTypeCircularArc::DXFEdgeTypeCircularArc() :
491cdf0e10cSrcweir 	DXFEdgeType( 2 ),
492cdf0e10cSrcweir 	fRadius( 0.0 ),
493cdf0e10cSrcweir 	fStartAngle( 0.0 ),
494cdf0e10cSrcweir 	fEndAngle( 0.0 ),
495cdf0e10cSrcweir 	nIsCounterClockwiseFlag( 0 )
496cdf0e10cSrcweir {
497cdf0e10cSrcweir }
~DXFEdgeTypeCircularArc()498cdf0e10cSrcweir DXFEdgeTypeCircularArc::~DXFEdgeTypeCircularArc()
499cdf0e10cSrcweir {
500cdf0e10cSrcweir }
EvaluateGroup(DXFGroupReader & rDGR)501cdf0e10cSrcweir sal_Bool DXFEdgeTypeCircularArc::EvaluateGroup( DXFGroupReader & rDGR )
502cdf0e10cSrcweir {
503cdf0e10cSrcweir 	sal_Bool bExecutingGroupCode = sal_True;
504cdf0e10cSrcweir 	switch ( rDGR.GetG() )
505cdf0e10cSrcweir 	{
506cdf0e10cSrcweir 		case 10 : aCenter.fx = rDGR.GetF(); break;
507cdf0e10cSrcweir 		case 20 : aCenter.fy = rDGR.GetF(); break;
508cdf0e10cSrcweir 		case 40 : fRadius = rDGR.GetF(); break;
509cdf0e10cSrcweir 		case 50 : fStartAngle = rDGR.GetF(); break;
510cdf0e10cSrcweir 		case 51 : fEndAngle = rDGR.GetF(); break;
511cdf0e10cSrcweir 		case 73 : nIsCounterClockwiseFlag = rDGR.GetI(); break;
512cdf0e10cSrcweir 		default : bExecutingGroupCode = sal_False; break;
513cdf0e10cSrcweir 	}
514cdf0e10cSrcweir 	return  bExecutingGroupCode;
515cdf0e10cSrcweir }
516cdf0e10cSrcweir 
DXFEdgeTypeEllipticalArc()517cdf0e10cSrcweir DXFEdgeTypeEllipticalArc::DXFEdgeTypeEllipticalArc() :
518cdf0e10cSrcweir 	DXFEdgeType( 3 ),
519cdf0e10cSrcweir 	fLength( 0.0 ),
520cdf0e10cSrcweir 	fStartAngle( 0.0 ),
521cdf0e10cSrcweir 	fEndAngle( 0.0 ),
522cdf0e10cSrcweir 	nIsCounterClockwiseFlag( 0 )
523cdf0e10cSrcweir {
524cdf0e10cSrcweir }
~DXFEdgeTypeEllipticalArc()525cdf0e10cSrcweir DXFEdgeTypeEllipticalArc::~DXFEdgeTypeEllipticalArc()
526cdf0e10cSrcweir {
527cdf0e10cSrcweir 
528cdf0e10cSrcweir }
EvaluateGroup(DXFGroupReader & rDGR)529cdf0e10cSrcweir sal_Bool DXFEdgeTypeEllipticalArc::EvaluateGroup( DXFGroupReader & rDGR )
530cdf0e10cSrcweir {
531cdf0e10cSrcweir 	sal_Bool bExecutingGroupCode = sal_True;
532cdf0e10cSrcweir 	switch( rDGR.GetG() )
533cdf0e10cSrcweir 	{
534cdf0e10cSrcweir 		case 10 : aCenter.fx = rDGR.GetF(); break;
535cdf0e10cSrcweir 		case 20 : aCenter.fy = rDGR.GetF(); break;
536cdf0e10cSrcweir 		case 11 : aEndPoint.fx = rDGR.GetF(); break;
537cdf0e10cSrcweir 		case 21 : aEndPoint.fy = rDGR.GetF(); break;
538cdf0e10cSrcweir 		case 40 : fLength = rDGR.GetF(); break;
539cdf0e10cSrcweir 		case 50 : fStartAngle = rDGR.GetF(); break;
540cdf0e10cSrcweir 		case 51 : fEndAngle = rDGR.GetF(); break;
541cdf0e10cSrcweir 		case 73 : nIsCounterClockwiseFlag = rDGR.GetI(); break;
542cdf0e10cSrcweir 		default : bExecutingGroupCode = sal_False; break;
543cdf0e10cSrcweir 	}
544cdf0e10cSrcweir 	return  bExecutingGroupCode;
545cdf0e10cSrcweir }
546cdf0e10cSrcweir 
DXFEdgeTypeSpline()547cdf0e10cSrcweir DXFEdgeTypeSpline::DXFEdgeTypeSpline() :
548cdf0e10cSrcweir 	DXFEdgeType( 4 ),
549cdf0e10cSrcweir 	nDegree( 0 ),
550cdf0e10cSrcweir 	nRational( 0 ),
551cdf0e10cSrcweir 	nPeriodic( 0 ),
552cdf0e10cSrcweir 	nKnotCount( 0 ),
553cdf0e10cSrcweir 	nControlCount( 0 )
554cdf0e10cSrcweir {
555cdf0e10cSrcweir }
~DXFEdgeTypeSpline()556cdf0e10cSrcweir DXFEdgeTypeSpline::~DXFEdgeTypeSpline()
557cdf0e10cSrcweir {
558cdf0e10cSrcweir 
559cdf0e10cSrcweir }
EvaluateGroup(DXFGroupReader & rDGR)560cdf0e10cSrcweir sal_Bool DXFEdgeTypeSpline::EvaluateGroup( DXFGroupReader & rDGR )
561cdf0e10cSrcweir {
562cdf0e10cSrcweir 	sal_Bool bExecutingGroupCode = sal_True;
563cdf0e10cSrcweir 	switch ( rDGR.GetG() )
564cdf0e10cSrcweir 	{
565cdf0e10cSrcweir 		case 94 : nDegree = rDGR.GetI(); break;
566cdf0e10cSrcweir 		case 73 : nRational = rDGR.GetI(); break;
567cdf0e10cSrcweir 		case 74 : nPeriodic = rDGR.GetI(); break;
568cdf0e10cSrcweir 		case 95 : nKnotCount = rDGR.GetI(); break;
569cdf0e10cSrcweir 		case 96 : nControlCount = rDGR.GetI(); break;
570cdf0e10cSrcweir 		default : bExecutingGroupCode = sal_False; break;
571cdf0e10cSrcweir 	}
572cdf0e10cSrcweir 	return  bExecutingGroupCode;
573cdf0e10cSrcweir }
574cdf0e10cSrcweir 
DXFBoundaryPathData()575cdf0e10cSrcweir DXFBoundaryPathData::DXFBoundaryPathData() :
576cdf0e10cSrcweir 	nFlags( 0 ),
577cdf0e10cSrcweir 	nHasBulgeFlag( 0 ),
578cdf0e10cSrcweir 	nIsClosedFlag( 0 ),
579cdf0e10cSrcweir 	nPointCount( 0 ),
580cdf0e10cSrcweir 	fBulge( 0.0 ),
581cdf0e10cSrcweir 	nSourceBoundaryObjects( 0 ),
582cdf0e10cSrcweir 	nEdgeCount( 0 ),
583cdf0e10cSrcweir 	bIsPolyLine( sal_True ),
584cdf0e10cSrcweir 	nPointIndex( 0 ),
585cdf0e10cSrcweir 	pP( NULL )
586cdf0e10cSrcweir {
587cdf0e10cSrcweir }
588cdf0e10cSrcweir 
~DXFBoundaryPathData()589cdf0e10cSrcweir DXFBoundaryPathData::~DXFBoundaryPathData()
590cdf0e10cSrcweir {
591cdf0e10cSrcweir 	sal_uInt32 i = 0;
592cdf0e10cSrcweir 	for ( i = 0; i < aEdges.size(); i++ )
593cdf0e10cSrcweir 		delete aEdges[ i ];
594cdf0e10cSrcweir 	delete[] pP;
595cdf0e10cSrcweir }
596cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)597cdf0e10cSrcweir sal_Bool DXFBoundaryPathData::EvaluateGroup( DXFGroupReader & rDGR )
598cdf0e10cSrcweir {
599cdf0e10cSrcweir 	sal_Bool bExecutingGroupCode = sal_True;
600cdf0e10cSrcweir 	if ( bIsPolyLine )
601cdf0e10cSrcweir 	{
602cdf0e10cSrcweir 		switch( rDGR.GetG() )
603cdf0e10cSrcweir 		{
604cdf0e10cSrcweir 			case 92 :
605cdf0e10cSrcweir 			{
606cdf0e10cSrcweir 				nFlags = rDGR.GetI();
607cdf0e10cSrcweir 				if ( ( nFlags & 2 ) == 0 )
608cdf0e10cSrcweir 					bIsPolyLine = sal_False;
609cdf0e10cSrcweir 			}
610cdf0e10cSrcweir 			break;
611cdf0e10cSrcweir 			case 93 :
612cdf0e10cSrcweir 			{
613cdf0e10cSrcweir 				nPointCount = rDGR.GetI();
614cdf0e10cSrcweir 				if ( nPointCount )
615cdf0e10cSrcweir 					pP = new DXFVector[ nPointCount ];
616cdf0e10cSrcweir 			}
617cdf0e10cSrcweir 			break;
618cdf0e10cSrcweir 			case 72 : nHasBulgeFlag = rDGR.GetI(); break;
619cdf0e10cSrcweir 			case 73 : nIsClosedFlag = rDGR.GetI(); break;
620cdf0e10cSrcweir 			case 97 : nSourceBoundaryObjects = rDGR.GetI(); break;
621cdf0e10cSrcweir 			case 42 : fBulge = rDGR.GetF(); break;
622cdf0e10cSrcweir 			case 10:
623cdf0e10cSrcweir 			{
624cdf0e10cSrcweir 				if ( pP && ( nPointIndex < nPointCount ) )
625cdf0e10cSrcweir 					pP[ nPointIndex ].fx = rDGR.GetF();
626cdf0e10cSrcweir 			}
627cdf0e10cSrcweir 			break;
628cdf0e10cSrcweir 			case 20:
629cdf0e10cSrcweir 			{
630cdf0e10cSrcweir 				if ( pP && ( nPointIndex < nPointCount ) )
631cdf0e10cSrcweir 					pP[ nPointIndex++ ].fy = rDGR.GetF();
632cdf0e10cSrcweir 			}
633cdf0e10cSrcweir 			break;
634cdf0e10cSrcweir 
635cdf0e10cSrcweir 			default : bExecutingGroupCode = sal_False; break;
636cdf0e10cSrcweir 		}
637cdf0e10cSrcweir 	}
638cdf0e10cSrcweir 	else
639cdf0e10cSrcweir 	{
640cdf0e10cSrcweir 		if ( rDGR.GetG() == 93 )
641cdf0e10cSrcweir 			nEdgeCount = rDGR.GetI();
642cdf0e10cSrcweir 		else if ( rDGR.GetG() == 72 )
643cdf0e10cSrcweir 		{
644cdf0e10cSrcweir 			sal_Int32 nEdgeType = rDGR.GetI();
645cdf0e10cSrcweir 			switch( nEdgeType )
646cdf0e10cSrcweir 			{
647cdf0e10cSrcweir 				case 1 : aEdges.push_back( new DXFEdgeTypeLine() ); break;
648cdf0e10cSrcweir 				case 2 : aEdges.push_back( new DXFEdgeTypeCircularArc() ); break;
649cdf0e10cSrcweir 				case 3 : aEdges.push_back( new DXFEdgeTypeEllipticalArc() ); break;
650cdf0e10cSrcweir 				case 4 : aEdges.push_back( new DXFEdgeTypeSpline() ); break;
651cdf0e10cSrcweir 			}
652cdf0e10cSrcweir 		}
653cdf0e10cSrcweir 		else if ( aEdges.size() )
654cdf0e10cSrcweir 			aEdges[ aEdges.size() - 1 ]->EvaluateGroup( rDGR );
655cdf0e10cSrcweir 		else
656cdf0e10cSrcweir 			bExecutingGroupCode = sal_False;
657cdf0e10cSrcweir 	}
658cdf0e10cSrcweir 	return bExecutingGroupCode;
659cdf0e10cSrcweir }
660cdf0e10cSrcweir 
DXFHatchEntity()661cdf0e10cSrcweir DXFHatchEntity::DXFHatchEntity() :
662cdf0e10cSrcweir 	DXFBasicEntity( DXF_HATCH ),
663cdf0e10cSrcweir 	bIsInBoundaryPathContext( sal_False ),
664cdf0e10cSrcweir 	nCurrentBoundaryPathIndex( -1 ),
665cdf0e10cSrcweir 	nFlags( 0 ),
666cdf0e10cSrcweir 	nAssociativityFlag( 0 ),
667cdf0e10cSrcweir 	nBoundaryPathCount( 0 ),
668cdf0e10cSrcweir 	nHatchStyle( 0 ),
669cdf0e10cSrcweir 	nHatchPatternType( 0 ),
670cdf0e10cSrcweir 	fHatchPatternAngle( 0.0 ),
671cdf0e10cSrcweir 	fHatchPatternScale( 1.0 ),
672cdf0e10cSrcweir 	nHatchDoubleFlag( 0 ),
673cdf0e10cSrcweir 	nHatchPatternDefinitionLines( 0 ),
674cdf0e10cSrcweir 	fPixelSize( 1.0 ),
675cdf0e10cSrcweir 	nNumberOfSeedPoints( 0 ),
676cdf0e10cSrcweir 	pBoundaryPathData( NULL )
677cdf0e10cSrcweir {
678cdf0e10cSrcweir }
679cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)680cdf0e10cSrcweir void DXFHatchEntity::EvaluateGroup( DXFGroupReader & rDGR )
681cdf0e10cSrcweir {
682cdf0e10cSrcweir 	switch ( rDGR.GetG() )
683cdf0e10cSrcweir 	{
684cdf0e10cSrcweir //		case 10 : aElevationPoint.fx = rDGR.GetF(); break;
685cdf0e10cSrcweir //		case 20 : aElevationPoint.fy = rDGR.GetF(); break;
686cdf0e10cSrcweir //		case 30 : aElevationPoint.fz = rDGR.GetF(); break;
687cdf0e10cSrcweir 		case 70 : nFlags = rDGR.GetI(); break;
688cdf0e10cSrcweir 		case 71 : nAssociativityFlag = rDGR.GetI(); break;
689cdf0e10cSrcweir 		case 91 :
690cdf0e10cSrcweir 		{
691cdf0e10cSrcweir 			bIsInBoundaryPathContext = sal_True;
692cdf0e10cSrcweir 			nBoundaryPathCount = rDGR.GetI();
693cdf0e10cSrcweir 			if ( nBoundaryPathCount )
694cdf0e10cSrcweir 				pBoundaryPathData = new DXFBoundaryPathData[ nBoundaryPathCount ];
695cdf0e10cSrcweir 		}
696cdf0e10cSrcweir 		break;
697cdf0e10cSrcweir 		case 75 :
698cdf0e10cSrcweir 		{
699cdf0e10cSrcweir 			nHatchStyle = rDGR.GetI();
700cdf0e10cSrcweir 			bIsInBoundaryPathContext = sal_False;
701cdf0e10cSrcweir 		}
702cdf0e10cSrcweir 		break;
703cdf0e10cSrcweir 		case 76 : nHatchPatternType = rDGR.GetI(); break;
704cdf0e10cSrcweir 		case 52 : fHatchPatternAngle = rDGR.GetF(); break;
705cdf0e10cSrcweir 		case 41 : fHatchPatternScale = rDGR.GetF(); break;
706cdf0e10cSrcweir 		case 77 : nHatchDoubleFlag = rDGR.GetI(); break;
707cdf0e10cSrcweir 		case 78 : nHatchPatternDefinitionLines = rDGR.GetI(); break;
708cdf0e10cSrcweir 		case 47 : fPixelSize = rDGR.GetF(); break;
709cdf0e10cSrcweir 		case 98 : nNumberOfSeedPoints = rDGR.GetI(); break;
710cdf0e10cSrcweir 
711cdf0e10cSrcweir 		//!! passthrough !!
712cdf0e10cSrcweir 		case 92 : nCurrentBoundaryPathIndex++;
713cdf0e10cSrcweir 		default:
714cdf0e10cSrcweir 		{
715cdf0e10cSrcweir 			sal_Bool bExecutingGroupCode = sal_False;
716cdf0e10cSrcweir 			if ( bIsInBoundaryPathContext )
717cdf0e10cSrcweir 			{
718cdf0e10cSrcweir 				if ( ( nCurrentBoundaryPathIndex >= 0 ) &&
719cdf0e10cSrcweir 					( nCurrentBoundaryPathIndex < nBoundaryPathCount ) )
720cdf0e10cSrcweir 					bExecutingGroupCode = pBoundaryPathData[ nCurrentBoundaryPathIndex ].EvaluateGroup( rDGR );
721cdf0e10cSrcweir 			}
722cdf0e10cSrcweir 			if ( bExecutingGroupCode == sal_False )
723cdf0e10cSrcweir 				DXFBasicEntity::EvaluateGroup(rDGR);
724cdf0e10cSrcweir 		}
725cdf0e10cSrcweir 		break;
726cdf0e10cSrcweir 	}
727cdf0e10cSrcweir }
728cdf0e10cSrcweir 
~DXFHatchEntity()729cdf0e10cSrcweir DXFHatchEntity::~DXFHatchEntity()
730cdf0e10cSrcweir {
731cdf0e10cSrcweir 	delete[] pBoundaryPathData;
732cdf0e10cSrcweir }
733cdf0e10cSrcweir 
734cdf0e10cSrcweir //--------------------------DXFVertexEntity-------------------------------------
735cdf0e10cSrcweir 
DXFVertexEntity()736cdf0e10cSrcweir DXFVertexEntity::DXFVertexEntity() : DXFBasicEntity(DXF_VERTEX)
737cdf0e10cSrcweir {
738cdf0e10cSrcweir 	fSWidth=-1.0;
739cdf0e10cSrcweir 	fEWidth=-1.0;
740cdf0e10cSrcweir 	fBulge=0.0;
741cdf0e10cSrcweir 	nFlags=0;
742cdf0e10cSrcweir 	fCFTDir=0.0;
743cdf0e10cSrcweir 
744cdf0e10cSrcweir }
745cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)746cdf0e10cSrcweir void DXFVertexEntity::EvaluateGroup(DXFGroupReader & rDGR)
747cdf0e10cSrcweir {
748cdf0e10cSrcweir 	switch (rDGR.GetG()) {
749cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
750cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
751cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
752cdf0e10cSrcweir 		case 40: fSWidth=rDGR.GetF(); break;
753cdf0e10cSrcweir 		case 41: fEWidth=rDGR.GetF(); break;
754cdf0e10cSrcweir 		case 42: fBulge=rDGR.GetF(); break;
755cdf0e10cSrcweir 		case 70: nFlags=rDGR.GetI(); break;
756cdf0e10cSrcweir 		case 50: fCFTDir=rDGR.GetF(); break;
757cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
758cdf0e10cSrcweir 	}
759cdf0e10cSrcweir }
760cdf0e10cSrcweir 
761cdf0e10cSrcweir //--------------------------DXFSeqEndEntity-------------------------------------
762cdf0e10cSrcweir 
DXFSeqEndEntity()763cdf0e10cSrcweir DXFSeqEndEntity::DXFSeqEndEntity() : DXFBasicEntity(DXF_SEQEND)
764cdf0e10cSrcweir {
765cdf0e10cSrcweir }
766cdf0e10cSrcweir 
767cdf0e10cSrcweir //--------------------------DXF3DFace-------------------------------------------
768cdf0e10cSrcweir 
DXF3DFaceEntity()769cdf0e10cSrcweir DXF3DFaceEntity::DXF3DFaceEntity() : DXFBasicEntity(DXF_3DFACE)
770cdf0e10cSrcweir {
771cdf0e10cSrcweir 	nIEFlags=0;
772cdf0e10cSrcweir }
773cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)774cdf0e10cSrcweir void DXF3DFaceEntity::EvaluateGroup(DXFGroupReader & rDGR)
775cdf0e10cSrcweir {
776cdf0e10cSrcweir 	switch (rDGR.GetG()) {
777cdf0e10cSrcweir 		case 10: aP0.fx=rDGR.GetF(); break;
778cdf0e10cSrcweir 		case 20: aP0.fy=rDGR.GetF(); break;
779cdf0e10cSrcweir 		case 30: aP0.fz=rDGR.GetF(); break;
780cdf0e10cSrcweir 		case 11: aP1.fx=rDGR.GetF(); break;
781cdf0e10cSrcweir 		case 21: aP1.fy=rDGR.GetF(); break;
782cdf0e10cSrcweir 		case 31: aP1.fz=rDGR.GetF(); break;
783cdf0e10cSrcweir 		case 12: aP2.fx=rDGR.GetF(); break;
784cdf0e10cSrcweir 		case 22: aP2.fy=rDGR.GetF(); break;
785cdf0e10cSrcweir 		case 32: aP2.fz=rDGR.GetF(); break;
786cdf0e10cSrcweir 		case 13: aP3.fx=rDGR.GetF(); break;
787cdf0e10cSrcweir 		case 23: aP3.fy=rDGR.GetF(); break;
788cdf0e10cSrcweir 		case 33: aP3.fz=rDGR.GetF(); break;
789cdf0e10cSrcweir 		case 70: nIEFlags=rDGR.GetI(); break;
790cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
791cdf0e10cSrcweir 	}
792cdf0e10cSrcweir }
793cdf0e10cSrcweir 
794cdf0e10cSrcweir 
795cdf0e10cSrcweir //--------------------------DXFDimensionEntity----------------------------------
796cdf0e10cSrcweir 
DXFDimensionEntity()797cdf0e10cSrcweir DXFDimensionEntity::DXFDimensionEntity() : DXFBasicEntity(DXF_DIMENSION)
798cdf0e10cSrcweir {
799cdf0e10cSrcweir 	sPseudoBlock[0]=0;
800cdf0e10cSrcweir }
801cdf0e10cSrcweir 
EvaluateGroup(DXFGroupReader & rDGR)802cdf0e10cSrcweir void DXFDimensionEntity::EvaluateGroup(DXFGroupReader & rDGR)
803cdf0e10cSrcweir {
804cdf0e10cSrcweir 	switch (rDGR.GetG()) {
805cdf0e10cSrcweir 		case  2: strncpy( sPseudoBlock, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
806cdf0e10cSrcweir 		default: DXFBasicEntity::EvaluateGroup(rDGR);
807cdf0e10cSrcweir 	}
808cdf0e10cSrcweir }
809cdf0e10cSrcweir 
810cdf0e10cSrcweir //---------------------------- DXFEntites --------------------------------------
811cdf0e10cSrcweir 
Read(DXFGroupReader & rDGR)812cdf0e10cSrcweir void DXFEntities::Read(DXFGroupReader & rDGR)
813cdf0e10cSrcweir {
814cdf0e10cSrcweir 	DXFBasicEntity * pE, * * ppSucc;
815cdf0e10cSrcweir 
816cdf0e10cSrcweir 	ppSucc=&pFirst;
817cdf0e10cSrcweir 	while (*ppSucc!=NULL) ppSucc=&((*ppSucc)->pSucc);
818cdf0e10cSrcweir 
819cdf0e10cSrcweir 	while (rDGR.GetG()!=0) rDGR.Read();
820cdf0e10cSrcweir 
821cdf0e10cSrcweir 	while (strcmp(rDGR.GetS(),"ENDBLK")!=0 &&
822cdf0e10cSrcweir 		   strcmp(rDGR.GetS(),"ENDSEC")!=0 &&
823cdf0e10cSrcweir 		   strcmp(rDGR.GetS(),"EOF")!=0 )
824cdf0e10cSrcweir 	{
825cdf0e10cSrcweir 
826cdf0e10cSrcweir 		if      (strcmp(rDGR.GetS(),"LINE"		)==0) pE=new DXFLineEntity;
827cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"POINT"		)==0) pE=new DXFPointEntity;
828cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"CIRCLE"	)==0) pE=new DXFCircleEntity;
829cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"ARC"		)==0) pE=new DXFArcEntity;
830cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"TRACE"		)==0) pE=new DXFTraceEntity;
831cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"SOLID"		)==0) pE=new DXFSolidEntity;
832cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"TEXT"		)==0) pE=new DXFTextEntity;
833cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"SHAPE"		)==0) pE=new DXFShapeEntity;
834cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"INSERT"	)==0) pE=new DXFInsertEntity;
835cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"ATTDEF"	)==0) pE=new DXFAttDefEntity;
836cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"ATTRIB"	)==0) pE=new DXFAttribEntity;
837cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"POLYLINE"	)==0) pE=new DXFPolyLineEntity;
838cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"LWPOLYLINE")==0) pE=new DXFLWPolyLineEntity;
839cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"VERTEX"	)==0) pE=new DXFVertexEntity;
840cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"SEQEND"	)==0) pE=new DXFSeqEndEntity;
841cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"3DFACE"	)==0) pE=new DXF3DFaceEntity;
842cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"DIMENSION"	)==0) pE=new DXFDimensionEntity;
843cdf0e10cSrcweir 		else if (strcmp(rDGR.GetS(),"HATCH"		)==0) pE=new DXFHatchEntity;
844cdf0e10cSrcweir 		else
845cdf0e10cSrcweir 		{
846cdf0e10cSrcweir 			do {
847cdf0e10cSrcweir 				rDGR.Read();
848cdf0e10cSrcweir 			} while (rDGR.GetG()!=0);
849cdf0e10cSrcweir 			continue;
850cdf0e10cSrcweir 		}
851cdf0e10cSrcweir 		*ppSucc=pE;
852cdf0e10cSrcweir 		ppSucc=&(pE->pSucc);
853cdf0e10cSrcweir 		pE->Read(rDGR);
854cdf0e10cSrcweir 	}
855cdf0e10cSrcweir }
856cdf0e10cSrcweir 
Clear()857cdf0e10cSrcweir void DXFEntities::Clear()
858cdf0e10cSrcweir {
859cdf0e10cSrcweir 	DXFBasicEntity * ptmp;
860cdf0e10cSrcweir 
861cdf0e10cSrcweir 	while (pFirst!=NULL) {
862cdf0e10cSrcweir 		ptmp=pFirst;
863cdf0e10cSrcweir 		pFirst=ptmp->pSucc;
864cdf0e10cSrcweir 		delete ptmp;
865cdf0e10cSrcweir 	}
866cdf0e10cSrcweir }
867cdf0e10cSrcweir 
868