include/oox/drawingml/shapepropertymap.hxx     |   79 ++++++++++++-------------
 oox/source/drawingml/chart/objectformatter.cxx |   78 +++++++++++-------------
 oox/source/drawingml/fillproperties.cxx        |   38 ++++++------
 oox/source/drawingml/lineproperties.cxx        |   24 +++----
 oox/source/drawingml/shapepropertymap.cxx      |   35 ++++-------
 oox/source/token/properties.pl                 |    1 
 6 files changed, 121 insertions(+), 134 deletions(-)

New commits:
commit 4d6a17c60b38d453b6444a59da31fb7378e7f3b1
Author: Jochen Nitschke <j.nitschke+loger...@ok.de>
Date:   Fri Sep 16 23:18:14 2016 +0200

    convert ShapePropertyId to scoped enum and use it for enumarray
    
    new type ShapePropertyIds replaces vector and plain arrays
    replace END enum member with LAST
    remove PROP_END_LIST from plain arrays and properties script
    store ShapepropertyInfo as reference in ObjectTypeFormatEntry
    store ShapePropertyIds as reference ShapePropertyInfo
    
    Change-Id: If273cc9e6c7bbd625dba5dc79f1c4ae0b21bdb3c
    Reviewed-on: https://gerrit.libreoffice.org/28960
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Tested-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/include/oox/drawingml/shapepropertymap.hxx 
b/include/oox/drawingml/shapepropertymap.hxx
index c75beb0..3d793a4 100644
--- a/include/oox/drawingml/shapepropertymap.hxx
+++ b/include/oox/drawingml/shapepropertymap.hxx
@@ -24,6 +24,7 @@
 #include <vector>
 
 #include <com/sun/star/uno/Any.hxx>
+#include <o3tl/enumarray.hxx>
 #include <oox/dllapi.h>
 #include <oox/helper/propertymap.hxx>
 #include <rtl/ustring.hxx>
@@ -43,41 +44,43 @@ namespace drawingml {
     and spnFilledPropIds of oox/source/drawingml/chart/objectformatter.cxx if
     the newly inserted enum is inside the range they cover
  */
-enum ShapePropertyId
+enum class ShapeProperty
 {
-    SHAPEPROP_LineStyle,
-    SHAPEPROP_LineWidth,
-    SHAPEPROP_LineColor,
-    SHAPEPROP_LineTransparency,
-    SHAPEPROP_LineDash,                     /// Explicit line dash or name of 
a line dash stored in a global container.
-    SHAPEPROP_LineJoint,
-    SHAPEPROP_LineStart,                    /// Explicit line start marker or 
name of a line marker stored in a global container.
-    SHAPEPROP_LineStartWidth,
-    SHAPEPROP_LineStartCenter,
-    SHAPEPROP_LineEnd,                      /// Explicit line end marker or 
name of a line marker stored in a global container.
-    SHAPEPROP_LineEndWidth,
-    SHAPEPROP_LineEndCenter,
-    SHAPEPROP_FillStyle,
-    SHAPEPROP_FillColor,
-    SHAPEPROP_FillTransparency,
-    SHAPEPROP_GradientTransparency,
-    SHAPEPROP_FillGradient,                 /// Explicit fill gradient or name 
of a fill gradient stored in a global container.
-    SHAPEPROP_FillBitmapUrl,                /// Explicit fill bitmap URL or 
name of a fill bitmap URL stored in a global container.
-    SHAPEPROP_FillBitmapMode,
-    SHAPEPROP_FillBitmapSizeX,
-    SHAPEPROP_FillBitmapSizeY,
-    SHAPEPROP_FillBitmapOffsetX,
-    SHAPEPROP_FillBitmapOffsetY,
-    SHAPEPROP_FillBitmapRectanglePoint,
-    SHAPEPROP_FillHatch,
-    SHAPEPROP_ShadowXDistance,
-    SHAPEPROP_FillBitmapNameFromUrl,
-    SHAPEPROP_END
+    LineStyle,
+    LineWidth,
+    LineColor,
+    LineTransparency,
+    LineDash,                     /// Explicit line dash or name of a line 
dash stored in a global container.
+    LineJoint,
+    LineStart,                    /// Explicit line start marker or name of a 
line marker stored in a global container.
+    LineStartWidth,
+    LineStartCenter,
+    LineEnd,                      /// Explicit line end marker or name of a 
line marker stored in a global container.
+    LineEndWidth,
+    LineEndCenter,
+    FillStyle,
+    FillColor,
+    FillTransparency,
+    GradientTransparency,
+    FillGradient,                 /// Explicit fill gradient or name of a fill 
gradient stored in a global container.
+    FillBitmapUrl,                /// Explicit fill bitmap URL or name of a 
fill bitmap URL stored in a global container.
+    FillBitmapMode,
+    FillBitmapSizeX,
+    FillBitmapSizeY,
+    FillBitmapOffsetX,
+    FillBitmapOffsetY,
+    FillBitmapRectanglePoint,
+    FillHatch,
+    ShadowXDistance,
+    FillBitmapNameFromUrl,
+    LAST = FillBitmapNameFromUrl
 };
 
+typedef o3tl::enumarray<ShapeProperty, sal_Int32> ShapePropertyIds;
+
 struct OOX_DLLPUBLIC ShapePropertyInfo
 {
-    std::vector<sal_Int32> maPropertyIds;
+    const ShapePropertyIds& mrPropertyIds;
     bool                mbNamedLineMarker;      /// True = use named line 
marker instead of explicit line marker.
     bool                mbNamedLineDash;        /// True = use named line dash 
instead of explicit line dash.
     bool                mbNamedFillGradient;    /// True = use named fill 
gradient instead of explicit fill gradient.
@@ -86,14 +89,14 @@ struct OOX_DLLPUBLIC ShapePropertyInfo
     static ShapePropertyInfo DEFAULT;           /// Default property info 
(used as default parameter of other methods).
 
     explicit            ShapePropertyInfo(
-                            const sal_Int32* pnPropertyIds,
+                            const ShapePropertyIds& rnPropertyIds,
                             bool bNamedLineMarker,
                             bool bNamedLineDash,
                             bool bNamedFillGradient,
                             bool bNamedFillBitmapUrl );
 
-    bool         has( ShapePropertyId ePropId ) const { return 
maPropertyIds.size() > size_t(ePropId) && maPropertyIds[ ePropId ] >= 0; }
-    sal_Int32    operator[]( ShapePropertyId ePropId ) const { return 
maPropertyIds[ ePropId ]; }
+    bool         has( ShapeProperty ePropId ) const { return mrPropertyIds[ 
ePropId ] >= 0; }
+    sal_Int32    operator[]( ShapeProperty ePropId ) const { return 
mrPropertyIds[ ePropId ]; }
 };
 
 
@@ -105,18 +108,18 @@ public:
                             const ShapePropertyInfo& rShapePropInfo = 
ShapePropertyInfo::DEFAULT );
 
     /** Returns true, if the specified property is supported. */
-    bool                supportsProperty( ShapePropertyId ePropId ) const;
+    bool                supportsProperty( ShapeProperty ePropId ) const;
 
     /** Returns true, if named line markers are supported, and the specified
         line marker has already been inserted into the marker table. */
     bool                hasNamedLineMarkerInTable( const OUString& rMarkerName 
) const;
 
     /** Sets the specified shape property to the passed value. */
-    bool                setAnyProperty( ShapePropertyId ePropId, const 
css::uno::Any& rValue );
+    bool                setAnyProperty( ShapeProperty ePropId, const 
css::uno::Any& rValue );
 
     /** Sets the specified shape property to the passed value. */
     template< typename Type >
-    bool         setProperty( ShapePropertyId ePropId, const Type& rValue )
+    bool         setProperty( ShapeProperty ePropId, const Type& rValue )
                             { return setAnyProperty( ePropId, css::uno::Any( 
rValue ) ); }
 
     using PropertyMap::setAnyProperty;
@@ -137,8 +140,8 @@ private:
     bool                setFillBitmapNameFromUrl( sal_Int32 nPropId, const 
css::uno::Any& rValue );
 
     // not implemented, to prevent implicit conversion from enum to int
-    css::uno::Any& operator[]( ShapePropertyId ePropId ) = delete;
-    const css::uno::Any& operator[]( ShapePropertyId ePropId ) const = delete;
+    css::uno::Any& operator[]( ShapeProperty ePropId ) = delete;
+    const css::uno::Any& operator[]( ShapeProperty ePropId ) const = delete;
 
 private:
     ModelObjectHelper&  mrModelObjHelper;
diff --git a/oox/source/drawingml/chart/objectformatter.cxx 
b/oox/source/drawingml/chart/objectformatter.cxx
index a26edfa..b32cd56 100644
--- a/oox/source/drawingml/chart/objectformatter.cxx
+++ b/oox/source/drawingml/chart/objectformatter.cxx
@@ -442,32 +442,27 @@ const AutoTextEntry* lclGetAutoTextEntry( const 
AutoTextEntry* pEntries, sal_Int
     return nullptr;
 }
 
-// These PropIds arrays will be indexed into using a ShapePropertyId enum 
(include/oox/drawingml/shapepropertymap.hxx)
+// These PropIds arrays will be indexed into using a ShapeProperty enum
 
-/** Property identifiers for common chart objects, to be used in 
ShapePropertyInfo. */
-static const sal_Int32 spnCommonPropIds[] =
+static const ShapePropertyIds spnCommonPropIds =
 {
     PROP_LineStyle, PROP_LineWidth, PROP_LineColor, PROP_LineTransparence, 
PROP_LineDashName,
     PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, 
PROP_INVALID, PROP_INVALID,
     PROP_FillStyle, PROP_FillColor, PROP_FillTransparence, PROP_INVALID, 
PROP_FillGradientName,
     PROP_FillBitmapName, PROP_FillBitmapMode, PROP_FillBitmapSizeX, 
PROP_FillBitmapSizeY,
-    PROP_FillBitmapPositionOffsetX, PROP_FillBitmapPositionOffsetY, 
PROP_FillBitmapRectanglePoint,
-    PROP_END_LIST
+    PROP_FillBitmapPositionOffsetX, PROP_FillBitmapPositionOffsetY, 
PROP_FillBitmapRectanglePoint
 };
 
