1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
21 #include "dxftblrd.hxx"
23 //----------------------------------DXFLType-----------------------------------
33 void DXFLType::Read(DXFGroupReader
& rDGR
)
35 tools::Long nDashIndex
=-1;
37 while (rDGR
.Read()!=0)
42 m_sName
= rDGR
.GetS();
45 m_sDescription
= rDGR
.GetS();
56 nDashCount
=rDGR
.GetI();
57 if (nDashCount
>DXF_MAX_DASH_COUNT
)
59 nDashCount
=DXF_MAX_DASH_COUNT
;
63 case 40: fPatternLength
=rDGR
.GetF(); break;
70 if (nDashIndex
< nDashCount
)
77 fDash
[nDashIndex
++] = rDGR
.GetF();
84 //----------------------------------DXFLayer-----------------------------------
93 void DXFLayer::Read(DXFGroupReader
& rDGR
)
95 while (rDGR
.Read()!=0)
100 m_sName
= rDGR
.GetS();
103 m_sLineType
= rDGR
.GetS();
115 //----------------------------------DXFStyle-----------------------------------
128 void DXFStyle::Read(DXFGroupReader
& rDGR
)
130 while (rDGR
.Read()!=0)
135 m_sName
= rDGR
.GetS();
138 m_sPrimFontFile
= rDGR
.GetS();
141 m_sBigFontFile
= rDGR
.GetS();
150 fWidthFak
=rDGR
.GetF();
153 fLastHeightUsed
=rDGR
.GetF();
156 fOblAngle
=rDGR
.GetF();
159 nTextGenFlags
=rDGR
.GetI();
165 //----------------------------------DXFVPort-----------------------------------
182 , aDirection(DXFVector(0.0, 0.0, 1.0))
186 , fFrontClipPlane(0.0)
187 , fBackClipPlane(0.0)
192 , nCircleZoomPercent(0)
202 void DXFVPort::Read(DXFGroupReader
& rDGR
)
204 while (rDGR
.Read()!=0)
209 m_sName
= rDGR
.GetS();
211 case 10: fMinX
=rDGR
.GetF(); break;
212 case 11: fMaxX
=rDGR
.GetF(); break;
213 case 12: fCenterX
=rDGR
.GetF(); break;
214 case 13: fSnapBaseX
=rDGR
.GetF(); break;
215 case 14: fSnapSpacingX
=rDGR
.GetF(); break;
216 case 15: fGridX
=rDGR
.GetF(); break;
217 case 16: aDirection
.fx
=rDGR
.GetF(); break;
218 case 17: aTarget
.fx
=rDGR
.GetF(); break;
219 case 20: fMinY
=rDGR
.GetF(); break;
220 case 21: fMaxY
=rDGR
.GetF(); break;
221 case 22: fCenterY
=rDGR
.GetF(); break;
222 case 23: fSnapBaseY
=rDGR
.GetF(); break;
223 case 24: fSnapSpacingY
=rDGR
.GetF(); break;
224 case 25: fGridY
=rDGR
.GetF(); break;
225 case 26: aDirection
.fy
=rDGR
.GetF(); break;
226 case 27: aTarget
.fy
=rDGR
.GetF(); break;
227 case 36: aDirection
.fz
=rDGR
.GetF(); break;
228 case 37: aTarget
.fz
=rDGR
.GetF(); break;
229 case 40: fHeight
=rDGR
.GetF(); break;
230 case 41: fAspectRatio
=rDGR
.GetF(); break;
231 case 42: fLensLength
=rDGR
.GetF(); break;
232 case 43: fFrontClipPlane
=rDGR
.GetF(); break;
233 case 44: fBackClipPlane
=rDGR
.GetF(); break;
234 case 51: fTwistAngle
=rDGR
.GetF(); break;
235 case 68: nStatus
=rDGR
.GetI(); break;
236 case 69: nID
=rDGR
.GetI(); break;
237 case 70: nFlags
=rDGR
.GetI(); break;
238 case 71: nMode
=rDGR
.GetI(); break;
239 case 72: nCircleZoomPercent
=rDGR
.GetI(); break;
240 case 73: nFastZoom
=rDGR
.GetI(); break;
241 case 74: nUCSICON
=rDGR
.GetI(); break;
242 case 75: nSnap
=rDGR
.GetI(); break;
243 case 76: nGrid
=rDGR
.GetI(); break;
244 case 77: nSnapStyle
=rDGR
.GetI(); break;
245 case 78: nSnapIsopair
=rDGR
.GetI(); break;
250 //----------------------------------DXFTables----------------------------------
253 DXFTables::DXFTables()
262 DXFTables::~DXFTables()
268 void DXFTables::Read(DXFGroupReader
& rDGR
)
270 DXFLType
* * ppLT
, * pLT
;
271 DXFLayer
* * ppLa
, * pLa
;
272 DXFStyle
* * ppSt
, * pSt
;
273 DXFVPort
* * ppVP
, * pVP
;
276 while(*ppLT
!=nullptr) ppLT
=&((*ppLT
)->pSucc
);
279 while(*ppLa
!=nullptr) ppLa
=&((*ppLa
)->pSucc
);
282 while(*ppSt
!=nullptr) ppSt
=&((*ppSt
)->pSucc
);
285 while(*ppVP
!=nullptr) ppVP
=&((*ppVP
)->pSucc
);
288 while (rDGR
.GetG()!=0) rDGR
.Read();
289 if (rDGR
.GetS() == "EOF" ||
290 rDGR
.GetS() == "ENDSEC") break;
291 else if (rDGR
.GetS() == "LTYPE") {
297 else if (rDGR
.GetS() == "LAYER") {
303 else if (rDGR
.GetS() == "STYLE") {
309 else if (rDGR
.GetS() == "VPORT") {
320 void DXFTables::Clear()
327 while (pStyles
!=nullptr) {
332 while (pLayers
!=nullptr) {
337 while (pLTypes
!=nullptr) {
342 while (pVPorts
!=nullptr) {
350 DXFLType
* DXFTables::SearchLType(OString
const& rName
) const
353 for (p
=pLTypes
; p
!=nullptr; p
=p
->pSucc
) {
354 if (rName
== p
->m_sName
) break;
360 DXFLayer
* DXFTables::SearchLayer(OString
const& rName
) const
363 for (p
=pLayers
; p
!=nullptr; p
=p
->pSucc
) {
364 if (rName
== p
->m_sName
) break;
370 DXFVPort
* DXFTables::SearchVPort(OString
const& rName
) const
373 for (p
=pVPorts
; p
!=nullptr; p
=p
->pSucc
) {
374 if (rName
== p
->m_sName
) break;
380 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */