corundum_framework/lib.rs
1//! `corundum-framework` — a single-dependency facade over the crates the sapphire apps and
2//! asteria share.
3//!
4//! Depend on this one crate and turn on the features you need; each feature re-exports a
5//! `corundum-framework-*` crate as a module, the same way sapphire-framework's facade does.
6//! The default is the part without egui, for the crates without a window (a server, a CLI);
7//! an app turns on `gui`.
8//!
9//! ```toml
10//! # A desktop app:
11//! corundum-framework = { version = "0.1", features = ["eframe", "serde"] }
12//! # The same app on an Android phone:
13//! corundum-framework = { version = "0.1", features = ["android", "serde"] }
14//! ```
15//!
16//! ## Modules (feature-gated)
17//!
18//! | feature | module | crate |
19//! |---|---|---|
20//! | `platform` (default) | [`platform`] | `corundum-framework-platform`: the app's directories, the system's languages, the JNI / Objective-C bridging |
21//! | `gui` | [`gui`] | `corundum-framework-gui`: the shell, theme, fonts, icons and translations (brings `platform`) |
22//! | `update` | [`update`] | `corundum-framework-update`: finding newer GitHub releases of an app's binary, and replacing it with one |
23//! | `self-update` | `update` | `update` with the download and the replacement; a store build leaves it off, as the store updates the app |
24//! | `gui-update` | `gui::update` | the gui crate's `update` panel: the Settings → About rows that look for a newer release (brings `gui` and `update`) |
25//! | `gui-self-update` | `gui::update` | the panel also downloads the release and replaces the running binary (brings `gui-update` and `self-update`) |
26//! | `eframe` | `gui::window::run`, [`eframe`] | `corundum-framework-gui` with its `eframe` feature: a desktop window started the same way for every app |
27//! | `android` | `gui::window::run_android`, [`eframe`] | `corundum-framework-gui` with its `android` feature: the window on an Android phone (brings `eframe`) |
28//! | `serde` | `gui::look`, `gui::store` | `Serialize` / `Deserialize` on the gui's theme and language settings, and `store`: the look in effect and the rail's order, kept on the device in a TOML file and put back before the first frame |
29
30#[cfg(feature = "platform")]
31pub use corundum_framework_platform as platform;
32
33#[cfg(feature = "gui")]
34pub use corundum_framework_gui as gui;
35
36#[cfg(feature = "update")]
37pub use corundum_framework_update as update;
38
39// The egui the components are built against, at the top as well: an app that depends on
40// this facade alone renders with this one.
41#[cfg(feature = "gui")]
42pub use corundum_framework_gui::egui;
43
44// The eframe the window runs on, for the app's `eframe::App`; `android` brings `eframe`.
45#[cfg(feature = "eframe")]
46pub use corundum_framework_gui::eframe;