Geogram Version 1.9.6-rc
A programming library of geometric algorithms
|
Base class for all applications. More...
#include <geogram_gfx/gui/application.h>
Public Member Functions | |
Application (const std::string &name) | |
Application constructor. | |
virtual | ~Application () |
Application destructor. | |
const std::string & | name () const |
Gets the name of this application. | |
virtual void | start (int argc=0, char **argv=nullptr) |
Starts the main event loop of the application. | |
virtual void | stop () |
Stops the application. | |
const std::string & | get_style () const |
Gets the style. | |
virtual void | set_style (const std::string &value) |
Sets the style of the application. | |
void | set_font_size (index_t value) |
Sets the font size. | |
index_t | get_font_size () const |
Gets the font size. | |
virtual void | update () |
Indicates that the main window should be redrawn. | |
void | draw_dock_space () |
Draws a dockspace that fills the current window. | |
void | lock_updates () |
Lock updates. | |
void | unlock_updates () |
Unlock updates. | |
bool | updates_locked () const |
Tests whether graphic updates are locked. | |
virtual void | draw () |
Redraws the main window. | |
double | scaling () const |
Gets the global scaling to be applied to all GUI elements. | |
void | set_full_screen_mode (index_t w=0, index_t h=0, index_t hz=0, index_t monitor=0) |
Sets full-screen mode. | |
void | set_windowed_mode (index_t w=0, index_t h=0) |
Sets windowed mode. | |
void | list_video_modes () |
Lists the video modes that can be used for set_full_screen_mode() | |
void | iconify () |
Iconifies this application. | |
void | restore () |
Restores this application. | |
void | set_gui_state (std::string x) |
Sets the gui state. | |
std::string | get_gui_state () const |
Gets the gui state. | |
void | set_full_screen (bool x) |
Sets full-screen mode. | |
bool | get_full_screen () const |
Tests whether this application is in full-screen mode. | |
index_t | get_width () const |
Gets the width of the window. | |
index_t | get_height () const |
Gets the height of the window. | |
index_t | get_frame_buffer_width () const |
Gets the width of the frame buffer. | |
index_t | get_frame_buffer_height () const |
Gets the height of the frame buffer. | |
void | set_accept_drops (bool value) |
Sets whether drag and drop events should be taken into account. | |
bool | get_accept_drops () const |
Tests whether drag and drop events are taken into account. | |
void | set_window_icon (Image *image) |
Sets the icon of the window. | |
virtual void | mouse_button_callback (int button, int action, int mods=0, int source=EVENT_SOURCE_MOUSE) |
Callback called whenenver a mouse button changed. | |
virtual void | scroll_callback (double xoffset, double yoffset) |
Callback called whenenver the mouse wheel is moved. | |
virtual void | cursor_pos_callback (double x, double y, int source=EVENT_SOURCE_MOUSE) |
Callback called whenever the mouse cursor is moved. | |
virtual void | drop_callback (int nb, const char **f) |
Callback called whenever files are dropped in the window. | |
virtual void | char_callback (unsigned int c) |
Callback called whenever a key is pushed (high level version) | |
virtual void | key_callback (int key, int scancode, int action, int mods) |
Callback called whenever a key is pushed (low level version) | |
void | restart_gui () |
Restarts the gui. | |
ApplicationData * | impl_data () |
Gets a pointer to the implementation-specific data. | |
void * | impl_window () |
Gets a pointer to the implementation-specific window. | |
double | hidpi_scaling () const |
MacOS non-sense. | |
double | pixel_ratio () const |
More MacOS non-sense. | |
void | reset_soft_keyboard_flag () |
Used internally. | |
const char * | key_to_string (int key) |
Converts a key to a symbolic string with the name of the key. | |
virtual void | draw_gui () |
This function is called when the GUI should be redisplayed. | |
virtual void | draw_graphics () |
This function is called when the 3d content should be redisplayed. | |
virtual void | pre_draw () |
This function is called before starting drawing operations. | |
virtual void | post_draw () |
This function is called after all drawing operations. | |
virtual bool | needs_to_redraw () const |
Tests whether the window needs to be redrawn. | |
virtual void | create_window () |
Creates the window using GLFW. | |
virtual void | delete_window () |
Deletes the window created by GLFW. | |
virtual void | resize (index_t w, index_t h, index_t fb_w, index_t fb_h) |
Called whenever window size changes. | |
virtual void | one_frame (bool draw_GUI=true) |
Draws one frame. | |
virtual void | main_loop () |
Enters the main application loop. | |
virtual void | GL_initialize () |
Initializes OpenGL and GLUP objects. | |
virtual void | GL_terminate () |
Deallocates OpenGL and GLUP objects. | |
virtual void | ImGui_initialize () |
Initializes the ImGui library. | |
virtual void | ImGui_load_fonts () |
Loads the fonts in ImGui. | |
virtual void | ImGui_terminate () |
Deallocates objects used by the ImGui library. | |
virtual void | ImGui_new_frame () |
Notifies ImGui that a new frame has just started. | |
virtual void | geogram_initialize (int argc, char **argv) |
virtual void | declare_args () |
Called by geogram_initialize(), right before parsing command line arguments. | |
void | callbacks_initialize () |
Initializes the callbacks if not already initialized. | |
const std::vector< std::string > & | filenames () const |
Gets all the filenames specified on the command line. | |
bool | animate () const |
bool * | animate_ptr () |
void | start_animation () |
void | stop_animation () |
Static Public Member Functions | |
static Application * | instance () |
Gets the instance. | |
static std::string | get_styles () |
Gets the possible styles. | |
Protected Attributes | |
bool | ImGui_firsttime_init_ |
bool | menubar_visible_ |
bool | phone_screen_ |
bool | soft_keyboard_visible_ |
Base class for all applications.
This class handles the cross-platform creation of a window, OpenGL context, and ImGui. Client code may use SimpleApplication instead.
Definition at line 67 of file application.h.
GEO::Application::Application | ( | const std::string & | name | ) |
Application constructor.
[in] | name | the name of the application |
|
inline |
Definition at line 586 of file application.h.
|
inline |
Definition at line 590 of file application.h.
|
virtual |
Callback called whenever a key is pushed (high level version)
[in] | c | the ASCII code of the character that corresponds to the pushed key. |
Reimplemented in GEO::SimpleApplication.
|
virtual |
Callback called whenever the mouse cursor is moved.
[in] | x,y | the new position of the mouse cursor. |
[in] | source | the event source (one of EVENT_SOURCE_MOUSE, EVENT_SOURCE_FINGER, EVENT_SOURCE_STYLUS) |
Reimplemented in GEO::SimpleApplication.
|
virtual |
Called by geogram_initialize(), right before parsing command line arguments.
Derived application class declare their args by overriding this function.
Reimplemented in GEO::SimpleApplication.
|
virtual |
Redraws the main window.
This function is called by commands that animate objects during computation, by the progress bar and by console output.
|
virtual |
This function is called when the 3d content should be redisplayed.
This function is meant to be overloaded by subclasses. default implementation does nothing.
Reimplemented in GEO::SimpleApplication.
|
virtual |
This function is called when the GUI should be redisplayed.
This function is meant to be overloaded by subclasses. default implementation does nothing.
Reimplemented in GEO::SimpleApplication.
|
virtual |
Callback called whenever files are dropped in the window.
[in] | nb | number of files. |
[in] | f | the array of file names. |
Reimplemented in GEO::SimpleApplication.
|
inline |
Gets all the filenames specified on the command line.
Definition at line 582 of file application.h.
|
virtual |
Reimplemented in GEO::SimpleApplication, and GEO::SimpleMeshApplication.
|
inline |
Tests whether drag and drop events are taken into account.
true | if drag and drop events are taken into account |
false | otherwise |
Definition at line 331 of file application.h.
|
inline |
|
inline |
Gets the height of the frame buffer.
On MacOSX, frame buffer can have a higher resolution than the window.
Definition at line 311 of file application.h.
|
inline |
Gets the width of the frame buffer.
On MacOSX, frame buffer can have a higher resolution than the window.
Definition at line 301 of file application.h.
bool GEO::Application::get_full_screen | ( | ) | const |
Tests whether this application is in full-screen mode.
true | if full-screen mode is used. |
false | if windowed mode is used. |
std::string GEO::Application::get_gui_state | ( | ) | const |
Gets the gui state.
|
inline |
Gets the height of the window.
important note: for OpenGL operations, use get_framebuffer_height() instead, that applies pixel scaling (MacOS/X retina non-sense)
Definition at line 291 of file application.h.
|
inline |
Gets the style.
Definition at line 116 of file application.h.
|
static |
Gets the possible styles.
|
inline |
Gets the width of the window.
important note: for OpenGL operations, use get_framebuffer_width() instead, that applies pixel scaling (MacOS/X retina non-sense)
Definition at line 280 of file application.h.
|
virtual |
Initializes OpenGL and GLUP objects.
Reimplemented in GEO::SimpleApplication, and GEO::SimpleMeshApplication.
|
virtual |
Deallocates OpenGL and GLUP objects.
Reimplemented in GEO::SimpleApplication, and GEO::SimpleMeshApplication.
|
inline |
MacOS non-sense.
Definition at line 424 of file application.h.
|
virtual |
Initializes the ImGui library.
Reimplemented in GEO::SimpleApplication.
|
inline |
Gets a pointer to the implementation-specific data.
For internal use only.
Definition at line 406 of file application.h.
void * GEO::Application::impl_window | ( | ) |
Gets a pointer to the implementation-specific window.
For internal use only.
|
inlinestatic |
|
virtual |
Callback called whenever a key is pushed (low level version)
[in] | key | key code (window system specific) |
[in] | scancode | scan code (window system specific) |
[in] | action | push or release (window system specific) |
[in] | mods | current key modifieds (window system specific) |
Reimplemented in GEO::SimpleApplication.
const char * GEO::Application::key_to_string | ( | int | key | ) |
Converts a key to a symbolic string with the name of the key.
[in] | key | the key. |
void GEO::Application::list_video_modes | ( | ) |
Lists the video modes that can be used for set_full_screen_mode()
The video modes are listed in the terminal.
|
inline |
Lock updates.
If this function is called, updates are ignored. It is useful when a RenderingContext operation is occuring, to prevent the Console for triggering a drawing operation.
Definition at line 165 of file application.h.
|
virtual |
Enters the main application loop.
create_window() needs to be called before. This initializes OpenGL and ImGui before the first frame is displayed.
|
virtual |
Callback called whenenver a mouse button changed.
[in] | button | the button |
[in] | action | the action (one of EVENT_ACTION_UP, EVENT_ACTION_DOWN, EVENT_ACTION_DRAG) |
[in] | mods | the current key modifiers (not implemented yet) |
[in] | source | the event source (one of EVENT_SOURCE_MOUSE, EVENT_SOURCE_FINGER, EVENT_SOURCE_STYLUS) |
Reimplemented in GEO::SimpleApplication.
|
inline |
|
virtual |
Tests whether the window needs to be redrawn.
true | if the window needs to be redrawn. |
false | if the window is up to date. |
|
virtual |
Draws one frame.
This triggers a GUI and/or a scene update as needed.
|
inline |
More MacOS non-sense.
Sometimes you need to multiply by it, sometimes to divide, and sometimes you need to use hidpi_scaling() instead. If I understood well, frame buffer size corresponds to window size times pixel ratio.
Definition at line 439 of file application.h.
|
virtual |
This function is called after all drawing operations.
It can be used to execute queued commands.
Reimplemented in GEO::SimpleApplication.
|
virtual |
This function is called before starting drawing operations.
Some implementations use it to initialize / restore graphic objects.
|
inline |
Used internally.
Definition at line 446 of file application.h.
Called whenever window size changes.
[in] | w,h | the new window width and height in pixels. |
[in] | fb_w,fb_h | the new framebuffer width and height in pixels. |
Called whenenver the size of the window does not match the current size.
Reimplemented in GEO::SimpleApplication.
|
inline |
Restarts the gui.
A flag is set and the gui is restarted at the next frame.
Definition at line 397 of file application.h.
double GEO::Application::scaling | ( | ) | const |
Gets the global scaling to be applied to all GUI elements.
|
virtual |
Callback called whenenver the mouse wheel is moved.
[in] | xoffset,yoffset | wheel displacement |
Reimplemented in GEO::SimpleApplication.
|
inline |
Sets whether drag and drop events should be taken into account.
[in] | value | true if drag and drop events should be taken into account, false otherwise |
Definition at line 321 of file application.h.
void GEO::Application::set_font_size | ( | index_t | value | ) |
Sets the font size.
[in] | value | the font size. |
void GEO::Application::set_full_screen | ( | bool | x | ) |
Sets full-screen mode.
[in] | x | true if full-screen mode should be used, false if windowed-mode should be used. |
void GEO::Application::set_full_screen_mode | ( | index_t | w = 0 , |
index_t | h = 0 , |
||
index_t | hz = 0 , |
||
index_t | monitor = 0 |
||
) |
Sets full-screen mode.
All arguments to zero sets default mode.
[in] | w,h | width and height in pixels |
[in] | hz | refresh rate in Hz |
[in] | monitor | the id of the monitor |
void GEO::Application::set_gui_state | ( | std::string | x | ) |
Sets the gui state.
[in] | x | a string that encodes the windows geometries and docking configuration obtained through get_gui_state() |
|
virtual |
Sets the style of the application.
[in] | value | one of Dark, Light, DarkGray, LightGray |
Reimplemented in GEO::SimpleApplication.
void GEO::Application::set_window_icon | ( | Image * | image | ) |
Sets the icon of the window.
[in] | image | a pointer to the image to be used as the icon. |
Sets windowed mode.
[in] | w,h | width and height in pixels. If zero, use current dimensions. |
|
virtual |
Starts the main event loop of the application.
[in] | argc,argv | optional command line parameters. If specified then they are used to initialize geogram, else geogram is supposed to be already initialized by caller. |
|
inline |
Definition at line 594 of file application.h.
|
inline |
Definition at line 598 of file application.h.
|
inline |
Unlock updates.
Definition at line 172 of file application.h.
|
inline |
Tests whether graphic updates are locked.
This function should be called before triggering graphic redraw to avoid reentrant calls in ImGUI functions, for instance when graphic redraw is triggered from Console or ProgressBar
Definition at line 189 of file application.h.
|
protected |
true if ImGui was once initialized
Definition at line 628 of file application.h.
|
protected |
Definition at line 629 of file application.h.
|
protected |
true if running on a phone
Definition at line 630 of file application.h.
|
protected |
Definition at line 631 of file application.h.