23f66c2cdd
* GUI: canvas streaming * Fix right status bar icon alignment
70 lines
1.8 KiB
C
70 lines
1.8 KiB
C
#pragma once
|
|
|
|
#include "view_port.h"
|
|
#include "canvas.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Gui layers */
|
|
typedef enum {
|
|
GuiLayerNone, /* Special layer for internal use only */
|
|
|
|
GuiLayerStatusBarLeft, /* Status bar left-side layer, auto-layout */
|
|
GuiLayerStatusBarRight, /* Status bar right-side layer, auto-layout */
|
|
GuiLayerMain, /* Main layer, status bar is shown */
|
|
GuiLayerFullscreen, /* Fullscreen layer */
|
|
|
|
GuiLayerMAX /* Don't use or move, special value */
|
|
} GuiLayer;
|
|
|
|
/* Gui frame buffer callback */
|
|
typedef void (*GuiCanvasCommitCallback)(uint8_t* data, size_t size, void* context);
|
|
|
|
typedef struct Gui Gui;
|
|
|
|
/*
|
|
* Add view_port to view_port tree
|
|
* @remarks thread safe
|
|
*/
|
|
void gui_add_view_port(Gui* gui, ViewPort* view_port, GuiLayer layer);
|
|
|
|
/*
|
|
* Remove view_port from rendering tree
|
|
* @remarks thread safe
|
|
*/
|
|
void gui_remove_view_port(Gui* gui, ViewPort* view_port);
|
|
|
|
/* Send ViewPort to the front
|
|
* Places selected ViewPort to the top of the drawing stack
|
|
* @param gui - Gui instance
|
|
* @param view_port - ViewPort instance
|
|
*/
|
|
void gui_send_view_port_front(Gui* gui, ViewPort* view_port);
|
|
|
|
/* Send ViewPort to the back
|
|
* Places selected ViewPort to the bottom of the drawing stack
|
|
* @param gui - Gui instance
|
|
* @param view_port - ViewPort instance
|
|
*/
|
|
void gui_send_view_port_back(Gui* gui, ViewPort* view_port);
|
|
|
|
/* Set gui canvas commit callback
|
|
* This callback will be called upon Canvas commit
|
|
* Callback dispatched from GUI thread and is time critical
|
|
* @param gui - Gui instance
|
|
* @param callback - GuiCanvasCommitCallback
|
|
*/
|
|
void gui_set_framebuffer_callback(Gui* gui, GuiCanvasCommitCallback callback);
|
|
|
|
/* Set gui canvas commit callback context
|
|
* @param gui - Gui instance
|
|
* @param context - pointer to context
|
|
*/
|
|
void gui_set_framebuffer_callback_context(Gui* gui, void* context);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|