From 356a5921f0a0a2295d55cbee2bf1570f357bd686 Mon Sep 17 00:00:00 2001 From: Andras Timar Date: Mon, 6 Jan 2014 19:23:01 +0100 Subject: EMF/WMF: parse line cap and line join Change-Id: I081ae9c24e48912631dcfe4aba8a06ff2680aaf5 --- vcl/source/filter/wmf/enhwmf.cxx | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/vcl/source/filter/wmf/enhwmf.cxx b/vcl/source/filter/wmf/enhwmf.cxx index 3ad448193a58..5cd9c0bdee72 100644 --- a/vcl/source/filter/wmf/enhwmf.cxx +++ b/vcl/source/filter/wmf/enhwmf.cxx @@ -732,7 +732,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++; @@ -753,6 +753,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 ); -- cgit v1.2.3