|
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 virtual void computeFastBounds(const SkRect& src, SkRect* dst) const SK_OVERRIDE; |
|
24 |
|
25 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapSource) |
|
26 |
|
27 protected: |
|
28 explicit SkBitmapSource(SkReadBuffer& buffer); |
|
29 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; |
|
30 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, |
|
31 SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE; |
|
32 virtual bool onFilterBounds(const SkIRect& src, const SkMatrix& ctm, SkIRect* dst) const SK_OVERRIDE; |
|
33 |
|
34 #ifdef SK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS |
|
35 public: |
|
36 #endif |
|
37 explicit SkBitmapSource(const SkBitmap& bitmap); |
|
38 SkBitmapSource(const SkBitmap& bitmap, const SkRect& srcRect, const SkRect& dstRect); |
|
39 |
|
40 private: |
|
41 SkBitmap fBitmap; |
|
42 SkRect fSrcRect, fDstRect; |
|
43 typedef SkImageFilter INHERITED; |
|
44 }; |
|
45 |
|
46 #endif |