blob: 3bf540c9feee45666568ead6fe3722111b0d2d26 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SKY_VIEWER_COMPOSITOR_LAYER_H_
#define SKY_VIEWER_COMPOSITOR_LAYER_H_
#include "base/memory/ref_counted.h"
#include "mojo/gpu/gl_texture.h"
#include "services/sky/compositor/layer_client.h"
#include "services/sky/compositor/rasterizer.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "third_party/skia/include/core/SkPicture.h"
#include "ui/gfx/geometry/rect.h"
namespace sky {
class LayerHost;
class Layer : public base::RefCounted<Layer> {
public:
explicit Layer(LayerClient* client);
void SetSize(const gfx::Size& size);
void Display();
scoped_ptr<mojo::GLTexture> GetTexture();
const gfx::Size& size() const { return size_; }
void set_rasterizer(scoped_ptr<Rasterizer> rasterizer) {
rasterizer_ = rasterizer.Pass();
}
private:
friend class base::RefCounted<Layer>;
~Layer();
PassRefPtr<SkPicture> RecordPicture();
LayerClient* client_;
gfx::Size size_;
scoped_ptr<mojo::GLTexture> texture_;
scoped_ptr<Rasterizer> rasterizer_;
DISALLOW_COPY_AND_ASSIGN(Layer);
};
} // namespace sky
#endif // SKY_VIEWER_COMPOSITOR_LAYER_H_