提交 92ce657c 编写于 作者: A Adam Barth

Merge pull request #1087 from abarth/sketch_serialize

Add a sketchy function for serializing SkPictures
......@@ -49,6 +49,8 @@ class PictureLayer : public Layer {
PictureLayer();
~PictureLayer() override;
SkPicture* picture() const { return picture_.get(); }
void Paint(SkCanvas* canvas) override;
void set_offset(const SkPoint& offset) { offset_ = offset; }
......@@ -66,6 +68,8 @@ class ContainerLayer : public Layer {
ContainerLayer();
~ContainerLayer() override;
const std::vector<std::unique_ptr<Layer>>& layers() const { return layers_; }
void Add(std::unique_ptr<Layer> layer);
void PaintChildren(SkCanvas* canvas);
......
......@@ -16,8 +16,25 @@
#include "ui/gl/gl_share_group.h"
#include "ui/gl/gl_surface.h"
// Set this value to 1 to serialize the layer tree to disk.
#define SERIALIZE_LAYER_TREE 0
namespace sky {
namespace shell {
namespace {
#if SERIALIZE_LAYER_TREE
void SketchySerializeLayerTree(const char* path, LayerTree* layer_tree) {
const auto& layers = static_cast<ContainerLayer*>(layer_tree->root_layer())->layers();
if (layers.empty())
return;
SerializePicture(path, static_cast<PictureLayer*>(layers[0].get())->picture());
}
#endif
} // namespace
Rasterizer::Rasterizer()
: share_group_(new gfx::GLShareGroup()), weak_factory_(this) {
......@@ -58,7 +75,9 @@ void Rasterizer::Draw(scoped_ptr<LayerTree> layer_tree) {
canvas->flush();
surface_->SwapBuffers();
// SerializePicture("/data/data/org.domokit.sky.shell/cache/layer0.skp", picture.get());
#if SERIALIZE_LAYER_TREE
SketchySerializeLayerTree("/data/data/org.domokit.sky.shell/cache/layer0.skp", layer_tree.get());
#endif
}
void Rasterizer::OnOutputSurfaceDestroyed() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册