LCOV - code coverage report
Current view: top level - libreoffice/filter/source/graphicfilter/idxf - dxftblrd.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 243 0.0 %
Date: 2012-12-27 Functions: 0 15 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       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/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      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 .
      18             :  */
      19             : 
      20             : 
      21             : #include <string.h>
      22             : #include <dxftblrd.hxx>
      23             : 
      24             : //----------------------------------DXFLType-----------------------------------
      25             : 
      26           0 : DXFLType::DXFLType()
      27             : {
      28           0 :     pSucc=NULL;
      29           0 :     sName[0]=0;
      30           0 :     nFlags=0;
      31           0 :     sDescription[0]=0;
      32           0 :     nDashCount=0;
      33           0 : }
      34             : 
      35           0 : void DXFLType::Read(DXFGroupReader & rDGR)
      36             : {
      37           0 :     long nDashIndex=-1;
      38             : 
      39           0 :     while (rDGR.Read()!=0)
      40             :     {
      41           0 :         switch (rDGR.GetG())
      42             :         {
      43             :         case  2:
      44           0 :             strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN );
      45           0 :             sName[DXF_MAX_STRING_LEN] = 0;
      46           0 :             break;
      47             :         case  3:
      48           0 :             strncpy( sDescription, rDGR.GetS(), DXF_MAX_STRING_LEN );
      49           0 :             sDescription[DXF_MAX_STRING_LEN] = 0;
      50           0 :             break;
      51             :         case 70:
      52           0 :             nFlags=rDGR.GetI();
      53           0 :             break;
      54             :         case 73:
      55           0 :             if (nDashIndex!=-1)
      56             :             {
      57           0 :                 rDGR.SetError();
      58           0 :                 return;
      59             :             }
      60           0 :             nDashCount=rDGR.GetI();
      61           0 :             if (nDashCount>DXF_MAX_DASH_COUNT)
      62             :             {
      63           0 :                 nDashCount=DXF_MAX_DASH_COUNT;
      64             :             }
      65           0 :             nDashIndex=0;
      66           0 :             break;
      67           0 :         case 40: fPatternLength=rDGR.GetF(); break;
      68             :         case 49:
      69           0 :             if (nDashCount==-1)
      70             :             {
      71           0 :                 rDGR.SetError();
      72           0 :                 return;
      73             :             }
      74           0 :             if (nDashIndex<nDashCount)
      75             :             {
      76           0 :                 fDash[nDashIndex++]=rDGR.GetF();
      77             :             }
      78           0 :             break;
      79             :         }
      80             :     }
      81             : }
      82             : 
      83             : //----------------------------------DXFLayer-----------------------------------
      84             : 
      85           0 : DXFLayer::DXFLayer()
      86             : {
      87           0 :     pSucc=NULL;
      88           0 :     sName[0]=0;
      89           0 :     nFlags=0;
      90           0 :     nColor=-1;
      91           0 :     sLineType[0]=0;
      92           0 : }
      93             : 
      94           0 : void DXFLayer::Read(DXFGroupReader & rDGR)
      95             : {
      96           0 :     while (rDGR.Read()!=0)
      97             :     {
      98           0 :         switch(rDGR.GetG())
      99             :         {
     100             :         case  2:
     101           0 :             strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN );
     102           0 :             sName[DXF_MAX_STRING_LEN] = 0;
     103           0 :             break;
     104             :         case  6:
     105           0 :             strncpy( sLineType, rDGR.GetS(), DXF_MAX_STRING_LEN );
     106           0 :             sLineType[DXF_MAX_STRING_LEN] = 0;
     107           0 :             break;
     108             :         case 70:
     109           0 :             nFlags=rDGR.GetI();
     110           0 :             break;
     111             :         case 62:
     112           0 :             nColor=rDGR.GetI();
     113           0 :             break;
     114             :         }
     115             :     }
     116           0 : }
     117             : 
     118             : //----------------------------------DXFStyle-----------------------------------
     119             : 
     120           0 : DXFStyle::DXFStyle()
     121             : {
     122           0 :     pSucc=NULL;
     123           0 :     sName[0]=0;
     124           0 :     nFlags=0;
     125           0 :     fHeight=0.0;
     126           0 :     fWidthFak=1.0;
     127           0 :     fOblAngle=0.0;
     128           0 :     nTextGenFlags=0;
     129           0 :     fLastHeightUsed=0.0;
     130           0 :     sPrimFontFile[0]=0;
     131           0 :     sBigFontFile[0]=0;
     132           0 : }
     133             : 
     134           0 : void DXFStyle::Read(DXFGroupReader & rDGR)
     135             : {
     136           0 :     while (rDGR.Read()!=0)
     137             :     {
     138           0 :         switch(rDGR.GetG())
     139             :         {
     140             :         case  2:
     141           0 :             strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN );
     142           0 :             sName[DXF_MAX_STRING_LEN] = 0;
     143           0 :             break;
     144             :         case  3:
     145           0 :             strncpy( sPrimFontFile, rDGR.GetS(), DXF_MAX_STRING_LEN );
     146           0 :             sPrimFontFile[DXF_MAX_STRING_LEN] = 0;
     147           0 :             break;
     148             :         case  4:
     149           0 :             strncpy( sBigFontFile, rDGR.GetS(), DXF_MAX_STRING_LEN );
     150           0 :             sBigFontFile[DXF_MAX_STRING_LEN] = 0;
     151           0 :             break;
     152             :         case 70:
     153           0 :             nFlags=rDGR.GetI();
     154           0 :             break;
     155             :         case 40:
     156           0 :             fHeight=rDGR.GetF();
     157           0 :             break;
     158             :         case 41:
     159           0 :             fWidthFak=rDGR.GetF();
     160           0 :             break;
     161             :         case 42:
     162           0 :             fLastHeightUsed=rDGR.GetF();
     163           0 :             break;
     164             :         case 50:
     165           0 :             fOblAngle=rDGR.GetF();
     166           0 :             break;
     167             :         case 71:
     168           0 :             nTextGenFlags=rDGR.GetI();
     169           0 :             break;
     170             :         }
     171             :     }
     172           0 : }
     173             : 
     174             : //----------------------------------DXFVPort-----------------------------------
     175             : 
     176           0 : DXFVPort::DXFVPort()
     177             : {
     178           0 :     pSucc=NULL;
     179             : 
     180           0 :     sName[0]=0;
     181           0 :     nFlags=0;
     182           0 :     fMinX=0;
     183           0 :     fMinY=0;
     184           0 :     fMaxX=0;
     185           0 :     fMaxY=0;
     186           0 :     fCenterX=0;
     187           0 :     fCenterY=0;
     188           0 :     fSnapBaseX=0;
     189           0 :     fSnapBaseY=0;
     190           0 :     fSnapSapcingX=0;
     191           0 :     fSnapSpacingY=0;
     192           0 :     fGridX=0;
     193           0 :     fGridY=0;
     194           0 :     aDirection=DXFVector(0,0,1);
     195           0 :     aTarget=DXFVector(0,0,0);
     196           0 :     fHeight=0;
     197           0 :     fAspectRatio=0;
     198           0 :     fLensLength=0;
     199           0 :     fFrontClipPlane=0;
     200           0 :     fBackClipPlane=0;
     201           0 :     fTwistAngle=0;
     202           0 :     nStatus=0;
     203           0 :     nID=0;
     204           0 :     nMode=0;
     205           0 :     nCircleZoomPercent=0;
     206           0 :     nFastZoom=0;
     207           0 :     nUCSICON=0;
     208           0 :     nSnap=0;
     209           0 :     nGrid=0;
     210           0 :     nSnapStyle=0;
     211           0 :     nSnapIsopair=0;
     212           0 : }
     213             : 
     214           0 : void DXFVPort::Read(DXFGroupReader & rDGR)
     215             : {
     216           0 :     while (rDGR.Read()!=0)
     217             :     {
     218           0 :         switch(rDGR.GetG())
     219             :         {
     220             :         case  2:
     221           0 :             strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN);
     222           0 :             sName[DXF_MAX_STRING_LEN] = 0;
     223           0 :             break;
     224           0 :         case 10: fMinX=rDGR.GetF(); break;
     225           0 :         case 11: fMaxX=rDGR.GetF(); break;
     226           0 :         case 12: fCenterX=rDGR.GetF(); break;
     227           0 :         case 13: fSnapBaseX=rDGR.GetF(); break;
     228           0 :         case 14: fSnapSapcingX=rDGR.GetF(); break;
     229           0 :         case 15: fGridX=rDGR.GetF(); break;
     230           0 :         case 16: aDirection.fx=rDGR.GetF(); break;
     231           0 :         case 17: aTarget.fx=rDGR.GetF(); break;
     232           0 :         case 20: fMinY=rDGR.GetF(); break;
     233           0 :         case 21: fMaxY=rDGR.GetF(); break;
     234           0 :         case 22: fCenterY=rDGR.GetF(); break;
     235           0 :         case 23: fSnapBaseY=rDGR.GetF(); break;
     236           0 :         case 24: fSnapSpacingY=rDGR.GetF(); break;
     237           0 :         case 25: fGridY=rDGR.GetF(); break;
     238           0 :         case 26: aDirection.fy=rDGR.GetF(); break;
     239           0 :         case 27: aTarget.fy=rDGR.GetF(); break;
     240           0 :         case 36: aDirection.fz=rDGR.GetF(); break;
     241           0 :         case 37: aTarget.fz=rDGR.GetF(); break;
     242           0 :         case 40: fHeight=rDGR.GetF(); break;
     243           0 :         case 41: fAspectRatio=rDGR.GetF(); break;
     244           0 :         case 42: fLensLength=rDGR.GetF(); break;
     245           0 :         case 43: fFrontClipPlane=rDGR.GetF(); break;
     246           0 :         case 44: fBackClipPlane=rDGR.GetF(); break;
     247           0 :         case 51: fTwistAngle=rDGR.GetF(); break;
     248           0 :         case 68: nStatus=rDGR.GetI(); break;
     249           0 :         case 69: nID=rDGR.GetI(); break;
     250           0 :         case 70: nFlags=rDGR.GetI(); break;
     251           0 :         case 71: nMode=rDGR.GetI(); break;
     252           0 :         case 72: nCircleZoomPercent=rDGR.GetI(); break;
     253           0 :         case 73: nFastZoom=rDGR.GetI(); break;
     254           0 :         case 74: nUCSICON=rDGR.GetI(); break;
     255           0 :         case 75: nSnap=rDGR.GetI(); break;
     256           0 :         case 76: nGrid=rDGR.GetI(); break;
     257           0 :         case 77: nSnapStyle=rDGR.GetI(); break;
     258           0 :         case 78: nSnapIsopair=rDGR.GetI(); break;
     259             :         }
     260             :     }
     261           0 : }
     262             : 
     263             : //----------------------------------DXFTables----------------------------------
     264             : 
     265             : 
     266           0 : DXFTables::DXFTables()
     267             : {
     268           0 :     pLTypes=NULL;
     269           0 :     pLayers=NULL;
     270           0 :     pStyles=NULL;
     271           0 :     pVPorts=NULL;
     272           0 : }
     273             : 
     274             : 
     275           0 : DXFTables::~DXFTables()
     276             : {
     277           0 :     Clear();
     278           0 : }
     279             : 
     280             : 
     281           0 : void DXFTables::Read(DXFGroupReader & rDGR)
     282             : {
     283             :     DXFLType * * ppLT, * pLT;
     284             :     DXFLayer * * ppLa, * pLa;
     285             :     DXFStyle * * ppSt, * pSt;
     286             :     DXFVPort * * ppVP, * pVP;
     287             : 
     288           0 :     ppLT=&pLTypes;
     289           0 :     while(*ppLT!=NULL) ppLT=&((*ppLT)->pSucc);
     290             : 
     291           0 :     ppLa=&pLayers;
     292           0 :     while(*ppLa!=NULL) ppLa=&((*ppLa)->pSucc);
     293             : 
     294           0 :     ppSt=&pStyles;
     295           0 :     while(*ppSt!=NULL) ppSt=&((*ppSt)->pSucc);
     296             : 
     297           0 :     ppVP=&pVPorts;
     298           0 :     while(*ppVP!=NULL) ppVP=&((*ppVP)->pSucc);
     299             : 
     300           0 :     for (;;) {
     301           0 :         while (rDGR.GetG()!=0) rDGR.Read();
     302           0 :         if (strcmp(rDGR.GetS(),"EOF")==0 ||
     303           0 :             strcmp(rDGR.GetS(),"ENDSEC")==0) break;
     304           0 :         else if (strcmp(rDGR.GetS(),"LTYPE")==0) {
     305           0 :             pLT=new DXFLType;
     306           0 :             pLT->Read(rDGR);
     307           0 :             *ppLT=pLT;
     308           0 :             ppLT=&(pLT->pSucc);
     309             :         }
     310           0 :         else if (strcmp(rDGR.GetS(),"LAYER")==0) {
     311           0 :             pLa=new DXFLayer;
     312           0 :             pLa->Read(rDGR);
     313           0 :             *ppLa=pLa;
     314           0 :             ppLa=&(pLa->pSucc);
     315             :         }
     316           0 :         else if (strcmp(rDGR.GetS(),"STYLE")==0) {
     317           0 :             pSt=new DXFStyle;
     318           0 :             pSt->Read(rDGR);
     319           0 :             *ppSt=pSt;
     320           0 :             ppSt=&(pSt->pSucc);
     321             :         }
     322           0 :         else if (strcmp(rDGR.GetS(),"VPORT")==0) {
     323           0 :             pVP=new DXFVPort;
     324           0 :             pVP->Read(rDGR);
     325           0 :             *ppVP=pVP;
     326           0 :             ppVP=&(pVP->pSucc);
     327             :         }
     328           0 :         else rDGR.Read();
     329             :     }
     330           0 : }
     331             : 
     332             : 
     333           0 : void DXFTables::Clear()
     334             : {
     335             :     DXFLType * pLT;
     336             :     DXFLayer * pLa;
     337             :     DXFStyle * pSt;
     338             :     DXFVPort * pVP;
     339             : 
     340           0 :     while (pStyles!=NULL) {
     341           0 :         pSt=pStyles;
     342           0 :         pStyles=pSt->pSucc;
     343           0 :         delete pSt;
     344             :     }
     345           0 :     while (pLayers!=NULL) {
     346           0 :         pLa=pLayers;
     347           0 :         pLayers=pLa->pSucc;
     348           0 :         delete pLa;
     349             :     }
     350           0 :     while (pLTypes!=NULL) {
     351           0 :         pLT=pLTypes;
     352           0 :         pLTypes=pLT->pSucc;
     353           0 :         delete pLT;
     354             :     }
     355           0 :     while (pVPorts!=NULL) {
     356           0 :         pVP=pVPorts;
     357           0 :         pVPorts=pVP->pSucc;
     358           0 :         delete pVP;
     359             :     }
     360           0 : }
     361             : 
     362             : 
     363           0 : DXFLType * DXFTables::SearchLType(const char * pName) const
     364             : {
     365             :     DXFLType * p;
     366           0 :     for (p=pLTypes; p!=NULL; p=p->pSucc) {
     367           0 :         if (strcmp(pName,p->sName)==0) break;
     368             :     }
     369           0 :     return p;
     370             : }
     371             : 
     372             : 
     373           0 : DXFLayer * DXFTables::SearchLayer(const char * pName) const
     374             : {
     375             :     DXFLayer * p;
     376           0 :     for (p=pLayers; p!=NULL; p=p->pSucc) {
     377           0 :         if (strcmp(pName,p->sName)==0) break;
     378             :     }
     379           0 :     return p;
     380             : }
     381             : 
     382             : 
     383           0 : DXFVPort * DXFTables::SearchVPort(const char * pName) const
     384             : {
     385             :     DXFVPort * p;
     386           0 :     for (p=pVPorts; p!=NULL; p=p->pSucc) {
     387           0 :         if (strcmp(pName,p->sName)==0) break;
     388             :     }
     389           0 :     return p;
     390             : }
     391             : 
     392             : 
     393             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10