summaryrefslogtreecommitdiff
path: root/include/vcl/bitmap.hxx
diff options
context:
space:
mode:
authorArmin Le Grand <alg@apache.org>2012-10-29 16:20:25 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-05-09 16:35:40 +0100
commit44fb0ceeb98f45bc301d021c11af2c13f051bd4b (patch)
tree8d276c90e9d324aafbdcf01a538ad41ba71ac380 /include/vcl/bitmap.hxx
parentd6fd3fa6e840c6374f53beeae54f4aa71d73ffcd (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.hxx39
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 );