Flipper Zero Firmware
Loading...
Searching...
No Matches
gui.h File Reference

GUI: main API. More...

#include "view_port.h"
#include "canvas.h"

Go to the source code of this file.

Macros

#define RECORD_GUI   "gui"
 

Typedefs

typedef void(* GuiCanvasCommitCallback) (uint8_t *data, size_t size, CanvasOrientation orientation, void *context)
 Gui Canvas Commit Callback.
 
typedef struct Gui Gui
 

Enumerations

enum  GuiLayer {
  GuiLayerDesktop , GuiLayerWindow , GuiLayerStatusBarLeft , GuiLayerStatusBarRight ,
  GuiLayerFullscreen , GuiLayerMAX
}
 Gui layers. More...
 

Functions

void gui_add_view_port (Gui *gui, ViewPort *view_port, GuiLayer layer)
 Add view_port to view_port tree.
 
void gui_remove_view_port (Gui *gui, ViewPort *view_port)
 Remove view_port from rendering tree.
 
void gui_view_port_send_to_front (Gui *gui, ViewPort *view_port)
 Send ViewPort to the front.
 
void gui_view_port_send_to_back (Gui *gui, ViewPort *view_port)
 Send ViewPort to the back.
 
void gui_add_framebuffer_callback (Gui *gui, GuiCanvasCommitCallback callback, void *context)
 Add gui canvas commit callback.
 
void gui_remove_framebuffer_callback (Gui *gui, GuiCanvasCommitCallback callback, void *context)
 Remove gui canvas commit callback.
 
size_t gui_get_framebuffer_size (const Gui *gui)
 Get gui canvas frame buffer size *.
 
void gui_set_lockdown (Gui *gui, bool lockdown)
 Set lockdown mode.
 
Canvasgui_direct_draw_acquire (Gui *gui)
 Acquire Direct Draw lock and get Canvas instance.
 
void gui_direct_draw_release (Gui *gui)
 Release Direct Draw Lock.
 

Detailed Description

GUI: main API.

Enumeration Type Documentation

◆ GuiLayer

enum GuiLayer

Gui layers.

Enumerator
GuiLayerDesktop 

Desktop layer for internal use.

Like fullscreen but with status bar

GuiLayerWindow 

Window layer, status bar is shown.

GuiLayerStatusBarLeft 

Status bar left-side layer, auto-layout.

GuiLayerStatusBarRight 

Status bar right-side layer, auto-layout.

GuiLayerFullscreen 

Fullscreen layer, no status bar.

GuiLayerMAX 

Don't use or move, special value.

Function Documentation

◆ gui_add_framebuffer_callback()

void gui_add_framebuffer_callback ( Gui * gui,
GuiCanvasCommitCallback callback,
void * context )

Add gui canvas commit callback.

This callback will be called upon Canvas commit Callback dispatched from GUI thread and is time critical

Parameters
guiGui instance
callbackGuiCanvasCommitCallback
contextGuiCanvasCommitCallback context

◆ gui_add_view_port()

void gui_add_view_port ( Gui * gui,
ViewPort * view_port,
GuiLayer layer )

Add view_port to view_port tree.

Remarks
thread safe
Parameters
guiGui instance
view_portViewPort instance
[in]layerGuiLayer where to place view_port

◆ gui_direct_draw_acquire()

Canvas * gui_direct_draw_acquire ( Gui * gui)

Acquire Direct Draw lock and get Canvas instance.

This method return Canvas instance for use in monopoly mode. Direct draw lock disables input and draw call dispatch functions in GUI service. No other applications or services will be able to draw until gui_direct_draw_release call.

Parameters
guiThe graphical user interface
Returns
Canvas instance

◆ gui_direct_draw_release()

void gui_direct_draw_release ( Gui * gui)

Release Direct Draw Lock.

Release Direct Draw Lock, enables Input and Draw call processing. Canvas acquired in gui_direct_draw_acquire will become invalid after this call.

Parameters
guiGui instance

◆ gui_get_framebuffer_size()

size_t gui_get_framebuffer_size ( const Gui * gui)

Get gui canvas frame buffer size *.

Parameters
guiGui instance
Returns
size_t size of frame buffer in bytes

◆ gui_remove_framebuffer_callback()

void gui_remove_framebuffer_callback ( Gui * gui,
GuiCanvasCommitCallback callback,
void * context )

Remove gui canvas commit callback.

Parameters
guiGui instance
callbackGuiCanvasCommitCallback
contextGuiCanvasCommitCallback context

◆ gui_remove_view_port()

void gui_remove_view_port ( Gui * gui,
ViewPort * view_port )

Remove view_port from rendering tree.

Remarks
thread safe
Parameters
guiGui instance
view_portViewPort instance

◆ gui_set_lockdown()

void gui_set_lockdown ( Gui * gui,
bool lockdown )

Set lockdown mode.

When lockdown mode is enabled, only GuiLayerDesktop is shown. This feature prevents services from showing sensitive information when flipper is locked.

Parameters
guiGui instance
lockdownbool, true if enabled

◆ gui_view_port_send_to_back()

void gui_view_port_send_to_back ( Gui * gui,
ViewPort * view_port )

Send ViewPort to the back.

Places selected ViewPort to the bottom of the drawing stack

Parameters
guiGui instance
view_portViewPort instance

◆ gui_view_port_send_to_front()

void gui_view_port_send_to_front ( Gui * gui,
ViewPort * view_port )

Send ViewPort to the front.

Places selected ViewPort to the top of the drawing stack

Parameters
guiGui instance
view_portViewPort instance