This actually has no behavioral change, but is more logically correct if we ever end up updating these functions Signed-off-by: William Casarin <jb55@jb55.com>
102 lines
3.4 KiB
Rust
102 lines
3.4 KiB
Rust
use crate::{fonts, theme};
|
|
|
|
use eframe::NativeOptions;
|
|
use egui::ThemePreference;
|
|
use notedeck::{AppSizeHandler, DataPath};
|
|
use tracing::info;
|
|
|
|
pub fn setup_chrome(ctx: &egui::Context, args: ¬edeck::Args, theme: ThemePreference) {
|
|
let is_mobile = args
|
|
.is_mobile
|
|
.unwrap_or(notedeck::ui::is_compiled_as_mobile());
|
|
|
|
let is_oled = notedeck::ui::is_oled();
|
|
|
|
// Some people have been running notedeck in debug, let's catch that!
|
|
if !args.tests && cfg!(debug_assertions) && !args.debug {
|
|
println!("--- WELCOME TO DAMUS NOTEDECK! ---");
|
|
println!("It looks like are running notedeck in debug mode, unless you are a developer, this is not likely what you want.");
|
|
println!("If you are a developer, run `cargo run -- --debug` to skip this message.");
|
|
println!("For everyone else, try again with `cargo run --release`. Enjoy!");
|
|
println!("---------------------------------");
|
|
panic!();
|
|
}
|
|
|
|
ctx.options_mut(|o| {
|
|
info!("Loaded theme {:?} from disk", theme);
|
|
o.theme_preference = theme;
|
|
});
|
|
ctx.set_visuals_of(egui::Theme::Dark, theme::dark_mode(is_oled));
|
|
ctx.set_visuals_of(egui::Theme::Light, theme::light_mode());
|
|
setup_cc(ctx, is_mobile);
|
|
}
|
|
|
|
pub fn setup_cc(ctx: &egui::Context, is_mobile: bool) {
|
|
fonts::setup_fonts(ctx);
|
|
|
|
//ctx.set_pixels_per_point(ctx.pixels_per_point() + UI_SCALE_FACTOR);
|
|
//ctx.set_pixels_per_point(1.0);
|
|
//
|
|
//
|
|
//ctx.tessellation_options_mut(|to| to.feathering = false);
|
|
|
|
egui_extras::install_image_loaders(ctx);
|
|
|
|
ctx.all_styles_mut(|style| theme::add_custom_style(is_mobile, style));
|
|
}
|
|
|
|
//pub const UI_SCALE_FACTOR: f32 = 0.2;
|
|
|
|
pub fn generate_native_options(paths: DataPath) -> NativeOptions {
|
|
let window_builder = Box::new(move |builder: egui::ViewportBuilder| {
|
|
let builder = builder
|
|
.with_fullsize_content_view(true)
|
|
.with_titlebar_shown(false)
|
|
.with_title_shown(false)
|
|
.with_icon(std::sync::Arc::new(
|
|
eframe::icon_data::from_png_bytes(app_icon()).expect("icon"),
|
|
));
|
|
|
|
if let Some(window_size) = AppSizeHandler::new(&paths).get_app_size() {
|
|
builder.with_inner_size(window_size)
|
|
} else {
|
|
builder
|
|
}
|
|
});
|
|
|
|
eframe::NativeOptions {
|
|
window_builder: Some(window_builder),
|
|
viewport: egui::ViewportBuilder::default().with_icon(std::sync::Arc::new(
|
|
eframe::icon_data::from_png_bytes(app_icon()).expect("icon"),
|
|
)),
|
|
..Default::default()
|
|
}
|
|
}
|
|
|
|
fn generate_native_options_with_builder_modifiers(
|
|
apply_builder_modifiers: fn(egui::ViewportBuilder) -> egui::ViewportBuilder,
|
|
) -> NativeOptions {
|
|
let window_builder =
|
|
Box::new(move |builder: egui::ViewportBuilder| apply_builder_modifiers(builder));
|
|
|
|
eframe::NativeOptions {
|
|
window_builder: Some(window_builder),
|
|
..Default::default()
|
|
}
|
|
}
|
|
|
|
pub fn app_icon() -> &'static [u8; 271986] {
|
|
std::include_bytes!("../../../assets/damus-app-icon.png")
|
|
}
|
|
|
|
pub fn generate_mobile_emulator_native_options() -> eframe::NativeOptions {
|
|
generate_native_options_with_builder_modifiers(|builder| {
|
|
builder
|
|
.with_fullsize_content_view(true)
|
|
.with_titlebar_shown(false)
|
|
.with_title_shown(false)
|
|
.with_inner_size([405.0, 915.0])
|
|
.with_icon(eframe::icon_data::from_png_bytes(app_icon()).expect("icon"))
|
|
})
|
|
}
|