1f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org/*
2f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org * Copyright 2012 The Android Open Source Project
3f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org *
4f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org * Use of this source code is governed by a BSD-style license that can be
5f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org * found in the LICENSE file.
6f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org */
7f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org
8f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org#ifndef SkBitmapSource_DEFINED
9f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org#define SkBitmapSource_DEFINED
10f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org
11f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org#include "SkImageFilter.h"
12f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org#include "SkBitmap.h"
13f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org
14f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.orgclass SK_API SkBitmapSource : public SkImageFilter {
15f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.orgpublic:
16cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org    static SkBitmapSource* Create(const SkBitmap& bitmap) {
17cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org        return SkNEW_ARGS(SkBitmapSource, (bitmap));
18cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org    }
19e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips    static SkBitmapSource* Create(const SkBitmap& bitmap,
20e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips                                  const SkRect& srcRect, const SkRect& dstRect,
21e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips                                  SkFilterQuality filterQuality = kHigh_SkFilterQuality) {
22e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips        return SkNEW_ARGS(SkBitmapSource, (bitmap, srcRect, dstRect, filterQuality));
23cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org    }
2436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    void computeFastBounds(const SkRect& src, SkRect* dst) const override;
25f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org
26f3f5bad7ded35265c0b5d042cc4174386b197a33robertphillips    SK_TO_STRING_OVERRIDE()
27f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapSource)
28f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org
29f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.orgprotected:
30bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org    explicit SkBitmapSource(const SkBitmap& bitmap);
31e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips    SkBitmapSource(const SkBitmap& bitmap,
32e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips                   const SkRect& srcRect, const SkRect& dstRect,
33e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips                   SkFilterQuality filterQuality);
3436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    void flatten(SkWriteBuffer&) const override;
35bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org
364cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org    virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
3736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein                               SkBitmap* result, SkIPoint* offset) const override;
38f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org
39f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.orgprivate:
40f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org    SkBitmap fBitmap;
41e93e1dbf0eced1e1b9aeed7c0c170961e2d61e32senorblanco@chromium.org    SkRect   fSrcRect, fDstRect;
42e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips    SkFilterQuality fFilterQuality;
43e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips
44f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org    typedef SkImageFilter INHERITED;
45f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org};
46f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org
47f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org#endif
48