summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorBalazs Varga <balazs.varga991@gmail.com>2019-09-19 15:15:58 +0200
committerLászló Németh <nemeth@numbertext.org>2019-09-23 15:53:14 +0200
commit830e539547c463b932ce643517f880789185032d (patch)
tree9821b48984af82e31edfaa2f5bc0e65a92fd3467 /chart2
parent9f1352381eb54d3fc822cd56060a69bd51f62a21 (diff)
tdf#127393 OOXML chart import: fix X axis position setting "CrossBetween"
Set ShiftedCategoryPosition according to OOXML value CrossBetween. Change-Id: I6445c94507de83f84b08fd3380cbbf03886b5aa3 Reviewed-on: https://gerrit.libreoffice.org/79142 Reviewed-by: László Németh <nemeth@numbertext.org> Tested-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/qa/extras/chart2import.cxx29
-rw-r--r--chart2/qa/extras/data/pptx/tdf127393.pptxbin0 -> 64536 bytes
-rw-r--r--chart2/source/view/main/ChartView.cxx12
3 files changed, 36 insertions, 5 deletions
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index 53f4a2d30e19..c0850820acc3 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -129,6 +129,7 @@ public:
void testTdf114179();
void testTdf124243();
+ void testTdf127393();
void testDeletedDataLabel();
void testDataPointInheritedColorDOCX();
void testExternalStrRefsXLSX();
@@ -218,6 +219,7 @@ public:
CPPUNIT_TEST(testTdf114179);
CPPUNIT_TEST(testTdf124243);
+ CPPUNIT_TEST(testTdf127393);
CPPUNIT_TEST(testDeletedDataLabel);
CPPUNIT_TEST(testDataPointInheritedColorDOCX);
CPPUNIT_TEST(testExternalStrRefsXLSX);
@@ -1929,6 +1931,33 @@ void Chart2ImportTest::testTdf124243()
CPPUNIT_ASSERT(!bShow);
}
+void Chart2ImportTest::testTdf127393()
+{
+ load("/chart2/qa/extras/data/pptx/", "tdf127393.pptx");
+
+ // 1st chart
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xAxis.is());
+
+ chart2::ScaleData aScaleData1 = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData1.Categories.is());
+ CPPUNIT_ASSERT(aScaleData1.ShiftedCategoryPosition);
+
+ // 2nd chart
+ xChartDoc.set(getChartDocFromDrawImpress(1, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ xAxis.set(getAxisFromDoc(xChartDoc, 0, 0, 0));
+ CPPUNIT_ASSERT(xAxis.is());
+
+ chart2::ScaleData aScaleData2 = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData2.Categories.is());
+ CPPUNIT_ASSERT(!aScaleData2.ShiftedCategoryPosition);
+}
+
namespace {
void checkDataLabelProperties(const Reference<chart2::XDataSeries>& xDataSeries, sal_Int32 nDataPointIndex, bool bValueVisible)
diff --git a/chart2/qa/extras/data/pptx/tdf127393.pptx b/chart2/qa/extras/data/pptx/tdf127393.pptx
new file mode 100644
index 000000000000..7c4047817a2f
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf127393.pptx
Binary files differ
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index 200b4b4e9823..238069cdf2e1 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -325,7 +325,7 @@ public:
void AdaptScaleOfYAxisWithoutAttachedSeries( ChartModel& rModel );
bool isCategoryPositionShifted(
- const chart2::ScaleData& rSourceScale, bool bHasComplexCategories ) const;
+ const chart2::ScaleData& rSourceScale, bool bHasComplexCategories, bool bShiftedCategoryPosition) const;
private:
/** A vector of series plotters.
@@ -631,12 +631,12 @@ void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter(
}
bool SeriesPlotterContainer::isCategoryPositionShifted(
- const chart2::ScaleData& rSourceScale, bool bHasComplexCategories ) const
+ const chart2::ScaleData& rSourceScale, bool bHasComplexCategories, bool bShiftedCategoryPosition) const
{
- if (rSourceScale.AxisType == AxisType::CATEGORY && m_bChartTypeUsesShiftedCategoryPositionPerDefault)
+ if (rSourceScale.AxisType == AxisType::CATEGORY && (m_bChartTypeUsesShiftedCategoryPositionPerDefault || bShiftedCategoryPosition))
return true;
- if (rSourceScale.AxisType==AxisType::CATEGORY && bHasComplexCategories)
+ if (rSourceScale.AxisType == AxisType::CATEGORY && bHasComplexCategories)
return true;
if (rSourceScale.AxisType == AxisType::DATE)
@@ -683,7 +683,9 @@ void SeriesPlotterContainer::initAxisUsageList(const Date& rNullDate)
AxisHelper::checkDateAxis( aSourceScale, pCatProvider, bDateAxisAllowed );
bool bHasComplexCat = pCatProvider && pCatProvider->hasComplexCategories();
- aSourceScale.ShiftedCategoryPosition = isCategoryPositionShifted(aSourceScale, bHasComplexCat);
+ // Come from CrossBetween OOXML tag
+ bool bShiftedCategoryPosition = aSourceScale.ShiftedCategoryPosition;
+ aSourceScale.ShiftedCategoryPosition = isCategoryPositionShifted(aSourceScale, bHasComplexCat, bShiftedCategoryPosition);
m_aAxisUsageList[xAxis].aAutoScaling = ScaleAutomatism(aSourceScale, rNullDate);
}