[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-4.2' - 2 commits - include/oox oox/source

Kohei Yoshida kohei.yoshida at collabora.com
Mon Jul 7 17:50:53 PDT 2014


 include/oox/drawingml/chart/axisconverter.hxx    |   10 ++---
 oox/source/drawingml/chart/axisconverter.cxx     |   46 ++++++++++++++++-------
 oox/source/drawingml/chart/objectformatter.cxx   |    8 +---
 oox/source/drawingml/chart/plotareaconverter.cxx |    6 +--
 oox/source/token/properties.txt                  |    1 
 5 files changed, 43 insertions(+), 28 deletions(-)

New commits:
commit 3997f7b8e5f07312466e66f6bcf0a4ac1c8c5a39
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Mon Jul 7 16:38:29 2014 -0400

    bnc#881025: Mark axis a percent axis only when all data series are percent.
    
    (cherry picked from commit b8c444a46b2f41dae673c6118d84276be0e6c87d)
    
    Conflicts:
    	oox/inc/drawingml/chart/axisconverter.hxx
    
    Change-Id: I302cc1e5b164b2ce9999087293b034ec930951af

diff --git a/include/oox/drawingml/chart/axisconverter.hxx b/include/oox/drawingml/chart/axisconverter.hxx
index e107057..f2df756 100644
--- a/include/oox/drawingml/chart/axisconverter.hxx
+++ b/include/oox/drawingml/chart/axisconverter.hxx
@@ -45,12 +45,10 @@ public:
     virtual             ~AxisConverter();
 
     /** Creates a chart2 axis and inserts it into the passed coordinate system. */
-    void                convertFromModel(
-                            const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XCoordinateSystem >& rxCoordSystem,
-                            TypeGroupConverter& rTypeGroup,
-                            const AxisModel* pCrossingAxis,
-                            sal_Int32 nAxesSetIdx,
-                            sal_Int32 nAxisIdx );
+    void convertFromModel(
+        const css::uno::Reference<css::chart2::XCoordinateSystem>& rxCoordSystem,
+        RefVector<TypeGroupConverter>& rTypeGroups, const AxisModel* pCrossingAxis,
+        sal_Int32 nAxesSetIdx, sal_Int32 nAxisIdx );
 };
 
 // ============================================================================
diff --git a/oox/source/drawingml/chart/axisconverter.cxx b/oox/source/drawingml/chart/axisconverter.cxx
index f290992..d30595d 100644
--- a/oox/source/drawingml/chart/axisconverter.cxx
+++ b/oox/source/drawingml/chart/axisconverter.cxx
@@ -107,6 +107,26 @@ sal_Int32 lclGetTickMark( sal_Int32 nToken )
     return NONE;
 }
 
+/**
+ * The groups is of percent type only when all of its members are of percent
+ * type.
+ */
+bool isPercent( const RefVector<TypeGroupConverter>& rTypeGroups )
+{
+    if (rTypeGroups.empty())
+        return false;
+
+    RefVector<TypeGroupConverter>::const_iterator it = rTypeGroups.begin(), itEnd = rTypeGroups.end();
+    for (; it != itEnd; ++it)
+    {
+        TypeGroupConverter& rConv = **it;
+        if (!rConv.isPercent())
+            return false;
+    }
+
+    return true;
+}
+
 } // namespace
 
 // ============================================================================
@@ -120,16 +140,20 @@ AxisConverter::~AxisConverter()
 {
 }
 
-void AxisConverter::convertFromModel( const Reference< XCoordinateSystem >& rxCoordSystem,
-        TypeGroupConverter& rTypeGroup, const AxisModel* pCrossingAxis, sal_Int32 nAxesSetIdx, sal_Int32 nAxisIdx )
+void AxisConverter::convertFromModel(
+    const Reference< XCoordinateSystem >& rxCoordSystem,
+    RefVector<TypeGroupConverter>& rTypeGroups, const AxisModel* pCrossingAxis, sal_Int32 nAxesSetIdx, sal_Int32 nAxisIdx )
 {
+    if (rTypeGroups.empty())
+        return;
+
     Reference< XAxis > xAxis;
     try
     {
         namespace cssc = ::com::sun::star::chart;
         namespace cssc2 = ::com::sun::star::chart2;
 
-        const TypeGroupInfo& rTypeInfo = rTypeGroup.getTypeInfo();
+        const TypeGroupInfo& rTypeInfo = rTypeGroups.front()->getTypeInfo();
         ObjectFormatter& rFormatter = getFormatter();
 
         // create the axis object (always)
@@ -189,7 +213,7 @@ void AxisConverter::convertFromModel( const Reference< XCoordinateSystem >& rxCo
                         currently). */
                     aScaleData.AxisType = (bDateAxis && !mrModel.mbAuto) ? cssc2::AxisType::DATE : cssc2::AxisType::CATEGORY;
                     aScaleData.AutoDateAxis = mrModel.mbAuto;
-                    aScaleData.Categories = rTypeGroup.createCategorySequence();
+                    aScaleData.Categories = rTypeGroups.front()->createCategorySequence();
                 }
                 else
                 {
@@ -199,11 +223,11 @@ void AxisConverter::convertFromModel( const Reference< XCoordinateSystem >& rxCo
             break;
             case API_Y_AXIS:
                 OSL_ENSURE( mrModel.mnTypeId == C_TOKEN( valAx ), "AxisConverter::convertFromModel - unexpected axis model type (must: c:valAx)" );
-                aScaleData.AxisType = rTypeGroup.isPercent() ? cssc2::AxisType::PERCENT : cssc2::AxisType::REALNUMBER;
+                aScaleData.AxisType = isPercent(rTypeGroups) ? cssc2::AxisType::PERCENT : cssc2::AxisType::REALNUMBER;
             break;
             case API_Z_AXIS:
                 OSL_ENSURE( mrModel.mnTypeId == C_TOKEN( serAx ), "AxisConverter::convertFromModel - unexpected axis model type (must: c:serAx)" );
-                OSL_ENSURE( rTypeGroup.isDeep3dChart(), "AxisConverter::convertFromModel - series axis not supported by this chart type" );
+                OSL_ENSURE( rTypeGroups.front()->isDeep3dChart(), "AxisConverter::convertFromModel - series axis not supported by this chart type" );
                 aScaleData.AxisType = cssc2::AxisType::SERIES;
             break;
         }
@@ -330,7 +354,7 @@ void AxisConverter::convertFromModel( const Reference< XCoordinateSystem >& rxCo
         // axis title ---------------------------------------------------------
 
         // in radar charts, title objects may exist, but are not shown
-        if( mrModel.mxTitle.is() && (rTypeGroup.getTypeInfo().meTypeCategory != TYPECATEGORY_RADAR) )
+        if( mrModel.mxTitle.is() && (rTypeGroups.front()->getTypeInfo().meTypeCategory != TYPECATEGORY_RADAR) )
         {
             Reference< XTitled > xTitled( xAxis, UNO_QUERY_THROW );
             TitleConverter aTitleConv( *this, *mrModel.mxTitle );
diff --git a/oox/source/drawingml/chart/plotareaconverter.cxx b/oox/source/drawingml/chart/plotareaconverter.cxx
index ff67b5f..eaa51e0 100644
--- a/oox/source/drawingml/chart/plotareaconverter.cxx
+++ b/oox/source/drawingml/chart/plotareaconverter.cxx
@@ -171,15 +171,15 @@ void AxesSetConverter::convertFromModel( const Reference< XDiagram >& rxDiagram,
             ModelRef< AxisModel > xYAxis = lclGetOrCreateAxis( mrModel.maAxes, API_Y_AXIS, C_TOKEN( valAx ) );
 
             AxisConverter aXAxisConv( *this, *xXAxis );
-            aXAxisConv.convertFromModel( xCoordSystem, rFirstTypeGroup, xYAxis.get(), nAxesSetIdx, API_X_AXIS );
+            aXAxisConv.convertFromModel( xCoordSystem, aTypeGroups, xYAxis.get(), nAxesSetIdx, API_X_AXIS );
             AxisConverter aYAxisConv( *this, *xYAxis );
-            aYAxisConv.convertFromModel( xCoordSystem, rFirstTypeGroup, xXAxis.get(), nAxesSetIdx, API_Y_AXIS );
+            aYAxisConv.convertFromModel( xCoordSystem, aTypeGroups, xXAxis.get(), nAxesSetIdx, API_Y_AXIS );
 
             if( rFirstTypeGroup.isDeep3dChart() )
             {
                 ModelRef< AxisModel > xZAxis = lclGetOrCreateAxis( mrModel.maAxes, API_Z_AXIS, C_TOKEN( serAx ) );
                 AxisConverter aZAxisConv( *this, *xZAxis );
-                aZAxisConv.convertFromModel( xCoordSystem, rFirstTypeGroup, 0, nAxesSetIdx, API_Z_AXIS );
+                aZAxisConv.convertFromModel( xCoordSystem, aTypeGroups, 0, nAxesSetIdx, API_Z_AXIS );
             }
 
             // convert all chart type groups, this converts all series data and formatting
commit 29d5f3db525e275c62cd2eafb18899fe68198ea3
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Mon Jul 7 13:26:23 2014 -0400

    Adjust for the splitting of number format properties in chart.
    
    Since 1d38cb365543924f9c50014e6b2227e77de1d0c9, "number format" and
    "link number format to source" properties are 2 separate properties.  Adjust
    OOXML import code for that split.
    
    Also, always set axis' number format via NumberFormat property even when it's
    a percent format.  The axis object doesn't keep a non-percent and percent
    number formats separately.
    
    Change-Id: I8667b6f1a78d88cc37d059518919ad1b37f154e1
    (cherry picked from commit af5a6615dfdbe5c2cacdcacb00fc6f418b925c06)

diff --git a/oox/source/drawingml/chart/axisconverter.cxx b/oox/source/drawingml/chart/axisconverter.cxx
index da1a732..f290992 100644
--- a/oox/source/drawingml/chart/axisconverter.cxx
+++ b/oox/source/drawingml/chart/axisconverter.cxx
@@ -307,13 +307,7 @@ void AxisConverter::convertFromModel( const Reference< XCoordinateSystem >& rxCo
         // number format ------------------------------------------------------
 
         if( (aScaleData.AxisType == cssc2::AxisType::REALNUMBER) || (aScaleData.AxisType == cssc2::AxisType::PERCENT) )
-        {
-            bool bPercent = false;
-            if( mrModel.maNumberFormat.maFormatCode.indexOf('%') >= 0)
-                bPercent = true;
-            mrModel.maNumberFormat.mbSourceLinked = false;
-            getFormatter().convertNumberFormat( aAxisProp, mrModel.maNumberFormat, bPercent );
-        }
+            getFormatter().convertNumberFormat(aAxisProp, mrModel.maNumberFormat, false);
 
         // position of crossing axis ------------------------------------------
 
diff --git a/oox/source/drawingml/chart/objectformatter.cxx b/oox/source/drawingml/chart/objectformatter.cxx
index 2541d42..5f01ab0 100644
--- a/oox/source/drawingml/chart/objectformatter.cxx
+++ b/oox/source/drawingml/chart/objectformatter.cxx
@@ -1111,11 +1111,7 @@ void ObjectFormatter::convertNumberFormat( PropertySet& rPropSet, const NumberFo
     if( mxData->mxNumFmts.is() )
     {
         sal_Int32 nPropId = bPercentFormat ? PROP_PercentageNumberFormat : PROP_NumberFormat;
-        if( rNumberFormat.mbSourceLinked || rNumberFormat.maFormatCode.isEmpty() )
-        {
-            rPropSet.setAnyProperty( nPropId, Any() );
-        }
-        else try
+        try
         {
             sal_Int32 nIndex = rNumberFormat.maFormatCode.equalsIgnoreAsciiCase("general") ?
                 mxData->mxNumTypes->getStandardIndex( mxData->maFromLocale ) :
@@ -1128,6 +1124,8 @@ void ObjectFormatter::convertNumberFormat( PropertySet& rPropSet, const NumberFo
             OSL_FAIL( OStringBuffer( "ObjectFormatter::convertNumberFormat - cannot create number format '" ).
                 append( OUStringToOString( rNumberFormat.maFormatCode, osl_getThreadTextEncoding() ) ).append( '\'' ).getStr() );
         }
+
+        rPropSet.setProperty(PROP_LinkNumberFormatToSource, makeAny(rNumberFormat.mbSourceLinked));
     }
 }
 
diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt
index b0001e3..6d384b8 100644
--- a/oox/source/token/properties.txt
+++ b/oox/source/token/properties.txt
@@ -291,6 +291,7 @@ LineStartWidth
 LineStyle
 LineTransparence
 LineWidth
+LinkNumberFormatToSource
 LinkURL
 LoadReadonly
 LookUpLabels


More information about the Libreoffice-commits mailing list