| // Copyright 2013 The Flutter 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 FLUTTER_IMPELLER_TOOLKIT_EGL_SURFACE_H_ |
| #define FLUTTER_IMPELLER_TOOLKIT_EGL_SURFACE_H_ |
| |
| #include "impeller/toolkit/egl/egl.h" |
| |
| namespace impeller { |
| namespace egl { |
| |
| //------------------------------------------------------------------------------ |
| /// @brief An instance of an EGL surface. There is no ability to create |
| /// surfaces directly. Instead, one must be created using a Display |
| /// connection. |
| /// |
| class Surface { |
| public: |
| ~Surface(); |
| |
| //---------------------------------------------------------------------------- |
| /// @return True if this is a valid surface. |
| /// |
| bool IsValid() const; |
| |
| //---------------------------------------------------------------------------- |
| /// @return Get the handle to the underlying surface. |
| /// |
| const EGLSurface& GetHandle() const; |
| |
| //---------------------------------------------------------------------------- |
| /// @brief Present the surface. For an offscreen pixel buffer surface, |
| /// this is a no-op. |
| /// |
| /// @return True if the surface could be presented. |
| /// |
| bool Present() const; |
| |
| private: |
| friend class Display; |
| |
| EGLDisplay display_ = EGL_NO_DISPLAY; |
| EGLSurface surface_ = EGL_NO_SURFACE; |
| |
| Surface(EGLDisplay display, EGLSurface surface); |
| |
| Surface(const Surface&) = delete; |
| |
| Surface& operator=(const Surface&) = delete; |
| }; |
| |
| } // namespace egl |
| } // namespace impeller |
| |
| #endif // FLUTTER_IMPELLER_TOOLKIT_EGL_SURFACE_H_ |