From 848588e29d80db17f3ba909c26d5946202428048 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Sat, 26 Mar 2022 00:52:38 -0400 Subject: [PATCH] small code changes --- src/consts.rs | 14 ++++++++++++++ src/egui_app.rs | 15 --------------- src/function.rs | 19 ++++++++++--------- src/misc.rs | 10 +++++++++- 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/consts.rs b/src/consts.rs index 465ed06..27dd1ac 100644 --- a/src/consts.rs +++ b/src/consts.rs @@ -1,6 +1,20 @@ use crate::function::Riemann; use std::ops::RangeInclusive; +use const_format::formatc; +use shadow_rs::shadow; +shadow!(build); + +// Constant string that has a string containing information about the build. +pub const BUILD_INFO: &str = formatc!( + "Commit: {} ({})\nBuild Date: {}\nRust Channel: {}\nRust Version: {}", + &build::SHORT_COMMIT, + &build::BRANCH, + &build::BUILD_TIME, + &build::RUST_CHANNEL, + &build::RUST_VERSION, +); + // Hard-Coded limits /// Range of acceptable input values for integral_num diff --git a/src/egui_app.rs b/src/egui_app.rs index dd261d3..ada4a20 100644 --- a/src/egui_app.rs +++ b/src/egui_app.rs @@ -3,7 +3,6 @@ use crate::misc::{dyn_mut_iter, option_vec_printer, JsonFileOutput, SerdeValueHe use crate::parsing::{process_func_str, test_func}; use crate::consts::*; -use const_format::formatc; use eframe::{egui, epi}; use egui::plot::Plot; use egui::{ @@ -12,24 +11,11 @@ use egui::{ }; use epi::Frame; use instant::Duration; -use shadow_rs::shadow; use std::{collections::BTreeMap, io::Read, ops::BitXorAssign, str}; #[cfg(not(target_arch = "wasm32"))] use rayon::iter::{IndexedParallelIterator, ParallelIterator}; -shadow!(build); - -// Constant string that has a string containing information about the build. -const BUILD_INFO: &str = formatc!( - "Commit: {} ({})\nBuild Date: {}\nRust Channel: {}\nRust Version: {}", - &build::SHORT_COMMIT, - &build::BRANCH, - &build::BUILD_TIME, - &build::RUST_CHANNEL, - &build::RUST_VERSION, -); - // Stores data loaded from files struct Assets { // Stores `FontDefinitions` @@ -529,7 +515,6 @@ impl MathApp { impl epi::App for MathApp { // Called each time the UI needs repainting, which may be many times per second. - #[inline(always)] fn update(&mut self, ctx: &Context, _frame: &Frame) { let start = instant::Instant::now(); diff --git a/src/function.rs b/src/function.rs index 84b2f38..c569287 100644 --- a/src/function.rs +++ b/src/function.rs @@ -6,7 +6,7 @@ use crate::misc::*; use crate::parsing::BackingFunction; use eframe::{egui, epaint}; use egui::{ - plot::{BarChart, Line, PlotUi, Points, Value, Values}, + plot::{BarChart, PlotUi, Value}, widgets::plot::Bar, }; use epaint::Color32; @@ -297,7 +297,7 @@ impl FunctionEntry { / (settings.integral_num as f64); // Plot back data plot_ui.line( - Line::new(Values::from_values(self.output.back.clone().unwrap())) + vec_tuple_to_line(self.output.back.clone().unwrap()) .color(Color32::RED) .name(func_str), ); @@ -306,7 +306,7 @@ impl FunctionEntry { if self.derivative { if let Some(derivative_data) = self.output.derivative.clone() { plot_ui.line( - Line::new(Values::from_values(derivative_data)) + vec_tuple_to_line(derivative_data) .color(Color32::GREEN) .name(derivative_str), ); @@ -317,7 +317,7 @@ impl FunctionEntry { if settings.extrema { if let Some(extrema_data) = self.output.extrema.clone() { plot_ui.points( - Points::new(Values::from_values(extrema_data)) + vec_tuple_to_points(extrema_data) .color(Color32::YELLOW) .name("Extrema") .radius(5.0), // Radius of points of Extrema @@ -329,7 +329,7 @@ impl FunctionEntry { if settings.roots { if let Some(roots_data) = self.output.roots.clone() { plot_ui.points( - Points::new(Values::from_values(roots_data)) + vec_tuple_to_points(roots_data) .color(Color32::LIGHT_BLUE) .name("Root") .radius(5.0), // Radius of points of Roots @@ -351,6 +351,7 @@ impl FunctionEntry { None } } + #[cfg(test)] pub fn tests( &mut self, settings: AppSettings, back_target: Vec<(f64, f64)>, @@ -366,13 +367,13 @@ impl FunctionEntry { let back_vec_tuple = back_data.to_tuple(); assert_eq!(back_vec_tuple, back_target); - assert_eq!(true, self.integral); - assert_eq!(true, self.derivative); + assert!(self.integral); + assert!(self.derivative); assert_eq!(self.output.roots.is_some(), settings.roots); assert_eq!(self.output.extrema.is_some(), settings.extrema); - assert_eq!(self.output.derivative.is_some(), true); - assert_eq!(self.output.integral.is_some(), true); + assert!(self.output.derivative.is_some()); + assert!(self.output.integral.is_some()); assert_eq!( self.output.derivative.as_ref().unwrap().to_tuple(), diff --git a/src/misc.rs b/src/misc.rs index 04c5e93..09d1519 100644 --- a/src/misc.rs +++ b/src/misc.rs @@ -1,4 +1,4 @@ -use eframe::egui::plot::Value as EguiValue; +use eframe::egui::plot::{Line, Points, Value as EguiValue, Values}; use itertools::Itertools; use serde_json::Value as JsonValue; @@ -148,6 +148,14 @@ impl From> for SteppedVector { } } +/// Converts Vector of egui `Value` into `Points` +pub fn vec_tuple_to_points(data: Vec) -> Points { + Points::new(Values::from_values(data)) +} + +/// Converts Vector of egui `Value` into `Line` +pub fn vec_tuple_to_line(data: Vec) -> Line { Line::new(Values::from_values(data)) } + #[derive(PartialEq, Debug)] pub struct JsonFileOutput { pub help_expr: String,