Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
fl_view_renderer.h File Reference
#include <gtk/gtk.h>
#include "flutter/shell/platform/embedder/embedder.h"

Go to the source code of this file.

Functions

G_BEGIN_DECLS G_DECLARE_DERIVABLE_TYPE (FlViewRenderer, fl_view_renderer, FL, VIEW_RENDERER, GtkDrawingArea) struct _FlViewRendererClass
 
void fl_view_renderer_set_background_color (FlViewRenderer *renderer, const GdkRGBA *color)
 
void fl_view_renderer_paint_background (FlViewRenderer *renderer, cairo_t *cr)
 
void fl_view_renderer_present_layers (FlViewRenderer *renderer, const FlutterLayer **layers, size_t layers_count)
 
void fl_view_renderer_notify_frame (FlViewRenderer *renderer)
 

Function Documentation

◆ fl_view_renderer_notify_frame()

void fl_view_renderer_notify_frame ( FlViewRenderer *  renderer)

fl_view_renderer_notify_frame: @renderer: an #FlViewRenderer.

Notifies that a frame has been rendered. Subclasses call this on each frame. The "first-frame" signal is emitted on the first call.

Definition at line 99 of file fl_view_renderer.cc.

99 {
100 g_return_if_fail(FL_IS_VIEW_RENDERER(self));
101
103 fl_view_renderer_get_instance_private(self));
104
105 if (!priv->have_first_frame) {
106 priv->have_first_frame = TRUE;
108 }
109}
FlAccessibilityHandlerPrivate * priv
@ SIGNAL_FIRST_FRAME
static guint fl_view_renderer_signals[LAST_SIGNAL]

References fl_view_renderer_signals, priv, self, SIGNAL_FIRST_FRAME, and TRUE.

Referenced by G_DEFINE_TYPE(), and G_DEFINE_TYPE().

◆ fl_view_renderer_paint_background()

void fl_view_renderer_paint_background ( FlViewRenderer *  renderer,
cairo_t *  cr 
)

fl_view_renderer_paint_background: @renderer: an #FlViewRenderer. @cr: a #cairo_t to paint to.

Paints the background color behind the Flutter frame. Subclasses call this at the start of their draw implementation.

Definition at line 73 of file fl_view_renderer.cc.

73 {
74 g_return_if_fail(FL_IS_VIEW_RENDERER(self));
75
77 fl_view_renderer_get_instance_private(self));
78
79 // Don't bother drawing if fully transparent - the widget above this will
80 // already be drawn by GTK.
81 if (priv->background_color->red == 0 && priv->background_color->green == 0 &&
82 priv->background_color->blue == 0 && priv->background_color->alpha == 0) {
83 return;
84 }
85
86 gdk_cairo_set_source_rgba(cr, priv->background_color);
87 cairo_paint(cr);
88}
void gdk_cairo_set_source_rgba(cairo_t *cr, const GdkRGBA *rgba)
Definition mock_gtk.cc:154

References gdk_cairo_set_source_rgba(), priv, and self.

Referenced by fl_view_renderer_opengl_draw(), and fl_view_renderer_software_draw().

◆ fl_view_renderer_present_layers()

void fl_view_renderer_present_layers ( FlViewRenderer *  renderer,
const FlutterLayer **  layers,
size_t  layers_count 
)

fl_view_renderer_present_layers: @renderer: an #FlViewRenderer. @layers: layers to draw. @layers_count: number of layers.

Composites a frame into the renderer. This method can be called from any thread.

Definition at line 90 of file fl_view_renderer.cc.

92 {
93 g_return_if_fail(FL_IS_VIEW_RENDERER(self));
94
95 FlViewRendererClass* klass = FL_VIEW_RENDERER_GET_CLASS(self);
96 klass->present_layers(self, layers, layers_count);
97}
const FlutterLayer size_t layers_count
const FlutterLayer ** layers

References layers, layers_count, and self.

Referenced by fl_view_present_layers().

◆ fl_view_renderer_set_background_color()

void fl_view_renderer_set_background_color ( FlViewRenderer *  renderer,
const GdkRGBA *  color 
)

fl_view_renderer_set_background_color: @renderer: an #FlViewRenderer. @color: the background color.

Sets the background color drawn behind the Flutter frame.

Definition at line 59 of file fl_view_renderer.cc.

60 {
61 g_return_if_fail(FL_IS_VIEW_RENDERER(self));
62
64 fl_view_renderer_get_instance_private(self));
65
66 gdk_rgba_free(priv->background_color);
67 priv->background_color = gdk_rgba_copy(color);
68
69 // Redraw so the new background color is shown.
70 gtk_widget_queue_draw(GTK_WIDGET(self));
71}
void gtk_widget_queue_draw(GtkWidget *widget)
Definition mock_gtk.cc:271

References gtk_widget_queue_draw(), priv, and self.

Referenced by fl_view_set_background_color().

◆ G_DECLARE_DERIVABLE_TYPE()

G_BEGIN_DECLS G_DECLARE_DERIVABLE_TYPE ( FlViewRenderer  ,
fl_view_renderer  ,
FL  ,
VIEW_RENDERER  ,
GtkDrawingArea   
)

FlViewRenderer:

#FlViewRenderer is a GTK widget that renders the contents of a Flutter view. Input handling and other view responsibilities are handled by #FlView.

Subclasses implement rendering for a particular backend, for example #FlViewRendererOpenGL and #FlViewRendererSoftware. The "first-frame" signal is emitted when the first frame has been rendered.

Composites a frame into the renderer. May be called from any thread.

This method is abstract and must be implemented by subclasses.

Definition at line 14 of file fl_view_renderer.h.

31 {
32 GtkDrawingAreaClass parent_class;
33
34 /**
35 * Composites a frame into the renderer. May be called from any thread.
36 *
37 * This method is abstract and must be implemented by subclasses.
38 */
39 void (*present_layers)(FlViewRenderer* renderer,
40 const FlutterLayer** layers,
41 size_t layers_count);
42};

References layers, and layers_count.