327ff6477eb10e3586e7d98eb18b5c512e2e3bd9
[platform/upstream/libSkiaSharp.git] / include / effects / SkBitmapSource.h
1 /*
2  * Copyright 2012 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 SkBitmapSource_DEFINED
9 #define SkBitmapSource_DEFINED
10
11 #include "SkImageFilter.h"
12 #include "SkBitmap.h"
13
14 class SK_API SkBitmapSource : public SkImageFilter {
15 public:
16     static SkBitmapSource* Create(const SkBitmap& bitmap) {
17         return SkNEW_ARGS(SkBitmapSource, (bitmap));
18     }
19     static SkBitmapSource* Create(const SkBitmap& bitmap, const SkRect& srcRect,
20                                   const SkRect& dstRect) {
21         return SkNEW_ARGS(SkBitmapSource, (bitmap, srcRect, dstRect));
22     }
23     void computeFastBounds(const SkRect& src, SkRect* dst) const SK_OVERRIDE;
24
25     SK_TO_STRING_OVERRIDE()
26     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapSource)
27
28 protected:
29     explicit SkBitmapSource(const SkBitmap& bitmap);
30     SkBitmapSource(const SkBitmap& bitmap, const SkRect& srcRect, const SkRect& dstRect);
31     void flatten(SkWriteBuffer&) const SK_OVERRIDE;
32
33     virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
34                                SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE;
35
36 private:
37     SkBitmap fBitmap;
38     SkRect   fSrcRect, fDstRect;
39     typedef SkImageFilter INHERITED;
40 };
41
42 #endif