| // 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 EXAMPLES_GANESH_APP_GANESH_VIEW_H_ |
| #define EXAMPLES_GANESH_APP_GANESH_VIEW_H_ |
| |
| #include "examples/ganesh_app/texture_uploader.h" |
| #include "mojo/gpu/gl_context.h" |
| #include "mojo/services/surfaces/interfaces/surface_id.mojom.h" |
| #include "mojo/services/view_manager/cpp/view_observer.h" |
| #include "mojo/skia/ganesh_context.h" |
| |
| namespace mojo { |
| class Shell; |
| } |
| |
| namespace examples { |
| |
| class GaneshView : public TextureUploader::Client, public mojo::ViewObserver { |
| public: |
| GaneshView(mojo::Shell* shell, mojo::View* view); |
| ~GaneshView() override; |
| |
| private: |
| // mojo::ViewObserver implementation. |
| void OnViewDestroyed(mojo::View* view) override; |
| void OnViewBoundsChanged(mojo::View* view, |
| const mojo::Rect& old_bounds, |
| const mojo::Rect& new_bounds) override; |
| void OnViewInputEvent(mojo::View* view, const mojo::EventPtr& event) override; |
| |
| // TextureUploader::Client implementation. |
| void OnSurfaceIdAvailable(mojo::SurfaceIdPtr surface_id) override; |
| |
| void Draw(const mojo::Size& size); |
| |
| mojo::View* view_; |
| base::WeakPtr<mojo::GLContext> gl_context_; |
| scoped_ptr<mojo::GaneshContext> gr_context_; |
| TextureUploader texture_uploader_; |
| |
| DISALLOW_COPY_AND_ASSIGN(GaneshView); |
| }; |
| |
| } // namespace examples |
| |
| #endif // EXAMPLES_GANESH_APP_GANESH_VIEW_H_ |