-/** Property identifiers for linear data series, to be used in 
ShapePropertyInfo. */
-static const sal_Int32 spnLinearPropIds[] =
+static const ShapePropertyIds spnLinearPropIds =
 {
     PROP_LineStyle, PROP_LineWidth, PROP_Color, PROP_Transparency, 
PROP_LineDashName,
     PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, 
PROP_INVALID, PROP_INVALID,
     PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
     PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
-    PROP_INVALID, PROP_INVALID, PROP_INVALID,
-    PROP_END_LIST
+    PROP_INVALID, PROP_INVALID, PROP_INVALID
 };
 
-/** Property identifiers for filled data series, to be used in 
ShapePropertyInfo. */
-static const sal_Int32 spnFilledPropIds[] =
+static const ShapePropertyIds spnFilledPropIds =
 {
     PROP_BorderStyle,
     PROP_BorderWidth,
@@ -493,8 +488,7 @@ static const sal_Int32 spnFilledPropIds[] =
     PROP_FillBitmapPositionOffsetX,
     PROP_FillBitmapPositionOffsetY,
     PROP_FillBitmapRectanglePoint,
-    PROP_FillHatch,
-    PROP_END_LIST
+    PROP_FillHatch
 };
 
 /** Property info for common chart objects, to be used in ShapePropertyMap. */
