SkImageSource.h revision e8597a4dd07d78eb0e7a45d6502896c1b9a8bfeb
1/*
2 * Copyright 2015 Google Inc.
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 SkImageSource_DEFINED
9#define SkImageSource_DEFINED
10
11#include "SkImage.h"
12#include "SkImageFilter.h"
13
14class SK_API SkImageSource : public SkImageFilter {
15public:
16    static SkImageFilter* Create(SkImage*);
17    static SkImageFilter* Create(SkImage*,
18                                 const SkRect& srcRect,
19                                 const SkRect& dstRect,
20                                 SkFilterQuality);
21
22    SkRect computeFastBounds(const SkRect& src) const override;
23
24    SK_TO_STRING_OVERRIDE()
25    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageSource)
26
27protected:
28    void flatten(SkWriteBuffer&) const override;
29
30    sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
31                                        SkIPoint* offset) const override;
32
33private:
34    explicit SkImageSource(SkImage*);
35    SkImageSource(SkImage*,
36                  const SkRect& srcRect,
37                  const SkRect& dstRect,
38                  SkFilterQuality);
39
40    sk_sp<SkImage>   fImage;
41    SkRect           fSrcRect, fDstRect;
42    SkFilterQuality  fFilterQuality;
43
44    typedef SkImageFilter INHERITED;
45};
46
47#endif
48