summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2015-07-09 21:02:48 +0200
committerAshod Nakashian <ashod.nakashian@collabora.co.uk>2016-02-06 17:24:15 -0500
commite17aebdeb800b1406655910c24cbccf1056e36ba (patch)
tree3855b3a49fa1777f0b3324618eb8ecf51a5574b9 /include
parent7a09b457667f2da73fad314633f7f4d297ca9171 (diff)
vcl: move resample kernel classes out of bitmap.hxx
Since commit f31e6debfa7e330f985a0846a6ca91130d3dab20 this drags in ridiculous amounts of boost headers, for probably negigible improvemnts of sin(x)/x for tiny x values. The compile time impact was not negligible, moving this nonsense to its own header removes 1.79 GB of preprocessor input from a full build. Change-Id: Ic41b2210eac8b130726610f2dbdbb449379225d1 (cherry picked from commit 64baed93cfa9b74d6ef5a8913918cfbaf8499271)
Diffstat (limited to 'include')
-rw-r--r--include/vcl/bitmap.hxx107
1 files changed, 5 insertions, 102 deletions
diff --git a/include/vcl/bitmap.hxx b/include/vcl/bitmap.hxx
index ba6e8a01714b..0b1fcede3346 100644
--- a/include/vcl/bitmap.hxx
+++ b/include/vcl/bitmap.hxx
@@ -20,7 +20,6 @@
#ifndef INCLUDED_VCL_BITMAP_HXX
#define INCLUDED_VCL_BITMAP_HXX
-#include <boost/math/special_functions/sinc.hpp>
#include <tools/color.hxx>
#include <tools/link.hxx>
#include <tools/solar.h>
@@ -218,106 +217,6 @@ private:
};
-// Resample kernels
-
-class Kernel
-{
-
-public:
- Kernel () {}
- virtual ~Kernel() {}
-
- virtual double GetWidth() const = 0;
- virtual double Calculate( double x ) const = 0;
-};
-
-class Lanczos3Kernel : public Kernel
-{
-public:
- Lanczos3Kernel() : Kernel () {}
-
- virtual double GetWidth() const SAL_OVERRIDE { return 3.0; }
- virtual double Calculate (double x) const SAL_OVERRIDE
- {
- return (-3.0 <= x && x < 3.0) ? SincFilter(x) * SincFilter( x / 3.0 ) : 0.0;
- }
-
- static inline double SincFilter(double x)
- {
- if (x == 0.0)
- {
- return 1.0;
- }
- x = x * M_PI;
- return boost::math::sinc_pi(x, SincPolicy());
- }
-
-private:
- typedef boost::math::policies::policy<
- boost::math::policies::promote_double<false> > SincPolicy;
-};
-
-class BicubicKernel : public Kernel
-{
-public:
- BicubicKernel() : Kernel () {}
-
-private:
- virtual double GetWidth() const SAL_OVERRIDE { return 2.0; }
- virtual double Calculate (double x) const SAL_OVERRIDE
- {
- if (x < 0.0)
- {
- x = -x;
- }
-
- if (x <= 1.0)
- {
- return (1.5 * x - 2.5) * x * x + 1.0;
- }
- else if (x < 2.0)
- {
- return ((-0.5 * x + 2.5) * x - 4) * x + 2;
- }
- return 0.0;
- }
-};
-
-class BilinearKernel : public Kernel
-{
-public:
- BilinearKernel() : Kernel () {}
-private:
- virtual double GetWidth() const SAL_OVERRIDE { return 1.0; }
- virtual double Calculate (double x) const SAL_OVERRIDE
- {
- if (x < 0.0)
- {
- x = -x;
- }
- if (x < 1.0)
- {
- return 1.0-x;
- }
- return 0.0;
- }
-};
-
-class BoxKernel : public Kernel
-{
-public:
- BoxKernel() : Kernel () {}
-
-private:
- virtual double GetWidth() const SAL_OVERRIDE { return 0.5; }
- virtual double Calculate (double x) const SAL_OVERRIDE
- {
- if (-0.5 <= x && x < 0.5)
- return 1.0;
- return 0.0;
- }
-};
-
class BitmapInfoAccess;
class BitmapReadAccess;
class BitmapWriteAccess;
@@ -329,6 +228,10 @@ class GDIMetaFile;
class AlphaMask;
class OutputDevice;
class SalBitmap;
+namespace vcl
+{
+ class Kernel;
+}
struct BitmapSystemData
{
@@ -827,7 +730,7 @@ public:
SAL_DLLPRIVATE void ImplAdaptBitCount(Bitmap& rNew) const;
SAL_DLLPRIVATE bool ImplScaleFast( const double& rScaleX, const double& rScaleY );
SAL_DLLPRIVATE bool ImplScaleInterpolate( const double& rScaleX, const double& rScaleY );
- SAL_DLLPRIVATE bool ImplScaleConvolution( const double& rScaleX, const double& rScaleY, const Kernel& aKernel);
+ SAL_DLLPRIVATE bool ImplScaleConvolution( const double& rScaleX, const double& rScaleY, const vcl::Kernel& rKernel);
SAL_DLLPRIVATE bool ImplConvolutionPass(
Bitmap& aNewBitmap,