diff options
author | Vasily Melenchuk <vasily.melenchuk@cib.de> | 2019-07-12 10:54:56 +0300 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2019-07-17 23:13:35 +0200 |
commit | 43d1c753d12ad66c7f7ebd9b76d903ee21f83ef5 (patch) | |
tree | 2d3290d62f67753c001ebc5017cd862de93e2596 /vcl/source/gdi | |
parent | b5890bf269214a47833bc9514b80650455e77ef6 (diff) |
vcl: make "Reduce Transparency" parameter tweakable
"Reduce transparency" feature previously was using hardcoded
value of 0.25. If current object area to whole printing area
ratio exceeds this value, object is being written without
any extra transparency layers in order to reduce metafile size.
Right now this value can be adjusted in "Expert Configuration".
Parameter is called "ReduceTransparencyMinArea".
Change-Id: I43d5801a1dff6241de214f7b24425626dc06b4fb
Reviewed-on: https://gerrit.libreoffice.org/75471
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'vcl/source/gdi')
-rw-r--r-- | vcl/source/gdi/print2.cxx | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/vcl/source/gdi/print2.cxx b/vcl/source/gdi/print2.cxx index 2aec6add9634..0a470003f2fc 100644 --- a/vcl/source/gdi/print2.cxx +++ b/vcl/source/gdi/print2.cxx @@ -26,7 +26,7 @@ #include <basegfx/polygon/b2dpolygon.hxx> #include <basegfx/polygon/b2dpolygontools.hxx> #include <sal/log.hxx> - +#include <officecfg/Office/Common.hxx> #include <vcl/virdev.hxx> #include <vcl/metaact.hxx> @@ -723,6 +723,14 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // nor checked for intersection against other aCCList elements ConnectedComponents aBackgroundComponent; + // Read the configuration value of minimal object area where transparency will be removed + double fReduceTransparencyMinArea = officecfg::Office::Common::VCL::ReduceTransparencyMinArea::get() / 100.0; + SAL_WARN_IF(fReduceTransparencyMinArea > 1.0, "vcl", + "Value of ReduceTransparencyMinArea config option is too high"); + SAL_WARN_IF(fReduceTransparencyMinArea < 0.0, "vcl", + "Value of ReduceTransparencyMinArea config option is too low"); + fReduceTransparencyMinArea = std::clamp(fReduceTransparencyMinArea, 0.0, 1.0); + // create an OutputDevice to record mapmode changes and the like ScopedVclPtrInstance< VirtualDevice > aMapModeVDev; aMapModeVDev->mnDPIX = mnDPIX; @@ -1125,7 +1133,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, const double fOutArea( static_cast<double>(aOutputRect.GetWidth()) * aOutputRect.GetHeight() ); // check if output doesn't exceed given size - if( bReduceTransparency && bTransparencyAutoMode && ( fBmpArea > ( 0.25 * fOutArea ) ) ) + if( bReduceTransparency && bTransparencyAutoMode && ( fBmpArea > ( fReduceTransparencyMinArea * fOutArea ) ) ) { // output normally. Therefore, we simply clear the // special attribute, as everything non-special is |