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 static sk_sp<SkFlattenable> CreateProc(SkReadBuffer& buffer); 28 getFactory()29 Factory getFactory() const override { return CreateProc; } 30 31 protected: onGetBounds()32 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 45