[Libreoffice-commits] core.git: Branch 'libreoffice-7-1' - svx/inc svx/source
Xisco Fauli (via logerrit)
logerrit at kemper.freedesktop.org
Tue Apr 20 08:55:56 UTC 2021
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 <xiscofauli at libreoffice.org>
AuthorDate: Mon Apr 19 21:37:53 2021 +0200
Commit: Adolfo Jayme Barrientos <fitojb at 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 <xiscofauli at libreoffice.org>
(cherry picked from commit eec03e848cb6874ce6d64dc0b8f45dbaf52e6c2b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114277
Reviewed-by: Adolfo Jayme Barrientos <fitojb at 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);
More information about the Libreoffice-commits
mailing list