/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_filter.hxx" #include #include //---------------------------------------------------------------------------- //---------------- DXFBlock -------------------------------------------------- //---------------------------------------------------------------------------- DXFBlock::DXFBlock() { pSucc=NULL; } DXFBlock::~DXFBlock() { } void DXFBlock::Read(DXFGroupReader & rDGR) { sName[0]=0; sAlsoName[0]=0; aBasePoint.fx=0.0; aBasePoint.fy=0.0; aBasePoint.fz=0.0; nFlags=0; sXRef[0]=0; while (rDGR.Read()!=0) { switch (rDGR.GetG()) { case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break; case 3: strncpy( sAlsoName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break; case 70: nFlags=rDGR.GetI(); break; case 10: aBasePoint.fx=rDGR.GetF(); break; case 20: aBasePoint.fy=rDGR.GetF(); break; case 30: aBasePoint.fz=rDGR.GetF(); break; case 1: strncpy( sXRef, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break; } } DXFEntities::Read(rDGR); } //---------------------------------------------------------------------------- //---------------- DXFBlocks ------------------------------------------------- //---------------------------------------------------------------------------- DXFBlocks::DXFBlocks() { pFirst=NULL; } DXFBlocks::~DXFBlocks() { Clear(); } void DXFBlocks::Read(DXFGroupReader & rDGR) { DXFBlock * pB, * * ppSucc; ppSucc=&pFirst; while (*ppSucc!=NULL) ppSucc=&((*ppSucc)->pSucc); for (;;) { while (rDGR.GetG()!=0) rDGR.Read(); if (strcmp(rDGR.GetS(),"ENDSEC")==0 || strcmp(rDGR.GetS(),"EOF")==0) break; if (strcmp(rDGR.GetS(),"BLOCK")==0) { pB=new DXFBlock; pB->Read(rDGR); *ppSucc=pB; ppSucc=&(pB->pSucc); } else rDGR.Read(); } } DXFBlock * DXFBlocks::Search(const char * sName) const { DXFBlock * pB; for (pB=pFirst; pB!=NULL; pB=pB->pSucc) { if (strcmp(sName,pB->sName)==0) break; } return pB; } void DXFBlocks::Clear() { DXFBlock * ptmp; while (pFirst!=NULL) { ptmp=pFirst; pFirst=ptmp->pSucc; delete ptmp; } }