diff options
author | Armin Le Grand <alg@apache.org> | 2012-06-28 10:01:49 +0000 |
---|---|---|
committer | Thorsten Behrens <tbehrens@suse.com> | 2013-03-11 17:40:36 +0000 |
commit | a8f081d14741cdc1c0df272adf1f26839d2f0aee (patch) | |
tree | 5787106bb90762b1b4787fd95977b743927f5ee0 /chart2 | |
parent | 3f04ec08b75d4ecb44ec3ec1230d2072d975c63d (diff) |
Resolves: #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>
(cherry picked from commit ded39ea57b25617071012640cbaebaaf72a05744)
Change-Id: Ibc6f070021c79809c651ba789409a5fb5096c185
Reviewed-on: https://gerrit.libreoffice.org/2671
Reviewed-by: Thorsten Behrens <tbehrens@suse.com>
Tested-by: Thorsten Behrens <tbehrens@suse.com>
Diffstat (limited to 'chart2')
-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 1cca41cb71a2..1756c822fcc0 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 450a622b52ab..05b82197ba21 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 e8fc6892d89d..bb689485df31 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 f2ace4a0c072..82ca2d96b1c7 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( C2U( "GroupBarsPerAxis" ) ) >>= bGroupBarsPerAxis; xDiaProp->getPropertyValue( C2U( "IncludeHiddenCells" ) ) >>= bIncludeHiddenCells; xDiaProp->getPropertyValue( C2U( "StartingAngle" ) ) >>= nStartingAngle; + + if (nDimensionCount == 3) + { + xDiaProp->getPropertyValue( C2U( "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 ); |