@@ -508,7 +502,7 @@ static const ShapePropertyInfo saFilledPropInfo( 
spnFilledPropIds, false, true,
 struct ObjectTypeFormatEntry
 {
     ObjectType          meObjType;          /// Object type for automatic 
format.
-    const ShapePropertyInfo* mpPropInfo;    /// Property info for the 
ShapePropertyMap class.
+    const ShapePropertyInfo& mrPropInfo;    /// Property info for the 
ShapePropertyMap class.
     const AutoFormatEntry* mpAutoLines;     /// Automatic line formatting for 
all chart styles.
     const AutoFormatEntry* mpAutoFills;     /// Automatic fill formatting for 
all chart styles.
     const AutoTextEntry* mpAutoTexts;       /// Automatic text attributes for 
all chart styles.
@@ -524,32 +518,32 @@ struct ObjectTypeFormatEntry
 static const ObjectTypeFormatEntry spObjTypeFormatEntries[] =
 {
     //                object type                property info      auto text  
        auto line            auto fill
-    TYPEFORMAT_FRAME( OBJECTTYPE_CHARTSPACE,     &saCommonPropInfo, nullptr,   
              spNoFormats,         spChartSpaceFill ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_CHARTTITLE,     &saCommonPropInfo, 
spChartTitleTexts, nullptr /* eq to Ch2 */,   nullptr /* eq to Ch2 */),
-    TYPEFORMAT_FRAME( OBJECTTYPE_LEGEND,         &saCommonPropInfo, 
spOtherTexts,      spNoFormats,         spNoFormats ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_PLOTAREA2D,     &saCommonPropInfo, nullptr,   
              nullptr /* eq to Ch2 */,   spPlotArea2dFills ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_PLOTAREA3D,     &saCommonPropInfo, nullptr,   
              nullptr /* eq to Ch2 */,   nullptr /* eq to Ch2 */ ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_WALL,           &saCommonPropInfo, nullptr,   
              spWallFloorLines,    spWallFloorFills ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_FLOOR,          &saCommonPropInfo, nullptr,   
              spWallFloorLines,    spWallFloorFills ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_AXIS,           &saCommonPropInfo, 
spOtherTexts,      spAxisLines ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_AXISTITLE,      &saCommonPropInfo, 
spAxisTitleTexts,  nullptr /* eq to Ch2 */,   nullptr /* eq to Ch2 */ ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_AXISUNIT,       &saCommonPropInfo, 
spAxisTitleTexts,  nullptr /* eq in Ch2 */,   nullptr /* eq in Ch2 */ ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_MAJORGRIDLINE,  &saCommonPropInfo, nullptr,   
              spMajorGridLines ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_MINORGRIDLINE,  &saCommonPropInfo, nullptr,   
              spMinorGridLines ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_LINEARSERIES2D, &saLinearPropInfo, nullptr,   
              spLinearSeriesLines ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_FILLEDSERIES2D, &saFilledPropInfo, nullptr,   
              spFilledSeriesLines, spFilledSeries2dFills ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_FILLEDSERIES3D, &saFilledPropInfo, nullptr,   
              spFilledSeriesLines, spFilledSeries3dFills ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_DATALABEL,      &saCommonPropInfo, 
spOtherTexts,      nullptr /* eq to Ch2 */,   nullptr /* eq to Ch2 */ ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_TRENDLINE,      &saCommonPropInfo, nullptr,   
              spOtherLines ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_TRENDLINELABEL, &saCommonPropInfo, 
spOtherTexts,      nullptr /* eq to Ch2 */,   nullptr /* eq to Ch2 */ ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_ERRORBAR,       &saCommonPropInfo, nullptr,   
              spOtherLines ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_SERLINE,        &saCommonPropInfo, nullptr,   
              spOtherLines ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_LEADERLINE,     &saCommonPropInfo, nullptr,   
              spOtherLines ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_DROPLINE,       &saCommonPropInfo, nullptr,   
              spOtherLines ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_HILOLINE,       &saLinearPropInfo, nullptr,   
              spOtherLines ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_UPBAR,          &saCommonPropInfo, nullptr,   
              spUpDownBarLines,    spUpBarFills ),
-    TYPEFORMAT_FRAME( OBJECTTYPE_DOWNBAR,        &saCommonPropInfo, nullptr,   
              spUpDownBarLines,    spDownBarFills ),
-    TYPEFORMAT_LINE(  OBJECTTYPE_DATATABLE,      &saCommonPropInfo, 
spOtherTexts,      spDataTableLines )
+    TYPEFORMAT_FRAME( OBJECTTYPE_CHARTSPACE,     saCommonPropInfo, nullptr,    
             spNoFormats,         spChartSpaceFill ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_CHARTTITLE,     saCommonPropInfo, 
spChartTitleTexts, nullptr /* eq to Ch2 */,   nullptr /* eq to Ch2 */),
+    TYPEFORMAT_FRAME( OBJECTTYPE_LEGEND,         saCommonPropInfo, 
spOtherTexts,      spNoFormats,         spNoFormats ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_PLOTAREA2D,     saCommonPropInfo, nullptr,    
             nullptr /* eq to Ch2 */,   spPlotArea2dFills ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_PLOTAREA3D,     saCommonPropInfo, nullptr,    
             nullptr /* eq to Ch2 */,   nullptr /* eq to Ch2 */ ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_WALL,           saCommonPropInfo, nullptr,    
             spWallFloorLines,    spWallFloorFills ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_FLOOR,          saCommonPropInfo, nullptr,    
             spWallFloorLines,    spWallFloorFills ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_AXIS,           saCommonPropInfo, 
spOtherTexts,      spAxisLines ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_AXISTITLE,      saCommonPropInfo, 
spAxisTitleTexts,  nullptr /* eq to Ch2 */,   nullptr /* eq to Ch2 */ ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_AXISUNIT,       saCommonPropInfo, 
spAxisTitleTexts,  nullptr /* eq in Ch2 */,   nullptr /* eq in Ch2 */ ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_MAJORGRIDLINE,  saCommonPropInfo, nullptr,    
             spMajorGridLines ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_MINORGRIDLINE,  saCommonPropInfo, nullptr,    
             spMinorGridLines ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_LINEARSERIES2D, saLinearPropInfo, nullptr,    
             spLinearSeriesLines ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_FILLEDSERIES2D, saFilledPropInfo, nullptr,    
             spFilledSeriesLines, spFilledSeries2dFills ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_FILLEDSERIES3D, saFilledPropInfo, nullptr,    
             spFilledSeriesLines, spFilledSeries3dFills ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_DATALABEL,      saCommonPropInfo, 
spOtherTexts,      nullptr /* eq to Ch2 */,   nullptr /* eq to Ch2 */ ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_TRENDLINE,      saCommonPropInfo, nullptr,    
             spOtherLines ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_TRENDLINELABEL, saCommonPropInfo, 
spOtherTexts,      nullptr /* eq to Ch2 */,   nullptr /* eq to Ch2 */ ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_ERRORBAR,       saCommonPropInfo, nullptr,    
             spOtherLines ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_SERLINE,        saCommonPropInfo, nullptr,    
             spOtherLines ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_LEADERLINE,     saCommonPropInfo, nullptr,    
             spOtherLines ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_DROPLINE,       saCommonPropInfo, nullptr,    
             spOtherLines ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_HILOLINE,       saLinearPropInfo, nullptr,    
             spOtherLines ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_UPBAR,          saCommonPropInfo, nullptr,    
             spUpDownBarLines,    spUpBarFills ),
+    TYPEFORMAT_FRAME( OBJECTTYPE_DOWNBAR,        saCommonPropInfo, nullptr,    
             spUpDownBarLines,    spDownBarFills ),
+    TYPEFORMAT_LINE(  OBJECTTYPE_DATATABLE,      saCommonPropInfo, 
spOtherTexts,      spDataTableLines )
 };
 
 #undef TYPEFORMAT_FRAME
@@ -924,7 +918,7 @@ ObjectTypeFormatter::ObjectTypeFormatter( 
ObjectFormatterData& rData, const Obje
 
 void ObjectTypeFormatter::convertFrameFormatting( PropertySet& rPropSet, const 
ModelRef< Shape >& rxShapeProp, const PictureOptionsModel* pPicOptions, 
sal_Int32 nSeriesIdx )
 {
-    ShapePropertyMap aPropMap( mrModelObjHelper, *mrEntry.mpPropInfo );
+    ShapePropertyMap aPropMap( mrModelObjHelper, mrEntry.mrPropInfo );
     maLineFormatter.convertFormatting( aPropMap, rxShapeProp, nSeriesIdx );
     if( mrEntry.mbIsFrame )
         maFillFormatter.convertFormatting( aPropMap, rxShapeProp, pPicOptions, 
nSeriesIdx );
@@ -949,7 +943,7 @@ void ObjectTypeFormatter::convertTextFormatting( 
PropertySet& rPropSet, const Te
 
 void ObjectTypeFormatter::convertAutomaticFill( PropertySet& rPropSet, 
sal_Int32 nSeriesIdx )
 {
-    ShapePropertyMap aPropMap( mrModelObjHelper, *mrEntry.mpPropInfo );
+    ShapePropertyMap aPropMap( mrModelObjHelper, mrEntry.mrPropInfo );
     ModelRef< Shape > xShapeProp;
     maFillFormatter.convertFormatting( aPropMap, xShapeProp, nullptr, 
nSeriesIdx );
     rPropSet.setProperties( aPropMap );
diff --git a/oox/source/drawingml/fillproperties.cxx 
b/oox/source/drawingml/fillproperties.cxx
index 81a3726..370be68 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -326,16 +326,16 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
             case XML_solidFill:
                 if( maFillColor.isUsed() )
                 {
-                    rPropMap.setProperty( SHAPEPROP_FillColor, 
maFillColor.getColor( rGraphicHelper, nPhClr ) );
+                    rPropMap.setProperty( ShapeProperty::FillColor, 
maFillColor.getColor( rGraphicHelper, nPhClr ) );
                     if( maFillColor.hasTransparency() )
-                        rPropMap.setProperty( SHAPEPROP_FillTransparency, 
maFillColor.getTransparency() );
+                        rPropMap.setProperty( ShapeProperty::FillTransparency, 
maFillColor.getTransparency() );
                     eFillStyle = FillStyle_SOLID;
                 }
             break;
 
             case XML_gradFill:
                 // do not create gradient struct if property is not 
supported...
-                if( rPropMap.supportsProperty( SHAPEPROP_FillGradient ) )
+                if( rPropMap.supportsProperty( ShapeProperty::FillGradient ) )
                 {
                     sal_Int32 nEndTrans     = 0;
                     sal_Int32 nStartTrans   = 0;
@@ -570,7 +570,7 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
                     }
 
                     // push gradient or named gradient to property map
-                    if( rPropMap.setProperty( SHAPEPROP_FillGradient, 
aGradient ) )
+                    if( rPropMap.setProperty( ShapeProperty::FillGradient, 
aGradient ) )
                         eFillStyle = FillStyle_GRADIENT;
 
                     // push gradient transparency to property map
@@ -581,7 +581,7 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
                         aGrad.EndColor = (sal_Int32)( nEndTrans | nEndTrans << 
8 | nEndTrans << 16 );
                         aGrad.StartColor = (sal_Int32)( nStartTrans | 
nStartTrans << 8 | nStartTrans << 16 );
                         aVal <<= aGrad;
-                        rPropMap.setProperty( SHAPEPROP_GradientTransparency, 
aGrad );
+                        rPropMap.setProperty( 
ShapeProperty::GradientTransparency, aGrad );
                     }
 
                 }
@@ -589,16 +589,16 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
 
             case XML_blipFill:
                 // do not start complex graphic transformation if property is 
not supported...
-                if( maBlipProps.mxGraphic.is() && rPropMap.supportsProperty( 
SHAPEPROP_FillBitmapUrl ) )
+                if( maBlipProps.mxGraphic.is() && rPropMap.supportsProperty( 
ShapeProperty::FillBitmapUrl ) )
                 {
                     Reference< XGraphic > xGraphic = 
lclCheckAndApplyDuotoneTransform( maBlipProps, maBlipProps.mxGraphic, 
rGraphicHelper, nPhClr );
                     // TODO: "rotate with shape" is not possible with our 
current core
 
                     OUString aGraphicUrl = rGraphicHelper.createGraphicObject( 
xGraphic );
                     // push bitmap or named bitmap to property map
-                    if( !aGraphicUrl.isEmpty() && rPropMap.supportsProperty( 
SHAPEPROP_FillBitmapNameFromUrl ) && rPropMap.setProperty( 
SHAPEPROP_FillBitmapNameFromUrl, aGraphicUrl ) )
+                    if( !aGraphicUrl.isEmpty() && rPropMap.supportsProperty( 
ShapeProperty::FillBitmapNameFromUrl ) && rPropMap.setProperty( 
ShapeProperty::FillBitmapNameFromUrl, aGraphicUrl ) )
                         eFillStyle = FillStyle_BITMAP;
-                    else if( !aGraphicUrl.isEmpty() && rPropMap.setProperty( 
SHAPEPROP_FillBitmapUrl, aGraphicUrl ) )
+                    else if( !aGraphicUrl.isEmpty() && rPropMap.setProperty( 
ShapeProperty::FillBitmapUrl, aGraphicUrl ) )
                         eFillStyle = FillStyle_BITMAP;
 
                     // set other bitmap properties, if bitmap has been 
inserted into the map
@@ -606,14 +606,14 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
                     {
                         // bitmap mode (single, repeat, stretch)
                         BitmapMode eBitmapMode = lclGetBitmapMode( 
maBlipProps.moBitmapMode.get( XML_TOKEN_INVALID ) );
-                        rPropMap.setProperty( SHAPEPROP_FillBitmapMode, 
eBitmapMode );
+                        rPropMap.setProperty( ShapeProperty::FillBitmapMode, 
eBitmapMode );
 
                         // additional settings for repeated bitmap
                         if( eBitmapMode == BitmapMode_REPEAT )
                         {
                             // anchor position inside bitmap
                             RectanglePoint eRectPoint = lclGetRectanglePoint( 
maBlipProps.moTileAlign.get( XML_tl ) );
-                            rPropMap.setProperty( 
SHAPEPROP_FillBitmapRectanglePoint, eRectPoint );
+                            rPropMap.setProperty( 
ShapeProperty::FillBitmapRectanglePoint, eRectPoint );
 
                             awt::Size aOriginalSize = lclGetOriginalSize( 
rGraphicHelper, maBlipProps.mxGraphic );
                             if( (aOriginalSize.Width > 0) && 
(aOriginalSize.Height > 0) )
@@ -621,16 +621,16 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
                                 // size of one bitmap tile (given as 1/1000 
percent of bitmap size), convert to 1/100 mm
                                 double fScaleX = maBlipProps.moTileScaleX.get( 
MAX_PERCENT ) / static_cast< double >( MAX_PERCENT );
                                 sal_Int32 nFillBmpSizeX = getLimitedValue< 
sal_Int32, double >( aOriginalSize.Width * fScaleX, 1, SAL_MAX_INT32 );
-                                rPropMap.setProperty( 
SHAPEPROP_FillBitmapSizeX, nFillBmpSizeX );
+                                rPropMap.setProperty( 
ShapeProperty::FillBitmapSizeX, nFillBmpSizeX );
                                 double fScaleY = maBlipProps.moTileScaleY.get( 
MAX_PERCENT ) / static_cast< double >( MAX_PERCENT );
                                 sal_Int32 nFillBmpSizeY = getLimitedValue< 
sal_Int32, double >( aOriginalSize.Height * fScaleY, 1, SAL_MAX_INT32 );
-                                rPropMap.setProperty( 
SHAPEPROP_FillBitmapSizeY, nFillBmpSizeY );
+                                rPropMap.setProperty( 
ShapeProperty::FillBitmapSizeY, nFillBmpSizeY );
 
                                 // offset of the first bitmap tile (given as 
EMUs), convert to percent
                                 sal_Int16 nTileOffsetX = 
getDoubleIntervalValue< sal_Int16 >( maBlipProps.moTileOffsetX.get( 0 ) / 3.6 / 
aOriginalSize.Width, 0, 100 );
-                                rPropMap.setProperty( 
SHAPEPROP_FillBitmapOffsetX, nTileOffsetX );
+                                rPropMap.setProperty( 
ShapeProperty::FillBitmapOffsetX, nTileOffsetX );
                                 sal_Int16 nTileOffsetY = 
getDoubleIntervalValue< sal_Int16 >( maBlipProps.moTileOffsetY.get( 0 ) / 3.6 / 
aOriginalSize.Height, 0, 100 );
-                                rPropMap.setProperty( 
SHAPEPROP_FillBitmapOffsetY, nTileOffsetY );
+                                rPropMap.setProperty( 
ShapeProperty::FillBitmapOffsetY, nTileOffsetY );
                             }
                         }
                         else if ( eBitmapMode == BitmapMode_STRETCH && 
maBlipProps.moFillRect.has() )
@@ -657,7 +657,7 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
 
             case XML_pattFill:
             {
-                if( rPropMap.supportsProperty( SHAPEPROP_FillHatch ) )
+                if( rPropMap.supportsProperty( ShapeProperty::FillHatch ) )
                 {
                     Color aColor( maPatternProps.maPattFgColor );
                     if( aColor.isUsed() && maPatternProps.moPattPreset.has() )
@@ -665,14 +665,14 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
                         // we do not support hatches that have background
                         // color too, so all this is some best-effort approach
                         eFillStyle = FillStyle_HATCH;
-                        rPropMap.setProperty( SHAPEPROP_FillHatch, 
createHatch( maPatternProps.moPattPreset.get(), aColor.getColor( 
rGraphicHelper, nPhClr ) ) );
+                        rPropMap.setProperty( ShapeProperty::FillHatch, 
createHatch( maPatternProps.moPattPreset.get(), aColor.getColor( 
rGraphicHelper, nPhClr ) ) );
                     }
                     else if ( maPatternProps.maPattBgColor.isUsed() )
                     {
                         aColor = maPatternProps.maPattBgColor;
-                        rPropMap.setProperty( SHAPEPROP_FillColor, 
aColor.getColor( rGraphicHelper, nPhClr ) );
+                        rPropMap.setProperty( ShapeProperty::FillColor, 
aColor.getColor( rGraphicHelper, nPhClr ) );
                         if( aColor.hasTransparency() )
-                            rPropMap.setProperty( SHAPEPROP_FillTransparency, 
aColor.getTransparency() );
+                            rPropMap.setProperty( 
ShapeProperty::FillTransparency, aColor.getTransparency() );
                         eFillStyle = FillStyle_SOLID;
                     }
                 }
@@ -686,7 +686,7 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
         }
 
         // set final fill style property
-        rPropMap.setProperty( SHAPEPROP_FillStyle, eFillStyle );
+        rPropMap.setProperty( ShapeProperty::FillStyle, eFillStyle );
     }
 }
 
