blob: 1eda5dcceb22a35ad34cd5ef629845b072dcb9e9 [file] [log] [blame]
senorblanco@chromium.org53333002013-12-12 23:28:52 +00001/*
2 * Copyright 2013 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 SkPictureImageFilter_DEFINED
9#define SkPictureImageFilter_DEFINED
10
11#include "SkImageFilter.h"
12#include "SkPicture.h"
13
14class SK_API SkPictureImageFilter : public SkImageFilter {
15public:
16 /**
17 * Refs the passed-in picture.
18 */
commit-bot@chromium.orgcac5fd52014-03-10 10:51:58 +000019 static SkPictureImageFilter* Create(SkPicture* picture) {
20 return SkNEW_ARGS(SkPictureImageFilter, (picture));
21 }
senorblanco@chromium.org53333002013-12-12 23:28:52 +000022
23 /**
commit-bot@chromium.orgcac5fd52014-03-10 10:51:58 +000024 * Refs the passed-in picture. cropRect can be used to crop or expand the destination rect when
senorblanco@chromium.org53333002013-12-12 23:28:52 +000025 * the picture is drawn. (No scaling is implied by the dest rect; only the CTM is applied.)
26 */
commit-bot@chromium.orgcac5fd52014-03-10 10:51:58 +000027 static SkPictureImageFilter* Create(SkPicture* picture, const SkRect& cropRect) {
28 return SkNEW_ARGS(SkPictureImageFilter, (picture, cropRect));
29 }
senorblanco@chromium.org53333002013-12-12 23:28:52 +000030
31 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPictureImageFilter)
32
33protected:
34 virtual ~SkPictureImageFilter();
commit-bot@chromium.org5e0995e2014-02-07 12:20:04 +000035 /* Constructs an SkPictureImageFilter object from an SkReadBuffer.
36 * Note: If the SkPictureImageFilter object construction requires bitmap
37 * decoding, the decoder must be set on the SkReadBuffer parameter by calling
38 * SkReadBuffer::setBitmapDecoder() before calling this constructor.
39 * @param SkReadBuffer Serialized picture data.
40 */
41 explicit SkPictureImageFilter(SkReadBuffer&);
commit-bot@chromium.org8b0e8ac2014-01-30 18:58:24 +000042 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
senorblanco@chromium.org53333002013-12-12 23:28:52 +000043 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&,
commit-bot@chromium.orgae761f72014-02-05 22:32:02 +000044 SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE;
senorblanco@chromium.org53333002013-12-12 23:28:52 +000045
commit-bot@chromium.orgcac5fd52014-03-10 10:51:58 +000046#ifdef SK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS
47public:
48#endif
49 explicit SkPictureImageFilter(SkPicture* picture);
50 SkPictureImageFilter(SkPicture* picture, const SkRect& cropRect);
51
senorblanco@chromium.org53333002013-12-12 23:28:52 +000052private:
53 SkPicture* fPicture;
commit-bot@chromium.orgcac5fd52014-03-10 10:51:58 +000054 SkRect fCropRect;
senorblanco@chromium.org53333002013-12-12 23:28:52 +000055 typedef SkImageFilter INHERITED;
56};
57
58#endif