// 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_