summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/gdi/lineinfo.cxx55
-rw-r--r--vcl/source/outdev/polyline.cxx8
2 files changed, 37 insertions, 26 deletions
diff --git a/vcl/source/gdi/lineinfo.cxx b/vcl/source/gdi/lineinfo.cxx
index 9490a0383133..b6619406737b 100644
--- a/vcl/source/gdi/lineinfo.cxx
+++ b/vcl/source/gdi/lineinfo.cxx
@@ -53,7 +53,7 @@ inline bool ImplLineInfo::operator==( const ImplLineInfo& rB ) const
}
-LineInfo::LineInfo( LineStyle eStyle, sal_Int32 nWidth ) : mpImplLineInfo()
+LineInfo::LineInfo( LineStyle eStyle, double nWidth ) : mpImplLineInfo()
{
mpImplLineInfo->meStyle = eStyle;
mpImplLineInfo->mnWidth = nWidth;
@@ -79,7 +79,7 @@ void LineInfo::SetStyle( LineStyle eStyle )
mpImplLineInfo->meStyle = eStyle;
}
-void LineInfo::SetWidth( sal_Int32 nWidth )
+void LineInfo::SetWidth( double nWidth )
{
mpImplLineInfo->mnWidth = nWidth;
}
@@ -89,7 +89,7 @@ void LineInfo::SetDashCount( sal_uInt16 nDashCount )
mpImplLineInfo->mnDashCount = nDashCount;
}
-void LineInfo::SetDashLen( sal_Int32 nDashLen )
+void LineInfo::SetDashLen( double nDashLen )
{
mpImplLineInfo->mnDashLen = nDashLen;
}
@@ -99,31 +99,24 @@ void LineInfo::SetDotCount( sal_uInt16 nDotCount )
mpImplLineInfo->mnDotCount = nDotCount;
}
-void LineInfo::SetDotLen( sal_Int32 nDotLen )
+void LineInfo::SetDotLen( double nDotLen )
{
mpImplLineInfo->mnDotLen = nDotLen;
}
-void LineInfo::SetDistance( sal_Int32 nDistance )
+void LineInfo::SetDistance( double nDistance )
{
mpImplLineInfo->mnDistance = nDistance;
}
void LineInfo::SetLineJoin(basegfx::B2DLineJoin eLineJoin)
{
-
- if(eLineJoin != mpImplLineInfo->meLineJoin)
- {
- mpImplLineInfo->meLineJoin = eLineJoin;
- }
+ mpImplLineInfo->meLineJoin = eLineJoin;
}
void LineInfo::SetLineCap(css::drawing::LineCap eLineCap)
{
- if(eLineCap != mpImplLineInfo->meLineCap)
- {
- mpImplLineInfo->meLineCap = eLineCap;
- }
+ mpImplLineInfo->meLineCap = eLineCap;
}
bool LineInfo::IsDefault() const
@@ -139,7 +132,8 @@ SvStream& ReadLineInfo( SvStream& rIStm, LineInfo& rLineInfo )
sal_uInt16 nTmp16(0);
sal_Int32 nTmp32(0);
- rIStm.ReadUInt16( nTmp16 ); rLineInfo.mpImplLineInfo->meStyle = static_cast<LineStyle>(nTmp16);
+ rIStm.ReadUInt16( nTmp16 );
+ rLineInfo.mpImplLineInfo->meStyle = static_cast<LineStyle>(nTmp16);
rIStm.ReadInt32( nTmp32 );
rLineInfo.mpImplLineInfo->mnWidth = nTmp32;
@@ -157,13 +151,24 @@ SvStream& ReadLineInfo( SvStream& rIStm, LineInfo& rLineInfo )
if( aCompat.GetVersion() >= 3 )
{
// version 3
- rIStm.ReadUInt16( nTmp16 ); rLineInfo.mpImplLineInfo->meLineJoin = static_cast<basegfx::B2DLineJoin>(nTmp16);
+ rIStm.ReadUInt16( nTmp16 );
+ rLineInfo.mpImplLineInfo->meLineJoin = static_cast<basegfx::B2DLineJoin>(nTmp16);
}
if( aCompat.GetVersion() >= 4 )
{
// version 4
- rIStm.ReadUInt16( nTmp16 ); rLineInfo.mpImplLineInfo->meLineCap = static_cast<css::drawing::LineCap>(nTmp16);
+ rIStm.ReadUInt16( nTmp16 );
+ rLineInfo.mpImplLineInfo->meLineCap = static_cast<css::drawing::LineCap>(nTmp16);
+ }
+
+ if( aCompat.GetVersion() >= 5 )
+ {
+ // version 5
+ rIStm.ReadDouble( rLineInfo.mpImplLineInfo->mnWidth );
+ rIStm.ReadDouble( rLineInfo.mpImplLineInfo->mnDashLen );
+ rIStm.ReadDouble( rLineInfo.mpImplLineInfo->mnDotLen );
+ rIStm.ReadDouble( rLineInfo.mpImplLineInfo->mnDistance );
}
return rIStm;
@@ -171,18 +176,18 @@ SvStream& ReadLineInfo( SvStream& rIStm, LineInfo& rLineInfo )
SvStream& WriteLineInfo( SvStream& rOStm, const LineInfo& rLineInfo )
{
- VersionCompat aCompat( rOStm, StreamMode::WRITE, 4 );
+ VersionCompat aCompat( rOStm, StreamMode::WRITE, 5 );
// version 1
rOStm.WriteUInt16( static_cast<sal_uInt16>(rLineInfo.mpImplLineInfo->meStyle) )
- .WriteInt32( rLineInfo.mpImplLineInfo->mnWidth );
+ .WriteInt32( basegfx::fround( rLineInfo.mpImplLineInfo->mnWidth ));
// since version2
rOStm.WriteUInt16( rLineInfo.mpImplLineInfo->mnDashCount )
- .WriteInt32( rLineInfo.mpImplLineInfo->mnDashLen );
+ .WriteInt32( basegfx::fround( rLineInfo.mpImplLineInfo->mnDashLen ));
rOStm.WriteUInt16( rLineInfo.mpImplLineInfo->mnDotCount )
- .WriteInt32( rLineInfo.mpImplLineInfo->mnDotLen );
- rOStm.WriteInt32( rLineInfo.mpImplLineInfo->mnDistance );
+ .WriteInt32( basegfx::fround( rLineInfo.mpImplLineInfo->mnDotLen ));
+ rOStm.WriteInt32( basegfx::fround( rLineInfo.mpImplLineInfo->mnDistance ));
// since version3
rOStm.WriteUInt16( static_cast<sal_uInt16>(rLineInfo.mpImplLineInfo->meLineJoin) );
@@ -190,6 +195,12 @@ SvStream& WriteLineInfo( SvStream& rOStm, const LineInfo& rLineInfo )
// since version4
rOStm.WriteUInt16( static_cast<sal_uInt16>(rLineInfo.mpImplLineInfo->meLineCap) );
+ // since version5
+ rOStm.WriteDouble( rLineInfo.mpImplLineInfo->mnWidth );
+ rOStm.WriteDouble( rLineInfo.mpImplLineInfo->mnDashLen );
+ rOStm.WriteDouble( rLineInfo.mpImplLineInfo->mnDotLen );
+ rOStm.WriteDouble( rLineInfo.mpImplLineInfo->mnDistance );
+
return rOStm;
}
diff --git a/vcl/source/outdev/polyline.cxx b/vcl/source/outdev/polyline.cxx
index a79ebf74ab6f..b9a869a3a940 100644
--- a/vcl/source/outdev/polyline.cxx
+++ b/vcl/source/outdev/polyline.cxx
@@ -121,7 +121,7 @@ void OutputDevice::DrawPolyLine( const tools::Polygon& rPoly, const LineInfo& rL
{
DrawPolyLine(
rPoly.getB2DPolygon(),
- static_cast< double >(rLineInfo.GetWidth()),
+ rLineInfo.GetWidth(),
rLineInfo.GetLineJoin(),
rLineInfo.GetLineCap(),
basegfx::deg2rad(15.0) /* default fMiterMinimumAngle, value not available in LineInfo */);
@@ -146,7 +146,7 @@ void OutputDevice::DrawPolyLine( const basegfx::B2DPolygon& rB2DPolygon,
{
LineInfo aLineInfo;
if( fLineWidth != 0.0 )
- aLineInfo.SetWidth( static_cast<tools::Long>(fLineWidth+0.5) );
+ aLineInfo.SetWidth( fLineWidth );
const tools::Polygon aToolsPolygon( rB2DPolygon );
mpMetaFile->AddAction( new MetaPolyLineAction( aToolsPolygon, aLineInfo ) );
@@ -233,7 +233,7 @@ void OutputDevice::DrawPolyLine( const basegfx::B2DPolygon& rB2DPolygon,
const tools::Polygon aToolsPolygon( rB2DPolygon );
LineInfo aLineInfo;
if( fLineWidth != 0.0 )
- aLineInfo.SetWidth( static_cast<tools::Long>(fLineWidth+0.5) );
+ aLineInfo.SetWidth( fLineWidth );
drawPolyLine( aToolsPolygon, aLineInfo );
}
@@ -307,7 +307,7 @@ bool OutputDevice::DrawPolyLineDirect(
{
LineInfo aLineInfo;
if( fLineWidth != 0.0 )
- aLineInfo.SetWidth( static_cast<tools::Long>(fLineWidth+0.5) );
+ aLineInfo.SetWidth( fLineWidth );
// Transport known information, might be needed
aLineInfo.SetLineJoin(eLineJoin);
aLineInfo.SetLineCap(eLineCap);