diff options
author | msarett <msarett@google.com> | 2016-04-27 13:51:20 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-27 13:51:20 -0700 |
commit | 95416f477d2ca264f2fb065455e95778a2289a1d (patch) | |
tree | 41aa18dccbe6e45d771abb4256b850c1ffb09bdd /src/core/SkRecordedDrawable.h | |
parent | 80f5ea02cf69096e00b8fe01fe54375a9387c9d9 (diff) |
Enable flattening of SkRecordedDrawable
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1913843002
Committed: https://skia.googlesource.com/skia/+/d636950e8ecba89c0021ce4e76037c67aa6ee2cd
Review-Url: https://codereview.chromium.org/1913843002
Diffstat (limited to 'src/core/SkRecordedDrawable.h')
-rw-r--r-- | src/core/SkRecordedDrawable.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/core/SkRecordedDrawable.h b/src/core/SkRecordedDrawable.h new file mode 100644 index 0000000000..e9973b4b81 --- /dev/null +++ b/src/core/SkRecordedDrawable.h @@ -0,0 +1,43 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkBBoxHierarchy.h" +#include "SkDrawable.h" +#include "SkRecord.h" +#include "SkRecorder.h" + +class SkRecordedDrawable : public SkDrawable { +public: + SkRecordedDrawable(SkRecord* record, SkBBoxHierarchy* bbh, SkDrawableList* drawableList, + const SkRect& bounds, bool doSaveLayerInfo) + : fRecord(SkRef(record)) + , fBBH(SkSafeRef(bbh)) + , fDrawableList(drawableList) // we take ownership + , fBounds(bounds) + , fDoSaveLayerInfo(doSaveLayerInfo) + {} + + void flatten(SkWriteBuffer& buffer) const override; + + static sk_sp<SkFlattenable> CreateProc(SkReadBuffer& buffer); + + Factory getFactory() const override { return CreateProc; } + +protected: + SkRect onGetBounds() override { return fBounds; } + + void onDraw(SkCanvas* canvas) override; + + SkPicture* onNewPictureSnapshot() override; + +private: + SkAutoTUnref<SkRecord> fRecord; + SkAutoTUnref<SkBBoxHierarchy> fBBH; + SkAutoTDelete<SkDrawableList> fDrawableList; + const SkRect fBounds; + const bool fDoSaveLayerInfo; +}; |