diff --git a/oox/source/drawingml/lineproperties.cxx 
b/oox/source/drawingml/lineproperties.cxx
index 003dde4..b6dd597 100644
--- a/oox/source/drawingml/lineproperties.cxx
+++ b/oox/source/drawingml/lineproperties.cxx
@@ -320,15 +320,15 @@ void lclPushMarkerProperties( ShapePropertyMap& rPropMap,
     {
         if( bLineEnd )
         {
-            rPropMap.setProperty( SHAPEPROP_LineEnd, aNamedMarker );
-            rPropMap.setProperty( SHAPEPROP_LineEndWidth, nMarkerWidth );
-            rPropMap.setProperty( SHAPEPROP_LineEndCenter, bMarkerCenter );
+            rPropMap.setProperty( ShapeProperty::LineEnd, aNamedMarker );
+            rPropMap.setProperty( ShapeProperty::LineEndWidth, nMarkerWidth );
+            rPropMap.setProperty( ShapeProperty::LineEndCenter, bMarkerCenter 
);
         }
         else
         {
-            rPropMap.setProperty( SHAPEPROP_LineStart, aNamedMarker );
-            rPropMap.setProperty( SHAPEPROP_LineStartWidth, nMarkerWidth );
-            rPropMap.setProperty( SHAPEPROP_LineStartCenter, bMarkerCenter );
+            rPropMap.setProperty( ShapeProperty::LineStart, aNamedMarker );
+            rPropMap.setProperty( ShapeProperty::LineStartWidth, nMarkerWidth 
);
+            rPropMap.setProperty( ShapeProperty::LineStartCenter, 
bMarkerCenter );
         }
     }
 }
