diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2018-04-23 17:21:47 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2018-04-23 19:22:09 +0200 |
commit | 5a729407e858ee5ed5b621a6fcc0a4f104c9a017 (patch) | |
tree | 3124a04d7d2666190d0e75d7d93aec2d0aa66a11 /vcl | |
parent | 195e12bdc516c9272b7ae353ad6279e457215911 (diff) |
vcl: avoid swap in when Graphic::GetSizePixel() is called
It's easier to fix this centrally in vcl, rather than not calling
GetSizePixel() in each and every import filter.
Change-Id: Ie0a788b8a5b886ebc2fedf0dc052deb4149b9364
Reviewed-on: https://gerrit.libreoffice.org/53333
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/impgraph.hxx | 3 | ||||
-rw-r--r-- | vcl/source/gdi/graph.cxx | 2 | ||||
-rw-r--r-- | vcl/source/gdi/impgraph.cxx | 14 |
3 files changed, 18 insertions, 1 deletions
diff --git a/vcl/inc/impgraph.hxx b/vcl/inc/impgraph.hxx index 660fdfce81cd..cff173b9a3fb 100644 --- a/vcl/inc/impgraph.hxx +++ b/vcl/inc/impgraph.hxx @@ -27,6 +27,7 @@ struct ImpSwapInfo { MapMode maPrefMapMode; Size maPrefSize; + Size maSizePixel; bool mbIsAnimated; bool mbIsEPS; @@ -155,6 +156,8 @@ private: Animation ImplGetAnimation() const; const GDIMetaFile& ImplGetGDIMetaFile() const; + Size ImplGetSizePixel() const; + Size ImplGetPrefSize() const; void ImplSetPrefSize( const Size& rPrefSize ); diff --git a/vcl/source/gdi/graph.cxx b/vcl/source/gdi/graph.cxx index 9ba35ddd7366..2533a75e47c4 100644 --- a/vcl/source/gdi/graph.cxx +++ b/vcl/source/gdi/graph.cxx @@ -438,7 +438,7 @@ Size Graphic::GetSizePixel( const OutputDevice* pRefDevice ) const Size aRet; if( GraphicType::Bitmap == mxImpGraphic->ImplGetType() ) - aRet = mxImpGraphic->ImplGetBitmapEx(GraphicConversionParameters()).GetSizePixel(); + aRet = mxImpGraphic->ImplGetSizePixel(); else aRet = ( pRefDevice ? pRefDevice : Application::GetDefaultDevice() )->LogicToPixel( GetPrefSize(), GetPrefMapMode() ); diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx index 1a9cca6ce0da..2b263bcab354 100644 --- a/vcl/source/gdi/impgraph.cxx +++ b/vcl/source/gdi/impgraph.cxx @@ -537,6 +537,8 @@ void ImpGraphic::ImplSetPrepared() maSwapInfo.maPrefSize = aDescriptor.GetSizePixel(); maSwapInfo.maPrefMapMode = MapMode(MapUnit::MapPixel); } + + maSwapInfo.maSizePixel = aDescriptor.GetSizePixel(); } maSwapInfo.mnAnimationLoopCount = 0; maSwapInfo.mbIsAnimated = false; @@ -868,6 +870,18 @@ const GDIMetaFile& ImpGraphic::ImplGetGDIMetaFile() const return maMetaFile; } +Size ImpGraphic::ImplGetSizePixel() const +{ + Size aSize; + + if (ImplIsSwapOut()) + aSize = maSwapInfo.maSizePixel; + else + aSize = ImplGetBitmapEx(GraphicConversionParameters()).GetSizePixel(); + + return aSize; +} + Size ImpGraphic::ImplGetPrefSize() const { Size aSize; |