summaryrefslogtreecommitdiffstats
path: root/chart2/source/view/inc
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2022-01-11 14:32:45 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-01-11 17:35:32 +0100
commitf242cc6d5be5c6f5446976fd6a7c26ad0cee7683 (patch)
treeab49d3894dd60dea324fbf79cea76d7a394af934 /chart2/source/view/inc
parentdo not call broadcast SetStyleSheet from a non-broadcast one (diff)
downloadcore-f242cc6d5be5c6f5446976fd6a7c26ad0cee7683.tar.gz
core-f242cc6d5be5c6f5446976fd6a7c26ad0cee7683.zip
use vectors to build up point data, instead of Sequence
which shaves 1% off the load time of a large chart Change-Id: Ieb8f029f760f41c3bef63bbc4cd221c1473f0f49 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128283 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'chart2/source/view/inc')
-rw-r--r--chart2/source/view/inc/Clipping.hxx6
-rw-r--r--chart2/source/view/inc/PlottingPositionHelper.hxx1
-rw-r--r--chart2/source/view/inc/ShapeFactory.hxx17
-rw-r--r--chart2/source/view/inc/VDataSeries.hxx3
4 files changed, 25 insertions, 2 deletions
diff --git a/chart2/source/view/inc/Clipping.hxx b/chart2/source/view/inc/Clipping.hxx
index 64697dfb9714..e816e7aa79b1 100644
--- a/chart2/source/view/inc/Clipping.hxx
+++ b/chart2/source/view/inc/Clipping.hxx
@@ -22,6 +22,7 @@
#include <basegfx/range/b2drectangle.hxx>
namespace com::sun::star::drawing { struct PolyPolygonShape3D; }
+namespace com::sun::star::drawing { struct Position3D; }
namespace chart
{
@@ -48,6 +49,11 @@ public:
, const ::basegfx::B2DRectangle& rRectangle
, css::drawing::PolyPolygonShape3D& aResult
, bool bSplitPiecesToDifferentPolygons = true );
+ static void clipPolygonAtRectangle(
+ const std::vector<std::vector<css::drawing::Position3D>>& rPolygon
+ , const ::basegfx::B2DRectangle& rRectangle
+ , std::vector<std::vector<css::drawing::Position3D>>& aResult
+ , bool bSplitPiecesToDifferentPolygons = true );
};
} //namespace chart
diff --git a/chart2/source/view/inc/PlottingPositionHelper.hxx b/chart2/source/view/inc/PlottingPositionHelper.hxx
index f5360942b2d7..14e22375df17 100644
--- a/chart2/source/view/inc/PlottingPositionHelper.hxx
+++ b/chart2/source/view/inc/PlottingPositionHelper.hxx
@@ -84,6 +84,7 @@ public:
transformScaledLogicToScene( double fX, double fY, double fZ, bool bClip ) const;
void transformScaledLogicToScene( css::drawing::PolyPolygonShape3D& rPoly ) const;
+ void transformScaledLogicToScene( std::vector<std::vector<css::drawing::Position3D>>& rPoly ) const;
static css::awt::Point transformSceneToScreenPosition(
const css::drawing::Position3D& rScenePosition3D
diff --git a/chart2/source/view/inc/ShapeFactory.hxx b/chart2/source/view/inc/ShapeFactory.hxx
index f198f074f519..e8ff694f32cc 100644
--- a/chart2/source/view/inc/ShapeFactory.hxx
+++ b/chart2/source/view/inc/ShapeFactory.hxx
@@ -154,11 +154,19 @@ public:
createArea3D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
, const css::drawing::PolyPolygonShape3D& rPolyPolygon
, double fDepth);
+ static rtl::Reference<Svx3DExtrudeObject>
+ createArea3D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
+ , const std::vector<std::vector<css::drawing::Position3D>>& rPolyPolygon
+ , double fDepth);
static SdrPathObj*
createArea2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
, const css::drawing::PolyPolygonShape3D& rPolyPolygon
, bool bSetZOrderToZero = true);
+ static SdrPathObj*
+ createArea2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
+ , const std::vector<std::vector<css::drawing::Position3D>>& rPolyPolygon
+ , bool bSetZOrderToZero = true);
static rtl::Reference<SvxShapePolyPolygon>
createSymbol2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
@@ -178,6 +186,10 @@ public:
createLine2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
, const css::drawing::PointSequenceSequence& rPoints
, const VLineProperties* pLineProperties = nullptr );
+ static rtl::Reference<SvxShapePolyPolygon>
+ createLine2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
+ , const std::vector<std::vector<css::drawing::Position3D>>& rPoints
+ , const VLineProperties* pLineProperties = nullptr );
static rtl::Reference<SvxShapePolyPolygon>
createLine ( const rtl::Reference<SvxShapeGroupAnyD>& xTarget,
@@ -185,7 +197,7 @@ public:
static rtl::Reference<Svx3DPolygonObject>
createLine3D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
- , const css::drawing::PolyPolygonShape3D& rPoints
+ , const std::vector<std::vector<css::drawing::Position3D>>& rPoints
, const VLineProperties& rLineProperties );
static rtl::Reference<SvxShapeCircle>
@@ -262,8 +274,11 @@ public:
static OUString getStackedString( const OUString& rString, bool bStacked );
static bool hasPolygonAnyLines( css::drawing::PolyPolygonShape3D& rPoly );
+ static bool hasPolygonAnyLines( const std::vector<std::vector<css::drawing::Position3D>>& rPoly );
static bool isPolygonEmptyOrSinglePoint( css::drawing::PolyPolygonShape3D& rPoly );
+ static bool isPolygonEmptyOrSinglePoint( const std::vector<std::vector<css::drawing::Position3D>>& rPoly );
static void closePolygon( css::drawing::PolyPolygonShape3D& rPoly );
+ static void closePolygon( std::vector<std::vector<css::drawing::Position3D>>& rPoly );
static css::awt::Size calculateNewSizeRespectingAspectRatio(
const css::awt::Size& rTargetSize
diff --git a/chart2/source/view/inc/VDataSeries.hxx b/chart2/source/view/inc/VDataSeries.hxx
index 48ea0d4234ff..bfbc6c9b20ea 100644
--- a/chart2/source/view/inc/VDataSeries.hxx
+++ b/chart2/source/view/inc/VDataSeries.hxx
@@ -22,6 +22,7 @@
#include <com/sun/star/chart2/StackingDirection.hpp>
#include <com/sun/star/drawing/PolyPolygonShape3D.hpp>
+#include <com/sun/star/drawing/Position3D.hpp>
#include <com/sun/star/awt/Size.hpp>
#include <com/sun/star/awt/Point.hpp>
#include <rtl/ref.hxx>
@@ -142,7 +143,7 @@ public:
void setRoleOfSequenceForDataLabelNumberFormatDetection( std::u16string_view rRole );
//this is only temporarily here for area chart:
- css::drawing::PolyPolygonShape3D m_aPolyPolygonShape3D;
+ std::vector<std::vector<css::drawing::Position3D>> m_aPolyPolygonShape3D;
sal_Int32 m_nPolygonIndex;
double m_fLogicMinX;
double m_fLogicMaxX;