// 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_SHELL_PLATFORM_LINUX_FL_RENDERER_H_ #define FLUTTER_SHELL_PLATFORM_LINUX_FL_RENDERER_H_ #include #include #include "flutter/shell/platform/linux/public/flutter_linux/fl_dart_project.h" G_BEGIN_DECLS /** * FlRendererError: * Errors for #FlRenderer objects to set on failures. */ typedef enum { FL_RENDERER_ERROR_FAILED, } FlRendererError; GQuark fl_renderer_error_quark(void) G_GNUC_CONST; G_DECLARE_DERIVABLE_TYPE(FlRenderer, fl_renderer, FL, RENDERER, GObject) /** * FlRenderer: * * #FlRenderer is an abstract class that allows Flutter to draw pixels. */ struct _FlRendererClass { GObjectClass parent_class; // Virtual methods gboolean (*start)(FlRenderer* renderer, GError** error); EGLSurface (*create_surface)(FlRenderer* renderer, EGLDisplay display, EGLConfig config); }; /** * fl_renderer_start: * @renderer: a #FlRenderer * @error: (allow-none): #GError location to store the error occurring, or %NULL * to ignore. * * Returns: %TRUE if successfully started. */ gboolean fl_renderer_start(FlRenderer* self, GError** error); /** * fl_renderer_get_proc_address: * @renderer: a #FlRenderer * @name: a function name * * Gets the rendering API function that matches the given name. * * Returns: a function pointer */ void* fl_renderer_get_proc_address(FlRenderer* renderer, const char* name); /** * fl_renderer_make_current: * @renderer: a #FlRenderer * @error: (allow-none): #GError location to store the error occurring, or %NULL * to ignore. * * Makes the rendering context current. * * Returns %TRUE if successful */ gboolean fl_renderer_make_current(FlRenderer* renderer, GError** error); /** * fl_renderer_clear_current: * @renderer: a #FlRenderer * @error: (allow-none): #GError location to store the error occurring, or %NULL * to ignore. * * Clears the current rendering context. * * Returns %TRUE if successful */ gboolean fl_renderer_clear_current(FlRenderer* renderer, GError** error); /** * fl_renderer_get_fbo: * @renderer: a #FlRenderer * * Gets the frame buffer object to render to. * * Returns: a frame buffer object index */ guint32 fl_renderer_get_fbo(FlRenderer* renderer); /** * fl_renderer_present: * @renderer: a #FlRenderer * @error: (allow-none): #GError location to store the error occurring, or %NULL * to ignore. * * Presents the current frame. * * Returns %TRUE if successful */ gboolean fl_renderer_present(FlRenderer* renderer, GError** error); G_END_DECLS #endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_RENDERER_H_