summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorArmin Le Grand <alg@apache.org>2012-06-28 10:01:49 +0000
committerFridrich Štrba <fridrich.strba@bluewin.ch>2013-03-11 17:34:44 +0100
commitded39ea57b25617071012640cbaebaaf72a05744 (patch)
tree1d00661504e83782341f767f4e792ed47b0ffdc9 /chart2
parent224fbad7ab4cbedec53910f05e2b4a71771cfec5 (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')
-rw-r--r--chart2/source/model/main/Diagram.cxx11
-rw-r--r--chart2/source/model/template/PieChartType.cxx9
-rw-r--r--chart2/source/view/charttypes/PieChart.cxx14
-rw-r--r--chart2/source/view/main/ChartView.cxx23
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 );