From 6f2fe8bbc4909f457509391522cae4b8084e69e5 Mon Sep 17 00:00:00 2001 From: Bartosz Kosiorek Date: Wed, 24 Mar 2021 14:45:43 +0100 Subject: WMF/EMF Convert all index type of Objects to unsigned Based on WMF and EMF documentation, all indexes should be unsigned. With this commit it was applied, which simplifies code. Change-Id: I3257da7e595ace45622c6d865fd4b034dc605cb8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113039 Tested-by: Jenkins Reviewed-by: Bartosz Kosiorek --- emfio/inc/mtftools.hxx | 6 +++--- emfio/source/reader/mtftools.cxx | 26 +++++++++++++++++++------- emfio/source/reader/wmfreader.cxx | 8 ++++---- 3 files changed, 26 insertions(+), 14 deletions(-) (limited to 'emfio') diff --git a/emfio/inc/mtftools.hxx b/emfio/inc/mtftools.hxx index 286442767d3a..2d31fe4ef4ad 100644 --- a/emfio/inc/mtftools.hxx +++ b/emfio/inc/mtftools.hxx @@ -605,11 +605,11 @@ namespace emfio void SetTextAlign(sal_uInt32 nAlign); void CreateObject(std::unique_ptr pObject); - void CreateObjectIndexed(sal_Int32 nIndex, std::unique_ptr pObject); + void CreateObjectIndexed(sal_uInt32 nIndex, std::unique_ptr pObject); void CreateObject(); - void DeleteObject(sal_Int32 nIndex); - void SelectObject(sal_Int32 nIndex); + void DeleteObject(sal_uInt32 nIndex); + void SelectObject(sal_uInt32 nIndex); rtl_TextEncoding GetCharSet() const { return maFont.GetCharSet(); }; const vcl::Font& GetFont() const { return maFont; } void SetTextLayoutMode(ComplexTextLayoutFlags nLayoutMode); diff --git a/emfio/source/reader/mtftools.cxx b/emfio/source/reader/mtftools.cxx index fdb8496f1563..5a2f5d1ca806 100644 --- a/emfio/source/reader/mtftools.cxx +++ b/emfio/source/reader/mtftools.cxx @@ -782,10 +782,11 @@ namespace emfio return rPolyPolygon; } - void MtfTools::SelectObject( sal_Int32 nIndex ) + void MtfTools::SelectObject( sal_uInt32 nIndex ) { if ( nIndex & ENHMETA_STOCK_OBJECT ) { + SAL_INFO ( "emfio", "\t\t ENHMETA_STOCK_OBJECT, StockObject Enumeration: 0x" << std::hex << nIndex ); sal_uInt16 nStockId = static_cast(nIndex); switch( nStockId ) { @@ -802,12 +803,17 @@ namespace emfio } break; case GRAY_BRUSH : - case DKGRAY_BRUSH : { maFillStyle = WinMtfFillStyle( COL_GRAY ); mbFillStyleSelected = true; } break; + case DKGRAY_BRUSH : + { + maFillStyle = WinMtfFillStyle( COL_GRAY7 ); + mbFillStyleSelected = true; + } + break; case BLACK_BRUSH : { maFillStyle = WinMtfFillStyle( COL_BLACK ); @@ -845,13 +851,19 @@ namespace emfio GDIObj *pGDIObj = nullptr; - if ( o3tl::make_unsigned(nIndex) < mvGDIObj.size() ) + if ( nIndex < mvGDIObj.size() ) pGDIObj = mvGDIObj[ nIndex ].get(); if ( pGDIObj ) { + + SAL_INFO ( "emfio", "\t\t Index: " << nIndex ); if (const auto pen = dynamic_cast(pGDIObj)) + { maLineStyle = *pen; + SAL_INFO ( "emfio", "\t Line Style, Color: 0x" << std::hex << maLineStyle.aLineColor + << ", Weight: " << maLineStyle.aLineInfo.GetWidth() ); + } else if (const auto brush = dynamic_cast( pGDIObj)) { @@ -958,7 +970,7 @@ namespace emfio mvGDIObj[ nIndex ] = std::move(pObject); } - void MtfTools::CreateObjectIndexed( sal_Int32 nIndex, std::unique_ptr pObject ) + void MtfTools::CreateObjectIndexed( sal_uInt32 nIndex, std::unique_ptr pObject ) { if ( ( nIndex & ENHMETA_STOCK_OBJECT ) != 0 ) return; @@ -989,7 +1001,7 @@ namespace emfio } } } - if ( o3tl::make_unsigned(nIndex) >= mvGDIObj.size() ) + if ( nIndex >= mvGDIObj.size() ) ImplResizeObjectArry( nIndex + 16 ); mvGDIObj[ nIndex ] = std::move(pObject); @@ -1000,11 +1012,11 @@ namespace emfio CreateObject(std::make_unique()); } - void MtfTools::DeleteObject( sal_Int32 nIndex ) + void MtfTools::DeleteObject( sal_uInt32 nIndex ) { if ( ( nIndex & ENHMETA_STOCK_OBJECT ) == 0 ) { - if ( o3tl::make_unsigned(nIndex) < mvGDIObj.size() ) + if ( nIndex < mvGDIObj.size() ) { mvGDIObj[ nIndex ].reset(); } diff --git a/emfio/source/reader/wmfreader.cxx b/emfio/source/reader/wmfreader.cxx index 0d79b19a33ae..1da3eda3fb1d 100644 --- a/emfio/source/reader/wmfreader.cxx +++ b/emfio/source/reader/wmfreader.cxx @@ -775,8 +775,8 @@ namespace emfio case W_META_SELECTOBJECT: { - sal_Int16 nObjIndex = 0; - mpInputStream->ReadInt16( nObjIndex ); + sal_uInt16 nObjIndex = 0; + mpInputStream->ReadUInt16( nObjIndex ); SelectObject( nObjIndex ); } break; @@ -943,8 +943,8 @@ namespace emfio case W_META_DELETEOBJECT: { - sal_Int16 nIndex = 0; - mpInputStream->ReadInt16( nIndex ); + sal_uInt16 nIndex = 0; + mpInputStream->ReadUInt16( nIndex ); DeleteObject( nIndex ); } break; -- cgit