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 14 class SkRecordedDrawable : public SkDrawable { 15 public: SkRecordedDrawable(sk_sp<SkRecord> record,sk_sp<SkBBoxHierarchy> bbh,std::unique_ptr<SkDrawableList> drawableList,const SkRect & bounds)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 26 protected: onGetBounds()27 SkRect onGetBounds() override { return fBounds; } 28 29 void onDraw(SkCanvas* canvas) override; 30 31 SkPicture* onNewPictureSnapshot() override; 32 33 private: 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