Rebased ref, commits from common ancestor: commit f0b37eb1c35571ad27135a74696f51c124035bad Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Mon Dec 21 13:04:18 2020 +0900 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Mon Dec 21 14:12:02 2020 +0900
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 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 fec7c9654f4c..237ffa07ecfb 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