diff options
author | Armin Le Grand <alg@apache.org> | 2012-06-28 10:01:49 +0000 |
---|---|---|
committer | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2013-03-11 17:34:44 +0100 |
commit | ded39ea57b25617071012640cbaebaaf72a05744 (patch) | |
tree | 1d00661504e83782341f767f4e792ed47b0ffdc9 /chart2/source | |
parent | 224fbad7ab4cbedec53910f05e2b4a71771cfec5 (diff) |
#119989# Support relative 3D pie chart height when importing charts.
Reported by: Yan Li
Patch by: Yan Li, Tan Li, alg
Review by: alg(cherry picked from commit 2b1cedbe547ea8f7979f91873dd6e602ebb08a7b)
Signed-off-by: Fridrich Štrba <fridrich.strba@bluewin.ch>
Conflicts:
chart2/source/view/charttypes/PieChart.cxx
chart2/source/view/main/ChartView.cxx
sc/source/filter/inc/xlchart.hxx
Change-Id: Ibc6f070021c79809c651ba789409a5fb5096c185
Diffstat (limited to 'chart2/source')
-rw-r--r-- | chart2/source/model/main/Diagram.cxx | 11 | ||||
-rw-r--r-- | chart2/source/model/template/PieChartType.cxx | 9 | ||||
-rw-r--r-- | chart2/source/view/charttypes/PieChart.cxx | 14 | ||||
-rw-r--r-- | chart2/source/view/main/ChartView.cxx | 23 |
4 files changed, 53 insertions, 4 deletions
diff --git a/chart2/source/model/main/Diagram.cxx b/chart2/source/model/main/Diagram.cxx index 75c97e173f93..810da642c78f 100644 --- a/chart2/source/model/main/Diagram.cxx +++ b/chart2/source/model/main/Diagram.cxx @@ -73,7 +73,8 @@ enum PROP_DIAGRAM_PERSPECTIVE, PROP_DIAGRAM_ROTATION_HORIZONTAL, PROP_DIAGRAM_ROTATION_VERTICAL, - PROP_DIAGRAM_MISSING_VALUE_TREATMENT + PROP_DIAGRAM_MISSING_VALUE_TREATMENT, + PROP_DIAGRAM_3DRELATIVEHEIGHT }; void lcl_AddPropertiesToVector( @@ -166,6 +167,11 @@ void lcl_AddPropertiesToVector( ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), beans::PropertyAttribute::BOUND | beans::PropertyAttribute::MAYBEVOID )); + rOutProperties.push_back( + Property( C2U("3DRelativeHeight"), + PROP_DIAGRAM_3DRELATIVEHEIGHT, + ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), + beans::PropertyAttribute::MAYBEVOID )); } struct StaticDiagramDefaults_Initializer @@ -186,7 +192,8 @@ private: ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_DIAGRAM_INCLUDE_HIDDEN_CELLS, true ); ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_DIAGRAM_RIGHT_ANGLED_AXES, false ); ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_DIAGRAM_STARTING_ANGLE, 90 ); - ::chart::SceneProperties::AddDefaultsToMap( rOutMap ); + ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_DIAGRAM_3DRELATIVEHEIGHT, 100 ); + ::chart::SceneProperties::AddDefaultsToMap( rOutMap ); } }; diff --git a/chart2/source/model/template/PieChartType.cxx b/chart2/source/model/template/PieChartType.cxx index 41e44fafd89a..5bef973816d9 100644 --- a/chart2/source/model/template/PieChartType.cxx +++ b/chart2/source/model/template/PieChartType.cxx @@ -42,7 +42,8 @@ namespace enum { - PROP_PIECHARTTYPE_USE_RINGS + PROP_PIECHARTTYPE_USE_RINGS, + PROP_PIECHARTTYPE_3DRELATIVEHEIGHT }; static void lcl_AddPropertiesToVector( @@ -54,6 +55,11 @@ static void lcl_AddPropertiesToVector( ::getBooleanCppuType(), beans::PropertyAttribute::BOUND | beans::PropertyAttribute::MAYBEDEFAULT )); + rOutProperties.push_back( + Property( C2U("3DRelativeHeight"), + PROP_PIECHARTTYPE_3DRELATIVEHEIGHT, + ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), + beans::PropertyAttribute::MAYBEVOID )); } struct StaticPieChartTypeDefaults_Initializer @@ -68,6 +74,7 @@ private: void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap ) { ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_PIECHARTTYPE_USE_RINGS, false ); + ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_PIECHARTTYPE_3DRELATIVEHEIGHT, 100 ); } }; diff --git a/chart2/source/view/charttypes/PieChart.cxx b/chart2/source/view/charttypes/PieChart.cxx index b5c307a86c87..b532c2064d25 100644 --- a/chart2/source/view/charttypes/PieChart.cxx +++ b/chart2/source/view/charttypes/PieChart.cxx @@ -340,6 +340,17 @@ void PieChart::createShapes() m_aLabelInfoList.clear(); ::rtl::math::setNan(&m_fMaxOffset); + sal_Int32 n3DRelativeHeight = 100; + uno::Reference< beans::XPropertySet > xPropertySet( m_xChartTypeModel, uno::UNO_QUERY ); + if ( (m_nDimension==3) && xPropertySet.is()) + { + try + { + uno::Any aAny = xPropertySet->getPropertyValue( C2U("3DRelativeHeight") ); + aAny >>= n3DRelativeHeight; + } + catch(const uno::Exception& e) {} + } //============================================================================= for( double fSlotX=0; aXSlotIter != aXSlotEnd && (m_bUseRings||fSlotX<0.5 ); ++aXSlotIter, fSlotX+=1.0 ) @@ -380,7 +391,8 @@ void PieChart::createShapes() if( !bIsVisible ) continue; - double fDepth = this->getTransformedDepth(); + double fLogicZ = -1.0;//as defined + double fDepth = this->getTransformedDepth() * (n3DRelativeHeight / 100.0); uno::Reference< drawing::XShapes > xSeriesGroupShape_Shapes = getSeriesGroupShape(pSeries, xSeriesTarget); //collect data point information (logic coordinates, style ): diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index feeb6e6788d7..70612e01550a 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -102,6 +102,7 @@ #include <com/sun/star/view/XSelectionSupplier.hpp> #include <svl/languageoptions.hxx> #include <sot/clsids.hxx> +#include "servicenames_charttypes.hxx" #include <rtl/strbuf.hxx> #include <rtl/ustring.hxx> @@ -621,6 +622,7 @@ void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter( sal_Bool bGroupBarsPerAxis = sal_True; sal_Bool bIncludeHiddenCells = sal_True; sal_Int32 nStartingAngle = 90; + sal_Int32 n3DRelativeHeight = 100; try { uno::Reference< beans::XPropertySet > xDiaProp( xDiagram, uno::UNO_QUERY_THROW ); @@ -629,6 +631,11 @@ void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter( xDiaProp->getPropertyValue( "GroupBarsPerAxis" ) >>= bGroupBarsPerAxis; xDiaProp->getPropertyValue( "IncludeHiddenCells" ) >>= bIncludeHiddenCells; xDiaProp->getPropertyValue( "StartingAngle" ) >>= nStartingAngle; + + if (nDimensionCount == 3) + { + xDiaProp->getPropertyValue( "3DRelativeHeight" ) >>= n3DRelativeHeight; + } } catch( const uno::Exception & ex ) { @@ -663,6 +670,22 @@ void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter( for( sal_Int32 nT = 0; nT < aChartTypeList.getLength(); ++nT ) { uno::Reference< XChartType > xChartType( aChartTypeList[nT] ); + if(3 == nDimensionCount && xChartType->getChartType().equalsIgnoreAsciiCase(CHART2_SERVICE_NAME_CHARTTYPE_PIE)) + { + uno::Reference< beans::XPropertySet > xPropertySet( xChartType, uno::UNO_QUERY ); + if (xPropertySet.is()) + { + try + { + sal_Int32 n3DRelativeHeightOldValue(100); + uno::Any aAny = xPropertySet->getPropertyValue( C2U("3DRelativeHeight") ); + aAny >>= n3DRelativeHeightOldValue; + if (n3DRelativeHeightOldValue != n3DRelativeHeight) + xPropertySet->setPropertyValue( C2U("3DRelativeHeight"), uno::makeAny(n3DRelativeHeight) ); + } + catch(const uno::Exception& e){} + } + } if(nT==0) m_bChartTypeUsesShiftedCategoryPositionPerDefault = ChartTypeHelper::shiftCategoryPosAtXAxisPerDefault( xChartType ); |