@@ -386,27 +386,27 @@ void LineProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
             aLineDash.DashLen *= nBaseLineWidth;
             aLineDash.Distance *= nBaseLineWidth;
 
-            if( rPropMap.setProperty( SHAPEPROP_LineDash, aLineDash ) )
+            if( rPropMap.setProperty( ShapeProperty::LineDash, aLineDash ) )
                 eLineStyle = drawing::LineStyle_DASH;
         }
 
         // set final line style property
-        rPropMap.setProperty( SHAPEPROP_LineStyle, eLineStyle );
+        rPropMap.setProperty( ShapeProperty::LineStyle, eLineStyle );
 
         // line joint type
         if( moLineJoint.has() )
-            rPropMap.setProperty( SHAPEPROP_LineJoint, lclGetLineJoint( 
moLineJoint.get() ) );
+            rPropMap.setProperty( ShapeProperty::LineJoint, lclGetLineJoint( 
moLineJoint.get() ) );
 
         // line width in 1/100mm
-        rPropMap.setProperty( SHAPEPROP_LineWidth, nLineWidth );
+        rPropMap.setProperty( ShapeProperty::LineWidth, nLineWidth );
 
         // line color and transparence
         Color aLineColor = maLineFill.getBestSolidColor();
         if( aLineColor.isUsed() )
         {
-            rPropMap.setProperty( SHAPEPROP_LineColor, aLineColor.getColor( 
rGraphicHelper, nPhClr ) );
+            rPropMap.setProperty( ShapeProperty::LineColor, 
aLineColor.getColor( rGraphicHelper, nPhClr ) );
             if( aLineColor.hasTransparency() )
-                rPropMap.setProperty( SHAPEPROP_LineTransparency, 
aLineColor.getTransparency() );
+                rPropMap.setProperty( ShapeProperty::LineTransparency, 
aLineColor.getTransparency() );
         }
 
         // line markers
