提交 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 { ...@@ -49,6 +49,8 @@ class PictureLayer : public Layer {
PictureLayer(); PictureLayer();
~PictureLayer() override; ~PictureLayer() override;
SkPicture* picture() const { return picture_.get(); }
void Paint(SkCanvas* canvas) override; void Paint(SkCanvas* canvas) override;
void set_offset(const SkPoint& offset) { offset_ = offset; } void set_offset(const SkPoint& offset) { offset_ = offset; }
...@@ -66,6 +68,8 @@ class ContainerLayer : public Layer { ...@@ -66,6 +68,8 @@ class ContainerLayer : public Layer {
ContainerLayer(); ContainerLayer();
~ContainerLayer() override; ~ContainerLayer() override;
const std::vector<std::unique_ptr<Layer>>& layers() const { return layers_; }
void Add(std::unique_ptr<Layer> layer); void Add(std::unique_ptr<Layer> layer);
void PaintChildren(SkCanvas* canvas); void PaintChildren(SkCanvas* canvas);
......
...@@ -16,8 +16,25 @@ ...@@ -16,8 +16,25 @@
#include "ui/gl/gl_share_group.h" #include "ui/gl/gl_share_group.h"
#include "ui/gl/gl_surface.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 sky {
namespace shell { 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() Rasterizer::Rasterizer()
: share_group_(new gfx::GLShareGroup()), weak_factory_(this) { : share_group_(new gfx::GLShareGroup()), weak_factory_(this) {
...@@ -58,7 +75,9 @@ void Rasterizer::Draw(scoped_ptr<LayerTree> layer_tree) { ...@@ -58,7 +75,9 @@ void Rasterizer::Draw(scoped_ptr<LayerTree> layer_tree) {
canvas->flush(); canvas->flush();
surface_->SwapBuffers(); 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() { void Rasterizer::OnOutputSurfaceDestroyed() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册