summaryrefslogtreecommitdiff
path: root/writerfilter/source
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2018-10-17 23:04:19 +0200
committerStephan Bergmann <sbergman@redhat.com>2018-10-18 13:28:06 +0200
commit8ea9de4f7a7bec1ba6e20defa243655f7c3e0db8 (patch)
treef3c86191b1d37937ef22e435f50ade30bf391a36 /writerfilter/source
parent2e57dac3b44a17d4c45f242059d43225e79174e3 (diff)
Turn BorderHandler::BorderPosition into scoped enum
...to avoid -Werror,-Wshadow from Clang trunk with <https://reviews.llvm.org/D52400> "Improve -Wshadow warnings with enumerators", warning about shadowing of BORDER_TOP/LEFT/BOTTOM/RIGHT in enum BorderPosition in writerfilter/source/dmapper/PropertyMap.hxx. Also, BorderPosition can apparently be made a private member of BorderHandler, which gives extra confidence that any other uses of BORDER_TOP/LEFT/BOTTOM/RIGHT across writerfilter/source/dmapper/ indeed meant to reference the other enum BorderPosition. And change BorderHandler::lcl_sprm to return early in default case, to avoid having to come up with some new BorderPosition sentinel value to represent "invalid pos". Change-Id: I31e535326627cec25a17b99485bf7cf56f4c66d3 Reviewed-on: https://gerrit.libreoffice.org/61896 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'writerfilter/source')
-rw-r--r--writerfilter/source/dmapper/BorderHandler.cxx64
-rw-r--r--writerfilter/source/dmapper/BorderHandler.hxx24
2 files changed, 43 insertions, 45 deletions
diff --git a/writerfilter/source/dmapper/BorderHandler.cxx b/writerfilter/source/dmapper/BorderHandler.cxx
index 0a07c9753393..ec37f8aa26e3 100644
--- a/writerfilter/source/dmapper/BorderHandler.cxx
+++ b/writerfilter/source/dmapper/BorderHandler.cxx
@@ -21,6 +21,8 @@
#include "PropertyMap.hxx"
#include "ConversionHelper.hxx"
#include <com/sun/star/table/BorderLine2.hpp>
+#include <o3tl/enumarray.hxx>
+#include <o3tl/enumrange.hxx>
#include <ooxml/resourceids.hxx>
#include <filter/msfilter/util.hxx>
#include <comphelper/sequence.hxx>
@@ -42,9 +44,8 @@ m_nLineDistance(0),
m_bShadow(false),
m_bOOXML( bOOXML )
{
- const int nBorderCount(BORDER_COUNT);
- std::fill_n(m_aFilledLines, nBorderCount, false);
- std::fill_n(m_aBorderLines, nBorderCount, table::BorderLine2());
+ m_aFilledLines.fill(false);
+ m_aBorderLines.fill(table::BorderLine2());
}
BorderHandler::~BorderHandler()
@@ -90,73 +91,70 @@ void BorderHandler::lcl_attribute(Id rName, Value & rVal)
void BorderHandler::lcl_sprm(Sprm & rSprm)
{
- BorderPosition pos = BORDER_COUNT; // invalid pos
+ BorderPosition pos;
const bool rtl = false; // TODO detect
OUString aBorderPos;
switch( rSprm.getId())
{
case NS_ooxml::LN_CT_TblBorders_top:
- pos = BORDER_TOP;
+ pos = BorderPosition::Top;
aBorderPos = "top";
break;
case NS_ooxml::LN_CT_TblBorders_start:
- pos = rtl ? BORDER_RIGHT : BORDER_LEFT;
+ pos = rtl ? BorderPosition::Right : BorderPosition::Left;
aBorderPos = "start";
break;
case NS_ooxml::LN_CT_TblBorders_left:
- pos = BORDER_LEFT;
+ pos = BorderPosition::Left;
aBorderPos = "left";
break;
case NS_ooxml::LN_CT_TblBorders_bottom:
- pos = BORDER_BOTTOM;
+ pos = BorderPosition::Bottom;
aBorderPos = "bottom";
break;
case NS_ooxml::LN_CT_TblBorders_end:
- pos = rtl ? BORDER_LEFT : BORDER_RIGHT;
+ pos = rtl ? BorderPosition::Left : BorderPosition::Right;
aBorderPos = "end";
break;
case NS_ooxml::LN_CT_TblBorders_right:
- pos = BORDER_RIGHT;
+ pos = BorderPosition::Right;
aBorderPos = "right";
break;
case NS_ooxml::LN_CT_TblBorders_insideH:
- pos = BORDER_HORIZONTAL;
+ pos = BorderPosition::Horizontal;
aBorderPos = "insideH";
break;
case NS_ooxml::LN_CT_TblBorders_insideV:
- pos = BORDER_VERTICAL;
+ pos = BorderPosition::Vertical;
aBorderPos = "insideV";
break;
default:
- break;
+ return;
}
- if( pos != BORDER_COUNT )
+ writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
+ if( pProperties.get())
{
- writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
- if( pProperties.get())
+ std::vector<beans::PropertyValue> aSavedGrabBag;
+ if (!m_aInteropGrabBagName.isEmpty())
{
- std::vector<beans::PropertyValue> aSavedGrabBag;
- if (!m_aInteropGrabBagName.isEmpty())
- {
- aSavedGrabBag = m_aInteropGrabBag;
- m_aInteropGrabBag.clear();
- }
- pProperties->resolve(*this);
- if (!m_aInteropGrabBagName.isEmpty())
- {
- aSavedGrabBag.push_back(getInteropGrabBag(aBorderPos));
- m_aInteropGrabBag = aSavedGrabBag;
- }
+ aSavedGrabBag = m_aInteropGrabBag;
+ m_aInteropGrabBag.clear();
+ }
+ pProperties->resolve(*this);
+ if (!m_aInteropGrabBagName.isEmpty())
+ {
+ aSavedGrabBag.push_back(getInteropGrabBag(aBorderPos));
+ m_aInteropGrabBag = aSavedGrabBag;
}
- ConversionHelper::MakeBorderLine( m_nLineWidth, m_nLineType, m_nLineColor,
- m_aBorderLines[ pos ], m_bOOXML );
- m_aFilledLines[ pos ] = true;
}
+ ConversionHelper::MakeBorderLine( m_nLineWidth, m_nLineType, m_nLineColor,
+ m_aBorderLines[ pos ], m_bOOXML );
+ m_aFilledLines[ pos ] = true;
}
PropertyMapPtr BorderHandler::getProperties()
{
- static const PropertyIds aPropNames[BORDER_COUNT] =
+ static const o3tl::enumarray<BorderPosition, PropertyIds> aPropNames =
{
PROP_TOP_BORDER,
PROP_LEFT_BORDER,
@@ -169,7 +167,7 @@ PropertyMapPtr BorderHandler::getProperties()
// don't fill in default properties
if( m_bOOXML )
{
- for( sal_Int32 nProp = 0; nProp < BORDER_COUNT; ++nProp)
+ for( auto nProp: o3tl::enumrange<BorderPosition>())
{
if ( m_aFilledLines[nProp] ) {
pPropertyMap->Insert( aPropNames[nProp], uno::makeAny( m_aBorderLines[nProp] ) );
diff --git a/writerfilter/source/dmapper/BorderHandler.hxx b/writerfilter/source/dmapper/BorderHandler.hxx
index b3d3ea7d0266..9d8001d51050 100644
--- a/writerfilter/source/dmapper/BorderHandler.hxx
+++ b/writerfilter/source/dmapper/BorderHandler.hxx
@@ -24,6 +24,7 @@
#include <memory>
#include <com/sun/star/table/BorderLine2.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
+#include <o3tl/enumarray.hxx>
namespace writerfilter {
namespace dmapper
@@ -31,20 +32,19 @@ namespace dmapper
class PropertyMap;
class BorderHandler : public LoggedProperties
{
-public:
+private:
//todo: order is a guess
- enum BorderPosition
+ enum class BorderPosition
{
- BORDER_TOP,
- BORDER_LEFT,
- BORDER_BOTTOM,
- BORDER_RIGHT,
- BORDER_HORIZONTAL,
- BORDER_VERTICAL,
- BORDER_COUNT
+ Top,
+ Left,
+ Bottom,
+ Right,
+ Horizontal,
+ Vertical,
+ LAST = Vertical
};
-private:
//values of the current border
sal_Int32 m_nLineWidth;
sal_Int32 m_nLineType;
@@ -53,8 +53,8 @@ private:
bool m_bShadow;
bool const m_bOOXML;
- bool m_aFilledLines[BORDER_COUNT];
- css::table::BorderLine2 m_aBorderLines[BORDER_COUNT];
+ o3tl::enumarray<BorderPosition, bool> m_aFilledLines;
+ o3tl::enumarray<BorderPosition, css::table::BorderLine2> m_aBorderLines;
OUString m_aInteropGrabBagName;
std::vector<css::beans::PropertyValue> m_aInteropGrabBag;
void appendGrabBag(const OUString& aKey, const OUString& aValue);