|
EchoMap 2026-07-25 6d3977c
An experimental cross-platform digital signal processing application for sound-source localisation.
|
EchoMap application implementation for WebAssembly/Emscripten platforms. More...
#include <EchoMapWeb.hpp>
Public Member Functions | |
| void | run_event_loop () override |
| Runs the platform-dependent event loop to manage and propagate interaction with the EchoMap application. | |
| Public Member Functions inherited from echomap::EchoMap | |
| EchoMap () | |
| Initialise a EchoMap application instance. | |
| virtual | ~EchoMap () noexcept |
| Clean up all persistent state registered by the application instance. | |
| void | change_active_project (std::unique_ptr< Project > new_project) noexcept |
| void | notify (const Notification ¬ification) |
| Submit a new Notification to the application queue. | |
| void | increment_forced_frames (unsigned int count=4) noexcept |
| Indicate to the renderer that the following frames should always be rendered, regardless of whether there are any new events to process. | |
| EchoMap (const EchoMap &)=delete | |
| EchoMap & | operator= (const EchoMap &)=delete |
| EchoMap (EchoMap &&)=delete | |
| EchoMap & | operator= (EchoMap &&)=delete |
Protected Member Functions | |
| void | visit_notification (Notification ¬ification) override |
| Uses std::visit on the given notification to invoke the corresponding handler. | |
| void | handle_result (LoadProjectResult &&result) override |
| void | handle_result (LoadSignalFileResult &&result) override |
| Protected Member Functions inherited from echomap::EchoMap | |
| auto | make_common_notification_visitors () |
| Produce an overload set for std::visit for all platform-independent Notification objects. | |
| void | render () noexcept |
| Perform a render cycle on the configured Surface and Device. | |
| void | setup_subscriptions () |
| Configure the core signals for the application instance. | |
| wgpu::Future | request_adapter () noexcept |
| Produce a WebGPU Future for requesting an Adapter. | |
| wgpu::Future | request_device () noexcept |
| Produce a WebGPU Future for requesting an accelerator device. | |
| void | setup_imgui () |
| Create a context for Dear ImGui and ImPlot, and configure the plain GLFW and WebGPU backends. | |
| void | setup_dockspace () |
| bool | handle_window_resize () noexcept |
| Check if the window has been resized compared with the stored dimensions, updating member variables and reconfiguring the WebGPU surface if necessary. | |
| void | process_notifications () |
| Handle any unconsumed Notification objects from the queue. | |
| void | process_worker_results () |
| Handle any unconsumed events from the Worker. | |
| void | raise_error (std::string_view message) |
| void | raise_error (std::string_view message, const std::runtime_error &exception) |
| void | handle_notification (const AddChannelMappingNotification ¬ification) const |
| void | handle_notification (const ModifySensorColourNotification ¬ification) const |
| void | handle_notification (const ModifySensorPositionNotification ¬ification) const |
| void | handle_notification (const ProjectSelectionCompleteNotification ¬ification) |
| void | handle_notification (const ClearErrorNotification ¬ification) |
Private Member Functions | |
| void | handle_notification (const CancelProjectLoadNotification ¬ification) |
| void | handle_notification (const CompleteProjectLoadNotification ¬ification) |
| void | handle_notification (RegisterVFSMappingNotification ¬ification) const |
Static Private Member Functions | |
| static void | render_shim (void *echomap_instance) |
| Invokes the renderer from a static context given an untyped mutable pointer to the EchoMap object instance. | |
Private Attributes | |
| std::unique_ptr< PartialProject > | unloaded_project |
| Owning container for the unloaded Project. | |
Additional Inherited Members | |
| Static Protected Member Functions inherited from echomap::EchoMap | |
| static GLFWwindow * | create_window (int width, int height) |
| Create a new GLFW window of the specified dimensions from a static context. | |
| static void | configure_surface (const wgpu::Surface &surface, const wgpu::Device &device, const wgpu::SurfaceCapabilities &capabilities, std::uint32_t viewport_width, std::uint32_t viewport_height) noexcept |
| Configure a WebGPU Surface from a static context given metadata and Adapter capabilities. | |
| Protected Attributes inherited from echomap::EchoMap | |
| std::uint32_t | viewport_width = 1024 |
| std::uint32_t | viewport_height = 1024 |
| wgpu::Instance | instance |
| wgpu::Adapter | adapter |
| wgpu::Device | device |
| wgpu::Surface | surface |
| wgpu::SurfaceCapabilities | surface_capabilities |
| GLFWwindow * | window = nullptr |
| Worker | worker |
| Multi-threaded worker for scheduling heavy computation tasks. | |
| WorkerResultDespatcher | despatcher |
| Despatcher to manage Worker result channels. | |
| std::vector< sigc::scoped_connection > | connections |
| RAII lifetime manager for signal connections. | |
| std::vector< std::unique_ptr< IProjectPanel > > | panels |
| Individual display components. | |
| std::optional< ErrorModal > | error_modal |
| Persistent panel to indicate errors over all other panels. | |
| std::vector< Notification > | notification_queue |
| std::unique_ptr< Project > | project |
| Owning container for the active Project. | |
| std::unique_ptr< IPanel > | active_modal |
| The current active non-ErrorModal modal panel. | |
| ImGuiID | dockspace_id |
| bool | dockspace_configured = false |
| unsigned int | forced_frames = 0 |
| Static Protected Attributes inherited from echomap::EchoMap | |
| static constexpr auto | operation_timeout = std::numeric_limits<std::uint64_t>::max() |
EchoMap application implementation for WebAssembly/Emscripten platforms.
Definition at line 25 of file EchoMapWeb.hpp.
|
private |
Definition at line 103 of file EchoMapWeb.cpp.
|
private |
Definition at line 113 of file EchoMapWeb.cpp.
|
private |
Definition at line 135 of file EchoMapWeb.cpp.
|
overrideprotectedvirtual |
Reimplemented from echomap::EchoMap.
Definition at line 51 of file EchoMapWeb.cpp.
|
overrideprotectedvirtual |
Reimplemented from echomap::EchoMap.
Definition at line 70 of file EchoMapWeb.cpp.
|
staticprivate |
Invokes the renderer from a static context given an untyped mutable pointer to the EchoMap object instance.
This function is intended to be used as a callback from the Emscripten C API.
| echomap_instance | The EchoMapWeb application instance on which to invoke the renderer. |
Definition at line 156 of file EchoMapWeb.cpp.
|
overridevirtual |
Runs the platform-dependent event loop to manage and propagate interaction with the EchoMap application.
This function returns only once GLFW indicates that the window should close. Following closure, the event loop could be re-run, or the application could clean up by calling the destructor.
Implements echomap::EchoMap.
Definition at line 164 of file EchoMapWeb.cpp.
|
overrideprotectedvirtual |
Uses std::visit on the given notification to invoke the corresponding handler.
This function is virtual, since the overload set can be platform-dependent in addition to the base handlers provided by make_common_notification_visitors.
| notification | The notification to visit. |
Implements echomap::EchoMap.
Definition at line 32 of file EchoMapWeb.cpp.
|
private |
Owning container for the unloaded Project.
Definition at line 53 of file EchoMapWeb.hpp.