|
Graphite Version 3
An experimental 3D geometry processing program
|
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. | |
| 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 window. | |
| index_t | get_frame_buffer_height () const |
| Gets the height of the window. | |
| 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 () |
| 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) |
| 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 66 of file application.h.
| GEO::Application::Application | ( | const std::string & | name | ) |
Application constructor.
| [in] | name | the name of the application |
|
inline |
Definition at line 552 of file application.h.
|
inline |
Definition at line 556 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 |
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 548 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 308 of file application.h.
|
inline |
|
inline |
Gets the height of the window.
Definition at line 288 of file application.h.
|
inline |
Gets the width of the window.
Definition at line 280 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.
Definition at line 272 of file application.h.
|
inline |
Gets the style.
Definition at line 115 of file application.h.
|
static |
Gets the possible styles.
|
inline |
Gets the width of the window.
Definition at line 264 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 401 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 383 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 164 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.
Definition at line 413 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 420 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 374 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 298 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 560 of file application.h.
|
inline |
Definition at line 564 of file application.h.
|
inline |
Unlock updates.
Definition at line 171 of file application.h.
|
protected |
true if ImGui was once initialized
Definition at line 594 of file application.h.
|
protected |
Definition at line 595 of file application.h.
|
protected |
true if running on a phone
Definition at line 596 of file application.h.
|
protected |
Definition at line 597 of file application.h.