// Copyright 2015 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_SHELL_GPU_GANESH_SURFACE_H_ #define SKY_SHELL_GPU_GANESH_SURFACE_H_ #include "base/memory/scoped_ptr.h" #include "sky/engine/wtf/RefPtr.h" #include "sky/shell/gpu/ganesh_context.h" #include "third_party/skia/include/core/SkSurface.h" #include "ui/gfx/geometry/size.h" namespace sky { namespace shell { // GaneshSurface holds an SkSurface configured to render with Ganesh. Using the // provided GaneshContext, GaneshSurface wraps an SkSurface around the window // bound FBO so that you can use |canvas()| to draw to that window bound FBO. class GaneshSurface { public: GaneshSurface(intptr_t window_fbo, GaneshContext* context, const gfx::Size& size); ~GaneshSurface(); SkCanvas* canvas() const { return surface_->getCanvas(); } gfx::Size size() const { return gfx::Size(surface_->width(), surface_->height()); } private: skia::RefPtr surface_; DISALLOW_COPY_AND_ASSIGN(GaneshSurface); }; } // namespace shell } // namespace sky #endif // SKY_SHELL_GPU_GANESH_SURFACE_H_