svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx | 6 - svx/source/sdr/contact/viewcontactofsdrole2obj.cxx | 76 ++++++--------------- svx/source/unodraw/unoshape.cxx | 10 -- 3 files changed, 25 insertions(+), 67 deletions(-)
New commits: commit 3fe117cb0f319fbb84073d75ad5e2d676b587866 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Mon Apr 19 21:37:53 2021 +0200 Commit: Adolfo Jayme Barrientos <fit...@ubuntu.com> CommitDate: Tue Apr 20 10:55:24 2021 +0200 tdf#86321: Revert "Resolves: #i123539# some optimizations for 3D chart..." This reverts commit db1d2af02861b49e4f53d726d59cd71c20cee9b1 The commit was already partically reverted in bca8d8985666d3fd22b91eb280f9baaeb933c2d0 < Resolves: tdf#90583 3D pie-chart missing guide handles >. This partial revert broke the optimization introduced in db1d2af02861b49e4f53d726d59cd71c20cee9b1 <Resolves: #i123539# some optimizations for 3D chart...> for 3D charts like https://bz.apache.org/ooo/attachment.cgi?id=81810 Later, 3D charts were optimized again in 55a7e836a2db662a53adc4f8b98d08b06790c758 < chart2: When creating objects prevent setting object rects dirty > so the remaining code originally introduced can go. Import time of https://bz.apache.org/ooo/attachment.cgi?id=81810 is the same with and without this patch Change-Id: I25338d0dfb4b41651dfe05e7bfbd74c86091dacb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114313 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> (cherry picked from commit eec03e848cb6874ce6d64dc0b8f45dbaf52e6c2b) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114277 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx b/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx index ac7a861e924f..f034f02a6da5 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx @@ -31,9 +31,6 @@ namespace sdr::contact class ViewContactOfSdrOle2Obj final : public ViewContactOfSdrRectObj { private: - // #i123539# allow local buffering of chart data (if chart) - drawinglayer::primitive2d::Primitive2DReference mxChartContent; - // Create an Object-Specific ViewObjectContact, set ViewContact and // ObjectContact. Always needs to return something. virtual ViewObjectContact& @@ -56,9 +53,6 @@ public: // from the VOC which knows that drawinglayer::primitive2d::Primitive2DContainer createPrimitive2DSequenceWithParameters() const; - // #i123539# get rid of buffered chart content (if there) on change - virtual void ActionChanged() override; - virtual basegfx::B2DRange getRange(const drawinglayer::geometry::ViewInformation2D& rViewInfo2D) const override; diff --git a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx index 57077e7b30eb..6c9662a957f9 100644 --- a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx @@ -45,8 +45,7 @@ ViewObjectContact& ViewContactOfSdrOle2Obj::CreateObjectSpecificViewObjectContac } ViewContactOfSdrOle2Obj::ViewContactOfSdrOle2Obj(SdrOle2Obj& rOle2Obj) -: ViewContactOfSdrRectObj(rOle2Obj), - mxChartContent() +: ViewContactOfSdrRectObj(rOle2Obj) { } @@ -90,45 +89,30 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrOle2Obj::createP if(GetOle2Obj().IsChart()) { - // #i123539# allow buffering and reuse of local chart data to not need to rebuild it - // on every ViewObjectContact::getPrimitive2DSequence call. TTTT: Not needed for - // aw080, there this mechanism already works differently - if(mxChartContent.is()) + // try to get chart primitives and chart range directly from xChartModel + basegfx::B2DRange aChartContentRange; + const drawinglayer::primitive2d::Primitive2DContainer aChartSequence( + ChartHelper::tryToGetChartContentAsPrimitive2DSequence( + GetOle2Obj().getXModel(), + aChartContentRange)); + const double fWidth(aChartContentRange.getWidth()); + const double fHeight(aChartContentRange.getHeight()); + + if(!aChartSequence.empty() + && basegfx::fTools::more(fWidth, 0.0) + && basegfx::fTools::more(fHeight, 0.0)) { - xContent = mxChartContent; - } - else - { - // try to get chart primitives and chart range directly from xChartModel - basegfx::B2DRange aChartContentRange; - const drawinglayer::primitive2d::Primitive2DContainer aChartSequence( - ChartHelper::tryToGetChartContentAsPrimitive2DSequence( - GetOle2Obj().getXModel(), - aChartContentRange)); - const double fWidth(aChartContentRange.getWidth()); - const double fHeight(aChartContentRange.getHeight()); - - if(!aChartSequence.empty() - && basegfx::fTools::more(fWidth, 0.0) - && basegfx::fTools::more(fHeight, 0.0)) - { - // create embedding transformation - basegfx::B2DHomMatrix aEmbed( - basegfx::utils::createTranslateB2DHomMatrix( - -aChartContentRange.getMinX(), - -aChartContentRange.getMinY())); - - aEmbed.scale(1.0 / fWidth, 1.0 / fHeight); - aEmbed = aObjectMatrix * aEmbed; - xContent = new drawinglayer::primitive2d::TransformPrimitive2D( - aEmbed, - aChartSequence); - } - - if(xContent.is()) - { - const_cast< ViewContactOfSdrOle2Obj* >(this)->mxChartContent = xContent; - } + // create embedding transformation + basegfx::B2DHomMatrix aEmbed( + basegfx::utils::createTranslateB2DHomMatrix( + -aChartContentRange.getMinX(), + -aChartContentRange.getMinY())); + + aEmbed.scale(1.0 / fWidth, 1.0 / fHeight); + aEmbed = aObjectMatrix * aEmbed; + xContent = new drawinglayer::primitive2d::TransformPrimitive2D( + aEmbed, + aChartSequence); } } @@ -185,18 +169,6 @@ basegfx::B2DRange ViewContactOfSdrOle2Obj::getRange( const drawinglayer::geometr return drawinglayer::primitive2d::getB2DRangeFromPrimitive2DReference(xReference, rViewInfo2D); } -void ViewContactOfSdrOle2Obj::ActionChanged() -{ - // call parent - ViewContactOfSdrRectObj::ActionChanged(); - - // #i123539# if we have buffered chart data, reset it - if(mxChartContent.is()) - { - mxChartContent.clear(); - } -} - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrOle2Obj::createViewIndependentPrimitive2DSequence() const { return createPrimitive2DSequenceWithParameters(); diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx index b60c6e686aea..1885348f9c64 100644 --- a/svx/source/unodraw/unoshape.cxx +++ b/svx/source/unodraw/unoshape.cxx @@ -1229,15 +1229,7 @@ void SAL_CALL SvxShape::setSize( const awt::Size& rSize ) if(HasSdrObject()) { - // #i123539# optimization for 3D chart object generation: do not use UNO - // API commands to get the range, this is too expensive since for 3D - // scenes it may recalculate the whole scene since in AOO this depends - // on the contained geometry (layouted to show all content) - const bool b3DConstruction(dynamic_cast< E3dObject* >(GetSdrObject()) && GetSdrObject()->getSdrModelFromSdrObject().isLocked()); - tools::Rectangle aRect( - b3DConstruction ? - tools::Rectangle(maPosition.X, maPosition.Y, maSize.Width, maSize.Height) : - svx_getLogicRectHack(GetSdrObject()) ); + tools::Rectangle aRect( svx_getLogicRectHack(GetSdrObject()) ); Size aLocalSize( rSize.Width, rSize.Height ); ForceMetricToItemPoolMetric(aLocalSize); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits