diff options
author | Armin Le Grand <alg@apache.org> | 2012-10-29 16:20:25 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-05-09 16:35:40 +0100 |
commit | 44fb0ceeb98f45bc301d021c11af2c13f051bd4b (patch) | |
tree | 8d276c90e9d324aafbdcf01a538ad41ba71ac380 /include/vcl/bitmap.hxx | |
parent | d6fd3fa6e840c6374f53beeae54f4aa71d73ffcd (diff) |
Resolves: #i121233# Added bitmap scaling methods BMP_SCALE_SUPER
added from symphony, also BMP_SCALE_LANCZOS, BMP_SCALE_BICUBIC,
BMP_SCALE_BILINEAR and BMP_SCALE_BOX.
Changed defaults for internal scalings, enhanced PDF export when reduched DPI
is used, added BMP_SCALE_BESTQUALITY and BMP_SCALE_FASTESTINTERPOLATE as new
default for Bitmap::Scale
(cherry picked from commit bf734a151dc5169b65cf5d2a127e4142b765326c)
Conflicts:
canvas/source/vcl/canvasbitmaphelper.cxx
canvas/source/vcl/canvashelper.cxx
sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx
vcl/inc/vcl/alpha.hxx
vcl/inc/vcl/bitmap.hxx
vcl/inc/vcl/bitmapex.hxx
vcl/source/gdi/bitmap3.cxx
vcl/source/gdi/impgraph.cxx
vcl/source/gdi/pdfwriter_impl2.cxx
vcl/source/helper/canvasbitmap.cxx
(cherry picked from commit 593c86280b64d97725adde0c0a0cc4f090fb2310)
Change-Id: I41cf0a7e11bdbc6510e22e762486420995ba739b
Diffstat (limited to 'include/vcl/bitmap.hxx')
-rw-r--r-- | include/vcl/bitmap.hxx | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/include/vcl/bitmap.hxx b/include/vcl/bitmap.hxx index c0ec5b17870c..9a2fe916ddc0 100644 --- a/include/vcl/bitmap.hxx +++ b/include/vcl/bitmap.hxx @@ -35,15 +35,17 @@ #define BMP_SCALE_NONE 0x00000000UL #define BMP_SCALE_FAST 0x00000001UL #define BMP_SCALE_INTERPOLATE 0x00000002UL -#define BMP_SCALE_LANCZOS 0x00000003UL -#define BMP_SCALE_BICUBIC 0x00000004UL -#define BMP_SCALE_BILINEAR 0x00000005UL -#define BMP_SCALE_BOX 0x00000006UL +#define BMP_SCALE_SUPER 0x00000003UL +#define BMP_SCALE_LANCZOS 0x00000004UL +#define BMP_SCALE_BICUBIC 0x00000005UL +#define BMP_SCALE_BILINEAR 0x00000006UL +#define BMP_SCALE_BOX 0x00000007UL // Aliases, try to use these two (or BMP_SCALE_FAST/BMP_SCALE_NONE), // use a specific algorithm only if you really need to. -#define BMP_SCALE_BEST BMP_SCALE_LANCZOS -#define BMP_SCALE_DEFAULT BMP_SCALE_BOX +#define BMP_SCALE_BESTQUALITY BMP_SCALE_LANCZOS +#define BMP_SCALE_DEFAULT BMP_SCALE_SUPER + #define BMP_DITHER_NONE 0x00000000UL #define BMP_DITHER_MATRIX 0x00000001UL @@ -198,21 +200,21 @@ public: Kernel () {} virtual ~Kernel() {} - virtual double GetWidth() = 0; - virtual double Calculate( double x ) = 0; + virtual double GetWidth() const = 0; + virtual double Calculate( double x ) const = 0; }; class Lanczos3Kernel : public Kernel { public: - virtual double GetWidth() { return 3.0; } - virtual double Calculate (double x) + virtual double GetWidth() const { return 3.0; } + virtual double Calculate (double x) const { return (-3.0 <= x && x < 3.0) ? SincFilter(x) * SincFilter( x / 3.0 ) : 0.0; } - inline double SincFilter(double x) + inline double SincFilter(double x) const { if (x == 0.0) { @@ -224,8 +226,8 @@ public: }; class BicubicKernel : public Kernel { - virtual double GetWidth() { return 2.0; } - virtual double Calculate (double x) + virtual double GetWidth() const { return 2.0; } + virtual double Calculate (double x) const { if (x < 0.0) { @@ -245,8 +247,8 @@ class BicubicKernel : public Kernel { }; class BilinearKernel : public Kernel { - virtual double GetWidth() { return 1.0; } - virtual double Calculate (double x) + virtual double GetWidth() const { return 1.0; } + virtual double Calculate (double x) const { if (x < 0.0) { @@ -261,8 +263,8 @@ class BilinearKernel : public Kernel { }; class BoxKernel : public Kernel { - virtual double GetWidth() { return 0.5; } - virtual double Calculate (double x) + virtual double GetWidth() const { return 0.5; } + virtual double Calculate (double x) const { if (-0.5 <= x && x < 0.5) return 1.0; @@ -328,8 +330,11 @@ public: BitmapWriteAccess& rAcc, sal_Bool bRLE4 ); SAL_DLLPRIVATE static sal_Bool ImplWriteRLE( SvStream& rOStm, BitmapReadAccess& rAcc, sal_Bool bRLE4 ); + SAL_DLLPRIVATE void ImplAdaptBitCount(Bitmap& rNew); SAL_DLLPRIVATE sal_Bool ImplScaleFast( const double& rScaleX, const double& rScaleY ); SAL_DLLPRIVATE sal_Bool ImplScaleInterpolate( const double& rScaleX, const double& rScaleY ); + SAL_DLLPRIVATE sal_Bool ImplScaleSuper( const double& rScaleX, const double& rScaleY ); + SAL_DLLPRIVATE sal_Bool ImplScaleConvolution( const double& rScaleX, const double& rScaleY, const Kernel& aKernel); SAL_DLLPRIVATE bool ImplScaleConvolution( const double& rScaleX, const double& rScaleY, Kernel& aKernel); SAL_DLLPRIVATE bool ImplTransformAveraging( const double& rScaleX, const double& rScaleY, const Rectangle& rRotatedRectangle, const long nAngle10, const Color& rFillColor ); |