vcl/inc/impgraph.hxx | 5 +++++ vcl/source/gdi/impgraph.cxx | 42 ++++++++++++++++-------------------------- 2 files changed, 21 insertions(+), 26 deletions(-)
New commits: commit 85a61dadd49284ae3255f93e25376d35dab962b4 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Mon Dec 21 13:04:18 2020 +0900 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Sun Dec 27 16:26:48 2020 +0100 ImplGraphic: set PrefSize, PrefMapMode without forcing a swap-in This adds methods to set the PrefSize, PrefMapMode directly with no forced swap-in. Use this setters during a swap-in as it is now safe to do so, otherwise it would cause an endless-loop. Change-Id: I52b424ffc920c5a760891672c1ef961c1b1c1b64 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108253 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/vcl/inc/impgraph.hxx b/vcl/inc/impgraph.hxx index 6a312a76d58e..86fa80606b8f 100644 --- a/vcl/inc/impgraph.hxx +++ b/vcl/inc/impgraph.hxx @@ -213,6 +213,11 @@ private: sal_Int32 getPageNumber() const; + // Set the pref size, but don't force swap-in + void setValuesForPrefSize(const Size& rPrefSize); + // Set the pref map mode, but don't force swap-in + void setValuesForPrefMapMod(const MapMode& rPrefMapMode); + public: void resetChecksum() { mnChecksum = 0; } bool swapIn(); diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx index 70e4fafd09f0..e55c148a5df0 100644 --- a/vcl/source/gdi/impgraph.cxx +++ b/vcl/source/gdi/impgraph.cxx @@ -801,10 +801,8 @@ Size ImpGraphic::ImplGetPrefSize() const return aSize; } -void ImpGraphic::ImplSetPrefSize(const Size& rPrefSize) +void ImpGraphic::setValuesForPrefSize(const Size& rPrefSize) { - ensureAvailable(); - switch (meType) { case GraphicType::Bitmap: @@ -843,6 +841,12 @@ void ImpGraphic::ImplSetPrefSize(const Size& rPrefSize) } } +void ImpGraphic::ImplSetPrefSize(const Size& rPrefSize) +{ + ensureAvailable(); + setValuesForPrefSize(rPrefSize); +} + MapMode ImpGraphic::ImplGetPrefMapMode() const { MapMode aMapMode; @@ -887,10 +891,8 @@ MapMode ImpGraphic::ImplGetPrefMapMode() const return aMapMode; } -void ImpGraphic::ImplSetPrefMapMode(const MapMode& rPrefMapMode) +void ImpGraphic::setValuesForPrefMapMod(const MapMode& rPrefMapMode) { - ensureAvailable(); - switch (meType) { case GraphicType::Bitmap: @@ -926,6 +928,12 @@ void ImpGraphic::ImplSetPrefMapMode(const MapMode& rPrefMapMode) } } +void ImpGraphic::ImplSetPrefMapMode(const MapMode& rPrefMapMode) +{ + ensureAvailable(); + setValuesForPrefMapMod(rPrefMapMode); +} + sal_uLong ImpGraphic::ImplGetSizeBytes() const { if (mnSizeBytes > 0) @@ -1368,29 +1376,11 @@ void ImpGraphic::updateFromLoadedGraphic(ImpGraphic* graphic) void ImpGraphic::restoreFromSwapInfo() { - // Reset the parameters - if (!maBitmapEx.IsEmpty()) - { - maBitmapEx.SetPrefMapMode(maSwapInfo.maPrefMapMode); - maBitmapEx.SetPrefSize(maSwapInfo.maPrefSize); - } - - if (meType == GraphicType::GdiMetafile) - { - maMetaFile.SetPrefMapMode(maSwapInfo.maPrefMapMode); - maMetaFile.SetPrefSize(maSwapInfo.maPrefSize); - } - - if (ImplIsAnimated()) - { - auto & rAnimationBitmap = const_cast<BitmapEx&>(mpAnimation->GetBitmapEx()); - rAnimationBitmap.SetPrefMapMode(maSwapInfo.maPrefMapMode); - rAnimationBitmap.SetPrefSize(maSwapInfo.maPrefSize); - } + setValuesForPrefMapMod(maSwapInfo.maPrefMapMode); + setValuesForPrefSize(maSwapInfo.maPrefSize); if (maVectorGraphicData) { - maExPrefSize = maSwapInfo.maPrefSize; maVectorGraphicData->setPageIndex(maSwapInfo.mnPageIndex); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits