summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorTünde Tóth <tundeth@gmail.com>2020-03-06 10:29:03 +0100
committerLászló Németh <nemeth@numbertext.org>2020-04-09 11:12:22 +0200
commit40d83914d43f60a196dfabddea0b52e2046b333a (patch)
tree86165bf504f42aba1195249c48f0a109722e23b3 /chart2
parent31de39108ce19c002ab4ef6ab369dd5bfa668634 (diff)
tdf#127792 implement UNO chart attribute MajorOrigin
based on the specification in OFFICE-3936 for ODF 1.4: https://issues.oasis-open.org/browse/OFFICE-3936 Note: import of the embedded chart of the DOCX unit test document uses also ODF format in the background, testing also the extension of the native file format. Follow-up of commit 830e539547c463b932ce643517f880789185032d (tdf#127393 OOXML chart import: fix X axis position setting "CrossBetween"). See also commits with "ShiftedCategoryPosition" in their descriptions. Change-Id: I9cd278ac0172c0fab7c51d585a65c34a0ad60b82 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90081 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/qa/extras/chart2export.cxx23
-rw-r--r--chart2/qa/extras/data/docx/MSO_axis_position.docxbin0 -> 41444 bytes
-rw-r--r--chart2/source/controller/chartapiwrapper/AxisWrapper.cxx10
-rw-r--r--chart2/source/model/main/Axis.cxx11
4 files changed, 39 insertions, 5 deletions
diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
index 589225e8cd2e..8e2e1a84bcf9 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -133,7 +133,7 @@ public:
void testCrossBetweenODS();
void testAxisTitleRotationXLSX();
void testAxisTitlePositionDOCX();
- void testAxisCrossBetweenXSLX();
+ void testAxisCrossBetweenDOCX();
void testPieChartDataPointExplosionXLSX();
void testCustomDataLabel();
void testCustomPositionofDataLabel();
@@ -161,6 +161,7 @@ public:
void testTdf130225();
void testTdf126076();
void testTdf75330();
+ void testTdf127792();
CPPUNIT_TEST_SUITE(Chart2ExportTest);
CPPUNIT_TEST(testErrorBarXLSX);
@@ -257,7 +258,7 @@ public:
CPPUNIT_TEST(testCrossBetweenODS);
CPPUNIT_TEST(testAxisTitleRotationXLSX);
CPPUNIT_TEST(testAxisTitlePositionDOCX);
- CPPUNIT_TEST(testAxisCrossBetweenXSLX);
+ CPPUNIT_TEST(testAxisCrossBetweenDOCX);
CPPUNIT_TEST(testPieChartDataPointExplosionXLSX);
CPPUNIT_TEST(testCustomDataLabel);
CPPUNIT_TEST(testCustomPositionofDataLabel);
@@ -285,6 +286,7 @@ public:
CPPUNIT_TEST(testTdf130225);
CPPUNIT_TEST(testTdf126076);
CPPUNIT_TEST(testTdf75330);
+ CPPUNIT_TEST(testTdf127792);
CPPUNIT_TEST_SUITE_END();
@@ -2105,7 +2107,7 @@ void Chart2ExportTest::testAxisTitlePositionDOCX()
CPPUNIT_ASSERT_DOUBLES_EQUAL(0.384070199122511, nY, 1e-2);
}
-void Chart2ExportTest::testAxisCrossBetweenXSLX()
+void Chart2ExportTest::testAxisCrossBetweenDOCX()
{
load("/chart2/qa/extras/data/odt/", "axis-position.odt");
xmlDocPtr pXmlDoc = parseExport("word/charts/chart", "Office Open XML Text");
@@ -2634,6 +2636,21 @@ void Chart2ExportTest::testTdf75330()
}
}
+void Chart2ExportTest::testTdf127792()
+{
+ load("/chart2/qa/extras/data/docx/", "MSO_axis_position.docx");
+ {
+ xmlDocPtr pXmlDoc = parseExport("word/charts/chart1", "Office Open XML Text");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:crossBetween", "val", "between");
+ }
+ {
+ xmlDocPtr pXmlDoc = parseExport("word/charts/chart2", "Office Open XML Text");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:crossBetween", "val", "midCat");
+ }
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ExportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/chart2/qa/extras/data/docx/MSO_axis_position.docx b/chart2/qa/extras/data/docx/MSO_axis_position.docx
new file mode 100644
index 000000000000..a9955b7b1ad7
--- /dev/null
+++ b/chart2/qa/extras/data/docx/MSO_axis_position.docx
Binary files differ
diff --git a/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx b/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx
index 3516d7a29ba2..b0a1d5f85746 100644
--- a/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx
@@ -96,7 +96,8 @@ enum
PROP_AXIS_GAP_WIDTH,
PROP_AXIS_DISPLAY_UNITS,
PROP_AXIS_BUILTINUNIT,
- PROP_AXIS_TRY_STAGGERING_FIRST
+ PROP_AXIS_TRY_STAGGERING_FIRST,
+ PROP_AXIS_MAJOR_ORIGIN
};
void lcl_AddPropertiesToVector(
@@ -323,6 +324,12 @@ void lcl_AddPropertiesToVector(
cppu::UnoType<bool>::get(),
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::MAYBEDEFAULT );
+
+ rOutProperties.emplace_back( "MajorOrigin",
+ PROP_AXIS_MAJOR_ORIGIN,
+ cppu::UnoType<double>::get(),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::MAYBEVOID );
}
struct StaticAxisWrapperPropertyArray_Initializer
@@ -616,6 +623,7 @@ std::vector< std::unique_ptr<WrappedProperty> > AxisWrapper::createWrappedProper
aWrappedProperties.emplace_back( new WrappedLinkNumberFormatProperty );
aWrappedProperties.emplace_back( new WrappedProperty("StackedText","StackCharacters") );
aWrappedProperties.emplace_back( new WrappedDirectStateProperty("CrossoverPosition","CrossoverPosition") );
+ aWrappedProperties.emplace_back( new WrappedDirectStateProperty("MajorOrigin","MajorOrigin") );
{
WrappedGapwidthProperty* pWrappedGapwidthProperty( new WrappedGapwidthProperty( m_spChart2ModelContact ) );
WrappedBarOverlapProperty* pWrappedBarOverlapProperty( new WrappedBarOverlapProperty( m_spChart2ModelContact ) );
diff --git a/chart2/source/model/main/Axis.cxx b/chart2/source/model/main/Axis.cxx
index b7e19a49e548..ff42899d0c18 100644
--- a/chart2/source/model/main/Axis.cxx
+++ b/chart2/source/model/main/Axis.cxx
@@ -75,7 +75,8 @@ enum
PROP_AXIS_DISPLAY_UNITS,
PROP_AXIS_BUILTINUNIT,
- PROP_AXIS_TRY_STAGGERING_FIRST
+ PROP_AXIS_TRY_STAGGERING_FIRST,
+ PROP_AXIS_MAJOR_ORIGIN
};
void lcl_AddPropertiesToVector(
@@ -161,11 +162,13 @@ void lcl_AddPropertiesToVector(
cppu::UnoType<sal_Int32>::get(),
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::MAYBEDEFAULT );
+
rOutProperties.emplace_back( "MinorTickmarks",
PROP_AXIS_MINOR_TICKMARKS,
cppu::UnoType<sal_Int32>::get(),
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::MAYBEDEFAULT );
+
rOutProperties.emplace_back( "MarkPosition",
PROP_AXIS_MARK_POSITION,
cppu::UnoType<css::chart::ChartAxisMarkPosition>::get(),
@@ -193,6 +196,12 @@ void lcl_AddPropertiesToVector(
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::MAYBEDEFAULT );
+ rOutProperties.emplace_back( "MajorOrigin",
+ PROP_AXIS_MAJOR_ORIGIN,
+ cppu::UnoType<double>::get(),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::MAYBEVOID );
+
}
struct StaticAxisDefaults_Initializer