CLAP_WINDOW_API_WIN32

@page GUI

This extension defines how the plugin will present its GUI.

There are two approaches: 1. the plugin creates a window and embeds it into the host's window 2. the plugin creates a floating window

Embedding the window gives more control to the host, and feels more integrated. Floating window are sometimes the only option due to technical limitations.

Showing the GUI works as follow: 1. clap_plugin_gui->is_api_supported(), check what can work 2. clap_plugin_gui->create(), allocates gui resources 3. if the plugin window is floating 4. -> clap_plugin_gui->set_transient() 5. -> clap_plugin_gui->suggest_title() 6. else 7. -> clap_plugin_gui->set_scale() 8. -> clap_plugin_gui->can_resize() 9. -> if resizable and has known size from previous session, clap_plugin_gui->set_size() 10. -> else clap_plugin_gui->get_size(), gets initial size 11. -> clap_plugin_gui->set_parent() 12. clap_plugin_gui->show() 13. clap_plugin_gui->hide()/show() ... 14. clap_plugin_gui->destroy() when done with the gui

Resizing the window (initiated by the plugin, if embedded): 1. Plugins calls clap_host_gui->request_resize() 2. If the host returns true the new size is accepted, the host doesn't have to call clap_plugin_gui->set_size(). If the host returns false, the new size is rejected.

Resizing the window (drag, if embedded)): 1. Only possible if clap_plugin_gui->can_resize() returns true 2. Mouse drag -> new_size 3. clap_plugin_gui->adjust_size(new_size) -> working_size 4. clap_plugin_gui->set_size(working_size)

version(CLAP)
nothrow @nogc static immutable
string CLAP_WINDOW_API_WIN32;

Meta