diff options
Diffstat (limited to 'filter/source/graphicfilter/idxf/dxf2mtf.cxx')
-rw-r--r-- | filter/source/graphicfilter/idxf/dxf2mtf.cxx | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/filter/source/graphicfilter/idxf/dxf2mtf.cxx b/filter/source/graphicfilter/idxf/dxf2mtf.cxx index c22e0a4b4b7e..e4e9f1782c00 100644 --- a/filter/source/graphicfilter/idxf/dxf2mtf.cxx +++ b/filter/source/graphicfilter/idxf/dxf2mtf.cxx @@ -52,9 +52,10 @@ long DXF2GDIMetaFile::GetEntityColor(const DXFBasicEntity & rE) nColor=rE.nColor; if (nColor==256) { - if (rE.sLayer[0]=='0' && rE.sLayer[1]==0) nColor=nParentLayerColor; - else { - pLayer=pDXF->aTables.SearchLayer(rE.sLayer); + if (rE.m_sLayer.getLength() < 2) { + nColor=nParentLayerColor; + } else { + pLayer=pDXF->aTables.SearchLayer(rE.m_sLayer); if (pLayer!=NULL) nColor=pLayer->nColor; else nColor=nParentLayerColor; } @@ -63,12 +64,12 @@ long DXF2GDIMetaFile::GetEntityColor(const DXFBasicEntity & rE) return nColor; } -DXFLineInfo DXF2GDIMetaFile::LTypeToDXFLineInfo(const char * sLineType) +DXFLineInfo DXF2GDIMetaFile::LTypeToDXFLineInfo(OString const& rLineType) { const DXFLType * pLT; DXFLineInfo aDXFLineInfo; - pLT=pDXF->aTables.SearchLType(sLineType); + pLT = pDXF->aTables.SearchLType(rLineType); if (pLT==NULL || pLT->nDashCount == 0) { aDXFLineInfo.eStyle = LINE_SOLID; } @@ -125,18 +126,23 @@ DXFLineInfo DXF2GDIMetaFile::GetEntityDXFLineInfo(const DXFBasicEntity & rE) aDXFLineInfo.fDotLen = 0; aDXFLineInfo.fDistance = 0; - if (strcmp(rE.sLineType,"BYLAYER")==0) { - if (rE.sLayer[0]=='0' && rE.sLayer[1]==0) aDXFLineInfo=aParentLayerDXFLineInfo; - else { - pLayer=pDXF->aTables.SearchLayer(rE.sLayer); - if (pLayer!=NULL) aDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType); + if (rE.m_sLineType == "BYLAYER") { + if (rE.m_sLayer.getLength() < 2) { + aDXFLineInfo=aParentLayerDXFLineInfo; + } else { + pLayer=pDXF->aTables.SearchLayer(rE.m_sLayer); + if (pLayer!=NULL) { + aDXFLineInfo = LTypeToDXFLineInfo(pLayer->m_sLineType); + } else aDXFLineInfo=aParentLayerDXFLineInfo; } } - else if (strcmp(rE.sLineType,"BYBLOCK")==0) { + else if (rE.m_sLineType == "BYBLOCK") { aDXFLineInfo=aBlockDXFLineInfo; } - else aDXFLineInfo=LTypeToDXFLineInfo(rE.sLineType); + else { + aDXFLineInfo = LTypeToDXFLineInfo(rE.m_sLineType); + } return aDXFLineInfo; } @@ -415,7 +421,6 @@ void DXF2GDIMetaFile::DrawTextEntity(const DXFTextEntity & rE, const DXFTransfor double fA; sal_uInt16 nHeight; short nAng; - rtl::OString aStr( rE.sText ); DXFTransform aT( DXFTransform(rE.fXScale,rE.fHeight,1.0,rE.fRotAngle,rE.aP0), rTransform ); aT.TransDir(DXFVector(0,1,0),aV); nHeight=(sal_uInt16)(aV.Abs()+0.5); @@ -424,7 +429,8 @@ void DXF2GDIMetaFile::DrawTextEntity(const DXFTextEntity & rE, const DXFTransfor aT.TransDir(DXFVector(1,0,0),aV); if ( SetFontAttribute( rE,nAng, nHeight, aV. Abs() ) ) { - rtl::OUString aUString(rtl::OStringToOUString(aStr, pDXF->getTextEncoding())); + rtl::OUString const aUString( + rtl::OStringToOUString(rE.m_sText, pDXF->getTextEncoding())); aT.Transform( DXFVector( 0, 0, 0 ), aPt ); pVirDev->DrawText( aPt, aUString ); } @@ -434,7 +440,7 @@ void DXF2GDIMetaFile::DrawTextEntity(const DXFTextEntity & rE, const DXFTransfor void DXF2GDIMetaFile::DrawInsertEntity(const DXFInsertEntity & rE, const DXFTransform & rTransform) { const DXFBlock * pB; - pB=pDXF->aBlocks.Search(rE.sName); + pB=pDXF->aBlocks.Search(rE.m_sName); if (pB!=NULL) { DXFTransform aDXFTransform1(1.0,1.0,1.0,DXFVector(0.0,0.0,0.0)-pB->aBasePoint); DXFTransform aDXFTransform2(rE.fXScale,rE.fYScale,rE.fZScale,rE.fRotAngle,rE.aP0); @@ -450,11 +456,11 @@ void DXF2GDIMetaFile::DrawInsertEntity(const DXFInsertEntity & rE, const DXFTran aSavedParentLayerDXFLineInfo=aParentLayerDXFLineInfo; nBlockColor=GetEntityColor(rE); aBlockDXFLineInfo=GetEntityDXFLineInfo(rE); - if (rE.sLayer[0]!='0' || rE.sLayer[1]!=0) { - DXFLayer * pLayer=pDXF->aTables.SearchLayer(rE.sLayer); + if (rE.m_sLayer.getLength() > 1) { + DXFLayer * pLayer=pDXF->aTables.SearchLayer(rE.m_sLayer); if (pLayer!=NULL) { nParentLayerColor=pLayer->nColor; - aParentLayerDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType); + aParentLayerDXFLineInfo = LTypeToDXFLineInfo(pLayer->m_sLineType); } } DrawEntities(*pB,aT); @@ -474,7 +480,6 @@ void DXF2GDIMetaFile::DrawAttribEntity(const DXFAttribEntity & rE, const DXFTran double fA; sal_uInt16 nHeight; short nAng; - rtl::OString aStr( rE.sText ); DXFTransform aT( DXFTransform( rE.fXScale, rE.fHeight, 1.0, rE.fRotAngle, rE.aP0 ), rTransform ); aT.TransDir(DXFVector(0,1,0),aV); nHeight=(sal_uInt16)(aV.Abs()+0.5); @@ -483,7 +488,8 @@ void DXF2GDIMetaFile::DrawAttribEntity(const DXFAttribEntity & rE, const DXFTran aT.TransDir(DXFVector(1,0,0),aV); if (SetFontAttribute(rE,nAng,nHeight,aV.Abs())) { - rtl::OUString aUString(rtl::OStringToOUString(aStr, pDXF->getTextEncoding())); + rtl::OUString const aUString( + rtl::OStringToOUString(rE.m_sText, pDXF->getTextEncoding())); aT.Transform( DXFVector( 0, 0, 0 ), aPt ); pVirDev->DrawText( aPt, aUString ); } @@ -645,7 +651,7 @@ void DXF2GDIMetaFile::Draw3DFaceEntity(const DXF3DFaceEntity & rE, const DXFTran void DXF2GDIMetaFile::DrawDimensionEntity(const DXFDimensionEntity & rE, const DXFTransform & rTransform) { const DXFBlock * pB; - pB=pDXF->aBlocks.Search(rE.sPseudoBlock); + pB=pDXF->aBlocks.Search(rE.m_sPseudoBlock); if (pB!=NULL) { DXFTransform aT( DXFTransform(1.0,1.0,1.0,DXFVector(0.0,0.0,0.0)-pB->aBasePoint), @@ -659,11 +665,11 @@ void DXF2GDIMetaFile::DrawDimensionEntity(const DXFDimensionEntity & rE, const D aSavedParentLayerDXFLineInfo=aParentLayerDXFLineInfo; nBlockColor=GetEntityColor(rE); aBlockDXFLineInfo=GetEntityDXFLineInfo(rE); - if (rE.sLayer[0]!='0' || rE.sLayer[1]!=0) { - DXFLayer * pLayer=pDXF->aTables.SearchLayer(rE.sLayer); + if (rE.m_sLayer.getLength() > 1) { + DXFLayer * pLayer=pDXF->aTables.SearchLayer(rE.m_sLayer); if (pLayer!=NULL) { nParentLayerColor=pLayer->nColor; - aParentLayerDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType); + aParentLayerDXFLineInfo = LTypeToDXFLineInfo(pLayer->m_sLineType); } } DrawEntities(*pB,aT); @@ -787,7 +793,7 @@ sal_Bool DXF2GDIMetaFile::Convert(const DXFRepresentation & rDXF, GDIMetaFile & pLayer=pDXF->aTables.SearchLayer("0"); if (pLayer!=NULL) { nParentLayerColor=pLayer->nColor & 0xff; - aParentLayerDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType); + aParentLayerDXFLineInfo = LTypeToDXFLineInfo(pLayer->m_sLineType); } else { nParentLayerColor=7; |