[Libreoffice-commits] core.git: 5 commits - chart2/qa oox/inc oox/source
Markus Mohrhard
markus.mohrhard at googlemail.com
Fri May 8 05:57:38 PDT 2015
chart2/qa/extras/chart2import.cxx | 73 ++++++++++
chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsx |binary
chart2/qa/extras/data/xlsx/axis_title_rotated.xlsx |binary
chart2/qa/extras/data/xlsx/secondary_axis_title_default_rotation.xlsx |binary
oox/inc/drawingml/chart/objectformatter.hxx | 8 -
oox/inc/drawingml/chart/titlemodel.hxx | 3
oox/source/drawingml/chart/axiscontext.cxx | 12 +
oox/source/drawingml/chart/objectformatter.cxx | 4
oox/source/drawingml/chart/titleconverter.cxx | 2
oox/source/drawingml/chart/titlemodel.cxx | 5
10 files changed, 90 insertions(+), 17 deletions(-)
New commits:
commit bc4f6677a0d307fb19ad4fdfb627c80e59fd6835
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Fri May 8 14:53:04 2015 +0200
add test for xlsx rotated axis title import
Change-Id: Ibfcf7cffe661efc1ce2063e87d38c45d943df69d
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index e20a5c2..7082077 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -87,6 +87,7 @@ public:
void testAxisTitleDefaultRotationXLSX();
void testSecondaryAxisTitleDefaultRotationXLSX();
+ void testAxisTitleRotationXLSX();
CPPUNIT_TEST_SUITE(Chart2ImportTest);
CPPUNIT_TEST(Fdo60083);
@@ -135,6 +136,7 @@ public:
CPPUNIT_TEST(testMinorTickMarksDefaultValue2013XLSX);
CPPUNIT_TEST(testAxisTitleDefaultRotationXLSX);
CPPUNIT_TEST(testSecondaryAxisTitleDefaultRotationXLSX);
+ CPPUNIT_TEST(testAxisTitleRotationXLSX);
CPPUNIT_TEST_SUITE_END();
private:
@@ -1061,6 +1063,38 @@ void Chart2ImportTest::testSecondaryAxisTitleDefaultRotationXLSX()
CPPUNIT_ASSERT_EQUAL(90.0, nRotation);
}
+void Chart2ImportTest::testAxisTitleRotationXLSX()
+{
+ load("/chart2/qa/extras/data/xlsx/", "axis_title_rotated.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ {
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 0);
+ CPPUNIT_ASSERT(xYAxis.is());
+ Reference<chart2::XTitled> xTitled(xYAxis, uno::UNO_QUERY_THROW);
+ Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(xTitle.is());
+ Reference<beans::XPropertySet> xPropSet(xTitle, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("TextRotation");
+ double nRotation = 0;
+ CPPUNIT_ASSERT(aAny >>= nRotation);
+ CPPUNIT_ASSERT_EQUAL(340.0, nRotation);
+ }
+ {
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 1);
+ CPPUNIT_ASSERT(xYAxis.is());
+ Reference<chart2::XTitled> xTitled(xYAxis, uno::UNO_QUERY_THROW);
+ Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(xTitle.is());
+ Reference<beans::XPropertySet> xPropSet(xTitle, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("TextRotation");
+ double nRotation = 0;
+ CPPUNIT_ASSERT(aAny >>= nRotation);
+ CPPUNIT_ASSERT_EQUAL(270.0, nRotation);
+ }
+
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/chart2/qa/extras/data/xlsx/axis_title_rotated.xlsx b/chart2/qa/extras/data/xlsx/axis_title_rotated.xlsx
new file mode 100644
index 0000000..29e42d8
Binary files /dev/null and b/chart2/qa/extras/data/xlsx/axis_title_rotated.xlsx differ
commit 13ede60a9604564339647cff6193d9343ea2fd48
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Fri May 8 14:52:14 2015 +0200
also add test for secondary axis, related tdf#75316
Change-Id: I88f46f7724296e1c58cf7604a0c514de91b5ae2a
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index a25449e..e20a5c2 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -86,6 +86,7 @@ public:
void testMinorTickMarksDefaultValue2013XLSX();
void testAxisTitleDefaultRotationXLSX();
+ void testSecondaryAxisTitleDefaultRotationXLSX();
CPPUNIT_TEST_SUITE(Chart2ImportTest);
CPPUNIT_TEST(Fdo60083);
@@ -133,6 +134,7 @@ public:
CPPUNIT_TEST(testMajorTickMarksDefaultValue2013XLSX);
CPPUNIT_TEST(testMinorTickMarksDefaultValue2013XLSX);
CPPUNIT_TEST(testAxisTitleDefaultRotationXLSX);
+ CPPUNIT_TEST(testSecondaryAxisTitleDefaultRotationXLSX);
CPPUNIT_TEST_SUITE_END();
private:
@@ -1042,6 +1044,23 @@ void Chart2ImportTest::testAxisTitleDefaultRotationXLSX()
CPPUNIT_ASSERT_EQUAL(90.0, nRotation);
}
+void Chart2ImportTest::testSecondaryAxisTitleDefaultRotationXLSX()
+{
+ load("/chart2/qa/extras/data/xlsx/", "secondary_axis_title_default_rotation.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 1);
+ CPPUNIT_ASSERT(xYAxis.is());
+ Reference<chart2::XTitled> xTitled(xYAxis, uno::UNO_QUERY_THROW);
+ Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(xTitle.is());
+ Reference<beans::XPropertySet> xPropSet(xTitle, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("TextRotation");
+ double nRotation = 0;
+ CPPUNIT_ASSERT(aAny >>= nRotation);
+ CPPUNIT_ASSERT_EQUAL(90.0, nRotation);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/chart2/qa/extras/data/xlsx/secondary_axis_title_default_rotation.xlsx b/chart2/qa/extras/data/xlsx/secondary_axis_title_default_rotation.xlsx
new file mode 100644
index 0000000..de5d039
Binary files /dev/null and b/chart2/qa/extras/data/xlsx/secondary_axis_title_default_rotation.xlsx differ
commit 5d69cd2eabb39c9a1be6d641f3bc901c84ea3608
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Fri May 8 14:39:30 2015 +0200
add test for tdf#75316
Change-Id: Ic9f20c90e54f53484d67c1c38530dbac9638cbfe
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index f7c7799..a25449e 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -85,6 +85,8 @@ public:
void testMajorTickMarksDefaultValue2013XLSX();
void testMinorTickMarksDefaultValue2013XLSX();
+ void testAxisTitleDefaultRotationXLSX();
+
CPPUNIT_TEST_SUITE(Chart2ImportTest);
CPPUNIT_TEST(Fdo60083);
CPPUNIT_TEST(testSteppedLines);
@@ -130,6 +132,7 @@ public:
CPPUNIT_TEST(testRAngAxDefaultValue2013XLSX);
CPPUNIT_TEST(testMajorTickMarksDefaultValue2013XLSX);
CPPUNIT_TEST(testMinorTickMarksDefaultValue2013XLSX);
+ CPPUNIT_TEST(testAxisTitleDefaultRotationXLSX);
CPPUNIT_TEST_SUITE_END();
private:
@@ -1022,6 +1025,23 @@ void Chart2ImportTest::testMinorTickMarksDefaultValue2013XLSX()
CPPUNIT_ASSERT_EQUAL(chart2::TickmarkStyle::INNER | chart2::TickmarkStyle::OUTER, nMajorTickmarks);
}
+void Chart2ImportTest::testAxisTitleDefaultRotationXLSX()
+{
+ load("/chart2/qa/extras/data/xlsx/", "axis_title_default_rotation.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 0);
+ CPPUNIT_ASSERT(xYAxis.is());
+ Reference<chart2::XTitled> xTitled(xYAxis, uno::UNO_QUERY_THROW);
+ Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(xTitle.is());
+ Reference<beans::XPropertySet> xPropSet(xTitle, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("TextRotation");
+ double nRotation = 0;
+ CPPUNIT_ASSERT(aAny >>= nRotation);
+ CPPUNIT_ASSERT_EQUAL(90.0, nRotation);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsx b/chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsx
new file mode 100644
index 0000000..5cda3af
Binary files /dev/null and b/chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsx differ
commit 28ca767e57e00990428b804154bf15b940c63bd1
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Fri May 8 14:22:01 2015 +0200
default text rotation for secondary axis is also from parent, tdf#75316
Change-Id: I0d17787e1b554854853910b1196582985864c944
diff --git a/oox/source/drawingml/chart/axiscontext.cxx b/oox/source/drawingml/chart/axiscontext.cxx
index 058f759..e735ac8 100644
--- a/oox/source/drawingml/chart/axiscontext.cxx
+++ b/oox/source/drawingml/chart/axiscontext.cxx
@@ -135,7 +135,7 @@ ContextHandlerRef AxisContextBase::onCreateContext( sal_Int32 nElement, const At
return 0;
case C_TOKEN( title ):
{
- bool bVerticalDefault = mrModel.mnAxisPos == XML_l;
+ bool bVerticalDefault = mrModel.mnAxisPos == XML_l || mrModel.mnAxisPos == XML_r;
sal_Int32 nDefaultRotation = bVerticalDefault ? -5400000 : 0;
return new TitleContext( *this, mrModel.mxTitle.create(nDefaultRotation) );
}
commit 07e3155a666e85b8213608423ae84dbd2b30c3dc
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Wed May 6 06:08:47 2015 +0200
inherit default title rotation from parent, tdf#75316
Change-Id: I2cf609a3f2c5eb1f9d7716b3ee89d4131d942ffb
diff --git a/oox/inc/drawingml/chart/objectformatter.hxx b/oox/inc/drawingml/chart/objectformatter.hxx
index 1e8d780..c84afc6 100644
--- a/oox/inc/drawingml/chart/objectformatter.hxx
+++ b/oox/inc/drawingml/chart/objectformatter.hxx
@@ -34,8 +34,6 @@ namespace oox {
namespace drawingml {
namespace chart {
-
-
/** Enumerates different object types for specific automatic formatting behaviour. */
enum ObjectType
{
@@ -67,8 +65,6 @@ enum ObjectType
OBJECTTYPE_DATATABLE /// Data table.
};
-
-
struct ChartSpaceModel;
struct ObjectFormatterData;
struct PictureOptionsModel;
@@ -125,7 +121,7 @@ public:
static void convertTextRotation(
PropertySet& rPropSet,
const ModelRef< TextBody >& rxTextProp,
- bool bSupportsStacked );
+ bool bSupportsStacked, sal_Int32 nDefaultRotation = 0);
/** Sets number format properties to the passed property set. */
void convertNumberFormat(
@@ -147,8 +143,6 @@ private:
std::shared_ptr< ObjectFormatterData > mxData;
};
-
-
} // namespace chart
} // namespace drawingml
} // namespace oox
diff --git a/oox/inc/drawingml/chart/titlemodel.hxx b/oox/inc/drawingml/chart/titlemodel.hxx
index dad4914..9e09c44 100644
--- a/oox/inc/drawingml/chart/titlemodel.hxx
+++ b/oox/inc/drawingml/chart/titlemodel.hxx
@@ -51,8 +51,9 @@ struct TitleModel
LayoutRef mxLayout; /// Layout/position of the frame.
TextRef mxText; /// Text source of the title.
bool mbOverlay; /// True = title may overlay other objects.
+ sal_Int32 mnDefaultRotation;
- explicit TitleModel();
+ explicit TitleModel(sal_Int32 nDefaultRotation = 0);
~TitleModel();
};
diff --git a/oox/source/drawingml/chart/axiscontext.cxx b/oox/source/drawingml/chart/axiscontext.cxx
index 618e3e8..058f759 100644
--- a/oox/source/drawingml/chart/axiscontext.cxx
+++ b/oox/source/drawingml/chart/axiscontext.cxx
@@ -115,6 +115,9 @@ ContextHandlerRef AxisContextBase::onCreateContext( sal_Int32 nElement, const At
case C_TOKEN( majorTickMark ):
mrModel.mnMajorTickMark = rAttribs.getToken( XML_val, bMSO2007Doc ? XML_out : XML_cross );
return 0;
+ case C_TOKEN(axPos):
+ mrModel.mnAxisPos = rAttribs.getToken( XML_val, XML_TOKEN_INVALID );
+ return 0;
case C_TOKEN( minorGridlines ):
return new ShapePrWrapperContext( *this, mrModel.mxMinorGridLines.create() );
case C_TOKEN( minorTickMark ):
@@ -131,7 +134,11 @@ ContextHandlerRef AxisContextBase::onCreateContext( sal_Int32 nElement, const At
mrModel.mnTickLabelPos = rAttribs.getToken( XML_val, XML_nextTo );
return 0;
case C_TOKEN( title ):
- return new TitleContext( *this, mrModel.mxTitle.create() );
+ {
+ bool bVerticalDefault = mrModel.mnAxisPos == XML_l;
+ sal_Int32 nDefaultRotation = bVerticalDefault ? -5400000 : 0;
+ return new TitleContext( *this, mrModel.mxTitle.create(nDefaultRotation) );
+ }
case C_TOKEN( txPr ):
return new TextBodyContext( *this, mrModel.mxTextProp.create() );
}
@@ -175,9 +182,6 @@ ContextHandlerRef CatAxisContext::onCreateContext( sal_Int32 nElement, const Att
case C_TOKEN( auto ):
mrModel.mbAuto = rAttribs.getBool( XML_val, !bMSO2007Doc );
return 0;
- case C_TOKEN( axPos ):
- mrModel.mnAxisPos = rAttribs.getToken( XML_val, XML_TOKEN_INVALID );
- return 0;
case C_TOKEN( lblAlgn ):
mrModel.mnLabelAlign = rAttribs.getToken( XML_val, XML_ctr );
return 0;
diff --git a/oox/source/drawingml/chart/objectformatter.cxx b/oox/source/drawingml/chart/objectformatter.cxx
index b61b991..fae8249 100644
--- a/oox/source/drawingml/chart/objectformatter.cxx
+++ b/oox/source/drawingml/chart/objectformatter.cxx
@@ -1067,7 +1067,7 @@ void ObjectFormatter::convertTextFormatting( PropertySet& rPropSet, const TextCh
pFormat->convertTextFormatting( rPropSet, rTextProps );
}
-void ObjectFormatter::convertTextRotation( PropertySet& rPropSet, const ModelRef< TextBody >& rxTextProp, bool bSupportsStacked )
+void ObjectFormatter::convertTextRotation( PropertySet& rPropSet, const ModelRef< TextBody >& rxTextProp, bool bSupportsStacked, sal_Int32 nDefaultRotation )
{
if( rxTextProp.is() )
{
@@ -1081,7 +1081,7 @@ void ObjectFormatter::convertTextRotation( PropertySet& rPropSet, const ModelRef
/* Chart2 expects rotation angle as double value in range of [0,360).
OOXML counts clockwise, Chart2 counts counterclockwise. */
- double fAngle = static_cast< double >( bStacked ? 0 : rxTextProp->getTextProperties().moRotation.get( 0 ) );
+ double fAngle = static_cast< double >( bStacked ? 0 : rxTextProp->getTextProperties().moRotation.get( nDefaultRotation ) );
// MS Office UI allows values only in range of [-90,90].
if ( fAngle < -5400000.0 || fAngle > 5400000.0 )
{
diff --git a/oox/source/drawingml/chart/titleconverter.cxx b/oox/source/drawingml/chart/titleconverter.cxx
index 34cc4d7..743fe1f 100644
--- a/oox/source/drawingml/chart/titleconverter.cxx
+++ b/oox/source/drawingml/chart/titleconverter.cxx
@@ -162,7 +162,7 @@ void TitleConverter::convertFromModel( const Reference< XTitled >& rxTitled, con
// frame rotation
OSL_ENSURE( !mrModel.mxTextProp || !rText.mxTextBody, "TitleConverter::convertFromModel - multiple text properties" );
ModelRef< TextBody > xTextProp = mrModel.mxTextProp.is() ? mrModel.mxTextProp : rText.mxTextBody;
- ObjectFormatter::convertTextRotation( aPropSet, xTextProp, true );
+ ObjectFormatter::convertTextRotation( aPropSet, xTextProp, true, mrModel.mnDefaultRotation );
// register the title and layout data for conversion of position
registerTitleLayout( xTitle, mrModel.mxLayout, eObjType, nMainIdx, nSubIdx );
diff --git a/oox/source/drawingml/chart/titlemodel.cxx b/oox/source/drawingml/chart/titlemodel.cxx
index 1f71533..c9c8eec 100644
--- a/oox/source/drawingml/chart/titlemodel.cxx
+++ b/oox/source/drawingml/chart/titlemodel.cxx
@@ -32,8 +32,9 @@ TextModel::~TextModel()
{
}
-TitleModel::TitleModel() :
- mbOverlay( false )
+TitleModel::TitleModel(sal_Int32 nDefaultRotation) :
+ mbOverlay( false ),
+ mnDefaultRotation(nDefaultRotation)
{
}
More information about the Libreoffice-commits
mailing list