diff --git a/oox/source/drawingml/shapepropertymap.cxx 
b/oox/source/drawingml/shapepropertymap.cxx
index 7ffecab..aca3184 100644
--- a/oox/source/drawingml/shapepropertymap.cxx
+++ b/oox/source/drawingml/shapepropertymap.cxx
@@ -36,7 +36,7 @@ using namespace ::com::sun::star::uno;
 
 namespace {
 
-static const sal_Int32 spnDefaultShapeIds[ SHAPEPROP_END + 1 ] = // one for 
the PROP_END_LIST
+static const ShapePropertyIds spnDefaultShapeIds =
 {
     PROP_LineStyle, PROP_LineWidth, PROP_LineColor, PROP_LineTransparence, 
PROP_LineDash, PROP_LineJoint,
     PROP_LineStartName, PROP_LineStartWidth, PROP_LineStartCenter, 
PROP_LineEndName, PROP_LineEndWidth, PROP_LineEndCenter,
@@ -45,30 +45,21 @@ static const sal_Int32 spnDefaultShapeIds[ SHAPEPROP_END + 
1 ] = // one for the
     PROP_FillBitmapPositionOffsetX, PROP_FillBitmapPositionOffsetY, 
PROP_FillBitmapRectanglePoint,
     PROP_FillHatch,
     PROP_ShadowXDistance,
-    PROP_FillBitmapName,
-    PROP_END_LIST
+    PROP_FillBitmapName
 };
 
 } // namespace
 
 ShapePropertyInfo ShapePropertyInfo::DEFAULT( spnDefaultShapeIds, true, false, 
false, false );
 
