diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-01-11 14:32:45 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-01-11 17:35:32 +0100 |
commit | f242cc6d5be5c6f5446976fd6a7c26ad0cee7683 (patch) | |
tree | ab49d3894dd60dea324fbf79cea76d7a394af934 /chart2/source/view/inc | |
parent | do not call broadcast SetStyleSheet from a non-broadcast one (diff) | |
download | core-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.hxx | 6 | ||||
-rw-r--r-- | chart2/source/view/inc/PlottingPositionHelper.hxx | 1 | ||||
-rw-r--r-- | chart2/source/view/inc/ShapeFactory.hxx | 17 | ||||
-rw-r--r-- | chart2/source/view/inc/VDataSeries.hxx | 3 |
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; |