[PATCH libreoffice-4-0] Resolves: #119989# Support relative 3D pie chart height when...

Fridrich Strba (via Code Review) gerrit at gerrit.libreoffice.org
Mon Mar 11 10:26:24 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/2671

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/71/2671/1

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 at bluewin.ch>

(cherry picked from commit ded39ea57b25617071012640cbaebaaf72a05744)

Change-Id: Ibc6f070021c79809c651ba789409a5fb5096c185
---
M chart2/source/model/main/Diagram.cxx
M chart2/source/model/template/PieChartType.cxx
M chart2/source/view/charttypes/PieChart.cxx
M chart2/source/view/main/ChartView.cxx
M sc/source/filter/excel/xichart.cxx
M sc/source/filter/inc/xlchart.hxx
6 files changed, 60 insertions(+), 4 deletions(-)



diff --git a/chart2/source/model/main/Diagram.cxx b/chart2/source/model/main/Diagram.cxx
index 1cca41c..1756c822 100644
--- a/chart2/source/model/main/Diagram.cxx
+++ b/chart2/source/model/main/Diagram.cxx
@@ -73,7 +73,8 @@
     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 @@
                   ::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 @@
         ::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 450a622..05b8219 100644
--- a/chart2/source/model/template/PieChartType.cxx
+++ b/chart2/source/model/template/PieChartType.cxx
@@ -42,7 +42,8 @@
 
 enum
 {
-    PROP_PIECHARTTYPE_USE_RINGS
+    PROP_PIECHARTTYPE_USE_RINGS,
+    PROP_PIECHARTTYPE_3DRELATIVEHEIGHT
 };
 
 static void lcl_AddPropertiesToVector(
@@ -54,6 +55,11 @@
                   ::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 @@
     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 e8fc689..bb68948 100644
--- a/chart2/source/view/charttypes/PieChart.cxx
+++ b/chart2/source/view/charttypes/PieChart.cxx
@@ -340,6 +340,17 @@
 
     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 @@
             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 f2ace4a..82ca2d9 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 @@
     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 @@
         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 @@
         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 );
diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx
index 8310deb..f945a89 100644
--- a/sc/source/filter/excel/xichart.cxx
+++ b/sc/source/filter/excel/xichart.cxx
@@ -2452,6 +2452,7 @@
     }
 
     // properties
+    rPropSet.SetProperty( EXC_CHPROP_3DRELATIVEHEIGHT, (sal_Int32)(maData.mnRelHeight / 2)); // seems to be 200%, cange to 100%
     rPropSet.SetProperty( EXC_CHPROP_ROTATIONVERTICAL, nRotationY );
     rPropSet.SetProperty( EXC_CHPROP_ROTATIONHORIZONTAL, nRotationX );
     rPropSet.SetProperty( EXC_CHPROP_PERSPECTIVE, nPerspective );
diff --git a/sc/source/filter/inc/xlchart.hxx b/sc/source/filter/inc/xlchart.hxx
index 97d3a32..fc74ff8 100644
--- a/sc/source/filter/inc/xlchart.hxx
+++ b/sc/source/filter/inc/xlchart.hxx
@@ -80,6 +80,7 @@
 #define EXC_CHPROP_CROSSOVERPOSITION        "CrossoverPosition"
 #define EXC_CHPROP_CROSSOVERVALUE           "CrossoverValue"
 #define EXC_CHPROP_CURVESTYLE               "CurveStyle"
+#define EXC_CHPROP_D3DCAMERAGEOMETRY        "D3DCameraGeometry"
 #define EXC_CHPROP_D3DSCENEAMBIENTCOLOR     "D3DSceneAmbientColor"
 #define EXC_CHPROP_D3DSCENELIGHTON1         "D3DSceneLightOn1"
 #define EXC_CHPROP_D3DSCENELIGHTCOLOR2      "D3DSceneLightColor2"
@@ -87,14 +88,18 @@
 #define EXC_CHPROP_D3DSCENELIGHTON2         "D3DSceneLightOn2"
 #define EXC_CHPROP_D3DSCENEPERSPECTIVE      "D3DScenePerspective"
 #define EXC_CHPROP_D3DSCENESHADEMODE        "D3DSceneShadeMode"
+#define EXC_CHPROP_D3DTRANSFORMMATRIX       "D3DTransformMatrix"
 #define EXC_CHPROP_DISPLAYLABELS            "DisplayLabels"
 #define EXC_CHPROP_ERRORBARSTYLE            "ErrorBarStyle"
 #define EXC_CHPROP_ERRORBARX                "ErrorBarX"
 #define EXC_CHPROP_ERRORBARY                "ErrorBarY"
 #define EXC_CHPROP_EXPANSION                "Expansion"
 #define EXC_CHPROP_EXPTIMEINCREMENT         "ExplicitTimeIncrement"
+#define EXC_CHPROP_FILLBITMAPMODE           "FillBitmapMode"
+#define EXC_CHPROP_FILLSTYLE                "FillStyle"
 #define EXC_CHPROP_GAPWIDTHSEQ              "GapwidthSequence"
 #define EXC_CHPROP_GEOMETRY3D               "Geometry3D"
+#define EXC_CHPROP_HASMAINTITLE             "HasMainTitle"
 #define EXC_CHPROP_INCLUDEHIDDENCELLS       "IncludeHiddenCells"
 #define EXC_CHPROP_JAPANESE                 "Japanese"
 #define EXC_CHPROP_LABEL                    "Label"
@@ -119,6 +124,7 @@
 #define EXC_CHPROP_ROLE                     "Role"
 #define EXC_CHPROP_ROTATIONHORIZONTAL       "RotationHorizontal"
 #define EXC_CHPROP_ROTATIONVERTICAL         "RotationVertical"
+#define EXC_CHPROP_3DRELATIVEHEIGHT         "3DRelativeHeight"
 #define EXC_CHPROP_SHOW                     "Show"
 #define EXC_CHPROP_SHOWCORRELATION          "ShowCorrelationCoefficient"
 #define EXC_CHPROP_SHOWEQUATION             "ShowEquation"

-- 
To view, visit https://gerrit.libreoffice.org/2671
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibc6f070021c79809c651ba789409a5fb5096c185
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: libreoffice-4-0
Gerrit-Owner: Fridrich Strba <fridrich at documentfoundation.org>



More information about the LibreOffice mailing list