blob: 38b13020eb88bfc17932ad73d8cecdd16598dc07 [file] [log] [blame]
senorblanco@chromium.orgf1369ce2012-08-20 14:53:21 +00001/*
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
senorblanco@chromium.orgf1369ce2012-08-20 14:53:21 +00008#ifndef SkBitmapSource_DEFINED
9#define SkBitmapSource_DEFINED
10
11#include "SkImageFilter.h"
12#include "SkBitmap.h"
13
14class SK_API SkBitmapSource : public SkImageFilter {
15public:
halcanary385fe4d2015-08-26 13:07:48 -070016 static SkBitmapSource* Create(const SkBitmap& bitmap) { return new SkBitmapSource(bitmap); }
robertphillipse275fdf2015-04-09 06:47:12 -070017 static SkBitmapSource* Create(const SkBitmap& bitmap,
18 const SkRect& srcRect, const SkRect& dstRect,
19 SkFilterQuality filterQuality = kHigh_SkFilterQuality) {
halcanary385fe4d2015-08-26 13:07:48 -070020 return new SkBitmapSource(bitmap, srcRect, dstRect, filterQuality);
commit-bot@chromium.orgcac5fd52014-03-10 10:51:58 +000021 }
mtklein36352bf2015-03-25 18:17:31 -070022 void computeFastBounds(const SkRect& src, SkRect* dst) const override;
senorblanco@chromium.orgf1369ce2012-08-20 14:53:21 +000023
robertphillipsf3f5bad2014-12-19 13:49:15 -080024 SK_TO_STRING_OVERRIDE()
senorblanco@chromium.orgf1369ce2012-08-20 14:53:21 +000025 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapSource)
26
27protected:
commit-bot@chromium.orgbd0be252014-05-15 15:40:41 +000028 explicit SkBitmapSource(const SkBitmap& bitmap);
robertphillipse275fdf2015-04-09 06:47:12 -070029 SkBitmapSource(const SkBitmap& bitmap,
30 const SkRect& srcRect, const SkRect& dstRect,
31 SkFilterQuality filterQuality);
mtklein36352bf2015-03-25 18:17:31 -070032 void flatten(SkWriteBuffer&) const override;
commit-bot@chromium.orgbd0be252014-05-15 15:40:41 +000033
robertphillips31dc1b22015-07-07 10:05:18 -070034 bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
35 SkBitmap* result, SkIPoint* offset) const override;
senorblanco@chromium.orgf1369ce2012-08-20 14:53:21 +000036
37private:
38 SkBitmap fBitmap;
senorblanco@chromium.orge93e1db2013-12-09 18:31:42 +000039 SkRect fSrcRect, fDstRect;
robertphillipse275fdf2015-04-09 06:47:12 -070040 SkFilterQuality fFilterQuality;
41
senorblanco@chromium.orgf1369ce2012-08-20 14:53:21 +000042 typedef SkImageFilter INHERITED;
43};
44
45#endif