// Copyright 2023 The Grim Developers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. use std::cmp::min; use eframe::Frame; use egui::{Color32, Context, Stroke}; use egui::style::Margin; use crate::gui::{COLOR_LIGHT, COLOR_YELLOW}; use crate::gui::platform::PlatformCallbacks; use crate::gui::screens::{Root, Screen}; pub struct PlatformApp { pub(crate) app: App, pub(crate) platform: Platform, } pub struct App { root: Root, } impl Default for App { fn default() -> Self { Self { root: Root::default(), } } } impl App { pub fn ui(&mut self, ctx: &Context, frame: &mut Frame, cb: &dyn PlatformCallbacks) { let Self { root } = self; egui::CentralPanel::default() .frame(egui::Frame { inner_margin: Margin::same(0.0), outer_margin: Margin::same(0.0), stroke: Stroke::NONE, fill: COLOR_LIGHT, .. Default::default() }) .show(ctx, |ui| { root.ui(ui, frame, cb) }); } }