Line data Source code
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 "SkBBoxHierarchy.h"
11 : #include "SkDrawable.h"
12 : #include "SkRecord.h"
13 : #include "SkRecorder.h"
14 :
15 0 : class SkRecordedDrawable : public SkDrawable {
16 : public:
17 0 : SkRecordedDrawable(sk_sp<SkRecord> record, sk_sp<SkBBoxHierarchy> bbh,
18 : std::unique_ptr<SkDrawableList> drawableList, const SkRect& bounds)
19 0 : : fRecord(std::move(record))
20 0 : , fBBH(std::move(bbh))
21 0 : , fDrawableList(std::move(drawableList))
22 0 : , fBounds(bounds)
23 0 : {}
24 :
25 : void flatten(SkWriteBuffer& buffer) const override;
26 :
27 : static sk_sp<SkFlattenable> CreateProc(SkReadBuffer& buffer);
28 :
29 0 : Factory getFactory() const override { return CreateProc; }
30 :
31 : protected:
32 0 : SkRect onGetBounds() override { return fBounds; }
33 :
34 : void onDraw(SkCanvas* canvas) override;
35 :
36 : SkPicture* onNewPictureSnapshot() override;
37 :
38 : private:
39 : sk_sp<SkRecord> fRecord;
40 : sk_sp<SkBBoxHierarchy> fBBH;
41 : std::unique_ptr<SkDrawableList> fDrawableList;
42 : const SkRect fBounds;
43 : };
44 : #endif // SkRecordedDrawable_DEFINED
|