| // 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<SkSurface> surface_; |
| |
| DISALLOW_COPY_AND_ASSIGN(GaneshSurface); |
| }; |
| |
| } // namespace shell |
| } // namespace sky |
| |
| #endif // SKY_SHELL_GPU_GANESH_SURFACE_H_ |