diff options
author | Andras Timar <andras.timar@collabora.com> | 2014-01-06 19:23:01 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2014-04-22 23:12:13 +0200 |
commit | e0feba8b05d4bf6a93ca1b250af2e08afbd5e680 (patch) | |
tree | d496441a5b84252cfb8510063889b1b9fe678e58 | |
parent | 49e5bdc10ca7e1c7fde0353f98cb454c1b22c8e7 (diff) |
EMF/WMF: parse line cap and line join
Change-Id: I081ae9c24e48912631dcfe4aba8a06ff2680aaf5
-rw-r--r-- | vcl/source/filter/wmf/enhwmf.cxx | 28 | ||||
-rw-r--r-- | vcl/source/filter/wmf/winwmf.cxx | 28 |
2 files changed, 54 insertions, 2 deletions
diff --git a/vcl/source/filter/wmf/enhwmf.cxx b/vcl/source/filter/wmf/enhwmf.cxx index de8b7801e184..813e1e6082f0 100644 --- a/vcl/source/filter/wmf/enhwmf.cxx +++ b/vcl/source/filter/wmf/enhwmf.cxx @@ -730,7 +730,7 @@ sal_Bool EnhWMFReader::ReadEnhWMF() sal_Bool bTransparent = sal_False; sal_uInt16 nDashCount = 0; sal_uInt16 nDotCount = 0; - switch( nStyle ) + switch( nStyle & 0xFF ) { case PS_DASHDOTDOT : nDotCount++; @@ -751,6 +751,32 @@ sal_Bool EnhWMFReader::ReadEnhWMF() case PS_SOLID : aLineInfo.SetStyle( LINE_SOLID ); } + switch( nStyle & 0xF00 ) + { + case PS_ENDCAP_ROUND : + aLineInfo.SetLineCap( com::sun::star::drawing::LineCap_ROUND ); + break; + case PS_ENDCAP_SQUARE : + aLineInfo.SetLineCap( com::sun::star::drawing::LineCap_SQUARE ); + break; + case PS_ENDCAP_FLAT : + default : + aLineInfo.SetLineCap( com::sun::star::drawing::LineCap_BUTT ); + } + switch( nStyle & 0xF000 ) + { + case PS_JOIN_ROUND : + aLineInfo.SetLineJoin ( basegfx::B2DLINEJOIN_ROUND ); + break; + case PS_JOIN_MITER : + aLineInfo.SetLineJoin ( basegfx::B2DLINEJOIN_MITER ); + break; + case PS_JOIN_BEVEL : + aLineInfo.SetLineJoin ( basegfx::B2DLINEJOIN_BEVEL ); + break; + default : + aLineInfo.SetLineJoin ( basegfx::B2DLINEJOIN_NONE ); + } if ( nDashCount | nDotCount ) { aLineInfo.SetStyle( LINE_DASH ); diff --git a/vcl/source/filter/wmf/winwmf.cxx b/vcl/source/filter/wmf/winwmf.cxx index 6c5093dadc51..bef489f60327 100644 --- a/vcl/source/filter/wmf/winwmf.cxx +++ b/vcl/source/filter/wmf/winwmf.cxx @@ -750,7 +750,7 @@ void WMFReader::ReadRecordParams( sal_uInt16 nFunc ) sal_Bool bTransparent = sal_False; sal_uInt16 nDashCount = 0; sal_uInt16 nDotCount = 0; - switch( nStyle ) + switch( nStyle & 0xFF ) { case PS_DASHDOTDOT : nDotCount++; @@ -771,6 +771,32 @@ void WMFReader::ReadRecordParams( sal_uInt16 nFunc ) case PS_SOLID : aLineInfo.SetStyle( LINE_SOLID ); } + switch( nStyle & 0xF00 ) + { + case PS_ENDCAP_ROUND : + aLineInfo.SetLineCap( com::sun::star::drawing::LineCap_ROUND ); + break; + case PS_ENDCAP_SQUARE : + aLineInfo.SetLineCap( com::sun::star::drawing::LineCap_SQUARE ); + break; + case PS_ENDCAP_FLAT : + default : + aLineInfo.SetLineCap( com::sun::star::drawing::LineCap_BUTT ); + } + switch( nStyle & 0xF000 ) + { + case PS_JOIN_ROUND : + aLineInfo.SetLineJoin ( basegfx::B2DLINEJOIN_ROUND ); + break; + case PS_JOIN_MITER : + aLineInfo.SetLineJoin ( basegfx::B2DLINEJOIN_MITER ); + break; + case PS_JOIN_BEVEL : + aLineInfo.SetLineJoin ( basegfx::B2DLINEJOIN_BEVEL ); + break; + default : + aLineInfo.SetLineJoin ( basegfx::B2DLINEJOIN_NONE ); + } if ( nDashCount | nDotCount ) { aLineInfo.SetStyle( LINE_DASH ); |