diff options
-rw-r--r-- | include/vcl/bitmap.hxx | 13 | ||||
-rw-r--r-- | vcl/source/gdi/bitmap3.cxx | 18 |
2 files changed, 18 insertions, 13 deletions
diff --git a/include/vcl/bitmap.hxx b/include/vcl/bitmap.hxx index dcc862ed7779..59c6c9ac28d6 100644 --- a/include/vcl/bitmap.hxx +++ b/include/vcl/bitmap.hxx @@ -39,26 +39,27 @@ enum class BmpMirrorFlags Horizontal = 0x01, Vertical = 0x02, }; + namespace o3tl { template<> struct typed_flags<BmpMirrorFlags> : is_typed_flags<BmpMirrorFlags, 0x03> {}; } - enum class BmpScaleFlag { // Try to preferably use these. - Default = 1, + Default, Fast, BestQuality, -// Specific algorithms, use only if you really need to. - Interpolate, +// Specific algorithms, use only if you really need to (mainly used for tests) + NearestNeighbor, + Interpolate, // fast, integer bilinear Lanczos, BiCubic, - BiLinear + BiLinear, + Super // bilinear interpolation when supersampling and averaging when subsampling under certain scale }; - #define BMP_COL_TRANS Color( 252, 3, 251 ) enum class BmpConversion diff --git a/vcl/source/gdi/bitmap3.cxx b/vcl/source/gdi/bitmap3.cxx index 71a3bc468876..a3b22ffa3f5c 100644 --- a/vcl/source/gdi/bitmap3.cxx +++ b/vcl/source/gdi/bitmap3.cxx @@ -776,7 +776,15 @@ bool Bitmap::Scale( const double& rScaleX, const double& rScaleY, BmpScaleFlag n switch(nScaleFlag) { + case BmpScaleFlag::Default: + if (GetSizePixel().Width() < 2 || GetSizePixel().Height() < 2) + bRetval = BitmapFilter::Filter(aBmpEx, BitmapFastScaleFilter(rScaleX, rScaleY)); + else + bRetval = BitmapFilter::Filter(aBmpEx, BitmapScaleSuperFilter(rScaleX, rScaleY)); + break; + case BmpScaleFlag::Fast: + case BmpScaleFlag::NearestNeighbor: bRetval = BitmapFilter::Filter(aBmpEx, BitmapFastScaleFilter(rScaleX, rScaleY)); break; @@ -784,15 +792,11 @@ bool Bitmap::Scale( const double& rScaleX, const double& rScaleY, BmpScaleFlag n bRetval = BitmapFilter::Filter(aBmpEx, BitmapInterpolateScaleFilter(rScaleX, rScaleY)); break; - case BmpScaleFlag::Default: - if (GetSizePixel().Width() < 2 || GetSizePixel().Height() < 2) - bRetval = BitmapFilter::Filter(aBmpEx, BitmapFastScaleFilter(rScaleX, rScaleY)); - else - bRetval = BitmapFilter::Filter(aBmpEx, BitmapScaleSuperFilter(rScaleX, rScaleY)); + case BmpScaleFlag::Super: + bRetval = BitmapFilter::Filter(aBmpEx, BitmapScaleSuperFilter(rScaleX, rScaleY)); break; - - case BmpScaleFlag::Lanczos: case BmpScaleFlag::BestQuality: + case BmpScaleFlag::Lanczos: bRetval = BitmapFilter::Filter(aBmpEx, vcl::BitmapScaleLanczos3Filter(rScaleX, rScaleY)); break; |