blob: c7ba74143e6aed555cf5f27fc1f96486bba06c56 [file] [log] [blame]
msarett95416f42016-04-27 13:51:20 -07001/*
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 */
Hal Canary03a7f5f2017-02-10 09:06:38 -05007#ifndef SkRecordedDrawable_DEFINED
8#define SkRecordedDrawable_DEFINED
msarett95416f42016-04-27 13:51:20 -07009
10#include "SkBBoxHierarchy.h"
11#include "SkDrawable.h"
12#include "SkRecord.h"
13#include "SkRecorder.h"
14
15class SkRecordedDrawable : public SkDrawable {
16public:
bungeman6bd52842016-10-27 09:30:08 -070017 SkRecordedDrawable(sk_sp<SkRecord> record, sk_sp<SkBBoxHierarchy> bbh,
18 std::unique_ptr<SkDrawableList> drawableList, const SkRect& bounds)
19 : fRecord(std::move(record))
20 , fBBH(std::move(bbh))
21 , fDrawableList(std::move(drawableList))
msarett95416f42016-04-27 13:51:20 -070022 , fBounds(bounds)
msarett95416f42016-04-27 13:51:20 -070023 {}
24
25 void flatten(SkWriteBuffer& buffer) const override;
26
27 static sk_sp<SkFlattenable> CreateProc(SkReadBuffer& buffer);
28
29 Factory getFactory() const override { return CreateProc; }
30
31protected:
32 SkRect onGetBounds() override { return fBounds; }
33
34 void onDraw(SkCanvas* canvas) override;
35
36 SkPicture* onNewPictureSnapshot() override;
37
38private:
bungeman6bd52842016-10-27 09:30:08 -070039 sk_sp<SkRecord> fRecord;
40 sk_sp<SkBBoxHierarchy> fBBH;
41 std::unique_ptr<SkDrawableList> fDrawableList;
msarett95416f42016-04-27 13:51:20 -070042 const SkRect fBounds;
msarett95416f42016-04-27 13:51:20 -070043};
Hal Canary03a7f5f2017-02-10 09:06:38 -050044#endif // SkRecordedDrawable_DEFINED