1/*
2 * Copyright 2016 Google Inc.
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#ifndef SkRecordedDrawable_DEFINED
8#define SkRecordedDrawable_DEFINED
9
10#include "include/core/SkDrawable.h"
11#include "src/core/SkRecord.h"
12#include "src/core/SkRecorder.h"
13
14class SkRecordedDrawable : public SkDrawable {
15public:
16 SkRecordedDrawable(sk_sp<SkRecord> record, sk_sp<SkBBoxHierarchy> bbh,
17 std::unique_ptr<SkDrawableList> drawableList, const SkRect& bounds)
18 : fRecord(std::move(record))
19 , fBBH(std::move(bbh))
20 , fDrawableList(std::move(drawableList))
21 , fBounds(bounds)
22 {}
23
24 void flatten(SkWriteBuffer& buffer) const override;
25
26protected:
27 SkRect onGetBounds() override { return fBounds; }
28
29 void onDraw(SkCanvas* canvas) override;
30
31 SkPicture* onNewPictureSnapshot() override;
32
33private:
34 SK_FLATTENABLE_HOOKS(SkRecordedDrawable)
35
36 sk_sp<SkRecord> fRecord;
37 sk_sp<SkBBoxHierarchy> fBBH;
38 std::unique_ptr<SkDrawableList> fDrawableList;
39 const SkRect fBounds;
40};
41#endif // SkRecordedDrawable_DEFINED
42