Graphical Presenter component role

Overview

Graphical Presenter is a component role, within the session, that presents multiple graphical views to the user; most commonly, views from the session's Elements.

Although the same session component could also implement the Graphical Presenter roll, there is a FIDL protocol, fuchsia.element.GraphicalPresenter, that allows a session component to delegate Graphical Presenter responsibilities another component. This makes it possible for each component to execute in different runtimes (such Rust versus Flutter/Dart) if needed.

Displaying element views

For Fuchsia-based products running on devices with a graphical display, a session implementation manages displayable components through the Element API. Each element renders its graphical representation in what is known as a “view”.

A session will request the Element's view, and then pass that view to the Graphical Presenter to be displayed, along with optional Element Annotations, used to communicate product-specific presentation properties.

PresentView request

The session calls the GraphicalPresenter method PresentView() to display a given view. PresentView() takes:

  1. A ViewSpec, through which the session conveys where and how it wants the view to be displayed in the Scenic scene graph.
  2. An AnnotationController, which is a handle to the element‘s annotations, through which the presenter can update the respective element’s annotations.

In return, the caller is given a handle to the view, as a ViewController. The caller can destroy the view (remove it from the display) by releasing or closing its ViewController.

The developer guide includes an example implementation of presenting an element's view.