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 class SkRecordedDrawable : public SkDrawable { 16 public: SkRecordedDrawable(sk_sp<SkRecord> record,sk_sp<SkBBoxHierarchy> bbh,std::unique_ptr<SkDrawableList> drawableList,const SkRect & bounds)17 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)) 22 , fBounds(bounds) 23 {} 24 25 void flatten(SkWriteBuffer& buffer) const override; 26 27 protected: onGetBounds()28 SkRect onGetBounds() override { return fBounds; } 29 30 void onDraw(SkCanvas* canvas) override; 31 32 SkPicture* onNewPictureSnapshot() override; 33 34 private: 35 SK_FLATTENABLE_HOOKS(SkRecordedDrawable) 36 37 sk_sp<SkRecord> fRecord; 38 sk_sp<SkBBoxHierarchy> fBBH; 39 std::unique_ptr<SkDrawableList> fDrawableList; 40 const SkRect fBounds; 41 }; 42 #endif // SkRecordedDrawable_DEFINED 43