2 * Copyright 2013 The Android Open Source Project
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
8 #ifndef SkBicubicImageFilter_DEFINED
9 #define SkBicubicImageFilter_DEFINED
11 #include "SkImageFilter.h"
16 /*! \class SkBicubicImageFilter
17 Bicubic resampling image filter. This filter does a 16-tap bicubic
18 filter using the given matrix.
21 class SK_API SkBicubicImageFilter : public SkImageFilter {
23 /** Construct a (scaling-only) bicubic resampling image filter.
24 @param scale How much to scale the image.
25 @param coefficients The 16 coefficients of the bicubic matrix.
26 @param input The input image filter. If NULL, the src bitmap
27 passed to filterImage() is used instead.
30 SkBicubicImageFilter(const SkSize& scale, const SkScalar coefficients[16],
31 SkImageFilter* input = NULL);
32 static SkBicubicImageFilter* CreateMitchell(const SkSize& scale, SkImageFilter* input = NULL);
33 virtual ~SkBicubicImageFilter();
35 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBicubicImageFilter)
38 SkBicubicImageFilter(SkReadBuffer& buffer);
39 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
41 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&,
42 SkBitmap* result, SkIPoint* loc) const SK_OVERRIDE;
45 virtual bool canFilterImageGPU() const SK_OVERRIDE { return true; }
46 virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, const SkMatrix& ctm,
47 SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE;
52 SkScalar fCoefficients[16];
53 typedef SkImageFilter INHERITED;