From ed9e8549aaa1c72f2394a15e9d1cf5b8ec2b034c Mon Sep 17 00:00:00 2001 From: Tsuki Date: Tue, 27 Aug 2024 23:50:18 +0800 Subject: [PATCH] rebuild factor --- Cargo.lock | 121 +----- Cargo.toml | 2 +- config.toml | 217 ++++++++++ gi/Cargo.toml | 6 +- gi/src/camera.rs | 2 +- gi/src/graphics/colormap/linear.rs | 15 +- gi/src/graphics/ppi.rs | 6 +- gi/src/graphics/transforms/plane.rs | 4 +- gi/src/lib.rs | 1 - gi/src/pg/app.rs | 10 +- gi/src/pg/mod.rs | 149 +++++-- gi/src/pg/modules/mod.rs | 18 +- gi/src/pg/modules/ppi.rs | 139 +++++-- gi/src/ui/io.rs | 10 + radar-g/Cargo.toml | 5 +- radar-g/config.toml | 2 - radar-g/src/components/app.rs | 38 +- radar-g/src/components/monitor/messages.rs | 4 +- radar-g/src/components/monitor/monitor.rs | 28 +- radar-g/src/components/sidebar/bottom_bar.rs | 3 +- radar-g/src/components/sidebar/mod.rs | 1 + radar-g/src/components/sidebar/sidebar.rs | 371 ++---------------- radar-g/src/config.rs | 12 - radar-g/src/datapool/mod.rs | 4 +- radar-g/src/main.rs | 8 +- radar-g/src/plugin_system/mod.rs | 5 +- radar-g/src/predefined/mod.rs | 5 +- radar-g/src/predefined/widgets.rs | 25 -- radar-g/src/widgets/render/imp.rs | 16 +- radar-g/src/widgets/render/interior/layers.rs | 2 +- radar-g/src/widgets/render/mod.rs | 71 +++- radarg_core/Cargo.toml | 21 + .../setting.rs => radarg_core/src/config.rs | 70 ++-- {radar-g => radarg_core}/src/errors.rs | 12 +- radarg_core/src/lib.rs | 12 + .../src/radarg_data/mod.rs | 0 radarg_core/src/utils/color_tools.rs | 18 + radarg_core/src/utils/mod.rs | 1 + .../src/widget_interface.rs | 0 radarg_core/statics/config.toml | 217 ++++++++++ radarg_data/Cargo.toml | 14 - test2.npz | Bin 757091 -> 0 bytes 42 files changed, 991 insertions(+), 674 deletions(-) create mode 100644 config.toml delete mode 100644 radar-g/config.toml delete mode 100644 radar-g/src/config.rs delete mode 100644 radar-g/src/predefined/widgets.rs create mode 100644 radarg_core/Cargo.toml rename gi/src/setting.rs => radarg_core/src/config.rs (67%) rename {radar-g => radarg_core}/src/errors.rs (84%) create mode 100644 radarg_core/src/lib.rs rename radarg_data/src/lib.rs => radarg_core/src/radarg_data/mod.rs (100%) create mode 100644 radarg_core/src/utils/color_tools.rs create mode 100644 radarg_core/src/utils/mod.rs rename radar-g/src/plugin_system/utils.rs => radarg_core/src/widget_interface.rs (100%) create mode 100644 radarg_core/statics/config.toml delete mode 100644 radarg_data/Cargo.toml delete mode 100644 test2.npz diff --git a/Cargo.lock b/Cargo.lock index b0fc950..a9a07ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -201,55 +201,6 @@ dependencies = [ "libc", ] -[[package]] -name = "anstream" -version = "0.6.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" - -[[package]] -name = "anstyle-parse" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" -dependencies = [ - "anstyle", - "windows-sys 0.52.0", -] - [[package]] name = "anyhow" version = "1.0.86" @@ -830,7 +781,7 @@ dependencies = [ "proj-sys", "quadtree_rs", "quick_cache", - "radarg_data", + "radarg_core", "radarg_plugin_interface", "rayon", "regex", @@ -851,7 +802,6 @@ dependencies = [ "thiserror", "tokio", "tokio-condvar", - "toml", "topojson", "tracing", "tracing-subscriber", @@ -935,12 +885,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" -[[package]] -name = "colorchoice" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" - [[package]] name = "combine" version = "4.6.7" @@ -1331,29 +1275,6 @@ dependencies = [ "syn 2.0.75", ] -[[package]] -name = "env_filter" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "humantime", - "log", -] - [[package]] name = "epoxy" version = "0.1.0" @@ -1918,7 +1839,6 @@ dependencies = [ "chrono", "copypasta", "dirs", - "env_logger", "femtovg", "flate2", "freetype-rs", @@ -1939,9 +1859,10 @@ dependencies = [ "nom-derive", "once_cell", "pathfinder_geometry", - "radarg_data", + "radarg_core", "raw-window-handle", "regex", + "relm4", "rust-embed", "serde", "serde_json", @@ -2567,12 +2488,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" version = "0.14.30" @@ -2796,12 +2711,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - [[package]] name = "itertools" version = "0.11.0" @@ -4289,13 +4198,21 @@ dependencies = [ ] [[package]] -name = "radarg_data" +name = "radarg_core" version = "0.1.0" dependencies = [ "chrono", + "dirs", "ndarray 0.16.1", + "num-traits", + "proj", + "proj-sys", "radarg_plugin_interface", + "relm4", + "rust-embed", + "serde", "thiserror", + "toml", ] [[package]] @@ -4821,18 +4738,18 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.208" +version = "1.0.209" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.209" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" dependencies = [ "proc-macro2 1.0.86", "quote 1.0.37", @@ -5781,12 +5698,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - [[package]] name = "v_frame" version = "0.3.8" diff --git a/Cargo.toml b/Cargo.toml index 9d0f784..d8de7e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,5 +6,5 @@ members = [ "geo-macros", "radar-g", "gi", - "radarg_data", + "radarg_core", ] diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..971cab0 --- /dev/null +++ b/config.toml @@ -0,0 +1,217 @@ +[[cmap]] +type = "DBZ" +levels = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75] +colors = [ + "#aaaaaa", + "#0022ff", + "#01a0f6", + "#00ecec", + "#00d800", + "#019000", + "#ffff00", + "#e7c000", + "#ff9000", + "#ff0000", + "#d60000", + "#c00000", + "#ff00f0", + "#9600b4", + "#ad90f0", +] + +[[cmap]] +type = "VEL" +levels = [ + -90, + -45, + -35, + -27, + -20, + -15, + -10, + -5, + -1, + 0, + 1, + 5, + 10, + 15, + 20, + 27, + 1000, +] +colors = [ + "#9fffff", + "#00e0ff", + "#0080ff", + "#320096", + "#00fb90", + "#00bb90", + "#008f00", + "#cdc09f", + "#000000", + "#f88700", + "#ffcf00", + "#ffff00", + "#ae0000", + "#d07000", + "#dd0000", + "#ff0000", +] + +[[cmap]] +type = "SW" +colors = [ + "#E0E0E0", + "#7CE0E0", + "#00E0E0", + "#00B0B0", + "#00FEFE", + "#00C400", + "#008000", + "#FEFE00", + "#FED200", + "#FE7C00", + "#FEB0B0", + "#FE5858", + "#FE0000", + "#FEFEFE", +] +levels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] + +[[cmap]] +type = "CC" +colors = [ + "#003CFF", + "#00EFEF", + "#00BABF", + "#00837D", + "#008938", + "#00B729", + "#00DA0D", + "#00FF00", + "#FFFF3B", + "#FFF000", + "#FFC600", + "#FFA500", + "#FF7200", + "#FF1F00", + "#C10000", + "#D400AA", +] +levels = [ + 0, + 0.1, + 0.3, + 0.5, + 0.6, + 0.7, + 0.8, + 0.85, + 0.9, + 0.92, + 0.94, + 0.95, + 0.96, + 0.97, + 0.98, + 0.99, +] + +[[cmap]] +type = "KDP" +colors = [ + "#00FFFF", + "#00EFEF", + "#00A8AC", + "#B4B4B4", + "#B4B4B4", + "#00C027", + "#00E80A", + "#24FF24", + "#FFFF1E", + "#FFE600", + "#FFBC00", + "#FF9800", + "#FF5E00", + "#F20F00", + "#BB003A", + "#DD009C", + "#FF00FF", +] +levels = [ + -0.8, + -0.4, + -0.2, + -0.1, + 0.1, + 0.15, + 0.22, + 0.33, + 0.5, + 0.75, + 1.1, + 1.7, + 2.4, + 3.1, + 7, + 20, +] + +[[cmap]] +type = "ZDR" +colors = [ + "#464646", + "#505050", + "#5A5A5A", + "#646464", + "#6E6E6E", + "#787878", + "#828282", + "#8C8C8C", + "#969696", + "#AFAFAF", + "#C8C8C8", + "#DCF0DC", + "#00C027", + "#00E80A", + "#24FF24", + "#FFFF1E", + "#FFF20F", + "#FFE600", + "#FFBC00", + "#FF9800", + "#FF5E00", + "#FFFF00", + "#F20F00", + "#BB003A", + "#DD009C", + "#FF00FF", +] +levels = [ + -5, + -4.5, + -4, + -3.5, + -3, + -2.5, + -2, + -1.5, + -1, + -0.5, + 0, + 0.5, + 1, + 1.5, + 2, + 2.5, + 3, + 3.5, + 4, + 4.5, + 5, + 5.5, + 6, + 6.5, + 7, +] diff --git a/gi/Cargo.toml b/gi/Cargo.toml index f245b10..db1a1cc 100644 --- a/gi/Cargo.toml +++ b/gi/Cargo.toml @@ -12,7 +12,6 @@ cgmath = "0.18.0" chrono = "0.4.38" copypasta = "0.10.1" dirs = "5.0.1" -env_logger = "0.11.3" flate2 = "1.0.30" freetype-rs = { version = "0.37.0", features = ["bundled"] } geo = "0.28.0" @@ -43,7 +42,7 @@ toml = "0.8.19" femtovg = "0.9.2" rust-embed = "8.5.0" tempfile = "3.12.0" -radarg_data = { path = "../radarg_data" } +relm4 = { version = "0.9.0", features = ["libadwaita"] } [features] default = ["sdf_font"] @@ -57,3 +56,6 @@ femtovg = [] [lib] name = "gi" + +[dependencies.radarg_core] +path = "../radarg_core" diff --git a/gi/src/camera.rs b/gi/src/camera.rs index b611238..ecaf712 100644 --- a/gi/src/camera.rs +++ b/gi/src/camera.rs @@ -4,7 +4,7 @@ use nalgebra_glm::{look_at, Mat4x4, Vec3}; use std::num::NonZeroU32; #[derive(Clone)] -pub(crate) struct Camera { +pub struct Camera { pos: Vec3, upward: Vec3, center: Vec3, diff --git a/gi/src/graphics/colormap/linear.rs b/gi/src/graphics/colormap/linear.rs index a1216af..e3af7a5 100644 --- a/gi/src/graphics/colormap/linear.rs +++ b/gi/src/graphics/colormap/linear.rs @@ -28,13 +28,17 @@ impl LinearColormap { } pub fn set_unvalid_value(&mut self, value: f32) { - self.unvalid = value; - self.color_changed = true; + if value != self.unvalid { + self.unvalid = value; + self.color_changed = true; + } } pub fn set_colors(&mut self, colors: Vec<[u8; 4]>) { - self.colors = colors; - self.color_changed = true; + if colors != self.colors { + self.colors = colors; + self.color_changed = true; + } } pub fn set_range(&mut self, min: f32, max: f32) { @@ -104,6 +108,9 @@ impl ColorMap for LinearColormap { gl.active_texture(glow::TEXTURE0); gl.bind_texture(glow::TEXTURE_1D, self.texture); let location = program.get_uniform_location(gl, "colormap"); + + let error = gl.get_error(); + gl.uniform_1_i32(location.as_ref(), 0); } diff --git a/gi/src/graphics/ppi.rs b/gi/src/graphics/ppi.rs index 9a89375..fc3f3fc 100644 --- a/gi/src/graphics/ppi.rs +++ b/gi/src/graphics/ppi.rs @@ -7,7 +7,7 @@ use crate::components::{Program, Shader}; use crate::errors::*; use crate::graphics::colormap::linear::LinearColormap; use glow::{HasContext, NativeBuffer, NativeVertexArray}; -use radarg_data::{CoordType, ProbeDataType, RadarGridData}; +use radarg_core::radarg_data::{CoordType, ProbeDataType, RadarGridData}; pub struct PPI { program: Program, @@ -201,10 +201,12 @@ impl AttaWithBuffer for PPI { let mut vertices = Vec::with_capacity(azimuth_len * r_len); let ele = *elevation.unwrap().get(layer).unwrap() as f32; + let last_range = *range.last().unwrap() as f32; + for azi_idx in 0..azimuth_len { for r_idx in 0..r_len { let azi = *azimuth.get(azi_idx).unwrap() as f32; - let r = *range.get(r_idx).unwrap() as f32 / range[1] as f32; + let r = *range.get(r_idx).unwrap() as f32 / last_range; let data = &data.data; let dt = data.get([layer, azi_idx, r_idx]).unwrap(); vertices.extend([r, azi, ele, *dt]); diff --git a/gi/src/graphics/transforms/plane.rs b/gi/src/graphics/transforms/plane.rs index b096cad..9a2da0c 100644 --- a/gi/src/graphics/transforms/plane.rs +++ b/gi/src/graphics/transforms/plane.rs @@ -59,8 +59,8 @@ impl AttachWithIO for PlaneTrans { // let shift_key = state.keyboard_state[imgui::Key::LeftShift as usize]; // let ctrl_key = state.keyboard_state[imgui::Key::LeftCtrl as usize]; - let shift_key = true; - let ctrl_key = true; + let shift_key = false; + let ctrl_key = false; match &state.mouse_state { MouseState::Drag { from, delta } => { diff --git a/gi/src/lib.rs b/gi/src/lib.rs index 070a28a..79fe334 100644 --- a/gi/src/lib.rs +++ b/gi/src/lib.rs @@ -6,7 +6,6 @@ mod errors; mod font_manager; pub mod graphics; pub mod pg; -mod setting; mod shaders; pub mod ui; mod utils; diff --git a/gi/src/pg/app.rs b/gi/src/pg/app.rs index bd38766..f08d7f7 100644 --- a/gi/src/pg/app.rs +++ b/gi/src/pg/app.rs @@ -1,5 +1,5 @@ use log::*; -use radarg_data::Data; +use radarg_core::radarg_data::Data; use std::{cell::RefCell, path::PathBuf, rc::Rc}; use crate::{ @@ -61,8 +61,12 @@ impl App { &mut self.context.programs } - pub fn load_data(&mut self, data: &Vec) -> Result { - self.program().load_data(data) + pub fn load_data( + &mut self, + data: &Vec, + setting: &radarg_core::config::Setting, + ) -> Result { + self.program().load_data(data, setting) } } diff --git a/gi/src/pg/mod.rs b/gi/src/pg/mod.rs index 92f4639..867594e 100644 --- a/gi/src/pg/mod.rs +++ b/gi/src/pg/mod.rs @@ -3,7 +3,14 @@ use femtovg::renderer::OpenGl; use femtovg::Canvas; use glow::HasContext; use layout_type::ViewPort; -use radarg_data::Data; +use modules::PPIModuleConfigComponent; +use radarg_core::radarg_data::Data; +use relm4::{ + gtk, + gtk::prelude::{Cast, IsA}, + gtk::Widget, + Component, ComponentBuilder, Controller, Sender, +}; pub mod layout_type; mod modules; @@ -20,10 +27,19 @@ use crate::utils::resources::GL; use crate::{errors::*, graphics::Graphics}; pub use app::{App, Context}; pub use modules::{Module, ModuleCursor, PPIModule, PPIPackage}; +use std::cell::RefCell; +use std::rc::Rc; use std::sync::atomic::AtomicUsize; static MODULE_PACKAGE_ID: AtomicUsize = AtomicUsize::new(0); +#[derive(Debug)] +pub enum SideBarInputMsg { + Package(Rc>), + Refresh, + None, +} + pub struct Programs { gl: GL, _ppi: PPI, @@ -61,10 +77,16 @@ impl Programs { PPIModule::new(&self.gl, &mut self._ppi, &mut self._text, &mut self._line) } - pub fn load_data(&mut self, data: &Vec) -> Result { + pub fn load_data( + &mut self, + data: &Vec, + setting: &radarg_core::config::Setting, + ) -> Result { let data = &data[0]; match data { - Data::RadarGridData(ref grid_data) => self.ppi().load_data(grid_data).map(|v| v.into()), + Data::RadarGridData(ref grid_data) => { + self.ppi().load_data(grid_data, setting).map(|v| v.into()) + } _ => Err(Error::InvalidDataType), } } @@ -86,7 +108,15 @@ impl Programs { } macro_rules! impl_module_package { - ($({$t:ty => $b: tt}),+) => { + ($({$t:ty => $b: tt | $c: ty}),+) => { + + #[derive(Debug)] + pub enum _ModulePackage { + $( + $b($t), + )+ + } + $( impl From<$t> for _ModulePackage { @@ -95,43 +125,86 @@ macro_rules! impl_module_package { } } )+ + + pub enum ComponentBuilders { + $( + $b(ComponentBuilder<$c>, Rc::Config>>, Box::ComponentOutput) -> SideBarInputMsg>), + )+ + } + + pub enum Components { + $( + $b(Controller<$c>), + )+ + } + + impl Components { + pub fn widget(&self) -> gtk::Widget{ + + use relm4::ComponentController; + match self { + $( + Components::$b(c) => c.widget().clone().upcast(), + )+ + } + } + } + + #[derive(Debug)] + pub struct ModulePackage { + id: usize, + pub need_update: bool, + modules: _ModulePackage, + } + + impl ModulePackage { + + pub fn component_builder(&self) -> ComponentBuilders { + match &self.modules { + $( + _ModulePackage::$b(t) => ComponentBuilders::$b(<$c as Component>::builder(), t.component_config(), t.component_sender()), + )+ + } + } + + } + + impl ComponentBuilders { + pub fn build>(self, package: &ModulePackage, root: &ROOT, sender: &Sender) -> Components { + match self { + $( + ComponentBuilders::$b(b, init, f) => Components::$b(b.launch(init).forward(sender, move |c| {f(c)})), + )+ + } + } + } + + + impl From for ModulePackage + where + T: ModuleCursor + Into<_ModulePackage>, + { + fn from(t: T) -> Self { + Self { + id: MODULE_PACKAGE_ID.fetch_add(1, std::sync::atomic::Ordering::SeqCst), + modules: t.into(), + need_update: true, + } + } + } + + impl PartialEq for ModulePackage { + fn eq(&self, other: &Self) -> bool { + self.id == other.id + } + } + }; } -#[derive(Debug)] -pub struct ModulePackage { - id: usize, - pub need_update: bool, - modules: _ModulePackage, -} - -#[derive(Debug)] -pub enum _ModulePackage { - PPI(PPIPackage), -} - -impl_module_package!({ - PPIPackage => PPI -}); - -impl From for ModulePackage -where - T: ModuleCursor + Into<_ModulePackage>, -{ - fn from(t: T) -> Self { - Self { - id: MODULE_PACKAGE_ID.fetch_add(1, std::sync::atomic::Ordering::SeqCst), - modules: t.into(), - need_update: true, - } - } -} - -impl PartialEq for ModulePackage { - fn eq(&self, other: &Self) -> bool { - self.id == other.id - } -} +impl_module_package!( + {PPIPackage => PPI | PPIModuleConfigComponent} +); impl ModulePackage { pub fn dirty(&mut self) { diff --git a/gi/src/pg/modules/mod.rs b/gi/src/pg/modules/mod.rs index ae852e2..82c653b 100644 --- a/gi/src/pg/modules/mod.rs +++ b/gi/src/pg/modules/mod.rs @@ -1,5 +1,3 @@ -use std::rc::Rc; - use crate::{ graphics::AttachWithIO, resources::{RcGlRcBuffer, RcGlRcVertexArray}, @@ -12,11 +10,14 @@ use crate::{ }; use femtovg::{renderer::OpenGl, Canvas}; use glow::{HasContext, NativeBuffer, NativeVertexArray}; +use radarg_core::config::Setting; +use std::{cell::RefCell, path::Component, rc::Rc}; mod ppi; use crate::errors::*; -pub use ppi::{PPIModule, PPIPackage}; +pub use ppi::{PPIModule, PPIModuleConfigComponent, PPIModuleConfigComponentWidgets, PPIPackage}; +use relm4::Component as RComponent; -use super::layout_type::ViewPort; +use super::{layout_type::ViewPort, SideBarInputMsg}; #[derive(Clone, Debug)] struct Attach { @@ -101,15 +102,22 @@ pub trait Module: Sized { viewport: &ViewPort, ) -> Result<()>; - fn load_data<'dt>(&self, data: &Rc) -> Result; + fn load_data<'dt>(&self, data: &Rc, setting: &Setting) -> Result; } pub trait ModuleCursor { type Module<'rf, 'gl: 'rf>: Module; type Data; type Config; + type Component: RComponent; + + type ComponentOutput; fn set_config(&mut self, f: F) where F: FnOnce(&mut Self::Config); + + fn component_config(&self) -> Rc>; + + fn component_sender(&self) -> Box SideBarInputMsg>; } diff --git a/gi/src/pg/modules/ppi.rs b/gi/src/pg/modules/ppi.rs index 77d6f8a..ab2679d 100644 --- a/gi/src/pg/modules/ppi.rs +++ b/gi/src/pg/modules/ppi.rs @@ -6,12 +6,22 @@ use crate::{ transforms::plane::PlaneTrans, AttaWithBuffer, Graphics, }, + pg::SideBarInputMsg, GL, }; +use radarg_core::config::Setting; +use relm4::{ + adw::{self, prelude::*}, + gtk::{self, prelude::*}, + ComponentParts, SimpleComponent, +}; use core::f32; use glow::HasContext; -use std::rc::Rc; +use std::{ + cell::{RefCell, RefMut}, + rc::Rc, +}; use tracker::track; use crate::font_manager::{FontSize, FontStyle}; @@ -20,7 +30,7 @@ use crate::pg::layout_type::ViewPort; use crate::ui::operation::{self, Operation}; use crate::{errors::*, font_manager::FontManager, ui::typ, utils::resources::ManagedResource}; -use radarg_data::RadarGridData; +use radarg_core::radarg_data::RadarGridData; use super::{Attach, Module, ModuleCursor}; pub struct PPIModule<'b, 'gl: 'b> { @@ -154,14 +164,16 @@ impl<'b, 'a: 'b> Module for PPIModule<'b, 'a> { operation: &Operation, viewport: &ViewPort, ) -> Result<()> { + // PPI Program + let data = &cursor.data; + let mut config = &mut cursor.ppi_config.borrow_mut(); + // Mount PPI Program self.ppi_program.mount(&self.gl)?; // Deal with the operation operation.attach_with_program(&self.gl, self.ppi_program.program()); - // PPI Program + let ppi_attach = &mut cursor.ppi_attach; - let data = &cursor.data; - let config = &mut cursor.ppi_config; // Update the config self.ppi_program @@ -172,13 +184,6 @@ impl<'b, 'a: 'b> Module for PPIModule<'b, 'a> { self.bind_ppi_pg(ppi_attach, data, config); } - if config.changed_range_line_num() - || config.changed_ath_line_num() - || config.changed_vertical_axis() - { - self.bind_line_pg(&mut cursor.line_attach, data, config)?; - } - // PPI Draw ppi_attach.bind_self(); self.ppi_program.draw(&self.gl, ppi_attach.len())?; @@ -187,6 +192,13 @@ impl<'b, 'a: 'b> Module for PPIModule<'b, 'a> { // Unmount PPI Program self.ppi_program.unmount(&self.gl)?; + if config.changed_range_line_num() + || config.changed_ath_line_num() + || config.changed_vertical_axis() + { + self.bind_line_pg(&mut cursor.line_attach, data, config)?; + } + // Mount Line Program self.line_program.mount(&self.gl)?; @@ -226,7 +238,7 @@ impl<'b, 'a: 'b> Module for PPIModule<'b, 'a> { Ok(()) } - fn load_data<'dt>(&self, data: &Rc) -> Result { + fn load_data<'dt>(&self, data: &Rc, setting: &Setting) -> Result { // Init the memory let (vao, vbo, ebo) = self.ppi_program.init(&self.gl); let mut ppi_attach = Attach::new(self.gl.clone(), vao, vbo, ebo, None); @@ -235,15 +247,13 @@ impl<'b, 'a: 'b> Module for PPIModule<'b, 'a> { let (r, a, t, max_layer, unvalid) = self.ppi_program.data_info(&data)?; // Find the color map - // let cmap = SETTING.find(&t); - - // let cmap = None; + let cmap = setting.find(&t); // Check if the color map is valid - // if cmap.is_none() { - // return Err(Error::InvalidDataType); - // } - // let cmap = cmap.unwrap(); + if cmap.is_none() { + return Err(Error::InvalidDataType); + } + let cmap = cmap.unwrap(); // Init the memory for the line program let (vao, vbo, ebo) = self.line_program.init(&self.gl); @@ -258,8 +268,8 @@ impl<'b, 'a: 'b> Module for PPIModule<'b, 'a> { config.adpi = a; config.max_layer = max_layer; config.unvalid_value = unvalid; - // config.colors = cmap.color()?; - // config.color_range = cmap.value_range(); + config.colors = cmap.color().unwrap(); + config.color_range = cmap.value_range(); // Bind the data self.bind_ppi_pg(&mut ppi_attach, &data, &config); @@ -280,7 +290,7 @@ impl<'b, 'a: 'b> Module for PPIModule<'b, 'a> { #[derive(Debug)] pub struct PPIPackage { draw_helper: bool, - ppi_config: PPIModuleConfig, + ppi_config: Rc>, ppi_attach: Attach, line_attach: Attach, tick_attach: Attach, @@ -297,7 +307,7 @@ impl PPIPackage { ) -> Self { Self { draw_helper: true, - ppi_config, + ppi_config: Rc::new(RefCell::new(ppi_config)), ppi_attach, line_attach, tick_attach, @@ -307,7 +317,7 @@ impl PPIPackage { } #[track] -#[derive(PartialEq, Debug)] +#[derive(PartialEq, Debug, Clone)] pub struct PPIModuleConfig { pub ticks: bool, pub line_color: [f32; 4], @@ -388,15 +398,92 @@ impl PPIModuleConfig { } } +pub struct PPIModuleConfigComponent { + config: Rc>, +} + +#[derive(Debug)] +pub enum OutputMsg { + Refresh, +} + +#[relm4::component(pub)] +impl SimpleComponent for PPIModuleConfigComponent { + type Widgets = PPIModuleConfigComponentWidgets; + type Init = Rc>; + type Input = (); + type Output = OutputMsg; + + view! { + adw::PreferencesGroup { + set_title:"PPI Config", + set_hexpand:true, + set_vexpand:true, + adw::SwitchRow { + set_title:"Ticks", + set_active: init_config.ticks, + connect_active_notify[sender, config_ref] => move |this| { + let active = this.is_active(); + config_ref.borrow_mut().set_ticks(active); + } + }, + adw::SpinRow { + set_title: "Layer", + set_value: init_config.layer as f64, + set_range: (0.0, init_config.max_layer as f64), + set_digits: 0, + set_numeric: true, + set_climb_rate: 1.0, + connect_value_notify[sender, config_ref] => move |this| { + let layer = this.value() as usize; + config_ref.borrow_mut().set_layer(layer); + } + } + } + } + + fn init( + init: Self::Init, + root: Self::Root, + sender: relm4::ComponentSender, + ) -> relm4::ComponentParts { + let model = PPIModuleConfigComponent { + config: init.clone(), + }; + let init_config = init.borrow().clone(); + let config_ref = model.config.clone(); + + let widgets = view_output!(); + + ComponentParts { model, widgets } + } + + fn update(&mut self, message: Self::Input, sender: relm4::ComponentSender) {} +} + impl ModuleCursor for PPIPackage { type Module<'rf, 'gl: 'rf> = PPIModule<'rf, 'gl>; type Config = PPIModuleConfig; type Data = RadarGridData; + type Component = PPIModuleConfigComponent; + + type ComponentOutput = OutputMsg; fn set_config(&mut self, f: F) where F: FnOnce(&mut Self::Config), { - f(&mut self.ppi_config); + let mut config = self.ppi_config.borrow_mut(); + f(&mut config); + } + + fn component_config(&self) -> Rc> { + self.ppi_config.clone() + } + + fn component_sender(&self) -> Box crate::pg::SideBarInputMsg> { + Box::new(|c| match c { + OutputMsg::Refresh => SideBarInputMsg::Refresh, + }) } } diff --git a/gi/src/ui/io.rs b/gi/src/ui/io.rs index bccba1b..148aeb6 100644 --- a/gi/src/ui/io.rs +++ b/gi/src/ui/io.rs @@ -1,3 +1,4 @@ +#[derive(Debug, Default)] pub struct MouseIO { pub position: [f32; 2], // 鼠标当前位置 pub drag_delta: Option<[f32; 2]>, // 拖动开始时的鼠标位置 @@ -5,12 +6,21 @@ pub struct MouseIO { pub left_button_pressed: bool, // 左键是否被按下 pub right_button_pressed: bool, // 右键是否被按下 pub wheel_delta: f32, // 鼠标滚轮变化值 + pub drag_sum: [f32; 2], // 拖动累计值 } +#[derive(Debug)] pub struct KeyboardIO { pub keys: [bool; 652], // 键盘按键状态 } +impl Default for KeyboardIO { + fn default() -> Self { + Self { keys: [false; 652] } + } +} + +#[derive(Debug, Default)] pub struct IO { pub mouse: MouseIO, pub keyboard: KeyboardIO, diff --git a/radar-g/Cargo.toml b/radar-g/Cargo.toml index 4b6020a..47448a5 100644 --- a/radar-g/Cargo.toml +++ b/radar-g/Cargo.toml @@ -53,7 +53,6 @@ abi_stable = "0.11.3" serde = "1.0.196" serde_json = "1.0.112" flate2 = "1.0.28" -toml = "0.8.8" dirs = "5.0.1" regex = "1.10.3" smallvec = "1.13.1" @@ -86,8 +85,8 @@ path = "../radarg_plugin_interface" [dependencies.gi] path = "../gi" -[dependencies.radarg_data] -path = "../radarg_data" +[dependencies.radarg_core] +path = "../radarg_core" #[dependencies.etws_loader] #path = "etws_loader" diff --git a/radar-g/config.toml b/radar-g/config.toml deleted file mode 100644 index 5c4fe15..0000000 --- a/radar-g/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[plugins] -etws_loader = { version = "0.1.0" } diff --git a/radar-g/src/components/app.rs b/radar-g/src/components/app.rs index 073c2c8..05e5b32 100644 --- a/radar-g/src/components/app.rs +++ b/radar-g/src/components/app.rs @@ -9,11 +9,8 @@ use super::{ use crate::components::sidebar::{SideBarInputMsg, SideBarModel}; use crate::datapool::{DataPool, Value}; use crate::predefined::color_mapper::{BoundaryNorm, ColorMapper, ColorMapperComb, Discrete}; -use crate::predefined::widgets::ColorBar; use crate::widgets::{DynamicCol, ElementType}; -use crate::{ - errors::RenderError, plugin_system::init_plugin, widgets::render::Layer, PLUGIN_MANAGER, -}; +use crate::{plugin_system::init_plugin, widgets::render::Layer, PLUGIN_MANAGER}; use abi_stable::std_types::RStr; use adw::prelude::*; use chrono::{prelude::*, Duration}; @@ -24,7 +21,7 @@ use gtk::glib::clone; use gtk::prelude::*; use ndarray::{ArrayView1, ArrayViewD}; use once_cell::sync::Lazy; -use radarg_data::Data; +use radarg_core::Data; use relm4::actions::{AccelsPlus, RelmAction, RelmActionGroup}; use relm4::*; use relm4::{gtk, Component, ComponentParts, ComponentSender, RelmWidgetExt, SimpleComponent}; @@ -70,6 +67,7 @@ pub enum FileIOType { #[derive(Debug)] pub enum AppMsg { + Refresh, FileIO { typ: FileIOType }, CloseRequest, Close, @@ -82,8 +80,8 @@ pub struct AppModel { // Components #[do_not_track] open_dialog: Controller, - #[do_not_track] - control: Controller, + // #[do_not_track] + // control: Controller, #[do_not_track] render: Controller, #[do_not_track] @@ -160,7 +158,7 @@ impl Component for AppModel { set_hexpand: true, }, }, - model.control.widget(), + // model.control.widget(), #[name="monitor_toast"] adw::ToastOverlay{ set_hexpand: true, @@ -214,20 +212,23 @@ impl Component for AppModel { sender: ComponentSender, ) -> ComponentParts { let layers = Rc::new(RefCell::new(vec![])); - let control = ControlPanelModel::builder().launch(layers.clone()).forward( - sender.input_sender(), - |msg| match msg { - ControlPanelOutputMsg::OpenFile((key, time)) => AppMsg::Close, - }, - ); + // let control = ControlPanelModel::builder().launch(layers.clone()).forward( + // sender.input_sender(), + // |msg| match msg { + // ControlPanelOutputMsg::OpenFile((key, time)) => AppMsg::Close, + // }, + // ); let data_pool = DataPool::new(10); let data_pool = Rc::new(RefCell::new(data_pool)); // SideBar Component let sidebar = SideBarModel::builder() - .launch(layers.clone()) - .forward(sender.input_sender(), |msg| AppMsg::Close); + .launch(None) + .forward(sender.input_sender(), |msg| match msg { + SideBarOutputMsg::QueueDraw => AppMsg::Refresh, + _ => AppMsg::Close, + }); let sidebar_sender = sidebar.sender(); @@ -239,6 +240,7 @@ impl Component for AppModel { sidebar_sender, move |model_message| match model_message { MonitorOutputMsg::Attached(new_module) => { + sidebar_sender.emit(SideBarInputMsg::Package(new_module)); AppMsg::Close } _ => AppMsg::Close, @@ -290,7 +292,7 @@ impl Component for AppModel { selected_layer: vec![], sidebar, file_pool: data_pool, - control, + // control, layers, tracker: 0, }; @@ -331,6 +333,8 @@ impl Component for AppModel { AppMsg::FileIO { typ: FileIOType::Open(data), } => self.render.emit(MonitorInputMsg::PushData(data)), + + AppMsg::Refresh => self.render.emit(MonitorInputMsg::QueueDraw), _ => {} } self.update_view(widgets, _sender); diff --git a/radar-g/src/components/monitor/messages.rs b/radar-g/src/components/monitor/messages.rs index 65a752f..1e4e90e 100644 --- a/radar-g/src/components/monitor/messages.rs +++ b/radar-g/src/components/monitor/messages.rs @@ -1,16 +1,18 @@ use crate::datapool::Value; use gi::pg::ModulePackage; -use radarg_data::Data; +use radarg_core::Data; use std::{cell::RefCell, fmt::Debug, rc::Rc}; pub enum MonitorInputMsg { PushData(Value), + QueueDraw, None, } impl Debug for MonitorInputMsg { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { + MonitorInputMsg::QueueDraw => write!(f, "MonitorInputMsg::QueueDraw"), MonitorInputMsg::PushData(data) => write!(f, "MonitorInputMsg::PushData({:?})", data), MonitorInputMsg::None => write!(f, "MonitorInputMsg::None"), } diff --git a/radar-g/src/components/monitor/monitor.rs b/radar-g/src/components/monitor/monitor.rs index e2efbd6..e84e13c 100644 --- a/radar-g/src/components/monitor/monitor.rs +++ b/radar-g/src/components/monitor/monitor.rs @@ -1,6 +1,7 @@ use super::messages::{MonitorInputMsg, MonitorOutputMsg}; use crate::predefined::color_mapper::BoundaryNorm; use crate::widgets::render::RenderConfig; +use crate::SETTING; use crate::{ widgets::dynamic_col::DynamicCol, widgets::render::{Layer, Render}, @@ -94,17 +95,22 @@ impl Component for MonitorModel { self.reset(); match message { MonitorInputMsg::PushData(data) => { - widgets.renderer.get_gi(|gi| match gi.load_data(&data) { - Ok(package) => { - info!("data load success!"); - let rc_package = Rc::new(RefCell::new(package)); - self.set_module_packages(vec![rc_package.clone()]); - sender.output(MonitorOutputMsg::Attached(rc_package)); - } - Err(err) => { - error!("Load Error, cause of {}", err); - } - }) + widgets + .renderer + .get_gi(|gi| match gi.load_data(&data, &SETTING) { + Ok(package) => { + info!("data load success!"); + let rc_package = Rc::new(RefCell::new(package)); + self.set_module_packages(vec![rc_package.clone()]); + sender.output(MonitorOutputMsg::Attached(rc_package)); + } + Err(err) => { + error!("Load Error, cause of {}", err); + } + }) + } + MonitorInputMsg::QueueDraw => { + widgets.renderer.queue_draw(); } MonitorInputMsg::None => {} _ => {} diff --git a/radar-g/src/components/sidebar/bottom_bar.rs b/radar-g/src/components/sidebar/bottom_bar.rs index 0ade008..e7cf8e7 100644 --- a/radar-g/src/components/sidebar/bottom_bar.rs +++ b/radar-g/src/components/sidebar/bottom_bar.rs @@ -1,11 +1,10 @@ use crate::actions::*; +use gi::pg::SideBarInputMsg; use gtk::prelude::*; use relm4::{ actions::traits::ActionablePlus, factory::FactoryView, gtk, prelude::*, FactorySender, }; -use super::SideBarInputMsg; - #[derive(Debug)] pub enum TestMsg { Delete, diff --git a/radar-g/src/components/sidebar/mod.rs b/radar-g/src/components/sidebar/mod.rs index a2c7b4b..78054ff 100644 --- a/radar-g/src/components/sidebar/mod.rs +++ b/radar-g/src/components/sidebar/mod.rs @@ -2,3 +2,4 @@ pub mod sidebar; pub use sidebar::*; pub mod bottom_bar; pub mod meta_data_list; +pub use gi::pg::SideBarInputMsg; diff --git a/radar-g/src/components/sidebar/sidebar.rs b/radar-g/src/components/sidebar/sidebar.rs index c562c0e..2df6abd 100644 --- a/radar-g/src/components/sidebar/sidebar.rs +++ b/radar-g/src/components/sidebar/sidebar.rs @@ -1,11 +1,14 @@ use crate::actions::*; use abi_stable::type_level::trait_marker::Hash; use chrono::{DateTime, Utc}; +use gi::pg::SideBarInputMsg; +use gi::pg::{Components, ModulePackage}; use glib_macros::clone; use gtk::glib; use gtk::prelude::WidgetExt; use gtk::prelude::*; use relm4::actions::{AccelsPlus, RelmAction}; +use relm4::RelmRemoveAllExt; use relm4::{ binding::{Binding, U8Binding}, factory::{DynamicIndex, FactoryComponent, FactorySender, FactoryVecDeque}, @@ -28,34 +31,20 @@ use super::{ }; pub struct SideBarModel { - layers: Rc>>, - selected_layer_idx: usize, - counter: u8, - list_view_wrapper: TypedListView, - bottom_bar_vec: FactoryVecDeque, - meta_list_view: TypedColumnView, -} - -#[derive(Debug)] -pub enum SideBarInputMsg { - AddMetaItems(HashMap), - ClearMetaItems, - RefreshList, - None, + components: Option, } #[derive(Debug)] pub enum SideBarOutputMsg { - SelectLayer(Vec), - NewLayer(Layer), - SwitchToTimeSeries(usize), + QueueDraw, } #[relm4::component(pub)] -impl SimpleComponent for SideBarModel { - type Init = Rc>>; +impl Component for SideBarModel { + type Init = Option; type Output = SideBarOutputMsg; type Input = SideBarInputMsg; + type CommandOutput = (); view! { #[root] @@ -64,64 +53,10 @@ impl SimpleComponent for SideBarModel { set_spacing: 5, set_margin_all: 5, - gtk::Paned{ - set_orientation: gtk::Orientation::Vertical, - set_position: 200, - #[wrap(Some)] - set_start_child = >k::Box{ - set_orientation: gtk::Orientation::Vertical, - set_spacing: 5, - gtk::Frame{ - add_css_class: "rb", - #[name="meta_panel"] - gtk::Notebook::builder().vexpand(true).hexpand(true).build() -> gtk::Notebook{} - }, - }, + #[name="container"] + gtk::Box {} + }, - #[wrap(Some)] - set_end_child=>k::Box{ - set_orientation: gtk::Orientation::Vertical, - set_vexpand: true, - set_hexpand: true, - #[name="bottom_panel"] - gtk::Notebook::builder().vexpand(true).build() -> gtk::Notebook{ - set_margin_top: 10, - set_margin_bottom: 5 - }, - #[local_ref] - counter_box -> gtk::Box{ - set_spacing: 5, - } - } - } - }, - layer_page = gtk::ScrolledWindow::builder() - .vexpand(true) - .hexpand(true) - .build() -> gtk::ScrolledWindow{ - #[wrap(Some)] - #[local_ref] - set_child=my_view -> gtk::ListView{ - }, - set_margin_horizontal:5, - set_margin_vertical:3 - }, - #[local_ref] - meta_view -> gtk::ColumnView{ - set_hexpand:true, - set_vexpand:true, - set_show_column_separators: true, - set_show_row_separators: true, - set_enable_rubberband:true, - set_reorderable:false, - }, - bottom_panel.append_page(&layer_page, Some(>k::Label::new(Some("Layers")))), - meta_panel.append_page(meta_view, Some(>k::Label::new(Some("Meta")))), - // meta_panel.append_page(&Chart::new(), Some(>k::Label::new(Some("Chart")))), - #[local_ref] - info_c -> gtk::ColumnViewColumn{ - set_expand: true - } } fn init( @@ -129,274 +64,40 @@ impl SimpleComponent for SideBarModel { root: Self::Root, sender: ComponentSender, ) -> ComponentParts { - // Initialize the ListView wrapper - let mut list_view_wrapper: TypedListView = - TypedListView::with_sorting(); - - list_view_wrapper.selection_model.connect_selection_changed( - clone!(@strong sender => move |s,_, _| { - let selection = s.selection(); - - let (iter, first) = gtk::BitsetIter::init_first(&selection).unwrap(); - let mut result = vec![first as usize]; - result.extend(iter.map(|v| v as usize)); - sender.output(SideBarOutputMsg::SelectLayer(result)); - }), - ); - // let mut bottom_bar_vec = FactoryVecDeque::new(gtk::Box::default(), sender.input_sender()); - - let mut bottom_bar_vec = - FactoryVecDeque::builder() - .launch_default() - .forward(sender.input_sender(), |msg| match msg { - _ => SideBarInputMsg::None, - }); - let app = relm4::main_application(); - - { - let mut bottom_bar_vec_guard = bottom_bar_vec.guard(); - bottom_bar_vec_guard.push_back(BottomBarModel::new("add-filled".to_string())); - bottom_bar_vec_guard.push_back(BottomBarModel::new("delete-filled".to_string())); - bottom_bar_vec_guard.push_back(BottomBarModel::new("chevron-up-filled".to_string())); - bottom_bar_vec_guard.push_back(BottomBarModel::new("chevron-down-filled".to_string())); - } - let mut meta_list_view = TypedColumnView::new(); - meta_list_view.append_column::(); - meta_list_view.append_column::(); - - let mut model = SideBarModel { - meta_list_view, - layers: init, - selected_layer_idx: 0, - counter: 0, - list_view_wrapper, - bottom_bar_vec, - }; - let my_view = &model.list_view_wrapper.view; - let counter_box = model.bottom_bar_vec.widget(); - let meta_view = &model.meta_list_view.view; - let columns = model.meta_list_view.get_columns(); - let info_c = columns.get("info").unwrap(); + let mut model = SideBarModel { components: None }; let widgets = view_output!(); - - { - let mut list = model - .layers - .borrow() - .iter() - .enumerate() - .map(|(idx, v)| { - LayerItem::new( - idx as u32, - v.name.clone(), - v.visiable, - None, - LayerStatus::Instance, - ) - }) - .collect::>(); - model.list_view_wrapper.extend_from_iter(list); - } - ComponentParts { model, widgets } } - fn update(&mut self, message: Self::Input, sender: ComponentSender) { + fn update_with_view( + &mut self, + widgets: &mut Self::Widgets, + message: Self::Input, + sender: ComponentSender, + root: &Self::Root, + ) { match message { - SideBarInputMsg::RefreshList => { - let mut list = self - .layers - .borrow() - .iter() - .enumerate() - .map(|(idx, v)| { - LayerItem::new( - idx as u32, - v.name.clone(), - v.visiable, - None, - LayerStatus::Instance, // match v.get_associated_element() { - // // AssoElement::TimeSeries(_) => LayerStatus::BindToTime(Utc::now()), - // // AssoElement::Instant(_) => LayerStatus::Instance, - // _ => LayerStatus::Instance, - // - ) - }) - .collect::>(); - self.list_view_wrapper.clear(); - self.list_view_wrapper.extend_from_iter(list); + SideBarInputMsg::Package(package) => { + let package = package.borrow(); + let input_sender = sender.input_sender(); + let components = package + .component_builder() + .build(&package, root, input_sender); + + self.components = Some(components); + + widgets.container.remove_all(); + widgets + .container + .append(&self.components.as_ref().unwrap().widget()); } - SideBarInputMsg::AddMetaItems(hs) => { - for (k, v) in hs { - self.meta_list_view.append(MyListItem::new(k, v)); - } - } - SideBarInputMsg::ClearMetaItems => { - self.meta_list_view.clear(); + + SideBarInputMsg::Refresh => { + sender.output(SideBarOutputMsg::QueueDraw).unwrap(); } + _ => {} } } } - -#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)] -enum LayerStatus { - BindToTime(DateTime), - Instance, - BindToOtherLayer(usize), -} - -#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)] -struct LayerItem { - key: u32, - layer_name: String, - visiable: bool, - status: LayerStatus, - img: Option, -} - -impl LayerItem { - fn new( - key: u32, - name: String, - visiable: bool, - img: Option, - status: LayerStatus, - ) -> Self { - Self { - key, - layer_name: name, - visiable, - status, - img, - } - } -} - -struct Widgets { - label: gtk::EditableLabel, - screen_shot: gtk::Image, - status_icon: gtk::Image, - status_label: gtk::Label, - visible: gtk::Button, - opacity: gtk::Label, - menu: gtk::Popover, -} - -impl RelmListItem for LayerItem { - type Root = gtk::Box; - type Widgets = Widgets; - - fn setup(_item: >k::ListItem) -> (gtk::Box, Widgets) { - let position = _item.position() as u8; - - relm4::menu! { - main_menu: { - custom: "MyWidget", - "Remove" => RemoveLayerAction, - section!{ - "test" => RemoveLayerAction, - "select" => AddLayerAction - } - } - } - - relm4::view! { - my_box = gtk::Box { - set_valign: gtk::Align::Center, - gtk::Frame{ - set_margin_end: 10, - #[name = "screen_shot"] - gtk::Image{ - set_size_request: (65, 40), - } - }, - gtk::Grid{ - set_row_homogeneous: true, - attach[0,0,1,1] = >k::Box{ - #[name="status_icon"] - gtk::Image{ - inline_css: "-gtk-icon-transform: scale(0.8);", - }, - #[name="status_label"] - gtk::Label{ - add_css_class:"tooltip", - set_halign: gtk::Align::Start, - } - }, - #[name="label"] - attach[0,1,1,1] = >k::EditableLabel{ - set_hexpand: true, - }, - #[name="opacity"] - attach[0,2,1,1] = >k::Label{ - add_css_class:"tooltip", - set_halign: gtk::Align::Start - }, - }, - #[name="visible"] - gtk::Button{ - set_vexpand: false, - set_hexpand: false, - }, - #[name = "menu"] - gtk::Popover{} - } - } - - let widgets = Widgets { - screen_shot, - label, - status_icon, - status_label, - opacity, - visible, - menu, - }; - - (my_box, widgets) - } - - fn bind(&mut self, widgets: &mut Self::Widgets, _root: &mut Self::Root) { - let Widgets { - label, - visible, - screen_shot, - status_label, - status_icon, - opacity, - menu, - } = widgets; - - status_label.set_label(&match self.status { - LayerStatus::BindToTime(t) => format!("Bind To Time: {}", t), - LayerStatus::Instance => "Instance".to_string(), - LayerStatus::BindToOtherLayer(idx) => format!("Bind To Layer: {}", idx), - }); - - status_icon.set_icon_name(Some(match self.status { - LayerStatus::BindToTime(_) => "timer-filled", - LayerStatus::Instance => "timer-filled", - LayerStatus::BindToOtherLayer(_) => "timer-filled", - })); - - opacity.set_markup(&format!("Opacity: 0.5")); - - let gesture_click = gtk::GestureClick::new(); - gesture_click.set_button(gtk::gdk::BUTTON_SECONDARY); - screen_shot.set_paintable(self.img.as_ref()); - - let menu = menu.clone(); - gesture_click.connect_released(clone!(@weak menu => move |gesture_click, _, x, y| { - menu.set_pointing_to(Some(>k::gdk::Rectangle::new(x as i32, y as i32, 1, 1))); - menu.popup(); - })); - - visible.set_icon_name("eye-filled"); - - _root.add_controller(gesture_click); - label.set_text(&self.layer_name); - // button.set_active(self.visiable); - } -} diff --git a/radar-g/src/config.rs b/radar-g/src/config.rs deleted file mode 100644 index 2f582e8..0000000 --- a/radar-g/src/config.rs +++ /dev/null @@ -1,12 +0,0 @@ -use crate::errors::ConfigError; -use crate::predefined::color_mapper::{ - BoundaryNorm, BoundaryNormDiscrete, ColorMapper, ColorMapperComb, Discrete, -}; - -use dirs; -use gtk::ResponseType::No; -use num_traits::{AsPrimitive, FromPrimitive}; -use serde::{Deserialize, Serialize}; -use std::fmt::Debug; -use std::{collections::HashMap, env, io::Write, path::PathBuf}; -use toml; diff --git a/radar-g/src/datapool/mod.rs b/radar-g/src/datapool/mod.rs index 5df11e1..cb8c8d8 100644 --- a/radar-g/src/datapool/mod.rs +++ b/radar-g/src/datapool/mod.rs @@ -1,7 +1,7 @@ -use crate::errors::DataError; use crate::PLUGIN_MANAGER; use quick_cache::sync::Cache; -use radarg_data::Data; +use radarg_core::errors::DataError; +use radarg_core::Data; use std::fmt::Display; use std::ops::Deref; use std::path::PathBuf; diff --git a/radar-g/src/main.rs b/radar-g/src/main.rs index 3e7eaba..e349b58 100644 --- a/radar-g/src/main.rs +++ b/radar-g/src/main.rs @@ -10,20 +10,17 @@ use std::{ptr, sync::Mutex}; use tokio::runtime::Runtime; mod actions; mod components; -mod config; mod datapool; -mod errors; mod plugin_system; use crate::components::app::AppMsg; use components::app::AppModel; +use gi::{App as GI, Helper, GL}; use once_cell::{sync::Lazy as SafeLazy, unsync::Lazy as UnsafeLazy}; use relm4::RelmApp; use surfman::declare_surfman; use tracing::info; use tracing_subscriber; -use gi::{App as GI, Helper, GL}; - mod predefined; mod widgets; @@ -33,10 +30,13 @@ const APP_ID: &str = "org.tsuki.radar_g"; static RUNTIME: SafeLazy = SafeLazy::new(|| Runtime::new().expect("Setting up tokio runtime needs to succeed.")); static PLUGIN_MANAGER: SafeLazy = SafeLazy::new(|| PluginManager::new().unwrap()); +static SETTING: SafeLazy = + SafeLazy::new(|| radarg_core::config::Setting::new()); fn main() { // Load GL pointers from epoxy (GL context management library used by GTK). tracing_subscriber::fmt::init(); + { #[cfg(target_os = "macos")] let library = diff --git a/radar-g/src/plugin_system/mod.rs b/radar-g/src/plugin_system/mod.rs index bcd56c2..e3c2097 100644 --- a/radar-g/src/plugin_system/mod.rs +++ b/radar-g/src/plugin_system/mod.rs @@ -1,5 +1,3 @@ -mod utils; -use crate::errors::DataError; use abi_stable::{ external_types::crossbeam_channel::{self, RReceiver, RSender}, library::{lib_header_from_path, LibraryError, LibrarySuffix, RawLibrary}, @@ -7,7 +5,8 @@ use abi_stable::{ std_types::{RBox, RErr, ROk, RResult, RSome, RStr, RString, RVec}, }; use core_extensions::*; -use radarg_data::Data; +use radarg_core::errors::DataError; +use radarg_core::Data; use radarg_plugin_interface::{DataLoaderPlugin, DataLoaderPlugin_TO, PluginId, PluginMod_Ref}; use std::{ collections::{HashMap, VecDeque}, diff --git a/radar-g/src/predefined/mod.rs b/radar-g/src/predefined/mod.rs index 27d7a1e..31be470 100644 --- a/radar-g/src/predefined/mod.rs +++ b/radar-g/src/predefined/mod.rs @@ -1,5 +1,2 @@ -pub mod map_tile; -// pub mod grid_field_renderer; -// pub mod layers; pub mod color_mapper; -pub mod widgets; +pub mod map_tile; diff --git a/radar-g/src/predefined/widgets.rs b/radar-g/src/predefined/widgets.rs deleted file mode 100644 index 28f4571..0000000 --- a/radar-g/src/predefined/widgets.rs +++ /dev/null @@ -1,25 +0,0 @@ -use crate::predefined::color_mapper::ColorMapper; -use crate::widgets::Layer; -use femtovg::{renderer::OpenGl, Canvas, Color, Paint, Path}; -use num_traits::*; -use std::any::Any; -use topojson::Arc; - -#[derive(Debug)] -pub struct ColorBar { - padding: [f32; 4], - width: f32, - height: f32, - margin: [i32; 4], -} - -impl ColorBar { - pub fn new(padding: [f32; 4], size: (f32, f32), margin: [i32; 4]) -> Self { - Self { - padding, - width: size.0, - height: size.1, - margin, - } - } -} diff --git a/radar-g/src/widgets/render/imp.rs b/radar-g/src/widgets/render/imp.rs index ba201a2..83aee86 100644 --- a/radar-g/src/widgets/render/imp.rs +++ b/radar-g/src/widgets/render/imp.rs @@ -5,6 +5,7 @@ use femtovg::{Canvas, Color, FontId, Paint, Renderer}; use gi::graphics::transforms::plane::PlaneTrans; use gi::pg::layout_type::ViewPort; use gi::pg::ModulePackage; +use gi::ui::io::IO; use gi::ui::operation::Operation; use gi::{App as GI, Helper, GL}; use glow::HasContext; @@ -59,6 +60,7 @@ pub struct Render { range_changing: Cell, #[property(get, set)] scale: Cell, + pub(super) io: RefCell, pub(super) opeartion: RefCell>, pub(super) exterior: RefCell, pub(super) interior: RefCell, @@ -81,6 +83,7 @@ impl Default for Render { 0.1, 1000.0, )), + io: RefCell::new(IO::default()), range_changing: Cell::new(0.0), render_status: Cell::new(0), exterior: RefCell::new(ExteriorWidget::default()), @@ -167,10 +170,14 @@ impl GLAreaImpl for Render { } if let Some(gi) = gi.as_mut() { + let mut operation = self.opeartion.borrow_mut(); + let viewport = self.viewport.borrow(); + operation.deal_io(&viewport.as_ref().unwrap(), &self.io.borrow()); + gi.render( &mut *self.modules.borrow_mut(), - &*self.opeartion.borrow(), - self.viewport.borrow().as_ref().unwrap(), + &mut operation, + &viewport.as_ref().unwrap(), ); } @@ -248,6 +255,11 @@ impl Render { )) } + pub(super) fn set_io(&self, mut f: F) { + let mut io = self.io.borrow_mut(); + f(&mut io); + } + fn pointer_loc(&self) -> (f32, f32) { let (x, y) = self.status.borrow().pointer_location.clone(); let (_, h) = self.window_size().unwrap(); diff --git a/radar-g/src/widgets/render/interior/layers.rs b/radar-g/src/widgets/render/interior/layers.rs index 6950819..20726d0 100644 --- a/radar-g/src/widgets/render/interior/layers.rs +++ b/radar-g/src/widgets/render/interior/layers.rs @@ -1,7 +1,7 @@ use super::super::Render; -use crate::errors::PipelineError; use crate::RUNTIME; use femtovg::{renderer::OpenGl, Canvas}; +use radarg_core::errors::PipelineError; use std::cell::RefCell; use std::rc::Rc; use std::{ diff --git a/radar-g/src/widgets/render/mod.rs b/radar-g/src/widgets/render/mod.rs index 75dd574..79163af 100644 --- a/radar-g/src/widgets/render/mod.rs +++ b/radar-g/src/widgets/render/mod.rs @@ -9,7 +9,6 @@ pub mod predefined; pub mod renders; pub use self::imp::{RenderConfig, RenderMotion, RenderStatus}; -use crate::errors::PipelineError; use adw::prelude::{GLAreaExt, GestureDragExt}; use femtovg::ImageFlags; use geo_types::LineString; @@ -17,6 +16,7 @@ use gtk::prelude::*; use gtk::subclass::prelude::ObjectSubclassIsExt; use gtk::EventControllerScrollFlags; pub use interior::*; +use radarg_core::errors::PipelineError; use std::cell::{Ref, RefCell, RefMut}; use std::rc::Rc; use std::sync::{Arc, Mutex}; @@ -43,15 +43,80 @@ impl Render { let dpi = this.scale_factor() as f32; let pointer_location_detecture = gtk::EventControllerMotion::new(); + + let dpi = this.scale_factor() as f32; + pointer_location_detecture.connect_motion(clone!( + #[weak] + this, + move |_, x, y| { + let hgt = this.height() as f32; + this.imp().set_io(|io| { + io.mouse.position = [x as f32 * dpi, hgt - y as f32 * dpi]; + }); + } + )); + let scale_detecture = gtk::EventControllerScroll::new(EventControllerScrollFlags::VERTICAL); + + scale_detecture.connect_scroll(clone!( + #[strong] + this, + move |_, x, y| { + this.imp().set_io(|io| { + io.mouse.wheel_delta = y as f32; + }); + this.queue_draw(); + glib::Propagation::Proceed + } + )); + let drag_detecture = gtk::GestureDrag::new(); + drag_detecture.connect_drag_begin(clone!( + #[weak] + this, + move |slf, _, _| { + let (ox, oy) = slf.offset().unwrap_or((0.0, 0.0)); + let (ox, oy) = (ox as f32 * dpi, oy as f32 * dpi); + + let hgt = this.height() as f32; + this.imp().set_io(|io| { + io.mouse.drag_sum = [ox, -oy]; + io.mouse.drag_delta = Some([ox, -oy]); + io.mouse.is_dragging = true; + }); + this.queue_draw(); + } + )); + + drag_detecture.connect_drag_update(clone!( + #[weak] + this, + move |slf, _, _| { + let (ox, oy) = slf.offset().unwrap_or((0.0, 0.0)); + let (ox, oy) = (ox as f32 * dpi, oy as f32 * dpi); + + this.imp().set_io(|io| { + let last_drag_sum = io.mouse.drag_sum; + io.mouse.drag_delta = Some([ox - last_drag_sum[0], -oy - last_drag_sum[1]]); + io.mouse.drag_sum = [ox, -oy]; + }); + + this.queue_draw(); + } + )); + drag_detecture.connect_drag_end(clone!( #[weak] this, move |slf, _, _| { - let (ox, oy) = slf.offset().unwrap_or((0.0, 0.0)); - println!("drag_update: {:?}", (ox, oy)); + this.imp().set_io(|io| { + io.mouse.drag_sum = [0.0, 0.0]; + io.mouse.drag_delta = None; + io.mouse.is_dragging = false; + }); + + this.queue_draw(); } )); diff --git a/radarg_core/Cargo.toml b/radarg_core/Cargo.toml new file mode 100644 index 0000000..a8678ca --- /dev/null +++ b/radarg_core/Cargo.toml @@ -0,0 +1,21 @@ +[package] +edition = "2021" +name = "radarg_core" +version = "0.1.0" + +[dependencies] +chrono = "0.4.38" +ndarray = "0.16.1" +thiserror = "1.0.56" +rust-embed = "8.5.0" +toml = "0.8.19" +proj-sys = "0.23.1" +proj = "0.27.2" +dirs = "5.0.1" +num-traits = "0.2.19" +serde = { version = "1.0.209", features = ["derive"] } +relm4 = { version = "0.9.0", features = ["libadwaita"] } + +[dependencies.radarg_plugin_interface] +version = "0.1" +path = "../radarg_plugin_interface" diff --git a/gi/src/setting.rs b/radarg_core/src/config.rs similarity index 67% rename from gi/src/setting.rs rename to radarg_core/src/config.rs index 9d742ed..7484440 100644 --- a/gi/src/setting.rs +++ b/radarg_core/src/config.rs @@ -1,13 +1,12 @@ -use crate::errors::*; -use radarg_data::ProbeDataType; -use serde::{Deserialize, Serialize}; -use std::{ - env, - fs::{read, read_to_string}, - io::Write, -}; - +use crate::errors::ConfigError; +use crate::radarg_data::ProbeDataType; use crate::utils::color_tools::hex_to_rgba_u8; +use crate::Asset; +use dirs; +use num_traits::{AsPrimitive, FromPrimitive}; +use serde::{Deserialize, Serialize}; +use std::env; +use toml; macro_rules! find_cmap { ($c:ident,$find_on:ident,$({$b:tt => $name:literal}),*) => { @@ -16,7 +15,7 @@ macro_rules! find_cmap { let mut cmap = None; match $c { $( - ProbeDataType::$b => { + $b => { let find_v = $find_on.iter().find(|cb| cb.type_name == $name).map(|cb| cb); cmap = find_v; } @@ -31,41 +30,44 @@ macro_rules! find_cmap { } #[derive(Deserialize, Serialize)] + pub struct Setting { pub cmap: Vec, } impl Setting { + pub fn new() -> Self { + use std::fs::{read, read_to_string}; + use std::io::*; + let current_dir = env::current_dir().unwrap(); + + if !current_dir.join("config.toml").exists() { + let default_config = Asset::get("config.toml").unwrap(); + + let mut folder_path = current_dir.clone(); + let mut conf = folder_path.join("config.toml"); + + let mut file = std::fs::File::create_new(&conf).unwrap(); + file.write_all(&default_config.data).unwrap(); + } + + let file = read_to_string(current_dir.join("config.toml")).unwrap(); + let setting: Setting = toml::from_str(&file).unwrap(); + setting + } + pub fn find(&self, name: &ProbeDataType) -> Option<&CB> { let cmap = &self.cmap; + use ProbeDataType::*; find_cmap!( name, cmap, {DBZ => "DBZ"}, + {V => "VEL"}, {VIL => "VIL"} ) } } -impl Setting { - pub fn new() -> Self { - let current_dir = env::current_dir().unwrap(); - - // if !current_dir.join("radar.toml").exists() { - // let default_config = Asset::get("radar.toml").unwrap(); - - // let mut folder_path = current_dir.clone(); - // let mut conf = folder_path.join("radar.toml"); - - // let mut file = std::fs::File::create_new(&conf).unwrap(); - // file.write_all(&default_config.data).unwrap(); - // } - - let file = read_to_string(current_dir.join("radar.toml")).unwrap(); - let setting: Setting = toml::from_str(&file).unwrap(); - setting - } -} - #[derive(Deserialize, Serialize)] pub struct CB { #[serde(rename = "type")] @@ -83,9 +85,11 @@ impl CB { range } - pub fn color(&self) -> Result> { + pub fn color(&self) -> Result, ConfigError> { if self.colors.len() != self.levels.len() - 1 { - return Err(Error::SettingError("Color and level mismatch".to_string())); + return Err(ConfigError::FormatError( + "The number of colors and levels are not matched".to_string(), + )); } let mut result = self @@ -93,7 +97,7 @@ impl CB { .iter() .map(|v| hex_to_rgba_u8(v)) .collect::, String>>() - .map_err(|v| Error::SettingError(v.to_string()))?; + .map_err(|v| ConfigError::FormatError(v.to_string()))?; let mut span = Vec::with_capacity(self.levels.len() - 1); diff --git a/radar-g/src/errors.rs b/radarg_core/src/errors.rs similarity index 84% rename from radar-g/src/errors.rs rename to radarg_core/src/errors.rs index 7300890..1ea75d2 100644 --- a/radar-g/src/errors.rs +++ b/radarg_core/src/errors.rs @@ -33,6 +33,8 @@ pub enum ConfigError { VarError(#[from] std::env::VarError), #[error("Can't find and create default Config")] DefaultConfigError, + #[error("Format Error, {0}")] + FormatError(String), } #[derive(Debug, Error)] @@ -44,13 +46,3 @@ pub enum PoolError { #[error("Data Pool is not initialized")] PoolInitialized(&'static str), } - -#[derive(Debug, Error)] -pub enum RenderError { - #[error("")] - PreRenderError(#[from] femtovg::ErrorKind), - #[error("")] - None, - #[error("Canceled")] - Canceled, -} diff --git a/radarg_core/src/lib.rs b/radarg_core/src/lib.rs new file mode 100644 index 0000000..79c879d --- /dev/null +++ b/radarg_core/src/lib.rs @@ -0,0 +1,12 @@ +pub mod config; +pub mod errors; +pub mod radarg_data; +use rust_embed::RustEmbed; +pub mod utils; +pub mod widget_interface; + +#[derive(RustEmbed)] +#[folder = "statics/"] +pub struct Asset; + +pub use radarg_data::*; diff --git a/radarg_data/src/lib.rs b/radarg_core/src/radarg_data/mod.rs similarity index 100% rename from radarg_data/src/lib.rs rename to radarg_core/src/radarg_data/mod.rs diff --git a/radarg_core/src/utils/color_tools.rs b/radarg_core/src/utils/color_tools.rs new file mode 100644 index 0000000..afc5bb4 --- /dev/null +++ b/radarg_core/src/utils/color_tools.rs @@ -0,0 +1,18 @@ +pub fn hex_to_rgba_u8(hex: &str) -> Result<[u8; 4], String> { + let hex = hex.trim_start_matches('#'); + + if hex.len() != 6 && hex.len() != 8 { + return Err("Hex color should be in #RRGGBB or #RRGGBBAA format".to_string()); + } + + let r = u8::from_str_radix(&hex[0..2], 16).map_err(|e| e.to_string())?; + let g = u8::from_str_radix(&hex[2..4], 16).map_err(|e| e.to_string())?; + let b = u8::from_str_radix(&hex[4..6], 16).map_err(|e| e.to_string())?; + let a = if hex.len() == 8 { + u8::from_str_radix(&hex[6..8], 16).map_err(|e| e.to_string())? + } else { + 255 // 默认不透明 + }; + + Ok([r, g, b, a]) +} diff --git a/radarg_core/src/utils/mod.rs b/radarg_core/src/utils/mod.rs new file mode 100644 index 0000000..73e9284 --- /dev/null +++ b/radarg_core/src/utils/mod.rs @@ -0,0 +1 @@ +pub mod color_tools; diff --git a/radar-g/src/plugin_system/utils.rs b/radarg_core/src/widget_interface.rs similarity index 100% rename from radar-g/src/plugin_system/utils.rs rename to radarg_core/src/widget_interface.rs diff --git a/radarg_core/statics/config.toml b/radarg_core/statics/config.toml new file mode 100644 index 0000000..971cab0 --- /dev/null +++ b/radarg_core/statics/config.toml @@ -0,0 +1,217 @@ +[[cmap]] +type = "DBZ" +levels = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75] +colors = [ + "#aaaaaa", + "#0022ff", + "#01a0f6", + "#00ecec", + "#00d800", + "#019000", + "#ffff00", + "#e7c000", + "#ff9000", + "#ff0000", + "#d60000", + "#c00000", + "#ff00f0", + "#9600b4", + "#ad90f0", +] + +[[cmap]] +type = "VEL" +levels = [ + -90, + -45, + -35, + -27, + -20, + -15, + -10, + -5, + -1, + 0, + 1, + 5, + 10, + 15, + 20, + 27, + 1000, +] +colors = [ + "#9fffff", + "#00e0ff", + "#0080ff", + "#320096", + "#00fb90", + "#00bb90", + "#008f00", + "#cdc09f", + "#000000", + "#f88700", + "#ffcf00", + "#ffff00", + "#ae0000", + "#d07000", + "#dd0000", + "#ff0000", +] + +[[cmap]] +type = "SW" +colors = [ + "#E0E0E0", + "#7CE0E0", + "#00E0E0", + "#00B0B0", + "#00FEFE", + "#00C400", + "#008000", + "#FEFE00", + "#FED200", + "#FE7C00", + "#FEB0B0", + "#FE5858", + "#FE0000", + "#FEFEFE", +] +levels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] + +[[cmap]] +type = "CC" +colors = [ + "#003CFF", + "#00EFEF", + "#00BABF", + "#00837D", + "#008938", + "#00B729", + "#00DA0D", + "#00FF00", + "#FFFF3B", + "#FFF000", + "#FFC600", + "#FFA500", + "#FF7200", + "#FF1F00", + "#C10000", + "#D400AA", +] +levels = [ + 0, + 0.1, + 0.3, + 0.5, + 0.6, + 0.7, + 0.8, + 0.85, + 0.9, + 0.92, + 0.94, + 0.95, + 0.96, + 0.97, + 0.98, + 0.99, +] + +[[cmap]] +type = "KDP" +colors = [ + "#00FFFF", + "#00EFEF", + "#00A8AC", + "#B4B4B4", + "#B4B4B4", + "#00C027", + "#00E80A", + "#24FF24", + "#FFFF1E", + "#FFE600", + "#FFBC00", + "#FF9800", + "#FF5E00", + "#F20F00", + "#BB003A", + "#DD009C", + "#FF00FF", +] +levels = [ + -0.8, + -0.4, + -0.2, + -0.1, + 0.1, + 0.15, + 0.22, + 0.33, + 0.5, + 0.75, + 1.1, + 1.7, + 2.4, + 3.1, + 7, + 20, +] + +[[cmap]] +type = "ZDR" +colors = [ + "#464646", + "#505050", + "#5A5A5A", + "#646464", + "#6E6E6E", + "#787878", + "#828282", + "#8C8C8C", + "#969696", + "#AFAFAF", + "#C8C8C8", + "#DCF0DC", + "#00C027", + "#00E80A", + "#24FF24", + "#FFFF1E", + "#FFF20F", + "#FFE600", + "#FFBC00", + "#FF9800", + "#FF5E00", + "#FFFF00", + "#F20F00", + "#BB003A", + "#DD009C", + "#FF00FF", +] +levels = [ + -5, + -4.5, + -4, + -3.5, + -3, + -2.5, + -2, + -1.5, + -1, + -0.5, + 0, + 0.5, + 1, + 1.5, + 2, + 2.5, + 3, + 3.5, + 4, + 4.5, + 5, + 5.5, + 6, + 6.5, + 7, +] diff --git a/radarg_data/Cargo.toml b/radarg_data/Cargo.toml deleted file mode 100644 index fb2e55a..0000000 --- a/radarg_data/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "radarg_data" -version = "0.1.0" -authors = ["tsuki "] -edition = "2021" - -[dependencies] -chrono = "0.4.38" -ndarray = "0.16.1" -thiserror = "1.0.56" - -[dependencies.radarg_plugin_interface] -version = "0.1" -path = "../radarg_plugin_interface" diff --git a/test2.npz b/test2.npz deleted file mode 100644 index a14280342ddad056bb6ea675bf0fa674f1daadfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 757091 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

~@PXx49aM3Nk3Ze9j54d>m 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Z2B@L_aImK<)bFjn5Y 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

@yC+Qd%T^xG2U1`*8d46T$NvN717^Lbt%=%@zKX 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