diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-02-28 20:45:49 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-02-28 20:47:57 +0000 |
commit | b018021d5a5e644f1d8aafd20432562621b33554 (patch) | |
tree | 7b203953f1520d328eb82d1bff874ee1786cf761 /filter/source/graphicfilter | |
parent | 0b849247e11729707d46c214f53da7d4eb22c7e0 (diff) |
ofz: timeout on clamping big double to 0..360
Change-Id: Ica2aedc5275e5f523302f5793e3f3816b3ff65b4
Diffstat (limited to 'filter/source/graphicfilter')
-rw-r--r-- | filter/source/graphicfilter/idxf/dxf2mtf.cxx | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/filter/source/graphicfilter/idxf/dxf2mtf.cxx b/filter/source/graphicfilter/idxf/dxf2mtf.cxx index 9255fb9f5ec2..64ce94ce6068 100644 --- a/filter/source/graphicfilter/idxf/dxf2mtf.cxx +++ b/filter/source/graphicfilter/idxf/dxf2mtf.cxx @@ -296,19 +296,18 @@ void DXF2GDIMetaFile::DrawCircleEntity(const DXFCircleEntity & rE, const DXFTran } } - void DXF2GDIMetaFile::DrawArcEntity(const DXFArcEntity & rE, const DXFTransform & rTransform) { - double frx,fry,fA1,fdA; + double frx,fry; sal_uInt16 nPoints,i; DXFVector aC; Point aPS,aPE; if (!SetLineAttribute(rE)) return; - fA1=rE.fStart; - fdA=rE.fEnd-fA1; - while (fdA>=360.0) fdA-=360.0; - while (fdA<=0) fdA+=360.0; + double fA1=rE.fStart; + double fdA=rE.fEnd-fA1; + fdA = fmod(fdA, 360.0); + if (fdA<=0) fdA+=360.0; rTransform.Transform(rE.aP0,aC); if (rE.fThickness==0 && fdA>5.0 && rTransform.TransCircleToEllipse(rE.fRadius,frx,fry)) { DXFVector aVS(cos(fA1/180.0*3.14159265359),sin(fA1/180.0*3.14159265359),0.0); @@ -359,7 +358,6 @@ void DXF2GDIMetaFile::DrawArcEntity(const DXFArcEntity & rE, const DXFTransform } } - void DXF2GDIMetaFile::DrawTraceEntity(const DXFTraceEntity & rE, const DXFTransform & rTransform) { if (SetLineAttribute(rE)) { |