Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / include / effects / SkBicubicImageFilter.h
1 /*
2  * Copyright 2013 The Android Open Source Project
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7
8 #ifndef SkBicubicImageFilter_DEFINED
9 #define SkBicubicImageFilter_DEFINED
10
11 #include "SkImageFilter.h"
12 #include "SkScalar.h"
13 #include "SkSize.h"
14 #include "SkPoint.h"
15
16 /*! \class SkBicubicImageFilter
17     Bicubic resampling image filter.  This filter does a 16-tap bicubic
18     filter using the given matrix.
19  */
20
21 class SK_API SkBicubicImageFilter : public SkImageFilter {
22 public:
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.
28     */
29
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();
34
35     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBicubicImageFilter)
36
37 protected:
38     SkBicubicImageFilter(SkReadBuffer& buffer);
39     virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
40
41     virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&,
42                                SkBitmap* result, SkIPoint* loc) const SK_OVERRIDE;
43
44 #if SK_SUPPORT_GPU
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;
48 #endif
49
50 private:
51     SkSize    fScale;
52     SkScalar  fCoefficients[16];
53     typedef SkImageFilter INHERITED;
54 };
55
56 #endif