mod application;
mod config;
mod runtime;
pub use application::{
AddOns, Application, DockingApi, EventContext, ExternalTextureError, ExternalTextureHandle,
FrameContext, GpuApi, GpuContext, GpuGeneration, InitContext, PrepareFrameContext, RunError,
ShutdownContext,
};
pub use config::{
AddOnsConfig, AppConfig, DockingConfig, RedrawMode, Theme, WgpuConfig, WgpuPreset,
};
pub use dear_imgui_rs as imgui;
#[cfg(feature = "test-engine")]
pub use dear_imgui_test_engine as test_engine;
pub use wgpu;
pub fn run<A: Application + 'static>(config: AppConfig, application: A) -> Result<(), RunError> {
runtime::run(config, application)
}
pub fn run_ui<F>(config: AppConfig, ui: F) -> Result<(), RunError>
where
F: FnMut(&imgui::Ui) + 'static,
{
struct UiApplication<F> {
ui: F,
}
impl<F> Application for UiApplication<F>
where
F: FnMut(&imgui::Ui) + 'static,
{
fn frame(&mut self, context: &mut FrameContext<'_>) -> Result<(), RunError> {
(self.ui)(context.ui());
Ok(())
}
}
run(config, UiApplication { ui })
}