-ShapePropertyInfo::ShapePropertyInfo( const sal_Int32* pnPropertyIds,
+ShapePropertyInfo::ShapePropertyInfo( const ShapePropertyIds& rnPropertyIds,
         bool bNamedLineMarker, bool bNamedLineDash, bool bNamedFillGradient, 
bool bNamedFillBitmapUrl ) :
+    mrPropertyIds(rnPropertyIds),
     mbNamedLineMarker( bNamedLineMarker ),
     mbNamedLineDash( bNamedLineDash ),
     mbNamedFillGradient( bNamedFillGradient ),
     mbNamedFillBitmapUrl( bNamedFillBitmapUrl )
 {
-    assert(pnPropertyIds);
-    // normally we should not reach PROP_COUNT but it prevents infinite loops 
if we hit a bug
-    for(size_t i = 0; i < static_cast<size_t>(PROP_COUNT); ++i)
-    {
-        if(pnPropertyIds[i] == PROP_END_LIST)
-            break;
-
-        maPropertyIds.push_back(pnPropertyIds[i]);
-    }
 }
 
 ShapePropertyMap::ShapePropertyMap( ModelObjectHelper& rModelObjHelper, const 
ShapePropertyInfo& rShapePropInfo ) :
@@ -77,7 +68,7 @@ ShapePropertyMap::ShapePropertyMap( ModelObjectHelper& 
rModelObjHelper, const Sh
 {
 }
 
-bool ShapePropertyMap::supportsProperty( ShapePropertyId ePropId ) const
+bool ShapePropertyMap::supportsProperty( ShapeProperty ePropId ) const
 {
     return maShapePropInfo.has( ePropId );
 }
@@ -87,7 +78,7 @@ bool ShapePropertyMap::hasNamedLineMarkerInTable( const 
OUString& rMarkerName )
     return maShapePropInfo.mbNamedLineMarker && 
mrModelObjHelper.hasLineMarker( rMarkerName );
 }
 
-bool ShapePropertyMap::setAnyProperty( ShapePropertyId ePropId, const Any& 
rValue )
+bool ShapePropertyMap::setAnyProperty( ShapeProperty ePropId, const Any& 
rValue )
 {
     // get current property identifier for the specified property
     sal_Int32 nPropId = maShapePropInfo[ ePropId ];
@@ -96,23 +87,23 @@ bool ShapePropertyMap::setAnyProperty( ShapePropertyId 
ePropId, const Any& rValu
     // special handling for properties supporting named objects in tables
     switch( ePropId )
     {
-        case SHAPEPROP_LineStart:
-        case SHAPEPROP_LineEnd:
+        case ShapeProperty::LineStart:
+        case ShapeProperty::LineEnd:
             return setLineMarker( nPropId, rValue );
 
-        case SHAPEPROP_LineDash:
+        case ShapeProperty::LineDash:
             return setLineDash( nPropId, rValue );
 
-        case SHAPEPROP_FillGradient:
+        case ShapeProperty::FillGradient:
             return setFillGradient( nPropId, rValue );
 
-        case SHAPEPROP_GradientTransparency:
+        case ShapeProperty::GradientTransparency:
             return setGradientTrans( nPropId, rValue );
 
-        case SHAPEPROP_FillBitmapUrl:
+        case ShapeProperty::FillBitmapUrl:
             return setFillBitmapUrl( nPropId, rValue );
 
-        case SHAPEPROP_FillBitmapNameFromUrl:
+        case ShapeProperty::FillBitmapNameFromUrl:
             return setFillBitmapNameFromUrl( nPropId, rValue );
 
         default:;   // suppress compiler warnings
diff --git a/oox/source/token/properties.pl b/oox/source/token/properties.pl
index 3a8e872..d2a2d80 100644
--- a/oox/source/token/properties.pl
+++ b/oox/source/token/properties.pl
@@ -53,7 +53,6 @@ foreach( sort( keys( %props ) ) )
 
 print( IDFILE "const sal_Int32 PROP_COUNT = $i;\n" );
 print( IDFILE "const sal_Int32 PROP_INVALID = -1;\n" );
-print( IDFILE "const sal_Int32 PROP_END_LIST = -2;\n" );
 
 close( IDFILE );
 close( NAMEFILE );
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to