├── .gitignore ├── eplot ├── lib.rs ├── Cargo.toml ├── items.rs ├── plot.rs └── Cargo.lock ├── start_server.sh ├── setup_web.sh ├── src ├── main.rs ├── lib.rs └── app.rs ├── check.sh ├── README.md ├── Cargo.toml ├── .github └── workflows │ └── rust.yml └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /eplot/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod items; 2 | pub mod plot; 3 | -------------------------------------------------------------------------------- /start_server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eu 3 | 4 | (cd docs && python3 -m http.server 8080 --bind 127.0.0.1) 5 | -------------------------------------------------------------------------------- /setup_web.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eu 3 | 4 | # Pre-requisites: 5 | rustup target add wasm32-unknown-unknown 6 | cargo install -f wasm-bindgen-cli 7 | cargo update 8 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | // When compiling natively: 2 | #[cfg(not(target_arch = "wasm32"))] 3 | fn main() { 4 | let app = egui_template::TemplateApp::default(); 5 | eframe::run_native(Box::new(app)); 6 | } 7 | -------------------------------------------------------------------------------- /check.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This scripts runs various CI-like checks in a convenient way. 3 | set -eu 4 | 5 | cargo check --workspace --all-targets 6 | cargo fmt --all -- --check 7 | CARGO_INCREMENTAL=0 cargo clippy --workspace --all-targets --all-features -- -D warnings -W clippy::all 8 | cargo test --workspace --all-targets --all-features 9 | cargo test --workspace --doc 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Discontinued: Work continues in egui's plotting library: https://github.com/emilk/egui/tree/master/egui/src/widgets/plot 2 | 3 | ### eplot: Plotting in egui 4 | 5 | This is an initial experiment in bringing plotting capability to [egui](https://github.com/emilk/egui). 6 | 7 | ![out](https://user-images.githubusercontent.com/1352472/106963653-32ef2280-6741-11eb-9367-8a8ed1afe060.gif) 8 | -------------------------------------------------------------------------------- /eplot/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "eplot" 3 | version = "0.1.0" 4 | authors = ["Sven Niederberger "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | eframe = { git = "https://github.com/emilk/egui", branch = "master" } 11 | 12 | [lib] 13 | name = "eplot" 14 | path = "lib.rs" 15 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | mod app; 2 | 3 | pub use app::TemplateApp; 4 | 5 | // ---------------------------------------------------------------------------- 6 | // When compiling for web: 7 | 8 | #[cfg(target_arch = "wasm32")] 9 | use eframe::wasm_bindgen::{self, prelude::*}; 10 | 11 | /// This is the entry-point for all the web-assembly. 12 | /// This is called once from the HTML. 13 | /// It loads the app, installs some callbacks, then returns. 14 | /// You can add more callbacks like this if you want to call in to your code. 15 | #[cfg(target_arch = "wasm32")] 16 | #[wasm_bindgen] 17 | pub fn start(canvas_id: &str) -> Result<(), eframe::wasm_bindgen::JsValue> { 18 | let app = TemplateApp::default(); 19 | eframe::start_web(canvas_id, Box::new(app)) 20 | } 21 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "egui_template" 3 | version = "0.1.0" 4 | authors = ["Emil Ernerfeldt "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [lib] 10 | crate-type = ["cdylib", "rlib"] 11 | 12 | [dependencies] 13 | eframe = { git = "https://github.com/emilk/egui", branch = "master" } 14 | eplot = { path = "eplot" } 15 | serde = { version = "1", features = ["derive"], optional = true } 16 | 17 | [features] 18 | default = [] 19 | http = ["eframe/http"] # Enable if you want to do http requests 20 | persistence = [ 21 | "eframe/persistence", 22 | "serde", 23 | ] # Enable if you want to persist app state on shutdown 24 | 25 | [profile.release] 26 | opt-level = 2 # fast and small wasm 27 | 28 | # [patch.crates-io] 29 | # eframe = { path = "../egui/eframe" } 30 | -------------------------------------------------------------------------------- /.github/workflows/rust.yml: -------------------------------------------------------------------------------- 1 | on: [push, pull_request] 2 | 3 | name: CI 4 | 5 | env: 6 | # This is required to enable the web_sys clipboard API which egui_web uses 7 | # https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html 8 | # https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html 9 | RUSTFLAGS: --cfg=web_sys_unstable_apis 10 | 11 | jobs: 12 | check: 13 | name: Check 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v2 17 | - uses: actions-rs/toolchain@v1 18 | with: 19 | profile: minimal 20 | toolchain: stable 21 | override: true 22 | - uses: actions-rs/cargo@v1 23 | with: 24 | command: check 25 | 26 | check_wasm: 27 | name: Check wasm32 28 | runs-on: ubuntu-latest 29 | steps: 30 | - uses: actions/checkout@v2 31 | - uses: actions-rs/toolchain@v1 32 | with: 33 | profile: minimal 34 | toolchain: stable 35 | override: true 36 | - run: rustup target add wasm32-unknown-unknown 37 | - uses: actions-rs/cargo@v1 38 | with: 39 | command: check 40 | args: --lib --target wasm32-unknown-unknown 41 | 42 | test: 43 | name: Test Suite 44 | runs-on: ubuntu-latest 45 | steps: 46 | - uses: actions/checkout@v2 47 | - uses: actions-rs/toolchain@v1 48 | with: 49 | profile: minimal 50 | toolchain: stable 51 | override: true 52 | - run: sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev 53 | - uses: actions-rs/cargo@v1 54 | with: 55 | command: test 56 | args: --lib 57 | 58 | fmt: 59 | name: Rustfmt 60 | runs-on: ubuntu-latest 61 | steps: 62 | - uses: actions/checkout@v2 63 | - uses: actions-rs/toolchain@v1 64 | with: 65 | profile: minimal 66 | toolchain: stable 67 | override: true 68 | - run: rustup component add rustfmt 69 | - uses: actions-rs/cargo@v1 70 | with: 71 | command: fmt 72 | args: --all -- --check 73 | 74 | clippy: 75 | name: Clippy 76 | runs-on: ubuntu-latest 77 | steps: 78 | - uses: actions/checkout@v2 79 | - uses: actions-rs/toolchain@v1 80 | with: 81 | profile: minimal 82 | toolchain: stable 83 | override: true 84 | - run: rustup component add clippy 85 | - uses: actions-rs/cargo@v1 86 | with: 87 | command: clippy 88 | args: -- -D warnings 89 | -------------------------------------------------------------------------------- /src/app.rs: -------------------------------------------------------------------------------- 1 | use eframe::{egui::*, epi}; 2 | use eplot::{ 3 | items::{Line, MarkerShape, Polygon, Quiver, Scatter, Text, YReference}, 4 | plot::PlotCtx, 5 | }; 6 | 7 | pub struct TemplateApp { 8 | start_time: std::time::Instant, 9 | plot_ctx: PlotCtx, 10 | } 11 | 12 | impl Default for TemplateApp { 13 | fn default() -> Self { 14 | Self { 15 | start_time: std::time::Instant::now(), 16 | plot_ctx: PlotCtx::default(), 17 | } 18 | } 19 | } 20 | 21 | impl epi::App for TemplateApp { 22 | fn update(&mut self, ctx: &CtxRef, _frame: &mut epi::Frame<'_>) { 23 | ctx.request_repaint(); 24 | 25 | let Self { 26 | plot_ctx, 27 | start_time, 28 | } = self; 29 | 30 | let t = std::time::Instant::now() 31 | .duration_since(*start_time) 32 | .as_secs_f32(); 33 | 34 | CentralPanel::default().show(ctx, |ui| { 35 | plot_ctx 36 | .plot("TestPlot") 37 | .title("eplot showcase") 38 | .size(vec2(1280., 720.)) 39 | .x_axis_range(-10f32..=10.) 40 | .y_axis_range(-10f32..=10.) 41 | .show(ui, |plot_ui| { 42 | // Line 43 | [4., 3., 2., 1., 0.5] 44 | .iter() 45 | .enumerate() 46 | .for_each(|(j, weight)| { 47 | let points: Vec = (-200..=200) 48 | .map(|i| { 49 | let x = i as f32 / 40.; 50 | let y = 3. + 0.5 * (j as f32) + (x * 2. + 10. * t).sin(); 51 | pos2(x, y) 52 | }) 53 | .collect(); 54 | plot_ui.add(Line::new(points).color(Color32::GREEN).weight(*weight)); 55 | }); 56 | 57 | // Line with filled area 58 | let points: Vec = (-200..=200) 59 | .map(|i| { 60 | let x = 25. + i as f32 / 40.; 61 | let y = 2. + (x * 2. + 10. * t).sin(); 62 | pos2(x, y) 63 | }) 64 | .collect(); 65 | plot_ui.add( 66 | Line::new(points).color(Color32::GOLD).area_fill( 67 | YReference::Constant(0.), 68 | Color32::GOLD.linear_multiply(0.1), 69 | ), 70 | ); 71 | 72 | // Scatter 73 | let points: Vec = (-15..=15) 74 | .map(|i| { 75 | let x = i as f32 / 3.; 76 | let y = (3. * t).sin() * (x * 2. + 10.).sin(); 77 | pos2(x, y) 78 | }) 79 | .collect(); 80 | plot_ui.add( 81 | Scatter::new(points) 82 | .fill_color(Color32::RED) 83 | .size(3.) 84 | .stroke(Stroke::new(1., Color32::RED)) 85 | .shape(MarkerShape::Circle) 86 | .stems(YReference::Constant(0.), Stroke::new(1., Color32::WHITE)), 87 | ); 88 | 89 | // Arrow polygon 90 | let points = vec![ 91 | pos2(0., 1.) + vec2(0., -4.), 92 | pos2(0., 2.) + vec2(0., -4.), 93 | pos2(2., 0.) + vec2(0., -4.), 94 | pos2(0., -2.) + vec2(0., -4.), 95 | pos2(0., -1.) + vec2(0., -4.), 96 | pos2(-3., -1.) + vec2(0., -4.), 97 | pos2(-3., 1.) + vec2(0., -4.), 98 | ]; 99 | plot_ui.add( 100 | Polygon::new(points) 101 | .fill_color(Color32::from_rgba_unmultiplied(255, 0, 255, 30)) 102 | .stroke(Stroke::new( 103 | 1., 104 | Color32::from_rgba_unmultiplied(255, 0, 255, 255), 105 | )), 106 | ); 107 | 108 | // Scatter markers 109 | let markers_position = pos2(7., -3.); 110 | let markers = [ 111 | MarkerShape::Circle, 112 | MarkerShape::Triangle, 113 | MarkerShape::Square, 114 | MarkerShape::Plus, 115 | MarkerShape::X, 116 | MarkerShape::Star, 117 | ]; 118 | let colors = [ 119 | Color32::WHITE, 120 | Color32::LIGHT_BLUE, 121 | Color32::BLUE, 122 | Color32::GREEN, 123 | Color32::YELLOW, 124 | Color32::RED, 125 | ]; 126 | markers.iter().zip(colors.iter()).enumerate().for_each( 127 | |(i, (marker, color))| { 128 | let points = vec![ 129 | markers_position + vec2(0., i as f32), 130 | markers_position + vec2(3., i as f32 + 0.5), 131 | markers_position + vec2(6., i as f32), 132 | markers_position + vec2(9., i as f32 + 0.5), 133 | ]; 134 | 135 | plot_ui 136 | .add(Line::new(points.clone()).color(color.linear_multiply(0.25))); 137 | plot_ui.add( 138 | Scatter::new(points) 139 | .shape(*marker) 140 | .size(5.) 141 | .fill_color(*color) 142 | .stroke(Stroke::new(1., *color)), 143 | ); 144 | }, 145 | ); 146 | 147 | // Quiver 148 | let center = pos2(-12., 0.); 149 | let mut points = Vec::new(); 150 | let mut directions = Vec::new(); 151 | let maybe_mouse_pos = plot_ui 152 | .plot_mouse_position() 153 | .filter(|_| plot_ui.plot_hovered()) 154 | .filter(|pos| { 155 | Rect::from_center_size(center, vec2(11., 11.)).contains(*pos) 156 | }); 157 | (-5..=5).for_each(|i| { 158 | (-5..=5).for_each(|j| { 159 | points.push(center + vec2(i as f32, j as f32)); 160 | 161 | let ref_pos = maybe_mouse_pos.unwrap_or(center + 3.5 * Vec2::angled(t)); 162 | let dir = ref_pos - center - vec2(i as f32, j as f32); 163 | directions.push(-1. / dir.length().max(1.) * dir.normalized()); 164 | }); 165 | }); 166 | plot_ui.add(Quiver::new(points, directions)); 167 | 168 | // Text 169 | plot_ui.add( 170 | Text::new(pos2(-12., -6.), "^ Move the cursor here ^") 171 | .anchor(Align2::CENTER_TOP), 172 | ); 173 | }); 174 | }); 175 | } 176 | 177 | fn name(&self) -> &str { 178 | "eplot showcase" 179 | } 180 | } 181 | 182 | // ---------------------------------------------------------------------------- 183 | -------------------------------------------------------------------------------- /eplot/items.rs: -------------------------------------------------------------------------------- 1 | use eframe::egui::*; 2 | 3 | /// Trait shared by everything that can be plotted. 4 | pub trait PlotItem { 5 | /// Function to turn the drawable item into Shapes. 6 | fn paint(self, painter: &mut Painter, transform: &dyn Fn(&Pos2) -> Pos2); 7 | } 8 | 9 | /// Text positioned on the plot. 10 | pub struct Text { 11 | position: Pos2, 12 | _rotation: f32, 13 | text: String, 14 | color: Color32, 15 | anchor: Align2, 16 | } 17 | 18 | impl Text { 19 | pub fn new(position: Pos2, text: impl Into) -> Self { 20 | Self { 21 | position, 22 | _rotation: 0., 23 | text: text.into(), 24 | color: Color32::WHITE, 25 | anchor: Align2::CENTER_CENTER, 26 | } 27 | } 28 | 29 | pub fn rotation(mut self, _rotation: f32) -> Self { 30 | self._rotation = _rotation; 31 | self 32 | } 33 | 34 | pub fn anchor(mut self, anchor: Align2) -> Self { 35 | self.anchor = anchor; 36 | self 37 | } 38 | 39 | pub fn color(mut self, color: Color32) -> Self { 40 | self.color = color; 41 | self 42 | } 43 | } 44 | 45 | impl PlotItem for Text { 46 | fn paint(self, painter: &mut Painter, transform: &dyn Fn(&Pos2) -> Pos2) { 47 | let Text { 48 | position, 49 | _rotation, 50 | text, 51 | color, 52 | anchor, 53 | } = self; 54 | 55 | painter.text( 56 | transform(&position), 57 | anchor, 58 | text, 59 | TextStyle::Monospace, 60 | color, 61 | ); 62 | } 63 | } 64 | 65 | /// A closed line. The first and last points are connected automatically. 66 | /// Non-convex shapes may lead to unexpected results when `fill` is enabled. 67 | pub struct Polygon { 68 | points: Vec, 69 | fill: Color32, 70 | stroke: Stroke, 71 | } 72 | 73 | impl Polygon { 74 | pub fn new(points: Vec) -> Self { 75 | Self { 76 | points, 77 | fill: Color32::WHITE, 78 | stroke: Stroke::none(), 79 | } 80 | } 81 | 82 | pub fn fill_color(mut self, color: Color32) -> Self { 83 | self.fill = color; 84 | self 85 | } 86 | 87 | pub fn stroke(mut self, stroke: Stroke) -> Self { 88 | self.stroke = stroke; 89 | self 90 | } 91 | } 92 | 93 | impl PlotItem for Polygon { 94 | fn paint(self, painter: &mut Painter, transform: &dyn Fn(&Pos2) -> Pos2) { 95 | let Self { 96 | points, 97 | fill, 98 | stroke, 99 | } = self; 100 | 101 | painter.add(Shape::polygon( 102 | points.iter().map(|p| transform(p)).collect(), 103 | fill, 104 | stroke, 105 | )); 106 | } 107 | } 108 | 109 | #[derive(Debug, Clone, Copy)] 110 | pub enum MarkerShape { 111 | Circle, 112 | Triangle, 113 | Square, 114 | Plus, 115 | X, 116 | Star, 117 | } 118 | 119 | pub enum YReference { 120 | Constant(f32), 121 | Series(Vec), 122 | } 123 | 124 | /// Plot a set of points. 125 | pub struct Scatter { 126 | points: Vec, 127 | fill: Color32, 128 | stroke: Stroke, 129 | size: f32, 130 | shape: MarkerShape, 131 | stems: Option<(YReference, Stroke)>, 132 | } 133 | 134 | impl Scatter { 135 | pub fn new(points: Vec) -> Self { 136 | Self { 137 | points, 138 | fill: Color32::WHITE, 139 | stroke: Stroke::none(), 140 | size: 1., 141 | shape: MarkerShape::Circle, 142 | stems: None, 143 | } 144 | } 145 | 146 | pub fn size(mut self, size: f32) -> Self { 147 | self.size = size; 148 | self 149 | } 150 | 151 | pub fn stems(mut self, reference: YReference, stroke: Stroke) -> Self { 152 | if let YReference::Series(series) = &reference { 153 | assert!( 154 | series.len() == self.points.len(), 155 | "The numer of y-axis reference values needs to match the data!" 156 | ); 157 | } 158 | self.stems = Some((reference, stroke)); 159 | self 160 | } 161 | 162 | pub fn fill_color(mut self, color: Color32) -> Self { 163 | self.fill = color; 164 | self 165 | } 166 | 167 | pub fn stroke(mut self, stroke: Stroke) -> Self { 168 | self.stroke = stroke; 169 | self 170 | } 171 | 172 | pub fn shape(mut self, shape: MarkerShape) -> Self { 173 | self.shape = shape; 174 | self 175 | } 176 | } 177 | 178 | impl PlotItem for Scatter { 179 | fn paint(self, painter: &mut Painter, transform: &dyn Fn(&Pos2) -> Pos2) { 180 | let Self { 181 | points, 182 | fill, 183 | stroke, 184 | size, 185 | shape, 186 | stems, 187 | } = self; 188 | 189 | points.iter().enumerate().for_each(|(i, p)| { 190 | let p_tf = transform(p); 191 | 192 | if let Some((reference, stroke)) = &stems { 193 | let current_ref = match reference { 194 | YReference::Constant(c) => *c, 195 | YReference::Series(s) => *s.get(i).unwrap(), 196 | }; 197 | 198 | let p_ref_tf = transform(&Pos2::new(p.x, current_ref)); 199 | 200 | painter.line_segment([p_ref_tf, p_tf], *stroke); 201 | } 202 | 203 | match shape { 204 | MarkerShape::Circle => painter.circle(p_tf, size, fill, stroke), 205 | MarkerShape::Square => painter.rect( 206 | Rect::from_center_size(p_tf, Vec2::new(2. * size, 2. * size)), 207 | 0., 208 | fill, 209 | stroke, 210 | ), 211 | MarkerShape::Triangle => { 212 | let outer_radius = 1.0 * size; 213 | let inner_radius = 0.5 * size; 214 | let bottom = Vec2::new(0., -outer_radius); 215 | let left = Vec2::new(-(3f32.sqrt()) / 2. * outer_radius, inner_radius); 216 | let right = Vec2::new(3f32.sqrt() / 2. * outer_radius, inner_radius); 217 | let points = vec![p_tf + bottom, p_tf + right, p_tf + left]; 218 | painter.add(Shape::polygon(points, fill, stroke)); 219 | } 220 | MarkerShape::Plus => { 221 | let dx = Vec2::new(size, 0.); 222 | painter.line_segment([p_tf - dx, p_tf + dx], stroke); 223 | let dy = Vec2::new(0., size); 224 | painter.line_segment([p_tf - dy, p_tf + dy], stroke); 225 | } 226 | MarkerShape::X => { 227 | let diag = Vec2::new(size, size) / std::f32::consts::SQRT_2; 228 | painter.line_segment([p_tf - diag, p_tf + diag], stroke); 229 | let diag = diag.rot90(); 230 | painter.line_segment([p_tf - diag, p_tf + diag], stroke); 231 | } 232 | MarkerShape::Star => { 233 | let spikes = 8; // Has to be be even. 234 | use std::f32::consts::TAU; 235 | (0..spikes / 2).for_each(|i| { 236 | let angle = i as f32 / spikes as f32 * TAU; 237 | let diag = Vec2::angled(angle) * size; 238 | painter.line_segment([p_tf - diag, p_tf + diag], stroke); 239 | }); 240 | } 241 | }; 242 | }); 243 | } 244 | } 245 | 246 | /// Plot a sequence of connected points. 247 | pub struct Line { 248 | points: Vec, 249 | color: Color32, 250 | weight: f32, 251 | area_fill: Option<(YReference, Color32)>, 252 | } 253 | 254 | impl Line { 255 | pub fn new(points: Vec) -> Self { 256 | Self { 257 | points, 258 | color: Color32::WHITE, 259 | weight: 1., 260 | area_fill: None, 261 | } 262 | } 263 | 264 | pub fn color(mut self, color: Color32) -> Self { 265 | self.color = color; 266 | self 267 | } 268 | 269 | pub fn weight(mut self, weight: f32) -> Self { 270 | self.weight = weight; 271 | self 272 | } 273 | 274 | pub fn area_fill(mut self, reference: YReference, color: Color32) -> Self { 275 | self.area_fill = Some((reference, color)); 276 | self 277 | } 278 | } 279 | 280 | impl PlotItem for Line { 281 | fn paint(self, painter: &mut Painter, transform: &dyn Fn(&Pos2) -> Pos2) { 282 | let Self { 283 | points, 284 | color, 285 | weight, 286 | area_fill, 287 | } = self; 288 | 289 | // TODO: Ew. Make this better. 290 | if let Some((reference, color)) = area_fill { 291 | points.windows(2).enumerate().for_each(|(i, w)| { 292 | let y_ref = match &reference { 293 | YReference::Constant(c) => (*c, *c), 294 | YReference::Series(s) => (s[i], s[i + 1]), 295 | }; 296 | let start_down = transform(&pos2(w[0].x, y_ref.0)); 297 | let end_down = transform(&pos2(w[1].x, y_ref.1)); 298 | painter.add(Shape::polygon( 299 | vec![transform(&w[1]), transform(&w[0]), start_down, end_down], 300 | color, 301 | Stroke::default(), 302 | )); 303 | }); 304 | } 305 | 306 | let points: Vec = points.iter().map(|p| transform(p)).collect(); 307 | 308 | painter.add(Shape::line(points, Stroke::new(weight, color))); 309 | } 310 | } 311 | 312 | pub struct Quiver { 313 | points: Vec, 314 | directions: Vec, 315 | color: Color32, 316 | weight: f32, 317 | } 318 | 319 | impl Quiver { 320 | pub fn new(points: Vec, directions: Vec) -> Self { 321 | Self { 322 | points, 323 | directions, 324 | color: Color32::WHITE, 325 | weight: 1., 326 | } 327 | } 328 | 329 | pub fn color(mut self, color: Color32) -> Self { 330 | self.color = color; 331 | self 332 | } 333 | 334 | pub fn weight(mut self, weight: f32) -> Self { 335 | self.weight = weight; 336 | self 337 | } 338 | } 339 | 340 | impl PlotItem for Quiver { 341 | fn paint(self, painter: &mut Painter, transform: &dyn Fn(&Pos2) -> Pos2) { 342 | let Self { 343 | points, 344 | directions, 345 | color, 346 | weight, 347 | } = self; 348 | 349 | points 350 | .iter() 351 | .zip(directions.iter()) 352 | .for_each(|(point, direction)| { 353 | let p0 = transform(point); 354 | let p1 = transform(&(*point + *direction)); 355 | 356 | painter.arrow(p0, p1 - p0, Stroke::new(weight, color)); 357 | }); 358 | } 359 | } 360 | -------------------------------------------------------------------------------- /eplot/plot.rs: -------------------------------------------------------------------------------- 1 | use eframe::egui::*; 2 | use std::{collections::HashMap, ops::RangeInclusive}; 3 | 4 | use super::items::PlotItem; 5 | 6 | pub struct PlotUi<'p> { 7 | painter: &'p mut Painter, 8 | plot_to_screen: &'p dyn Fn(&Pos2) -> Pos2, 9 | mouse_position: Option, 10 | hovered: bool, 11 | } 12 | 13 | impl<'p> PlotUi<'p> { 14 | pub fn add(&mut self, item: D) { 15 | item.paint(self.painter, self.plot_to_screen); 16 | } 17 | 18 | pub fn plot_mouse_position(&self) -> Option { 19 | self.mouse_position 20 | } 21 | 22 | pub fn plot_hovered(&self) -> bool { 23 | self.hovered 24 | } 25 | } 26 | 27 | #[derive(Clone, Copy)] 28 | enum AxisScaling { 29 | Linear, 30 | Logarithmic, 31 | } 32 | 33 | impl Default for AxisScaling { 34 | fn default() -> Self { 35 | Self::Linear 36 | } 37 | } 38 | 39 | #[derive(Clone, Copy)] 40 | struct AxisRange { 41 | start: f32, 42 | end: f32, 43 | scaling: AxisScaling, 44 | } 45 | 46 | impl Default for AxisRange { 47 | fn default() -> Self { 48 | Self { 49 | start: -10., 50 | end: -10., 51 | scaling: AxisScaling::Linear, 52 | } 53 | } 54 | } 55 | 56 | impl AxisRange { 57 | fn new(range: RangeInclusive) -> Self { 58 | Self { 59 | start: *range.start(), 60 | end: *range.end(), 61 | scaling: AxisScaling::Linear, 62 | } 63 | } 64 | 65 | fn extent(&self) -> f32 { 66 | self.end - self.start 67 | } 68 | 69 | fn middle(&self) -> f32 { 70 | (self.start + self.end) / 2. 71 | } 72 | 73 | fn translate(&mut self, delta: f32) { 74 | self.start += delta; 75 | self.end += delta; 76 | } 77 | 78 | fn zoom(&mut self, amount: f32, center: f32) { 79 | self.start -= amount * center * self.extent(); 80 | self.end += amount * (1. - center) * self.extent(); 81 | } 82 | 83 | fn pixel_to_axis(&self, pixel_range: RangeInclusive, pixel: f32, flip: bool) -> f32 { 84 | let pixel_tf = if flip { 85 | remap(pixel, pixel_range.clone(), self.end..=self.start) 86 | } else { 87 | remap(pixel, pixel_range.clone(), self.start..=self.end) 88 | }; 89 | match self.scaling { 90 | AxisScaling::Linear => pixel_tf, 91 | AxisScaling::Logarithmic => { 92 | let den = (self.end / self.start).log10(); 93 | let t = (pixel_tf - self.start) / self.extent(); 94 | (t * den).powi(10) * self.start 95 | } 96 | } 97 | } 98 | 99 | fn axis_to_pixel(&self, pixel_range: RangeInclusive, axis_pos: f32, flip: bool) -> f32 { 100 | match self.scaling { 101 | AxisScaling::Linear => { 102 | if flip { 103 | remap(axis_pos, self.end..=self.start, pixel_range) 104 | } else { 105 | remap(axis_pos, self.start..=self.end, pixel_range) 106 | } 107 | } 108 | AxisScaling::Logarithmic => { 109 | let t = (axis_pos / self.start).log(self.end / self.start); 110 | if flip { 111 | lerp(self.end..=self.start, t) 112 | } else { 113 | lerp(self.start..=self.end, t) 114 | } 115 | } 116 | } 117 | } 118 | } 119 | 120 | pub struct Axis { 121 | label: String, 122 | range: AxisRange, 123 | } 124 | 125 | impl Default for Axis { 126 | fn default() -> Self { 127 | Self { 128 | label: "".to_string(), 129 | range: AxisRange::new((-10.)..=10.), 130 | } 131 | } 132 | } 133 | 134 | pub struct Plot<'mem> { 135 | title: Option, 136 | show_cursor_pos: bool, 137 | memory: &'mem mut PlotMemory, 138 | size: Vec2, 139 | x_axis: Axis, 140 | y_axis: Axis, 141 | } 142 | 143 | pub(crate) struct PlotMemory { 144 | last_drag_pos: Option, 145 | x_axis_range: AxisRange, 146 | y_axis_range: AxisRange, 147 | } 148 | 149 | impl Default for PlotMemory { 150 | fn default() -> Self { 151 | Self { 152 | last_drag_pos: None, 153 | x_axis_range: AxisRange::new((-10.)..=10.), 154 | y_axis_range: AxisRange::new((-10.)..=10.), 155 | } 156 | } 157 | } 158 | 159 | #[derive(Default)] 160 | pub struct PlotCtx { 161 | pub(crate) memory: HashMap, 162 | } 163 | 164 | impl PlotCtx { 165 | pub fn plot(&mut self, label: impl Into) -> Plot { 166 | let id = Id::new(label.into()); 167 | let memory = self.memory.entry(id).or_default(); 168 | Plot::new_with_memory(memory) 169 | } 170 | } 171 | 172 | impl<'mem> Plot<'mem> { 173 | fn new_with_memory(memory: &'mem mut PlotMemory) -> Self { 174 | Self { 175 | title: None, 176 | show_cursor_pos: true, 177 | memory, 178 | size: vec2(100., 100.), 179 | x_axis: Axis::default(), 180 | y_axis: Axis::default(), 181 | } 182 | } 183 | 184 | pub fn title(mut self, title: impl Into) -> Self { 185 | self.title = Some(title.into()); 186 | self 187 | } 188 | 189 | pub fn size(mut self, size: Vec2) -> Self { 190 | self.size = size; 191 | self 192 | } 193 | 194 | pub fn x_axis_range(mut self, range: RangeInclusive) -> Self { 195 | self.x_axis.range = AxisRange::new(range); 196 | self 197 | } 198 | 199 | pub fn y_axis_range(mut self, range: RangeInclusive) -> Self { 200 | self.y_axis.range = AxisRange::new(range); 201 | self 202 | } 203 | 204 | /// Show the cursor position in the bottol left corner. 205 | pub fn show_cursor_position(mut self, on: bool) -> Self { 206 | self.show_cursor_pos = on; 207 | self 208 | } 209 | 210 | /// Draw the plot. Takes a closure where contents can be added to the plot. 211 | pub fn show(self, ui: &mut Ui, add_contents: impl FnOnce(&mut PlotUi) -> R) -> Response { 212 | let Self { 213 | show_cursor_pos, 214 | memory, 215 | title, 216 | size, 217 | mut x_axis, 218 | mut y_axis, 219 | } = self; 220 | 221 | Resize::default().default_size(size).show(ui, |ui| { 222 | let PlotMemory { 223 | last_drag_pos, 224 | x_axis_range, 225 | y_axis_range, 226 | } = memory; 227 | 228 | x_axis.range = *x_axis_range; 229 | y_axis.range = *y_axis_range; 230 | 231 | let (response, mut painter) = 232 | ui.allocate_painter(ui.available_size_before_wrap_finite(), Sense::drag()); 233 | 234 | // Plotting area 235 | let left_margin = 40.; 236 | let right_margin = 10.; 237 | let mut bottom_margin = 40.; 238 | let mut top_margin = 10.; 239 | if title.is_some() { 240 | top_margin += 10. 241 | } 242 | if !x_axis.label.is_empty() { 243 | bottom_margin += 10. 244 | } 245 | 246 | // The full plot rectangle, including title, axes, and their labels. 247 | let full_rect = response.rect; 248 | 249 | // The rectangle that contains the plot items. 250 | let painter_rect = Rect::from_min_max( 251 | full_rect.min + vec2(left_margin, top_margin), 252 | full_rect.max - vec2(right_margin, bottom_margin), 253 | ); 254 | painter.rect( 255 | painter_rect, 256 | 0., 257 | Color32::from_gray(10), 258 | Stroke::new(1.0, Color32::from_white_alpha(150)), 259 | ); 260 | 261 | if let Some(title) = title { 262 | painter.text( 263 | painter_rect.center_top() - vec2(0., 2.), 264 | Align2::CENTER_BOTTOM, 265 | title, 266 | TextStyle::Monospace, 267 | Color32::WHITE, 268 | ); 269 | } 270 | 271 | if !x_axis.label.is_empty() { 272 | painter.text( 273 | painter_rect.center_bottom() + vec2(0., 25.), 274 | Align2::CENTER_TOP, 275 | x_axis.label.clone(), 276 | TextStyle::Monospace, 277 | Color32::WHITE, 278 | ); 279 | } 280 | 281 | // TODO: Y-axis label. 282 | 283 | // Adjust the axes so that the aspect ratio is equal. 284 | let painter_height = painter_rect.height(); 285 | let painter_width = painter_rect.width(); 286 | let plot_width = x_axis.range.extent(); 287 | let plot_height = y_axis.range.extent(); 288 | let max_half_extent = plot_width.max(plot_height) / 2.; 289 | let painter_ratio = painter_height / painter_width; 290 | if painter_ratio > 1. { 291 | let x_center = x_axis.range.middle(); 292 | x_axis.range.start = x_center - max_half_extent / painter_ratio; 293 | x_axis.range.end = x_center + max_half_extent / painter_ratio; 294 | } else { 295 | let y_center = y_axis.range.middle(); 296 | y_axis.range.start = y_center - max_half_extent * painter_ratio; 297 | y_axis.range.end = y_center + max_half_extent * painter_ratio; 298 | } 299 | 300 | // Dragging 301 | let new_drag_pos = response.interact_pointer_pos(); 302 | if let Some(pos) = new_drag_pos { 303 | let x_tf = x_axis 304 | .range 305 | .pixel_to_axis(painter_rect.x_range(), pos.x, false); 306 | let y_tf = y_axis 307 | .range 308 | .pixel_to_axis(painter_rect.y_range(), pos.y, true); 309 | let pos_tf = Pos2::new(x_tf, y_tf); 310 | 311 | if let Some(last_pos) = last_drag_pos { 312 | ui.output().cursor_icon = CursorIcon::Grabbing; 313 | let x_tf = 314 | x_axis 315 | .range 316 | .pixel_to_axis(painter_rect.x_range(), last_pos.x, false); 317 | let y_tf = y_axis 318 | .range 319 | .pixel_to_axis(painter_rect.y_range(), last_pos.y, true); 320 | let last_pos_tf = Pos2::new(x_tf, y_tf); 321 | 322 | let delta = last_pos_tf - pos_tf; 323 | x_axis.range.translate(delta.x); 324 | y_axis.range.translate(delta.y); 325 | } 326 | *last_drag_pos = Some(pos); 327 | } else { 328 | *last_drag_pos = None; 329 | } 330 | 331 | // Zooming 332 | let scrolled = ui.input().scroll_delta.y.clamp(-10., 10.); 333 | if let Some(mouse_pos) = ui 334 | .input() 335 | .pointer 336 | .interact_pos() 337 | .filter(|pos| painter_rect.contains(*pos)) 338 | { 339 | if scrolled != 0. { 340 | let left_distance = (mouse_pos.x - painter_rect.left()) / painter_rect.width(); 341 | let bottom_distance = 342 | (painter_rect.bottom() - mouse_pos.y) / painter_rect.height(); 343 | let zoom_factor = -0.01 * scrolled; 344 | x_axis.range.zoom(zoom_factor, left_distance); 345 | y_axis.range.zoom(zoom_factor, bottom_distance); 346 | } 347 | } 348 | 349 | let plot_to_screen = |pos: &Pos2| -> Pos2 { 350 | Self::plot_to_pixels(pos, &x_axis.range, &y_axis.range, &painter_rect) 351 | }; 352 | let screen_to_plot = |pos: &Pos2| -> Pos2 { 353 | Self::pixels_to_plot(pos, &x_axis.range, &y_axis.range, &painter_rect) 354 | }; 355 | 356 | // Ticks and tick labels 357 | let ticks_on_smaller_axis = 5; // The lower limit of ticks on the smaller axis. 358 | let smaller_axis_size = x_axis.range.extent().min(y_axis.range.extent()); 359 | let rough_increment = smaller_axis_size / ticks_on_smaller_axis as f32; 360 | let increment = emath::smart_aim::best_in_range_f64( 361 | (rough_increment * 0.5) as f64, 362 | (rough_increment * 1.5) as f64, 363 | ) as f32; 364 | 365 | // X-Axis ticks 366 | let mut i_start = (x_axis.range.start / increment) as i32; 367 | if i_start >= 0 { 368 | i_start += 1; 369 | } 370 | loop { 371 | let tick_pos_x = i_start as f32 * increment; 372 | if tick_pos_x > x_axis.range.end { 373 | break; 374 | } 375 | let x_tick = plot_to_screen(&pos2(tick_pos_x, y_axis.range.start)); 376 | painter.line_segment( 377 | [x_tick, x_tick - 5. * Vec2::Y], 378 | Stroke::new(1.0, Color32::WHITE), 379 | ); 380 | painter.line_segment( 381 | [x_tick, x_tick - painter_rect.height() * Vec2::Y], 382 | Stroke::new(0.5, Color32::from_white_alpha(5)), 383 | ); 384 | painter.text( 385 | x_tick + 15. * Vec2::Y, 386 | Align2::CENTER_CENTER, 387 | format!("{:.1}", tick_pos_x), 388 | TextStyle::Monospace, 389 | Color32::WHITE, 390 | ); 391 | i_start += 1; 392 | } 393 | 394 | // Y-Axis ticks 395 | let mut i_start = (y_axis.range.start / increment) as i32; 396 | if i_start >= 0 { 397 | i_start += 1; 398 | } 399 | loop { 400 | let tick_pos_y = i_start as f32 * increment; 401 | if tick_pos_y > y_axis.range.end { 402 | break; 403 | } 404 | let y_tick = plot_to_screen(&pos2(x_axis.range.start, tick_pos_y)); 405 | painter.line_segment( 406 | [y_tick, y_tick + 5. * Vec2::X], 407 | Stroke::new(1.0, Color32::WHITE), 408 | ); 409 | painter.line_segment( 410 | [y_tick, y_tick + painter_rect.width() * Vec2::X], 411 | Stroke::new(0.5, Color32::from_white_alpha(5)), 412 | ); 413 | painter.text( 414 | y_tick - 15. * Vec2::X, 415 | Align2::CENTER_CENTER, 416 | format!("{:.1}", tick_pos_y), 417 | TextStyle::Monospace, 418 | Color32::WHITE, 419 | ); 420 | i_start += 1; 421 | } 422 | 423 | // Restrict painting to the painter area 424 | painter.set_clip_rect(painter_rect); 425 | 426 | // Call the function provided by the user to add the shapes. 427 | let mut plot_ui = PlotUi { 428 | painter: &mut painter, 429 | plot_to_screen: &plot_to_screen, 430 | mouse_position: ui 431 | .input() 432 | .pointer 433 | .interact_pos() 434 | .map(|pos| screen_to_plot(&pos)), 435 | hovered: ui 436 | .input() 437 | .pointer 438 | .interact_pos() 439 | .filter(|pos| painter_rect.contains(*pos)) 440 | .is_some(), 441 | }; 442 | add_contents(&mut plot_ui); 443 | 444 | // Show mouse position 445 | if show_cursor_pos { 446 | if let Some(mouse_pos) = ui 447 | .input() 448 | .pointer 449 | .interact_pos() 450 | .filter(|pos| painter_rect.contains(*pos)) 451 | { 452 | let mouse_pos = screen_to_plot(&mouse_pos); 453 | painter.text( 454 | painter_rect.right_bottom() + vec2(-10., -10.), 455 | Align2::RIGHT_BOTTOM, 456 | format!("{:?}", mouse_pos), 457 | TextStyle::Monospace, 458 | Color32::WHITE, 459 | ); 460 | } 461 | } 462 | 463 | *x_axis_range = x_axis.range; 464 | *y_axis_range = y_axis.range; 465 | 466 | response 467 | }) 468 | } 469 | 470 | fn pixels_to_plot( 471 | pixel_pos: &Pos2, 472 | x_pixel_range: &AxisRange, 473 | y_pixel_range: &AxisRange, 474 | plot_rect: &Rect, 475 | ) -> Pos2 { 476 | let x_tf = x_pixel_range.pixel_to_axis(plot_rect.x_range(), pixel_pos.x, false); 477 | let y_tf = y_pixel_range.pixel_to_axis(plot_rect.y_range(), pixel_pos.y, true); 478 | pos2(x_tf, y_tf) 479 | } 480 | 481 | fn plot_to_pixels( 482 | plot_pos: &Pos2, 483 | x_plot_range: &AxisRange, 484 | y_plot_range: &AxisRange, 485 | plot_rect: &Rect, 486 | ) -> Pos2 { 487 | let x_tf = x_plot_range.axis_to_pixel(plot_rect.x_range(), plot_pos.x, false); 488 | let y_tf = y_plot_range.axis_to_pixel(plot_rect.y_range(), plot_pos.y, true); 489 | pos2(x_tf, y_tf) 490 | } 491 | } 492 | -------------------------------------------------------------------------------- /eplot/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "ab_glyph_rasterizer" 5 | version = "0.1.4" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | checksum = "d9fe5e32de01730eb1f6b7f5b51c17e03e2325bf40a74f754f04f130043affff" 8 | 9 | [[package]] 10 | name = "addr2line" 11 | version = "0.14.1" 12 | source = "registry+https://github.com/rust-lang/crates.io-index" 13 | checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" 14 | dependencies = [ 15 | "gimli", 16 | ] 17 | 18 | [[package]] 19 | name = "adler" 20 | version = "0.2.3" 21 | source = "registry+https://github.com/rust-lang/crates.io-index" 22 | checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" 23 | 24 | [[package]] 25 | name = "ahash" 26 | version = "0.6.3" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | checksum = "796540673305a66d127804eef19ad696f1f204b8c1025aaca4958c17eab32877" 29 | dependencies = [ 30 | "getrandom", 31 | "once_cell", 32 | "version_check", 33 | ] 34 | 35 | [[package]] 36 | name = "andrew" 37 | version = "0.3.1" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "8c4afb09dd642feec8408e33f92f3ffc4052946f6b20f32fb99c1f58cd4fa7cf" 40 | dependencies = [ 41 | "bitflags", 42 | "rusttype", 43 | "walkdir", 44 | "xdg", 45 | "xml-rs", 46 | ] 47 | 48 | [[package]] 49 | name = "android_glue" 50 | version = "0.2.3" 51 | source = "registry+https://github.com/rust-lang/crates.io-index" 52 | checksum = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407" 53 | 54 | [[package]] 55 | name = "atomic_refcell" 56 | version = "0.1.6" 57 | source = "registry+https://github.com/rust-lang/crates.io-index" 58 | checksum = "3bc31dce067eab974c815a9deb95f6217806de7b53685d7fc31f8ccf3fb2539f" 59 | 60 | [[package]] 61 | name = "autocfg" 62 | version = "1.0.1" 63 | source = "registry+https://github.com/rust-lang/crates.io-index" 64 | checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" 65 | 66 | [[package]] 67 | name = "backtrace" 68 | version = "0.3.56" 69 | source = "registry+https://github.com/rust-lang/crates.io-index" 70 | checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" 71 | dependencies = [ 72 | "addr2line", 73 | "cfg-if 1.0.0", 74 | "libc", 75 | "miniz_oxide", 76 | "object", 77 | "rustc-demangle", 78 | ] 79 | 80 | [[package]] 81 | name = "bitflags" 82 | version = "1.2.1" 83 | source = "registry+https://github.com/rust-lang/crates.io-index" 84 | checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 85 | 86 | [[package]] 87 | name = "block" 88 | version = "0.1.6" 89 | source = "registry+https://github.com/rust-lang/crates.io-index" 90 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 91 | 92 | [[package]] 93 | name = "bumpalo" 94 | version = "3.6.0" 95 | source = "registry+https://github.com/rust-lang/crates.io-index" 96 | checksum = "099e596ef14349721d9016f6b80dd3419ea1bf289ab9b44df8e4dfd3a005d5d9" 97 | 98 | [[package]] 99 | name = "calloop" 100 | version = "0.6.5" 101 | source = "registry+https://github.com/rust-lang/crates.io-index" 102 | checksum = "0b036167e76041694579972c28cf4877b4f92da222560ddb49008937b6a6727c" 103 | dependencies = [ 104 | "log", 105 | "nix", 106 | ] 107 | 108 | [[package]] 109 | name = "cc" 110 | version = "1.0.66" 111 | source = "registry+https://github.com/rust-lang/crates.io-index" 112 | checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" 113 | 114 | [[package]] 115 | name = "cfg-if" 116 | version = "0.1.10" 117 | source = "registry+https://github.com/rust-lang/crates.io-index" 118 | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 119 | 120 | [[package]] 121 | name = "cfg-if" 122 | version = "1.0.0" 123 | source = "registry+https://github.com/rust-lang/crates.io-index" 124 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 125 | 126 | [[package]] 127 | name = "cgl" 128 | version = "0.3.2" 129 | source = "registry+https://github.com/rust-lang/crates.io-index" 130 | checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" 131 | dependencies = [ 132 | "libc", 133 | ] 134 | 135 | [[package]] 136 | name = "clipboard" 137 | version = "0.5.0" 138 | source = "registry+https://github.com/rust-lang/crates.io-index" 139 | checksum = "25a904646c0340239dcf7c51677b33928bf24fdf424b79a57909c0109075b2e7" 140 | dependencies = [ 141 | "clipboard-win", 142 | "objc", 143 | "objc-foundation", 144 | "objc_id", 145 | "x11-clipboard", 146 | ] 147 | 148 | [[package]] 149 | name = "clipboard-win" 150 | version = "2.2.0" 151 | source = "registry+https://github.com/rust-lang/crates.io-index" 152 | checksum = "e3a093d6fed558e5fe24c3dfc85a68bb68f1c824f440d3ba5aca189e2998786b" 153 | dependencies = [ 154 | "winapi 0.3.9", 155 | ] 156 | 157 | [[package]] 158 | name = "cocoa" 159 | version = "0.23.0" 160 | source = "registry+https://github.com/rust-lang/crates.io-index" 161 | checksum = "c54201c07dcf3a5ca33fececb8042aed767ee4bfd5a0235a8ceabcda956044b2" 162 | dependencies = [ 163 | "bitflags", 164 | "block", 165 | "cocoa-foundation", 166 | "core-foundation 0.9.1", 167 | "core-graphics 0.22.2", 168 | "foreign-types", 169 | "libc", 170 | "objc", 171 | ] 172 | 173 | [[package]] 174 | name = "cocoa" 175 | version = "0.24.0" 176 | source = "registry+https://github.com/rust-lang/crates.io-index" 177 | checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" 178 | dependencies = [ 179 | "bitflags", 180 | "block", 181 | "cocoa-foundation", 182 | "core-foundation 0.9.1", 183 | "core-graphics 0.22.2", 184 | "foreign-types", 185 | "libc", 186 | "objc", 187 | ] 188 | 189 | [[package]] 190 | name = "cocoa-foundation" 191 | version = "0.1.0" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" 194 | dependencies = [ 195 | "bitflags", 196 | "block", 197 | "core-foundation 0.9.1", 198 | "core-graphics-types", 199 | "foreign-types", 200 | "libc", 201 | "objc", 202 | ] 203 | 204 | [[package]] 205 | name = "core-foundation" 206 | version = "0.7.0" 207 | source = "registry+https://github.com/rust-lang/crates.io-index" 208 | checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" 209 | dependencies = [ 210 | "core-foundation-sys 0.7.0", 211 | "libc", 212 | ] 213 | 214 | [[package]] 215 | name = "core-foundation" 216 | version = "0.9.1" 217 | source = "registry+https://github.com/rust-lang/crates.io-index" 218 | checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" 219 | dependencies = [ 220 | "core-foundation-sys 0.8.2", 221 | "libc", 222 | ] 223 | 224 | [[package]] 225 | name = "core-foundation-sys" 226 | version = "0.7.0" 227 | source = "registry+https://github.com/rust-lang/crates.io-index" 228 | checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" 229 | 230 | [[package]] 231 | name = "core-foundation-sys" 232 | version = "0.8.2" 233 | source = "registry+https://github.com/rust-lang/crates.io-index" 234 | checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" 235 | 236 | [[package]] 237 | name = "core-graphics" 238 | version = "0.19.2" 239 | source = "registry+https://github.com/rust-lang/crates.io-index" 240 | checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" 241 | dependencies = [ 242 | "bitflags", 243 | "core-foundation 0.7.0", 244 | "foreign-types", 245 | "libc", 246 | ] 247 | 248 | [[package]] 249 | name = "core-graphics" 250 | version = "0.22.2" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | checksum = "269f35f69b542b80e736a20a89a05215c0ce80c2c03c514abb2e318b78379d86" 253 | dependencies = [ 254 | "bitflags", 255 | "core-foundation 0.9.1", 256 | "core-graphics-types", 257 | "foreign-types", 258 | "libc", 259 | ] 260 | 261 | [[package]] 262 | name = "core-graphics-types" 263 | version = "0.1.1" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" 266 | dependencies = [ 267 | "bitflags", 268 | "core-foundation 0.9.1", 269 | "foreign-types", 270 | "libc", 271 | ] 272 | 273 | [[package]] 274 | name = "core-video-sys" 275 | version = "0.1.4" 276 | source = "registry+https://github.com/rust-lang/crates.io-index" 277 | checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" 278 | dependencies = [ 279 | "cfg-if 0.1.10", 280 | "core-foundation-sys 0.7.0", 281 | "core-graphics 0.19.2", 282 | "libc", 283 | "objc", 284 | ] 285 | 286 | [[package]] 287 | name = "darling" 288 | version = "0.10.2" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" 291 | dependencies = [ 292 | "darling_core", 293 | "darling_macro", 294 | ] 295 | 296 | [[package]] 297 | name = "darling_core" 298 | version = "0.10.2" 299 | source = "registry+https://github.com/rust-lang/crates.io-index" 300 | checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" 301 | dependencies = [ 302 | "fnv", 303 | "ident_case", 304 | "proc-macro2", 305 | "quote", 306 | "strsim", 307 | "syn", 308 | ] 309 | 310 | [[package]] 311 | name = "darling_macro" 312 | version = "0.10.2" 313 | source = "registry+https://github.com/rust-lang/crates.io-index" 314 | checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" 315 | dependencies = [ 316 | "darling_core", 317 | "quote", 318 | "syn", 319 | ] 320 | 321 | [[package]] 322 | name = "derivative" 323 | version = "2.2.0" 324 | source = "registry+https://github.com/rust-lang/crates.io-index" 325 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 326 | dependencies = [ 327 | "proc-macro2", 328 | "quote", 329 | "syn", 330 | ] 331 | 332 | [[package]] 333 | name = "dispatch" 334 | version = "0.2.0" 335 | source = "registry+https://github.com/rust-lang/crates.io-index" 336 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 337 | 338 | [[package]] 339 | name = "dlib" 340 | version = "0.4.2" 341 | source = "registry+https://github.com/rust-lang/crates.io-index" 342 | checksum = "b11f15d1e3268f140f68d390637d5e76d849782d971ae7063e0da69fe9709a76" 343 | dependencies = [ 344 | "libloading", 345 | ] 346 | 347 | [[package]] 348 | name = "downcast-rs" 349 | version = "1.2.0" 350 | source = "registry+https://github.com/rust-lang/crates.io-index" 351 | checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" 352 | 353 | [[package]] 354 | name = "eframe" 355 | version = "0.8.0" 356 | source = "git+https://github.com/emilk/egui?branch=master#2cbea02c8b4b22be683aece374a42cb2676ee81b" 357 | dependencies = [ 358 | "egui", 359 | "egui_glium", 360 | "egui_web", 361 | "epi", 362 | ] 363 | 364 | [[package]] 365 | name = "egui" 366 | version = "0.8.0" 367 | source = "git+https://github.com/emilk/egui?branch=master#2cbea02c8b4b22be683aece374a42cb2676ee81b" 368 | dependencies = [ 369 | "epaint", 370 | ] 371 | 372 | [[package]] 373 | name = "egui_glium" 374 | version = "0.8.0" 375 | source = "git+https://github.com/emilk/egui?branch=master#2cbea02c8b4b22be683aece374a42cb2676ee81b" 376 | dependencies = [ 377 | "clipboard", 378 | "egui", 379 | "epi", 380 | "glium", 381 | "webbrowser", 382 | ] 383 | 384 | [[package]] 385 | name = "egui_web" 386 | version = "0.8.0" 387 | source = "git+https://github.com/emilk/egui?branch=master#2cbea02c8b4b22be683aece374a42cb2676ee81b" 388 | dependencies = [ 389 | "egui", 390 | "epi", 391 | "js-sys", 392 | "wasm-bindgen", 393 | "wasm-bindgen-futures", 394 | "web-sys", 395 | ] 396 | 397 | [[package]] 398 | name = "emath" 399 | version = "0.8.0" 400 | source = "git+https://github.com/emilk/egui?branch=master#2cbea02c8b4b22be683aece374a42cb2676ee81b" 401 | 402 | [[package]] 403 | name = "epaint" 404 | version = "0.8.0" 405 | source = "git+https://github.com/emilk/egui?branch=master#2cbea02c8b4b22be683aece374a42cb2676ee81b" 406 | dependencies = [ 407 | "ahash", 408 | "atomic_refcell", 409 | "emath", 410 | "rusttype", 411 | ] 412 | 413 | [[package]] 414 | name = "epi" 415 | version = "0.8.0" 416 | source = "git+https://github.com/emilk/egui?branch=master#2cbea02c8b4b22be683aece374a42cb2676ee81b" 417 | dependencies = [ 418 | "egui", 419 | ] 420 | 421 | [[package]] 422 | name = "eplot" 423 | version = "0.1.0" 424 | dependencies = [ 425 | "eframe", 426 | ] 427 | 428 | [[package]] 429 | name = "fnv" 430 | version = "1.0.7" 431 | source = "registry+https://github.com/rust-lang/crates.io-index" 432 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 433 | 434 | [[package]] 435 | name = "foreign-types" 436 | version = "0.3.2" 437 | source = "registry+https://github.com/rust-lang/crates.io-index" 438 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 439 | dependencies = [ 440 | "foreign-types-shared", 441 | ] 442 | 443 | [[package]] 444 | name = "foreign-types-shared" 445 | version = "0.1.1" 446 | source = "registry+https://github.com/rust-lang/crates.io-index" 447 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 448 | 449 | [[package]] 450 | name = "fuchsia-zircon" 451 | version = "0.3.3" 452 | source = "registry+https://github.com/rust-lang/crates.io-index" 453 | checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 454 | dependencies = [ 455 | "bitflags", 456 | "fuchsia-zircon-sys", 457 | ] 458 | 459 | [[package]] 460 | name = "fuchsia-zircon-sys" 461 | version = "0.3.3" 462 | source = "registry+https://github.com/rust-lang/crates.io-index" 463 | checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 464 | 465 | [[package]] 466 | name = "getrandom" 467 | version = "0.2.2" 468 | source = "registry+https://github.com/rust-lang/crates.io-index" 469 | checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" 470 | dependencies = [ 471 | "cfg-if 1.0.0", 472 | "libc", 473 | "wasi", 474 | ] 475 | 476 | [[package]] 477 | name = "gimli" 478 | version = "0.23.0" 479 | source = "registry+https://github.com/rust-lang/crates.io-index" 480 | checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" 481 | 482 | [[package]] 483 | name = "gl_generator" 484 | version = "0.14.0" 485 | source = "registry+https://github.com/rust-lang/crates.io-index" 486 | checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 487 | dependencies = [ 488 | "khronos_api", 489 | "log", 490 | "xml-rs", 491 | ] 492 | 493 | [[package]] 494 | name = "glium" 495 | version = "0.29.0" 496 | source = "registry+https://github.com/rust-lang/crates.io-index" 497 | checksum = "77623b4b688e68ec5ce256dd45614e374d4bee6ecec964b790733bf2c05f8732" 498 | dependencies = [ 499 | "backtrace", 500 | "fnv", 501 | "gl_generator", 502 | "glutin", 503 | "lazy_static", 504 | "memoffset", 505 | "smallvec", 506 | "takeable-option", 507 | ] 508 | 509 | [[package]] 510 | name = "glutin" 511 | version = "0.26.0" 512 | source = "registry+https://github.com/rust-lang/crates.io-index" 513 | checksum = "1ae1cbb9176b9151c4ce03f012e3cd1c6c18c4be79edeaeb3d99f5d8085c5fa3" 514 | dependencies = [ 515 | "android_glue", 516 | "cgl", 517 | "cocoa 0.23.0", 518 | "core-foundation 0.9.1", 519 | "glutin_egl_sys", 520 | "glutin_emscripten_sys", 521 | "glutin_gles2_sys", 522 | "glutin_glx_sys", 523 | "glutin_wgl_sys", 524 | "lazy_static", 525 | "libloading", 526 | "log", 527 | "objc", 528 | "osmesa-sys", 529 | "parking_lot", 530 | "wayland-client", 531 | "wayland-egl", 532 | "winapi 0.3.9", 533 | "winit", 534 | ] 535 | 536 | [[package]] 537 | name = "glutin_egl_sys" 538 | version = "0.1.5" 539 | source = "registry+https://github.com/rust-lang/crates.io-index" 540 | checksum = "2abb6aa55523480c4adc5a56bbaa249992e2dddb2fc63dc96e04a3355364c211" 541 | dependencies = [ 542 | "gl_generator", 543 | "winapi 0.3.9", 544 | ] 545 | 546 | [[package]] 547 | name = "glutin_emscripten_sys" 548 | version = "0.1.1" 549 | source = "registry+https://github.com/rust-lang/crates.io-index" 550 | checksum = "80de4146df76e8a6c32b03007bc764ff3249dcaeb4f675d68a06caf1bac363f1" 551 | 552 | [[package]] 553 | name = "glutin_gles2_sys" 554 | version = "0.1.5" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "e8094e708b730a7c8a1954f4f8a31880af00eb8a1c5b5bf85d28a0a3c6d69103" 557 | dependencies = [ 558 | "gl_generator", 559 | "objc", 560 | ] 561 | 562 | [[package]] 563 | name = "glutin_glx_sys" 564 | version = "0.1.7" 565 | source = "registry+https://github.com/rust-lang/crates.io-index" 566 | checksum = "7e393c8fc02b807459410429150e9c4faffdb312d59b8c038566173c81991351" 567 | dependencies = [ 568 | "gl_generator", 569 | "x11-dl", 570 | ] 571 | 572 | [[package]] 573 | name = "glutin_wgl_sys" 574 | version = "0.1.5" 575 | source = "registry+https://github.com/rust-lang/crates.io-index" 576 | checksum = "3da5951a1569dbab865c6f2a863efafff193a93caf05538d193e9e3816d21696" 577 | dependencies = [ 578 | "gl_generator", 579 | ] 580 | 581 | [[package]] 582 | name = "ident_case" 583 | version = "1.0.1" 584 | source = "registry+https://github.com/rust-lang/crates.io-index" 585 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 586 | 587 | [[package]] 588 | name = "instant" 589 | version = "0.1.9" 590 | source = "registry+https://github.com/rust-lang/crates.io-index" 591 | checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" 592 | dependencies = [ 593 | "cfg-if 1.0.0", 594 | ] 595 | 596 | [[package]] 597 | name = "iovec" 598 | version = "0.1.4" 599 | source = "registry+https://github.com/rust-lang/crates.io-index" 600 | checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 601 | dependencies = [ 602 | "libc", 603 | ] 604 | 605 | [[package]] 606 | name = "jni-sys" 607 | version = "0.3.0" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 610 | 611 | [[package]] 612 | name = "js-sys" 613 | version = "0.3.47" 614 | source = "registry+https://github.com/rust-lang/crates.io-index" 615 | checksum = "5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65" 616 | dependencies = [ 617 | "wasm-bindgen", 618 | ] 619 | 620 | [[package]] 621 | name = "kernel32-sys" 622 | version = "0.2.2" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 625 | dependencies = [ 626 | "winapi 0.2.8", 627 | "winapi-build", 628 | ] 629 | 630 | [[package]] 631 | name = "khronos_api" 632 | version = "3.1.0" 633 | source = "registry+https://github.com/rust-lang/crates.io-index" 634 | checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 635 | 636 | [[package]] 637 | name = "lazy_static" 638 | version = "1.4.0" 639 | source = "registry+https://github.com/rust-lang/crates.io-index" 640 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 641 | 642 | [[package]] 643 | name = "lazycell" 644 | version = "1.3.0" 645 | source = "registry+https://github.com/rust-lang/crates.io-index" 646 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 647 | 648 | [[package]] 649 | name = "libc" 650 | version = "0.2.84" 651 | source = "registry+https://github.com/rust-lang/crates.io-index" 652 | checksum = "1cca32fa0182e8c0989459524dc356b8f2b5c10f1b9eb521b7d182c03cf8c5ff" 653 | 654 | [[package]] 655 | name = "libloading" 656 | version = "0.6.7" 657 | source = "registry+https://github.com/rust-lang/crates.io-index" 658 | checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" 659 | dependencies = [ 660 | "cfg-if 1.0.0", 661 | "winapi 0.3.9", 662 | ] 663 | 664 | [[package]] 665 | name = "lock_api" 666 | version = "0.4.2" 667 | source = "registry+https://github.com/rust-lang/crates.io-index" 668 | checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" 669 | dependencies = [ 670 | "scopeguard", 671 | ] 672 | 673 | [[package]] 674 | name = "log" 675 | version = "0.4.14" 676 | source = "registry+https://github.com/rust-lang/crates.io-index" 677 | checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" 678 | dependencies = [ 679 | "cfg-if 1.0.0", 680 | ] 681 | 682 | [[package]] 683 | name = "malloc_buf" 684 | version = "0.0.6" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 687 | dependencies = [ 688 | "libc", 689 | ] 690 | 691 | [[package]] 692 | name = "maybe-uninit" 693 | version = "2.0.0" 694 | source = "registry+https://github.com/rust-lang/crates.io-index" 695 | checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" 696 | 697 | [[package]] 698 | name = "memchr" 699 | version = "2.3.4" 700 | source = "registry+https://github.com/rust-lang/crates.io-index" 701 | checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" 702 | 703 | [[package]] 704 | name = "memmap2" 705 | version = "0.1.0" 706 | source = "registry+https://github.com/rust-lang/crates.io-index" 707 | checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" 708 | dependencies = [ 709 | "libc", 710 | ] 711 | 712 | [[package]] 713 | name = "memoffset" 714 | version = "0.6.1" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" 717 | dependencies = [ 718 | "autocfg", 719 | ] 720 | 721 | [[package]] 722 | name = "miniz_oxide" 723 | version = "0.4.3" 724 | source = "registry+https://github.com/rust-lang/crates.io-index" 725 | checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" 726 | dependencies = [ 727 | "adler", 728 | "autocfg", 729 | ] 730 | 731 | [[package]] 732 | name = "mio" 733 | version = "0.6.23" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" 736 | dependencies = [ 737 | "cfg-if 0.1.10", 738 | "fuchsia-zircon", 739 | "fuchsia-zircon-sys", 740 | "iovec", 741 | "kernel32-sys", 742 | "libc", 743 | "log", 744 | "miow", 745 | "net2", 746 | "slab", 747 | "winapi 0.2.8", 748 | ] 749 | 750 | [[package]] 751 | name = "mio-extras" 752 | version = "2.0.6" 753 | source = "registry+https://github.com/rust-lang/crates.io-index" 754 | checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" 755 | dependencies = [ 756 | "lazycell", 757 | "log", 758 | "mio", 759 | "slab", 760 | ] 761 | 762 | [[package]] 763 | name = "miow" 764 | version = "0.2.2" 765 | source = "registry+https://github.com/rust-lang/crates.io-index" 766 | checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" 767 | dependencies = [ 768 | "kernel32-sys", 769 | "net2", 770 | "winapi 0.2.8", 771 | "ws2_32-sys", 772 | ] 773 | 774 | [[package]] 775 | name = "ndk" 776 | version = "0.2.1" 777 | source = "registry+https://github.com/rust-lang/crates.io-index" 778 | checksum = "5eb167c1febed0a496639034d0c76b3b74263636045db5489eee52143c246e73" 779 | dependencies = [ 780 | "jni-sys", 781 | "ndk-sys", 782 | "num_enum", 783 | "thiserror", 784 | ] 785 | 786 | [[package]] 787 | name = "ndk-glue" 788 | version = "0.2.1" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "bdf399b8b7a39c6fb153c4ec32c72fd5fe789df24a647f229c239aa7adb15241" 791 | dependencies = [ 792 | "lazy_static", 793 | "libc", 794 | "log", 795 | "ndk", 796 | "ndk-macro", 797 | "ndk-sys", 798 | ] 799 | 800 | [[package]] 801 | name = "ndk-macro" 802 | version = "0.2.0" 803 | source = "registry+https://github.com/rust-lang/crates.io-index" 804 | checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" 805 | dependencies = [ 806 | "darling", 807 | "proc-macro-crate", 808 | "proc-macro2", 809 | "quote", 810 | "syn", 811 | ] 812 | 813 | [[package]] 814 | name = "ndk-sys" 815 | version = "0.2.1" 816 | source = "registry+https://github.com/rust-lang/crates.io-index" 817 | checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d" 818 | 819 | [[package]] 820 | name = "net2" 821 | version = "0.2.37" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" 824 | dependencies = [ 825 | "cfg-if 0.1.10", 826 | "libc", 827 | "winapi 0.3.9", 828 | ] 829 | 830 | [[package]] 831 | name = "nix" 832 | version = "0.18.0" 833 | source = "registry+https://github.com/rust-lang/crates.io-index" 834 | checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" 835 | dependencies = [ 836 | "bitflags", 837 | "cc", 838 | "cfg-if 0.1.10", 839 | "libc", 840 | ] 841 | 842 | [[package]] 843 | name = "nom" 844 | version = "6.1.0" 845 | source = "registry+https://github.com/rust-lang/crates.io-index" 846 | checksum = "ab6f70b46d6325aa300f1c7bb3d470127dfc27806d8ea6bf294ee0ce643ce2b1" 847 | dependencies = [ 848 | "memchr", 849 | "version_check", 850 | ] 851 | 852 | [[package]] 853 | name = "num_enum" 854 | version = "0.4.3" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" 857 | dependencies = [ 858 | "derivative", 859 | "num_enum_derive", 860 | ] 861 | 862 | [[package]] 863 | name = "num_enum_derive" 864 | version = "0.4.3" 865 | source = "registry+https://github.com/rust-lang/crates.io-index" 866 | checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" 867 | dependencies = [ 868 | "proc-macro-crate", 869 | "proc-macro2", 870 | "quote", 871 | "syn", 872 | ] 873 | 874 | [[package]] 875 | name = "objc" 876 | version = "0.2.7" 877 | source = "registry+https://github.com/rust-lang/crates.io-index" 878 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 879 | dependencies = [ 880 | "malloc_buf", 881 | ] 882 | 883 | [[package]] 884 | name = "objc-foundation" 885 | version = "0.1.1" 886 | source = "registry+https://github.com/rust-lang/crates.io-index" 887 | checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 888 | dependencies = [ 889 | "block", 890 | "objc", 891 | "objc_id", 892 | ] 893 | 894 | [[package]] 895 | name = "objc_id" 896 | version = "0.1.1" 897 | source = "registry+https://github.com/rust-lang/crates.io-index" 898 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 899 | dependencies = [ 900 | "objc", 901 | ] 902 | 903 | [[package]] 904 | name = "object" 905 | version = "0.23.0" 906 | source = "registry+https://github.com/rust-lang/crates.io-index" 907 | checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" 908 | 909 | [[package]] 910 | name = "once_cell" 911 | version = "1.5.2" 912 | source = "registry+https://github.com/rust-lang/crates.io-index" 913 | checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" 914 | 915 | [[package]] 916 | name = "osmesa-sys" 917 | version = "0.1.2" 918 | source = "registry+https://github.com/rust-lang/crates.io-index" 919 | checksum = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" 920 | dependencies = [ 921 | "shared_library", 922 | ] 923 | 924 | [[package]] 925 | name = "owned_ttf_parser" 926 | version = "0.6.0" 927 | source = "registry+https://github.com/rust-lang/crates.io-index" 928 | checksum = "9f923fb806c46266c02ab4a5b239735c144bdeda724a50ed058e5226f594cde3" 929 | dependencies = [ 930 | "ttf-parser", 931 | ] 932 | 933 | [[package]] 934 | name = "parking_lot" 935 | version = "0.11.1" 936 | source = "registry+https://github.com/rust-lang/crates.io-index" 937 | checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" 938 | dependencies = [ 939 | "instant", 940 | "lock_api", 941 | "parking_lot_core", 942 | ] 943 | 944 | [[package]] 945 | name = "parking_lot_core" 946 | version = "0.8.2" 947 | source = "registry+https://github.com/rust-lang/crates.io-index" 948 | checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272" 949 | dependencies = [ 950 | "cfg-if 1.0.0", 951 | "instant", 952 | "libc", 953 | "redox_syscall", 954 | "smallvec", 955 | "winapi 0.3.9", 956 | ] 957 | 958 | [[package]] 959 | name = "percent-encoding" 960 | version = "2.1.0" 961 | source = "registry+https://github.com/rust-lang/crates.io-index" 962 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 963 | 964 | [[package]] 965 | name = "pkg-config" 966 | version = "0.3.19" 967 | source = "registry+https://github.com/rust-lang/crates.io-index" 968 | checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" 969 | 970 | [[package]] 971 | name = "proc-macro-crate" 972 | version = "0.1.5" 973 | source = "registry+https://github.com/rust-lang/crates.io-index" 974 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 975 | dependencies = [ 976 | "toml", 977 | ] 978 | 979 | [[package]] 980 | name = "proc-macro2" 981 | version = "1.0.24" 982 | source = "registry+https://github.com/rust-lang/crates.io-index" 983 | checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" 984 | dependencies = [ 985 | "unicode-xid", 986 | ] 987 | 988 | [[package]] 989 | name = "quote" 990 | version = "1.0.8" 991 | source = "registry+https://github.com/rust-lang/crates.io-index" 992 | checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" 993 | dependencies = [ 994 | "proc-macro2", 995 | ] 996 | 997 | [[package]] 998 | name = "raw-window-handle" 999 | version = "0.3.3" 1000 | source = "registry+https://github.com/rust-lang/crates.io-index" 1001 | checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" 1002 | dependencies = [ 1003 | "libc", 1004 | ] 1005 | 1006 | [[package]] 1007 | name = "redox_syscall" 1008 | version = "0.1.57" 1009 | source = "registry+https://github.com/rust-lang/crates.io-index" 1010 | checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" 1011 | 1012 | [[package]] 1013 | name = "rustc-demangle" 1014 | version = "0.1.18" 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" 1016 | checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" 1017 | 1018 | [[package]] 1019 | name = "rusttype" 1020 | version = "0.9.2" 1021 | source = "registry+https://github.com/rust-lang/crates.io-index" 1022 | checksum = "dc7c727aded0be18c5b80c1640eae0ac8e396abf6fa8477d96cb37d18ee5ec59" 1023 | dependencies = [ 1024 | "ab_glyph_rasterizer", 1025 | "owned_ttf_parser", 1026 | ] 1027 | 1028 | [[package]] 1029 | name = "same-file" 1030 | version = "1.0.6" 1031 | source = "registry+https://github.com/rust-lang/crates.io-index" 1032 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 1033 | dependencies = [ 1034 | "winapi-util", 1035 | ] 1036 | 1037 | [[package]] 1038 | name = "scoped-tls" 1039 | version = "1.0.0" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" 1042 | 1043 | [[package]] 1044 | name = "scopeguard" 1045 | version = "1.1.0" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1048 | 1049 | [[package]] 1050 | name = "serde" 1051 | version = "1.0.123" 1052 | source = "registry+https://github.com/rust-lang/crates.io-index" 1053 | checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae" 1054 | 1055 | [[package]] 1056 | name = "shared_library" 1057 | version = "0.1.9" 1058 | source = "registry+https://github.com/rust-lang/crates.io-index" 1059 | checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" 1060 | dependencies = [ 1061 | "lazy_static", 1062 | "libc", 1063 | ] 1064 | 1065 | [[package]] 1066 | name = "slab" 1067 | version = "0.4.2" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1070 | 1071 | [[package]] 1072 | name = "smallvec" 1073 | version = "1.6.1" 1074 | source = "registry+https://github.com/rust-lang/crates.io-index" 1075 | checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" 1076 | 1077 | [[package]] 1078 | name = "smithay-client-toolkit" 1079 | version = "0.12.2" 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" 1081 | checksum = "316e13a3eb853ce7bf72ad3530dc186cb2005c57c521ef5f4ada5ee4eed74de6" 1082 | dependencies = [ 1083 | "andrew", 1084 | "bitflags", 1085 | "calloop", 1086 | "dlib", 1087 | "lazy_static", 1088 | "log", 1089 | "memmap2", 1090 | "nix", 1091 | "wayland-client", 1092 | "wayland-cursor", 1093 | "wayland-protocols", 1094 | ] 1095 | 1096 | [[package]] 1097 | name = "strsim" 1098 | version = "0.9.3" 1099 | source = "registry+https://github.com/rust-lang/crates.io-index" 1100 | checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" 1101 | 1102 | [[package]] 1103 | name = "syn" 1104 | version = "1.0.60" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" 1107 | dependencies = [ 1108 | "proc-macro2", 1109 | "quote", 1110 | "unicode-xid", 1111 | ] 1112 | 1113 | [[package]] 1114 | name = "takeable-option" 1115 | version = "0.5.0" 1116 | source = "registry+https://github.com/rust-lang/crates.io-index" 1117 | checksum = "36ae8932fcfea38b7d3883ae2ab357b0d57a02caaa18ebb4f5ece08beaec4aa0" 1118 | 1119 | [[package]] 1120 | name = "thiserror" 1121 | version = "1.0.23" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146" 1124 | dependencies = [ 1125 | "thiserror-impl", 1126 | ] 1127 | 1128 | [[package]] 1129 | name = "thiserror-impl" 1130 | version = "1.0.23" 1131 | source = "registry+https://github.com/rust-lang/crates.io-index" 1132 | checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1" 1133 | dependencies = [ 1134 | "proc-macro2", 1135 | "quote", 1136 | "syn", 1137 | ] 1138 | 1139 | [[package]] 1140 | name = "toml" 1141 | version = "0.5.8" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" 1144 | dependencies = [ 1145 | "serde", 1146 | ] 1147 | 1148 | [[package]] 1149 | name = "ttf-parser" 1150 | version = "0.6.2" 1151 | source = "registry+https://github.com/rust-lang/crates.io-index" 1152 | checksum = "3e5d7cd7ab3e47dda6e56542f4bbf3824c15234958c6e1bd6aaa347e93499fdc" 1153 | 1154 | [[package]] 1155 | name = "unicode-xid" 1156 | version = "0.2.1" 1157 | source = "registry+https://github.com/rust-lang/crates.io-index" 1158 | checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" 1159 | 1160 | [[package]] 1161 | name = "version_check" 1162 | version = "0.9.2" 1163 | source = "registry+https://github.com/rust-lang/crates.io-index" 1164 | checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" 1165 | 1166 | [[package]] 1167 | name = "walkdir" 1168 | version = "2.3.1" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" 1171 | dependencies = [ 1172 | "same-file", 1173 | "winapi 0.3.9", 1174 | "winapi-util", 1175 | ] 1176 | 1177 | [[package]] 1178 | name = "wasi" 1179 | version = "0.10.2+wasi-snapshot-preview1" 1180 | source = "registry+https://github.com/rust-lang/crates.io-index" 1181 | checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" 1182 | 1183 | [[package]] 1184 | name = "wasm-bindgen" 1185 | version = "0.2.70" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | checksum = "55c0f7123de74f0dab9b7d00fd614e7b19349cd1e2f5252bbe9b1754b59433be" 1188 | dependencies = [ 1189 | "cfg-if 1.0.0", 1190 | "wasm-bindgen-macro", 1191 | ] 1192 | 1193 | [[package]] 1194 | name = "wasm-bindgen-backend" 1195 | version = "0.2.70" 1196 | source = "registry+https://github.com/rust-lang/crates.io-index" 1197 | checksum = "7bc45447f0d4573f3d65720f636bbcc3dd6ce920ed704670118650bcd47764c7" 1198 | dependencies = [ 1199 | "bumpalo", 1200 | "lazy_static", 1201 | "log", 1202 | "proc-macro2", 1203 | "quote", 1204 | "syn", 1205 | "wasm-bindgen-shared", 1206 | ] 1207 | 1208 | [[package]] 1209 | name = "wasm-bindgen-futures" 1210 | version = "0.4.20" 1211 | source = "registry+https://github.com/rust-lang/crates.io-index" 1212 | checksum = "3de431a2910c86679c34283a33f66f4e4abd7e0aec27b6669060148872aadf94" 1213 | dependencies = [ 1214 | "cfg-if 1.0.0", 1215 | "js-sys", 1216 | "wasm-bindgen", 1217 | "web-sys", 1218 | ] 1219 | 1220 | [[package]] 1221 | name = "wasm-bindgen-macro" 1222 | version = "0.2.70" 1223 | source = "registry+https://github.com/rust-lang/crates.io-index" 1224 | checksum = "3b8853882eef39593ad4174dd26fc9865a64e84026d223f63bb2c42affcbba2c" 1225 | dependencies = [ 1226 | "quote", 1227 | "wasm-bindgen-macro-support", 1228 | ] 1229 | 1230 | [[package]] 1231 | name = "wasm-bindgen-macro-support" 1232 | version = "0.2.70" 1233 | source = "registry+https://github.com/rust-lang/crates.io-index" 1234 | checksum = "4133b5e7f2a531fa413b3a1695e925038a05a71cf67e87dafa295cb645a01385" 1235 | dependencies = [ 1236 | "proc-macro2", 1237 | "quote", 1238 | "syn", 1239 | "wasm-bindgen-backend", 1240 | "wasm-bindgen-shared", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "wasm-bindgen-shared" 1245 | version = "0.2.70" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | checksum = "dd4945e4943ae02d15c13962b38a5b1e81eadd4b71214eee75af64a4d6a4fd64" 1248 | 1249 | [[package]] 1250 | name = "wayland-client" 1251 | version = "0.28.3" 1252 | source = "registry+https://github.com/rust-lang/crates.io-index" 1253 | checksum = "bdbdbe01d03b2267809f3ed99495b37395387fde789e0f2ebb78e8b43f75b6d7" 1254 | dependencies = [ 1255 | "bitflags", 1256 | "downcast-rs", 1257 | "libc", 1258 | "nix", 1259 | "scoped-tls", 1260 | "wayland-commons", 1261 | "wayland-scanner", 1262 | "wayland-sys", 1263 | ] 1264 | 1265 | [[package]] 1266 | name = "wayland-commons" 1267 | version = "0.28.3" 1268 | source = "registry+https://github.com/rust-lang/crates.io-index" 1269 | checksum = "480450f76717edd64ad04a4426280d737fc3d10a236b982df7b1aee19f0e2d56" 1270 | dependencies = [ 1271 | "nix", 1272 | "once_cell", 1273 | "smallvec", 1274 | "wayland-sys", 1275 | ] 1276 | 1277 | [[package]] 1278 | name = "wayland-cursor" 1279 | version = "0.28.3" 1280 | source = "registry+https://github.com/rust-lang/crates.io-index" 1281 | checksum = "d6eb122c160223a7660feeaf949d0100281d1279acaaed3720eb3c9894496e5f" 1282 | dependencies = [ 1283 | "nix", 1284 | "wayland-client", 1285 | "xcursor", 1286 | ] 1287 | 1288 | [[package]] 1289 | name = "wayland-egl" 1290 | version = "0.28.3" 1291 | source = "registry+https://github.com/rust-lang/crates.io-index" 1292 | checksum = "c653507447113c967a1aeee413699acb42d96d6302ec967c6d51930eae8aa7f5" 1293 | dependencies = [ 1294 | "wayland-client", 1295 | "wayland-sys", 1296 | ] 1297 | 1298 | [[package]] 1299 | name = "wayland-protocols" 1300 | version = "0.28.3" 1301 | source = "registry+https://github.com/rust-lang/crates.io-index" 1302 | checksum = "319a82b4d3054dd25acc32d9aee0f84fa95b63bc983fffe4703b6b8d47e01a30" 1303 | dependencies = [ 1304 | "bitflags", 1305 | "wayland-client", 1306 | "wayland-commons", 1307 | "wayland-scanner", 1308 | ] 1309 | 1310 | [[package]] 1311 | name = "wayland-scanner" 1312 | version = "0.28.3" 1313 | source = "registry+https://github.com/rust-lang/crates.io-index" 1314 | checksum = "7010ba5767b3fcd350decc59055390b4ebe6bd1b9279a9feb1f1888987f1133d" 1315 | dependencies = [ 1316 | "proc-macro2", 1317 | "quote", 1318 | "xml-rs", 1319 | ] 1320 | 1321 | [[package]] 1322 | name = "wayland-sys" 1323 | version = "0.28.3" 1324 | source = "registry+https://github.com/rust-lang/crates.io-index" 1325 | checksum = "6793834e0c35d11fd96a97297abe03d37be627e1847da52e17d7e0e3b51cc099" 1326 | dependencies = [ 1327 | "dlib", 1328 | "lazy_static", 1329 | "pkg-config", 1330 | ] 1331 | 1332 | [[package]] 1333 | name = "web-sys" 1334 | version = "0.3.47" 1335 | source = "registry+https://github.com/rust-lang/crates.io-index" 1336 | checksum = "c40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3" 1337 | dependencies = [ 1338 | "js-sys", 1339 | "wasm-bindgen", 1340 | ] 1341 | 1342 | [[package]] 1343 | name = "webbrowser" 1344 | version = "0.5.5" 1345 | source = "registry+https://github.com/rust-lang/crates.io-index" 1346 | checksum = "ecad156490d6b620308ed411cfee90d280b3cbd13e189ea0d3fada8acc89158a" 1347 | dependencies = [ 1348 | "web-sys", 1349 | "widestring", 1350 | "winapi 0.3.9", 1351 | ] 1352 | 1353 | [[package]] 1354 | name = "widestring" 1355 | version = "0.4.3" 1356 | source = "registry+https://github.com/rust-lang/crates.io-index" 1357 | checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" 1358 | 1359 | [[package]] 1360 | name = "winapi" 1361 | version = "0.2.8" 1362 | source = "registry+https://github.com/rust-lang/crates.io-index" 1363 | checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1364 | 1365 | [[package]] 1366 | name = "winapi" 1367 | version = "0.3.9" 1368 | source = "registry+https://github.com/rust-lang/crates.io-index" 1369 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1370 | dependencies = [ 1371 | "winapi-i686-pc-windows-gnu", 1372 | "winapi-x86_64-pc-windows-gnu", 1373 | ] 1374 | 1375 | [[package]] 1376 | name = "winapi-build" 1377 | version = "0.1.1" 1378 | source = "registry+https://github.com/rust-lang/crates.io-index" 1379 | checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1380 | 1381 | [[package]] 1382 | name = "winapi-i686-pc-windows-gnu" 1383 | version = "0.4.0" 1384 | source = "registry+https://github.com/rust-lang/crates.io-index" 1385 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1386 | 1387 | [[package]] 1388 | name = "winapi-util" 1389 | version = "0.1.5" 1390 | source = "registry+https://github.com/rust-lang/crates.io-index" 1391 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 1392 | dependencies = [ 1393 | "winapi 0.3.9", 1394 | ] 1395 | 1396 | [[package]] 1397 | name = "winapi-x86_64-pc-windows-gnu" 1398 | version = "0.4.0" 1399 | source = "registry+https://github.com/rust-lang/crates.io-index" 1400 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1401 | 1402 | [[package]] 1403 | name = "winit" 1404 | version = "0.24.0" 1405 | source = "registry+https://github.com/rust-lang/crates.io-index" 1406 | checksum = "da4eda6fce0eb84bd0a33e3c8794eb902e1033d0a1d5a31bc4f19b1b4bbff597" 1407 | dependencies = [ 1408 | "bitflags", 1409 | "cocoa 0.24.0", 1410 | "core-foundation 0.9.1", 1411 | "core-graphics 0.22.2", 1412 | "core-video-sys", 1413 | "dispatch", 1414 | "instant", 1415 | "lazy_static", 1416 | "libc", 1417 | "log", 1418 | "mio", 1419 | "mio-extras", 1420 | "ndk", 1421 | "ndk-glue", 1422 | "ndk-sys", 1423 | "objc", 1424 | "parking_lot", 1425 | "percent-encoding", 1426 | "raw-window-handle", 1427 | "smithay-client-toolkit", 1428 | "wayland-client", 1429 | "winapi 0.3.9", 1430 | "x11-dl", 1431 | ] 1432 | 1433 | [[package]] 1434 | name = "ws2_32-sys" 1435 | version = "0.2.1" 1436 | source = "registry+https://github.com/rust-lang/crates.io-index" 1437 | checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1438 | dependencies = [ 1439 | "winapi 0.2.8", 1440 | "winapi-build", 1441 | ] 1442 | 1443 | [[package]] 1444 | name = "x11-clipboard" 1445 | version = "0.3.3" 1446 | source = "registry+https://github.com/rust-lang/crates.io-index" 1447 | checksum = "89bd49c06c9eb5d98e6ba6536cf64ac9f7ee3a009b2f53996d405b3944f6bcea" 1448 | dependencies = [ 1449 | "xcb", 1450 | ] 1451 | 1452 | [[package]] 1453 | name = "x11-dl" 1454 | version = "2.18.5" 1455 | source = "registry+https://github.com/rust-lang/crates.io-index" 1456 | checksum = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8" 1457 | dependencies = [ 1458 | "lazy_static", 1459 | "libc", 1460 | "maybe-uninit", 1461 | "pkg-config", 1462 | ] 1463 | 1464 | [[package]] 1465 | name = "xcb" 1466 | version = "0.8.2" 1467 | source = "registry+https://github.com/rust-lang/crates.io-index" 1468 | checksum = "5e917a3f24142e9ff8be2414e36c649d47d6cc2ba81f16201cdef96e533e02de" 1469 | dependencies = [ 1470 | "libc", 1471 | "log", 1472 | ] 1473 | 1474 | [[package]] 1475 | name = "xcursor" 1476 | version = "0.3.3" 1477 | source = "registry+https://github.com/rust-lang/crates.io-index" 1478 | checksum = "3a9a231574ae78801646617cefd13bfe94be907c0e4fa979cfd8b770aa3c5d08" 1479 | dependencies = [ 1480 | "nom", 1481 | ] 1482 | 1483 | [[package]] 1484 | name = "xdg" 1485 | version = "2.2.0" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" 1488 | 1489 | [[package]] 1490 | name = "xml-rs" 1491 | version = "0.8.3" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | checksum = "b07db065a5cf61a7e4ba64f29e67db906fb1787316516c4e6e5ff0fea1efcd8a" 1494 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "ab_glyph_rasterizer" 5 | version = "0.1.4" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | checksum = "d9fe5e32de01730eb1f6b7f5b51c17e03e2325bf40a74f754f04f130043affff" 8 | 9 | [[package]] 10 | name = "addr2line" 11 | version = "0.14.1" 12 | source = "registry+https://github.com/rust-lang/crates.io-index" 13 | checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" 14 | dependencies = [ 15 | "gimli", 16 | ] 17 | 18 | [[package]] 19 | name = "adler" 20 | version = "0.2.3" 21 | source = "registry+https://github.com/rust-lang/crates.io-index" 22 | checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" 23 | 24 | [[package]] 25 | name = "ahash" 26 | version = "0.6.3" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | checksum = "796540673305a66d127804eef19ad696f1f204b8c1025aaca4958c17eab32877" 29 | dependencies = [ 30 | "getrandom", 31 | "once_cell", 32 | "version_check", 33 | ] 34 | 35 | [[package]] 36 | name = "andrew" 37 | version = "0.3.1" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "8c4afb09dd642feec8408e33f92f3ffc4052946f6b20f32fb99c1f58cd4fa7cf" 40 | dependencies = [ 41 | "bitflags", 42 | "rusttype", 43 | "walkdir", 44 | "xdg", 45 | "xml-rs", 46 | ] 47 | 48 | [[package]] 49 | name = "android_glue" 50 | version = "0.2.3" 51 | source = "registry+https://github.com/rust-lang/crates.io-index" 52 | checksum = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407" 53 | 54 | [[package]] 55 | name = "atomic_refcell" 56 | version = "0.1.6" 57 | source = "registry+https://github.com/rust-lang/crates.io-index" 58 | checksum = "3bc31dce067eab974c815a9deb95f6217806de7b53685d7fc31f8ccf3fb2539f" 59 | 60 | [[package]] 61 | name = "autocfg" 62 | version = "1.0.1" 63 | source = "registry+https://github.com/rust-lang/crates.io-index" 64 | checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" 65 | 66 | [[package]] 67 | name = "backtrace" 68 | version = "0.3.56" 69 | source = "registry+https://github.com/rust-lang/crates.io-index" 70 | checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" 71 | dependencies = [ 72 | "addr2line", 73 | "cfg-if 1.0.0", 74 | "libc", 75 | "miniz_oxide", 76 | "object", 77 | "rustc-demangle", 78 | ] 79 | 80 | [[package]] 81 | name = "base64" 82 | version = "0.13.0" 83 | source = "registry+https://github.com/rust-lang/crates.io-index" 84 | checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" 85 | 86 | [[package]] 87 | name = "bitflags" 88 | version = "1.2.1" 89 | source = "registry+https://github.com/rust-lang/crates.io-index" 90 | checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 91 | 92 | [[package]] 93 | name = "block" 94 | version = "0.1.6" 95 | source = "registry+https://github.com/rust-lang/crates.io-index" 96 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 97 | 98 | [[package]] 99 | name = "bumpalo" 100 | version = "3.6.0" 101 | source = "registry+https://github.com/rust-lang/crates.io-index" 102 | checksum = "099e596ef14349721d9016f6b80dd3419ea1bf289ab9b44df8e4dfd3a005d5d9" 103 | 104 | [[package]] 105 | name = "calloop" 106 | version = "0.6.5" 107 | source = "registry+https://github.com/rust-lang/crates.io-index" 108 | checksum = "0b036167e76041694579972c28cf4877b4f92da222560ddb49008937b6a6727c" 109 | dependencies = [ 110 | "log", 111 | "nix", 112 | ] 113 | 114 | [[package]] 115 | name = "cc" 116 | version = "1.0.66" 117 | source = "registry+https://github.com/rust-lang/crates.io-index" 118 | checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" 119 | 120 | [[package]] 121 | name = "cfg-if" 122 | version = "0.1.10" 123 | source = "registry+https://github.com/rust-lang/crates.io-index" 124 | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 125 | 126 | [[package]] 127 | name = "cfg-if" 128 | version = "1.0.0" 129 | source = "registry+https://github.com/rust-lang/crates.io-index" 130 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 131 | 132 | [[package]] 133 | name = "cgl" 134 | version = "0.3.2" 135 | source = "registry+https://github.com/rust-lang/crates.io-index" 136 | checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" 137 | dependencies = [ 138 | "libc", 139 | ] 140 | 141 | [[package]] 142 | name = "chunked_transfer" 143 | version = "1.4.0" 144 | source = "registry+https://github.com/rust-lang/crates.io-index" 145 | checksum = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e" 146 | 147 | [[package]] 148 | name = "clipboard" 149 | version = "0.5.0" 150 | source = "registry+https://github.com/rust-lang/crates.io-index" 151 | checksum = "25a904646c0340239dcf7c51677b33928bf24fdf424b79a57909c0109075b2e7" 152 | dependencies = [ 153 | "clipboard-win", 154 | "objc", 155 | "objc-foundation", 156 | "objc_id", 157 | "x11-clipboard", 158 | ] 159 | 160 | [[package]] 161 | name = "clipboard-win" 162 | version = "2.2.0" 163 | source = "registry+https://github.com/rust-lang/crates.io-index" 164 | checksum = "e3a093d6fed558e5fe24c3dfc85a68bb68f1c824f440d3ba5aca189e2998786b" 165 | dependencies = [ 166 | "winapi 0.3.9", 167 | ] 168 | 169 | [[package]] 170 | name = "cocoa" 171 | version = "0.23.0" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | checksum = "c54201c07dcf3a5ca33fececb8042aed767ee4bfd5a0235a8ceabcda956044b2" 174 | dependencies = [ 175 | "bitflags", 176 | "block", 177 | "cocoa-foundation", 178 | "core-foundation 0.9.1", 179 | "core-graphics 0.22.2", 180 | "foreign-types", 181 | "libc", 182 | "objc", 183 | ] 184 | 185 | [[package]] 186 | name = "cocoa" 187 | version = "0.24.0" 188 | source = "registry+https://github.com/rust-lang/crates.io-index" 189 | checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" 190 | dependencies = [ 191 | "bitflags", 192 | "block", 193 | "cocoa-foundation", 194 | "core-foundation 0.9.1", 195 | "core-graphics 0.22.2", 196 | "foreign-types", 197 | "libc", 198 | "objc", 199 | ] 200 | 201 | [[package]] 202 | name = "cocoa-foundation" 203 | version = "0.1.0" 204 | source = "registry+https://github.com/rust-lang/crates.io-index" 205 | checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" 206 | dependencies = [ 207 | "bitflags", 208 | "block", 209 | "core-foundation 0.9.1", 210 | "core-graphics-types", 211 | "foreign-types", 212 | "libc", 213 | "objc", 214 | ] 215 | 216 | [[package]] 217 | name = "core-foundation" 218 | version = "0.7.0" 219 | source = "registry+https://github.com/rust-lang/crates.io-index" 220 | checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" 221 | dependencies = [ 222 | "core-foundation-sys 0.7.0", 223 | "libc", 224 | ] 225 | 226 | [[package]] 227 | name = "core-foundation" 228 | version = "0.9.1" 229 | source = "registry+https://github.com/rust-lang/crates.io-index" 230 | checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" 231 | dependencies = [ 232 | "core-foundation-sys 0.8.2", 233 | "libc", 234 | ] 235 | 236 | [[package]] 237 | name = "core-foundation-sys" 238 | version = "0.7.0" 239 | source = "registry+https://github.com/rust-lang/crates.io-index" 240 | checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" 241 | 242 | [[package]] 243 | name = "core-foundation-sys" 244 | version = "0.8.2" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" 247 | 248 | [[package]] 249 | name = "core-graphics" 250 | version = "0.19.2" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" 253 | dependencies = [ 254 | "bitflags", 255 | "core-foundation 0.7.0", 256 | "foreign-types", 257 | "libc", 258 | ] 259 | 260 | [[package]] 261 | name = "core-graphics" 262 | version = "0.22.2" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "269f35f69b542b80e736a20a89a05215c0ce80c2c03c514abb2e318b78379d86" 265 | dependencies = [ 266 | "bitflags", 267 | "core-foundation 0.9.1", 268 | "core-graphics-types", 269 | "foreign-types", 270 | "libc", 271 | ] 272 | 273 | [[package]] 274 | name = "core-graphics-types" 275 | version = "0.1.1" 276 | source = "registry+https://github.com/rust-lang/crates.io-index" 277 | checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" 278 | dependencies = [ 279 | "bitflags", 280 | "core-foundation 0.9.1", 281 | "foreign-types", 282 | "libc", 283 | ] 284 | 285 | [[package]] 286 | name = "core-video-sys" 287 | version = "0.1.4" 288 | source = "registry+https://github.com/rust-lang/crates.io-index" 289 | checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" 290 | dependencies = [ 291 | "cfg-if 0.1.10", 292 | "core-foundation-sys 0.7.0", 293 | "core-graphics 0.19.2", 294 | "libc", 295 | "objc", 296 | ] 297 | 298 | [[package]] 299 | name = "darling" 300 | version = "0.10.2" 301 | source = "registry+https://github.com/rust-lang/crates.io-index" 302 | checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" 303 | dependencies = [ 304 | "darling_core", 305 | "darling_macro", 306 | ] 307 | 308 | [[package]] 309 | name = "darling_core" 310 | version = "0.10.2" 311 | source = "registry+https://github.com/rust-lang/crates.io-index" 312 | checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" 313 | dependencies = [ 314 | "fnv", 315 | "ident_case", 316 | "proc-macro2", 317 | "quote", 318 | "strsim", 319 | "syn", 320 | ] 321 | 322 | [[package]] 323 | name = "darling_macro" 324 | version = "0.10.2" 325 | source = "registry+https://github.com/rust-lang/crates.io-index" 326 | checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" 327 | dependencies = [ 328 | "darling_core", 329 | "quote", 330 | "syn", 331 | ] 332 | 333 | [[package]] 334 | name = "derivative" 335 | version = "2.2.0" 336 | source = "registry+https://github.com/rust-lang/crates.io-index" 337 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 338 | dependencies = [ 339 | "proc-macro2", 340 | "quote", 341 | "syn", 342 | ] 343 | 344 | [[package]] 345 | name = "directories-next" 346 | version = "2.0.0" 347 | source = "registry+https://github.com/rust-lang/crates.io-index" 348 | checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" 349 | dependencies = [ 350 | "cfg-if 1.0.0", 351 | "dirs-sys-next", 352 | ] 353 | 354 | [[package]] 355 | name = "dirs-sys-next" 356 | version = "0.1.2" 357 | source = "registry+https://github.com/rust-lang/crates.io-index" 358 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 359 | dependencies = [ 360 | "libc", 361 | "redox_users", 362 | "winapi 0.3.9", 363 | ] 364 | 365 | [[package]] 366 | name = "dispatch" 367 | version = "0.2.0" 368 | source = "registry+https://github.com/rust-lang/crates.io-index" 369 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 370 | 371 | [[package]] 372 | name = "dlib" 373 | version = "0.4.2" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | checksum = "b11f15d1e3268f140f68d390637d5e76d849782d971ae7063e0da69fe9709a76" 376 | dependencies = [ 377 | "libloading", 378 | ] 379 | 380 | [[package]] 381 | name = "downcast-rs" 382 | version = "1.2.0" 383 | source = "registry+https://github.com/rust-lang/crates.io-index" 384 | checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" 385 | 386 | [[package]] 387 | name = "eframe" 388 | version = "0.8.0" 389 | source = "git+https://github.com/emilk/egui?branch=master#2d9d06dbfffd14ab267a6a87f131fd6c3961af3c" 390 | dependencies = [ 391 | "egui", 392 | "egui_glium", 393 | "egui_web", 394 | "epi", 395 | ] 396 | 397 | [[package]] 398 | name = "egui" 399 | version = "0.8.0" 400 | source = "git+https://github.com/emilk/egui?branch=master#2d9d06dbfffd14ab267a6a87f131fd6c3961af3c" 401 | dependencies = [ 402 | "epaint", 403 | "serde", 404 | ] 405 | 406 | [[package]] 407 | name = "egui_glium" 408 | version = "0.8.0" 409 | source = "git+https://github.com/emilk/egui?branch=master#2d9d06dbfffd14ab267a6a87f131fd6c3961af3c" 410 | dependencies = [ 411 | "clipboard", 412 | "directories-next", 413 | "egui", 414 | "epi", 415 | "glium", 416 | "serde", 417 | "serde_json", 418 | "ureq", 419 | "webbrowser", 420 | ] 421 | 422 | [[package]] 423 | name = "egui_template" 424 | version = "0.1.0" 425 | dependencies = [ 426 | "eframe", 427 | "eplot", 428 | "serde", 429 | ] 430 | 431 | [[package]] 432 | name = "egui_web" 433 | version = "0.8.0" 434 | source = "git+https://github.com/emilk/egui?branch=master#2d9d06dbfffd14ab267a6a87f131fd6c3961af3c" 435 | dependencies = [ 436 | "egui", 437 | "epi", 438 | "js-sys", 439 | "serde", 440 | "serde_json", 441 | "wasm-bindgen", 442 | "wasm-bindgen-futures", 443 | "web-sys", 444 | ] 445 | 446 | [[package]] 447 | name = "emath" 448 | version = "0.8.0" 449 | source = "git+https://github.com/emilk/egui?branch=master#2d9d06dbfffd14ab267a6a87f131fd6c3961af3c" 450 | dependencies = [ 451 | "serde", 452 | ] 453 | 454 | [[package]] 455 | name = "epaint" 456 | version = "0.8.0" 457 | source = "git+https://github.com/emilk/egui?branch=master#2d9d06dbfffd14ab267a6a87f131fd6c3961af3c" 458 | dependencies = [ 459 | "ahash", 460 | "atomic_refcell", 461 | "emath", 462 | "rusttype", 463 | "serde", 464 | ] 465 | 466 | [[package]] 467 | name = "epi" 468 | version = "0.8.0" 469 | source = "git+https://github.com/emilk/egui?branch=master#2d9d06dbfffd14ab267a6a87f131fd6c3961af3c" 470 | dependencies = [ 471 | "egui", 472 | "serde", 473 | "serde_json", 474 | ] 475 | 476 | [[package]] 477 | name = "eplot" 478 | version = "0.1.0" 479 | dependencies = [ 480 | "eframe", 481 | ] 482 | 483 | [[package]] 484 | name = "fnv" 485 | version = "1.0.7" 486 | source = "registry+https://github.com/rust-lang/crates.io-index" 487 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 488 | 489 | [[package]] 490 | name = "foreign-types" 491 | version = "0.3.2" 492 | source = "registry+https://github.com/rust-lang/crates.io-index" 493 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 494 | dependencies = [ 495 | "foreign-types-shared", 496 | ] 497 | 498 | [[package]] 499 | name = "foreign-types-shared" 500 | version = "0.1.1" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 503 | 504 | [[package]] 505 | name = "form_urlencoded" 506 | version = "1.0.0" 507 | source = "registry+https://github.com/rust-lang/crates.io-index" 508 | checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" 509 | dependencies = [ 510 | "matches", 511 | "percent-encoding", 512 | ] 513 | 514 | [[package]] 515 | name = "fuchsia-zircon" 516 | version = "0.3.3" 517 | source = "registry+https://github.com/rust-lang/crates.io-index" 518 | checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 519 | dependencies = [ 520 | "bitflags", 521 | "fuchsia-zircon-sys", 522 | ] 523 | 524 | [[package]] 525 | name = "fuchsia-zircon-sys" 526 | version = "0.3.3" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 529 | 530 | [[package]] 531 | name = "getrandom" 532 | version = "0.2.2" 533 | source = "registry+https://github.com/rust-lang/crates.io-index" 534 | checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" 535 | dependencies = [ 536 | "cfg-if 1.0.0", 537 | "libc", 538 | "wasi", 539 | ] 540 | 541 | [[package]] 542 | name = "gimli" 543 | version = "0.23.0" 544 | source = "registry+https://github.com/rust-lang/crates.io-index" 545 | checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" 546 | 547 | [[package]] 548 | name = "gl_generator" 549 | version = "0.14.0" 550 | source = "registry+https://github.com/rust-lang/crates.io-index" 551 | checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 552 | dependencies = [ 553 | "khronos_api", 554 | "log", 555 | "xml-rs", 556 | ] 557 | 558 | [[package]] 559 | name = "glium" 560 | version = "0.29.0" 561 | source = "registry+https://github.com/rust-lang/crates.io-index" 562 | checksum = "77623b4b688e68ec5ce256dd45614e374d4bee6ecec964b790733bf2c05f8732" 563 | dependencies = [ 564 | "backtrace", 565 | "fnv", 566 | "gl_generator", 567 | "glutin", 568 | "lazy_static", 569 | "memoffset", 570 | "smallvec", 571 | "takeable-option", 572 | ] 573 | 574 | [[package]] 575 | name = "glutin" 576 | version = "0.26.0" 577 | source = "registry+https://github.com/rust-lang/crates.io-index" 578 | checksum = "1ae1cbb9176b9151c4ce03f012e3cd1c6c18c4be79edeaeb3d99f5d8085c5fa3" 579 | dependencies = [ 580 | "android_glue", 581 | "cgl", 582 | "cocoa 0.23.0", 583 | "core-foundation 0.9.1", 584 | "glutin_egl_sys", 585 | "glutin_emscripten_sys", 586 | "glutin_gles2_sys", 587 | "glutin_glx_sys", 588 | "glutin_wgl_sys", 589 | "lazy_static", 590 | "libloading", 591 | "log", 592 | "objc", 593 | "osmesa-sys", 594 | "parking_lot", 595 | "wayland-client", 596 | "wayland-egl", 597 | "winapi 0.3.9", 598 | "winit", 599 | ] 600 | 601 | [[package]] 602 | name = "glutin_egl_sys" 603 | version = "0.1.5" 604 | source = "registry+https://github.com/rust-lang/crates.io-index" 605 | checksum = "2abb6aa55523480c4adc5a56bbaa249992e2dddb2fc63dc96e04a3355364c211" 606 | dependencies = [ 607 | "gl_generator", 608 | "winapi 0.3.9", 609 | ] 610 | 611 | [[package]] 612 | name = "glutin_emscripten_sys" 613 | version = "0.1.1" 614 | source = "registry+https://github.com/rust-lang/crates.io-index" 615 | checksum = "80de4146df76e8a6c32b03007bc764ff3249dcaeb4f675d68a06caf1bac363f1" 616 | 617 | [[package]] 618 | name = "glutin_gles2_sys" 619 | version = "0.1.5" 620 | source = "registry+https://github.com/rust-lang/crates.io-index" 621 | checksum = "e8094e708b730a7c8a1954f4f8a31880af00eb8a1c5b5bf85d28a0a3c6d69103" 622 | dependencies = [ 623 | "gl_generator", 624 | "objc", 625 | ] 626 | 627 | [[package]] 628 | name = "glutin_glx_sys" 629 | version = "0.1.7" 630 | source = "registry+https://github.com/rust-lang/crates.io-index" 631 | checksum = "7e393c8fc02b807459410429150e9c4faffdb312d59b8c038566173c81991351" 632 | dependencies = [ 633 | "gl_generator", 634 | "x11-dl", 635 | ] 636 | 637 | [[package]] 638 | name = "glutin_wgl_sys" 639 | version = "0.1.5" 640 | source = "registry+https://github.com/rust-lang/crates.io-index" 641 | checksum = "3da5951a1569dbab865c6f2a863efafff193a93caf05538d193e9e3816d21696" 642 | dependencies = [ 643 | "gl_generator", 644 | ] 645 | 646 | [[package]] 647 | name = "ident_case" 648 | version = "1.0.1" 649 | source = "registry+https://github.com/rust-lang/crates.io-index" 650 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 651 | 652 | [[package]] 653 | name = "idna" 654 | version = "0.2.1" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | checksum = "de910d521f7cc3135c4de8db1cb910e0b5ed1dc6f57c381cd07e8e661ce10094" 657 | dependencies = [ 658 | "matches", 659 | "unicode-bidi", 660 | "unicode-normalization", 661 | ] 662 | 663 | [[package]] 664 | name = "instant" 665 | version = "0.1.9" 666 | source = "registry+https://github.com/rust-lang/crates.io-index" 667 | checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" 668 | dependencies = [ 669 | "cfg-if 1.0.0", 670 | ] 671 | 672 | [[package]] 673 | name = "iovec" 674 | version = "0.1.4" 675 | source = "registry+https://github.com/rust-lang/crates.io-index" 676 | checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 677 | dependencies = [ 678 | "libc", 679 | ] 680 | 681 | [[package]] 682 | name = "itoa" 683 | version = "0.4.7" 684 | source = "registry+https://github.com/rust-lang/crates.io-index" 685 | checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" 686 | 687 | [[package]] 688 | name = "jni-sys" 689 | version = "0.3.0" 690 | source = "registry+https://github.com/rust-lang/crates.io-index" 691 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 692 | 693 | [[package]] 694 | name = "js-sys" 695 | version = "0.3.47" 696 | source = "registry+https://github.com/rust-lang/crates.io-index" 697 | checksum = "5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65" 698 | dependencies = [ 699 | "wasm-bindgen", 700 | ] 701 | 702 | [[package]] 703 | name = "kernel32-sys" 704 | version = "0.2.2" 705 | source = "registry+https://github.com/rust-lang/crates.io-index" 706 | checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 707 | dependencies = [ 708 | "winapi 0.2.8", 709 | "winapi-build", 710 | ] 711 | 712 | [[package]] 713 | name = "khronos_api" 714 | version = "3.1.0" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 717 | 718 | [[package]] 719 | name = "lazy_static" 720 | version = "1.4.0" 721 | source = "registry+https://github.com/rust-lang/crates.io-index" 722 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 723 | 724 | [[package]] 725 | name = "lazycell" 726 | version = "1.3.0" 727 | source = "registry+https://github.com/rust-lang/crates.io-index" 728 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 729 | 730 | [[package]] 731 | name = "libc" 732 | version = "0.2.85" 733 | source = "registry+https://github.com/rust-lang/crates.io-index" 734 | checksum = "7ccac4b00700875e6a07c6cde370d44d32fa01c5a65cdd2fca6858c479d28bb3" 735 | 736 | [[package]] 737 | name = "libloading" 738 | version = "0.6.7" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" 741 | dependencies = [ 742 | "cfg-if 1.0.0", 743 | "winapi 0.3.9", 744 | ] 745 | 746 | [[package]] 747 | name = "lock_api" 748 | version = "0.4.2" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" 751 | dependencies = [ 752 | "scopeguard", 753 | ] 754 | 755 | [[package]] 756 | name = "log" 757 | version = "0.4.14" 758 | source = "registry+https://github.com/rust-lang/crates.io-index" 759 | checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" 760 | dependencies = [ 761 | "cfg-if 1.0.0", 762 | ] 763 | 764 | [[package]] 765 | name = "malloc_buf" 766 | version = "0.0.6" 767 | source = "registry+https://github.com/rust-lang/crates.io-index" 768 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 769 | dependencies = [ 770 | "libc", 771 | ] 772 | 773 | [[package]] 774 | name = "matches" 775 | version = "0.1.8" 776 | source = "registry+https://github.com/rust-lang/crates.io-index" 777 | checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 778 | 779 | [[package]] 780 | name = "maybe-uninit" 781 | version = "2.0.0" 782 | source = "registry+https://github.com/rust-lang/crates.io-index" 783 | checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" 784 | 785 | [[package]] 786 | name = "memchr" 787 | version = "2.3.4" 788 | source = "registry+https://github.com/rust-lang/crates.io-index" 789 | checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" 790 | 791 | [[package]] 792 | name = "memmap2" 793 | version = "0.1.0" 794 | source = "registry+https://github.com/rust-lang/crates.io-index" 795 | checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" 796 | dependencies = [ 797 | "libc", 798 | ] 799 | 800 | [[package]] 801 | name = "memoffset" 802 | version = "0.6.1" 803 | source = "registry+https://github.com/rust-lang/crates.io-index" 804 | checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" 805 | dependencies = [ 806 | "autocfg", 807 | ] 808 | 809 | [[package]] 810 | name = "miniz_oxide" 811 | version = "0.4.3" 812 | source = "registry+https://github.com/rust-lang/crates.io-index" 813 | checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" 814 | dependencies = [ 815 | "adler", 816 | "autocfg", 817 | ] 818 | 819 | [[package]] 820 | name = "mio" 821 | version = "0.6.23" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" 824 | dependencies = [ 825 | "cfg-if 0.1.10", 826 | "fuchsia-zircon", 827 | "fuchsia-zircon-sys", 828 | "iovec", 829 | "kernel32-sys", 830 | "libc", 831 | "log", 832 | "miow", 833 | "net2", 834 | "slab", 835 | "winapi 0.2.8", 836 | ] 837 | 838 | [[package]] 839 | name = "mio-extras" 840 | version = "2.0.6" 841 | source = "registry+https://github.com/rust-lang/crates.io-index" 842 | checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" 843 | dependencies = [ 844 | "lazycell", 845 | "log", 846 | "mio", 847 | "slab", 848 | ] 849 | 850 | [[package]] 851 | name = "miow" 852 | version = "0.2.2" 853 | source = "registry+https://github.com/rust-lang/crates.io-index" 854 | checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" 855 | dependencies = [ 856 | "kernel32-sys", 857 | "net2", 858 | "winapi 0.2.8", 859 | "ws2_32-sys", 860 | ] 861 | 862 | [[package]] 863 | name = "ndk" 864 | version = "0.2.1" 865 | source = "registry+https://github.com/rust-lang/crates.io-index" 866 | checksum = "5eb167c1febed0a496639034d0c76b3b74263636045db5489eee52143c246e73" 867 | dependencies = [ 868 | "jni-sys", 869 | "ndk-sys", 870 | "num_enum", 871 | "thiserror", 872 | ] 873 | 874 | [[package]] 875 | name = "ndk-glue" 876 | version = "0.2.1" 877 | source = "registry+https://github.com/rust-lang/crates.io-index" 878 | checksum = "bdf399b8b7a39c6fb153c4ec32c72fd5fe789df24a647f229c239aa7adb15241" 879 | dependencies = [ 880 | "lazy_static", 881 | "libc", 882 | "log", 883 | "ndk", 884 | "ndk-macro", 885 | "ndk-sys", 886 | ] 887 | 888 | [[package]] 889 | name = "ndk-macro" 890 | version = "0.2.0" 891 | source = "registry+https://github.com/rust-lang/crates.io-index" 892 | checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" 893 | dependencies = [ 894 | "darling", 895 | "proc-macro-crate", 896 | "proc-macro2", 897 | "quote", 898 | "syn", 899 | ] 900 | 901 | [[package]] 902 | name = "ndk-sys" 903 | version = "0.2.1" 904 | source = "registry+https://github.com/rust-lang/crates.io-index" 905 | checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d" 906 | 907 | [[package]] 908 | name = "net2" 909 | version = "0.2.37" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" 912 | dependencies = [ 913 | "cfg-if 0.1.10", 914 | "libc", 915 | "winapi 0.3.9", 916 | ] 917 | 918 | [[package]] 919 | name = "nix" 920 | version = "0.18.0" 921 | source = "registry+https://github.com/rust-lang/crates.io-index" 922 | checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" 923 | dependencies = [ 924 | "bitflags", 925 | "cc", 926 | "cfg-if 0.1.10", 927 | "libc", 928 | ] 929 | 930 | [[package]] 931 | name = "nom" 932 | version = "6.1.0" 933 | source = "registry+https://github.com/rust-lang/crates.io-index" 934 | checksum = "ab6f70b46d6325aa300f1c7bb3d470127dfc27806d8ea6bf294ee0ce643ce2b1" 935 | dependencies = [ 936 | "memchr", 937 | "version_check", 938 | ] 939 | 940 | [[package]] 941 | name = "num_enum" 942 | version = "0.4.3" 943 | source = "registry+https://github.com/rust-lang/crates.io-index" 944 | checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" 945 | dependencies = [ 946 | "derivative", 947 | "num_enum_derive", 948 | ] 949 | 950 | [[package]] 951 | name = "num_enum_derive" 952 | version = "0.4.3" 953 | source = "registry+https://github.com/rust-lang/crates.io-index" 954 | checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" 955 | dependencies = [ 956 | "proc-macro-crate", 957 | "proc-macro2", 958 | "quote", 959 | "syn", 960 | ] 961 | 962 | [[package]] 963 | name = "objc" 964 | version = "0.2.7" 965 | source = "registry+https://github.com/rust-lang/crates.io-index" 966 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 967 | dependencies = [ 968 | "malloc_buf", 969 | ] 970 | 971 | [[package]] 972 | name = "objc-foundation" 973 | version = "0.1.1" 974 | source = "registry+https://github.com/rust-lang/crates.io-index" 975 | checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 976 | dependencies = [ 977 | "block", 978 | "objc", 979 | "objc_id", 980 | ] 981 | 982 | [[package]] 983 | name = "objc_id" 984 | version = "0.1.1" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 987 | dependencies = [ 988 | "objc", 989 | ] 990 | 991 | [[package]] 992 | name = "object" 993 | version = "0.23.0" 994 | source = "registry+https://github.com/rust-lang/crates.io-index" 995 | checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" 996 | 997 | [[package]] 998 | name = "once_cell" 999 | version = "1.5.2" 1000 | source = "registry+https://github.com/rust-lang/crates.io-index" 1001 | checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" 1002 | 1003 | [[package]] 1004 | name = "osmesa-sys" 1005 | version = "0.1.2" 1006 | source = "registry+https://github.com/rust-lang/crates.io-index" 1007 | checksum = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" 1008 | dependencies = [ 1009 | "shared_library", 1010 | ] 1011 | 1012 | [[package]] 1013 | name = "owned_ttf_parser" 1014 | version = "0.6.0" 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" 1016 | checksum = "9f923fb806c46266c02ab4a5b239735c144bdeda724a50ed058e5226f594cde3" 1017 | dependencies = [ 1018 | "ttf-parser", 1019 | ] 1020 | 1021 | [[package]] 1022 | name = "parking_lot" 1023 | version = "0.11.1" 1024 | source = "registry+https://github.com/rust-lang/crates.io-index" 1025 | checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" 1026 | dependencies = [ 1027 | "instant", 1028 | "lock_api", 1029 | "parking_lot_core", 1030 | ] 1031 | 1032 | [[package]] 1033 | name = "parking_lot_core" 1034 | version = "0.8.2" 1035 | source = "registry+https://github.com/rust-lang/crates.io-index" 1036 | checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272" 1037 | dependencies = [ 1038 | "cfg-if 1.0.0", 1039 | "instant", 1040 | "libc", 1041 | "redox_syscall 0.1.57", 1042 | "smallvec", 1043 | "winapi 0.3.9", 1044 | ] 1045 | 1046 | [[package]] 1047 | name = "percent-encoding" 1048 | version = "2.1.0" 1049 | source = "registry+https://github.com/rust-lang/crates.io-index" 1050 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 1051 | 1052 | [[package]] 1053 | name = "pkg-config" 1054 | version = "0.3.19" 1055 | source = "registry+https://github.com/rust-lang/crates.io-index" 1056 | checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" 1057 | 1058 | [[package]] 1059 | name = "proc-macro-crate" 1060 | version = "0.1.5" 1061 | source = "registry+https://github.com/rust-lang/crates.io-index" 1062 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 1063 | dependencies = [ 1064 | "toml", 1065 | ] 1066 | 1067 | [[package]] 1068 | name = "proc-macro2" 1069 | version = "1.0.24" 1070 | source = "registry+https://github.com/rust-lang/crates.io-index" 1071 | checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" 1072 | dependencies = [ 1073 | "unicode-xid", 1074 | ] 1075 | 1076 | [[package]] 1077 | name = "quote" 1078 | version = "1.0.8" 1079 | source = "registry+https://github.com/rust-lang/crates.io-index" 1080 | checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" 1081 | dependencies = [ 1082 | "proc-macro2", 1083 | ] 1084 | 1085 | [[package]] 1086 | name = "raw-window-handle" 1087 | version = "0.3.3" 1088 | source = "registry+https://github.com/rust-lang/crates.io-index" 1089 | checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" 1090 | dependencies = [ 1091 | "libc", 1092 | ] 1093 | 1094 | [[package]] 1095 | name = "redox_syscall" 1096 | version = "0.1.57" 1097 | source = "registry+https://github.com/rust-lang/crates.io-index" 1098 | checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" 1099 | 1100 | [[package]] 1101 | name = "redox_syscall" 1102 | version = "0.2.4" 1103 | source = "registry+https://github.com/rust-lang/crates.io-index" 1104 | checksum = "05ec8ca9416c5ea37062b502703cd7fcb207736bc294f6e0cf367ac6fc234570" 1105 | dependencies = [ 1106 | "bitflags", 1107 | ] 1108 | 1109 | [[package]] 1110 | name = "redox_users" 1111 | version = "0.4.0" 1112 | source = "registry+https://github.com/rust-lang/crates.io-index" 1113 | checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" 1114 | dependencies = [ 1115 | "getrandom", 1116 | "redox_syscall 0.2.4", 1117 | ] 1118 | 1119 | [[package]] 1120 | name = "ring" 1121 | version = "0.16.20" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 1124 | dependencies = [ 1125 | "cc", 1126 | "libc", 1127 | "once_cell", 1128 | "spin", 1129 | "untrusted", 1130 | "web-sys", 1131 | "winapi 0.3.9", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "rustc-demangle" 1136 | version = "0.1.18" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" 1139 | 1140 | [[package]] 1141 | name = "rustls" 1142 | version = "0.19.0" 1143 | source = "registry+https://github.com/rust-lang/crates.io-index" 1144 | checksum = "064fd21ff87c6e87ed4506e68beb42459caa4a0e2eb144932e6776768556980b" 1145 | dependencies = [ 1146 | "base64", 1147 | "log", 1148 | "ring", 1149 | "sct", 1150 | "webpki", 1151 | ] 1152 | 1153 | [[package]] 1154 | name = "rusttype" 1155 | version = "0.9.2" 1156 | source = "registry+https://github.com/rust-lang/crates.io-index" 1157 | checksum = "dc7c727aded0be18c5b80c1640eae0ac8e396abf6fa8477d96cb37d18ee5ec59" 1158 | dependencies = [ 1159 | "ab_glyph_rasterizer", 1160 | "owned_ttf_parser", 1161 | ] 1162 | 1163 | [[package]] 1164 | name = "ryu" 1165 | version = "1.0.5" 1166 | source = "registry+https://github.com/rust-lang/crates.io-index" 1167 | checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" 1168 | 1169 | [[package]] 1170 | name = "same-file" 1171 | version = "1.0.6" 1172 | source = "registry+https://github.com/rust-lang/crates.io-index" 1173 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 1174 | dependencies = [ 1175 | "winapi-util", 1176 | ] 1177 | 1178 | [[package]] 1179 | name = "scoped-tls" 1180 | version = "1.0.0" 1181 | source = "registry+https://github.com/rust-lang/crates.io-index" 1182 | checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" 1183 | 1184 | [[package]] 1185 | name = "scopeguard" 1186 | version = "1.1.0" 1187 | source = "registry+https://github.com/rust-lang/crates.io-index" 1188 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1189 | 1190 | [[package]] 1191 | name = "sct" 1192 | version = "0.6.0" 1193 | source = "registry+https://github.com/rust-lang/crates.io-index" 1194 | checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" 1195 | dependencies = [ 1196 | "ring", 1197 | "untrusted", 1198 | ] 1199 | 1200 | [[package]] 1201 | name = "serde" 1202 | version = "1.0.123" 1203 | source = "registry+https://github.com/rust-lang/crates.io-index" 1204 | checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae" 1205 | dependencies = [ 1206 | "serde_derive", 1207 | ] 1208 | 1209 | [[package]] 1210 | name = "serde_derive" 1211 | version = "1.0.123" 1212 | source = "registry+https://github.com/rust-lang/crates.io-index" 1213 | checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31" 1214 | dependencies = [ 1215 | "proc-macro2", 1216 | "quote", 1217 | "syn", 1218 | ] 1219 | 1220 | [[package]] 1221 | name = "serde_json" 1222 | version = "1.0.61" 1223 | source = "registry+https://github.com/rust-lang/crates.io-index" 1224 | checksum = "4fceb2595057b6891a4ee808f70054bd2d12f0e97f1cbb78689b59f676df325a" 1225 | dependencies = [ 1226 | "itoa", 1227 | "ryu", 1228 | "serde", 1229 | ] 1230 | 1231 | [[package]] 1232 | name = "shared_library" 1233 | version = "0.1.9" 1234 | source = "registry+https://github.com/rust-lang/crates.io-index" 1235 | checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" 1236 | dependencies = [ 1237 | "lazy_static", 1238 | "libc", 1239 | ] 1240 | 1241 | [[package]] 1242 | name = "slab" 1243 | version = "0.4.2" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1246 | 1247 | [[package]] 1248 | name = "smallvec" 1249 | version = "1.6.1" 1250 | source = "registry+https://github.com/rust-lang/crates.io-index" 1251 | checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" 1252 | 1253 | [[package]] 1254 | name = "smithay-client-toolkit" 1255 | version = "0.12.2" 1256 | source = "registry+https://github.com/rust-lang/crates.io-index" 1257 | checksum = "316e13a3eb853ce7bf72ad3530dc186cb2005c57c521ef5f4ada5ee4eed74de6" 1258 | dependencies = [ 1259 | "andrew", 1260 | "bitflags", 1261 | "calloop", 1262 | "dlib", 1263 | "lazy_static", 1264 | "log", 1265 | "memmap2", 1266 | "nix", 1267 | "wayland-client", 1268 | "wayland-cursor", 1269 | "wayland-protocols", 1270 | ] 1271 | 1272 | [[package]] 1273 | name = "spin" 1274 | version = "0.5.2" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 1277 | 1278 | [[package]] 1279 | name = "strsim" 1280 | version = "0.9.3" 1281 | source = "registry+https://github.com/rust-lang/crates.io-index" 1282 | checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" 1283 | 1284 | [[package]] 1285 | name = "syn" 1286 | version = "1.0.60" 1287 | source = "registry+https://github.com/rust-lang/crates.io-index" 1288 | checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" 1289 | dependencies = [ 1290 | "proc-macro2", 1291 | "quote", 1292 | "unicode-xid", 1293 | ] 1294 | 1295 | [[package]] 1296 | name = "takeable-option" 1297 | version = "0.5.0" 1298 | source = "registry+https://github.com/rust-lang/crates.io-index" 1299 | checksum = "36ae8932fcfea38b7d3883ae2ab357b0d57a02caaa18ebb4f5ece08beaec4aa0" 1300 | 1301 | [[package]] 1302 | name = "thiserror" 1303 | version = "1.0.23" 1304 | source = "registry+https://github.com/rust-lang/crates.io-index" 1305 | checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146" 1306 | dependencies = [ 1307 | "thiserror-impl", 1308 | ] 1309 | 1310 | [[package]] 1311 | name = "thiserror-impl" 1312 | version = "1.0.23" 1313 | source = "registry+https://github.com/rust-lang/crates.io-index" 1314 | checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1" 1315 | dependencies = [ 1316 | "proc-macro2", 1317 | "quote", 1318 | "syn", 1319 | ] 1320 | 1321 | [[package]] 1322 | name = "tinyvec" 1323 | version = "1.1.1" 1324 | source = "registry+https://github.com/rust-lang/crates.io-index" 1325 | checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" 1326 | dependencies = [ 1327 | "tinyvec_macros", 1328 | ] 1329 | 1330 | [[package]] 1331 | name = "tinyvec_macros" 1332 | version = "0.1.0" 1333 | source = "registry+https://github.com/rust-lang/crates.io-index" 1334 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 1335 | 1336 | [[package]] 1337 | name = "toml" 1338 | version = "0.5.8" 1339 | source = "registry+https://github.com/rust-lang/crates.io-index" 1340 | checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" 1341 | dependencies = [ 1342 | "serde", 1343 | ] 1344 | 1345 | [[package]] 1346 | name = "ttf-parser" 1347 | version = "0.6.2" 1348 | source = "registry+https://github.com/rust-lang/crates.io-index" 1349 | checksum = "3e5d7cd7ab3e47dda6e56542f4bbf3824c15234958c6e1bd6aaa347e93499fdc" 1350 | 1351 | [[package]] 1352 | name = "unicode-bidi" 1353 | version = "0.3.4" 1354 | source = "registry+https://github.com/rust-lang/crates.io-index" 1355 | checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1356 | dependencies = [ 1357 | "matches", 1358 | ] 1359 | 1360 | [[package]] 1361 | name = "unicode-normalization" 1362 | version = "0.1.16" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606" 1365 | dependencies = [ 1366 | "tinyvec", 1367 | ] 1368 | 1369 | [[package]] 1370 | name = "unicode-xid" 1371 | version = "0.2.1" 1372 | source = "registry+https://github.com/rust-lang/crates.io-index" 1373 | checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" 1374 | 1375 | [[package]] 1376 | name = "untrusted" 1377 | version = "0.7.1" 1378 | source = "registry+https://github.com/rust-lang/crates.io-index" 1379 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 1380 | 1381 | [[package]] 1382 | name = "ureq" 1383 | version = "2.0.1" 1384 | source = "registry+https://github.com/rust-lang/crates.io-index" 1385 | checksum = "96014ded8c85822677daee4f909d18acccca744810fd4f8ffc492c284f2324bc" 1386 | dependencies = [ 1387 | "base64", 1388 | "chunked_transfer", 1389 | "log", 1390 | "once_cell", 1391 | "rustls", 1392 | "url", 1393 | "webpki", 1394 | "webpki-roots", 1395 | ] 1396 | 1397 | [[package]] 1398 | name = "url" 1399 | version = "2.2.0" 1400 | source = "registry+https://github.com/rust-lang/crates.io-index" 1401 | checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e" 1402 | dependencies = [ 1403 | "form_urlencoded", 1404 | "idna", 1405 | "matches", 1406 | "percent-encoding", 1407 | ] 1408 | 1409 | [[package]] 1410 | name = "version_check" 1411 | version = "0.9.2" 1412 | source = "registry+https://github.com/rust-lang/crates.io-index" 1413 | checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" 1414 | 1415 | [[package]] 1416 | name = "walkdir" 1417 | version = "2.3.1" 1418 | source = "registry+https://github.com/rust-lang/crates.io-index" 1419 | checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" 1420 | dependencies = [ 1421 | "same-file", 1422 | "winapi 0.3.9", 1423 | "winapi-util", 1424 | ] 1425 | 1426 | [[package]] 1427 | name = "wasi" 1428 | version = "0.10.2+wasi-snapshot-preview1" 1429 | source = "registry+https://github.com/rust-lang/crates.io-index" 1430 | checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" 1431 | 1432 | [[package]] 1433 | name = "wasm-bindgen" 1434 | version = "0.2.70" 1435 | source = "registry+https://github.com/rust-lang/crates.io-index" 1436 | checksum = "55c0f7123de74f0dab9b7d00fd614e7b19349cd1e2f5252bbe9b1754b59433be" 1437 | dependencies = [ 1438 | "cfg-if 1.0.0", 1439 | "wasm-bindgen-macro", 1440 | ] 1441 | 1442 | [[package]] 1443 | name = "wasm-bindgen-backend" 1444 | version = "0.2.70" 1445 | source = "registry+https://github.com/rust-lang/crates.io-index" 1446 | checksum = "7bc45447f0d4573f3d65720f636bbcc3dd6ce920ed704670118650bcd47764c7" 1447 | dependencies = [ 1448 | "bumpalo", 1449 | "lazy_static", 1450 | "log", 1451 | "proc-macro2", 1452 | "quote", 1453 | "syn", 1454 | "wasm-bindgen-shared", 1455 | ] 1456 | 1457 | [[package]] 1458 | name = "wasm-bindgen-futures" 1459 | version = "0.4.20" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | checksum = "3de431a2910c86679c34283a33f66f4e4abd7e0aec27b6669060148872aadf94" 1462 | dependencies = [ 1463 | "cfg-if 1.0.0", 1464 | "js-sys", 1465 | "wasm-bindgen", 1466 | "web-sys", 1467 | ] 1468 | 1469 | [[package]] 1470 | name = "wasm-bindgen-macro" 1471 | version = "0.2.70" 1472 | source = "registry+https://github.com/rust-lang/crates.io-index" 1473 | checksum = "3b8853882eef39593ad4174dd26fc9865a64e84026d223f63bb2c42affcbba2c" 1474 | dependencies = [ 1475 | "quote", 1476 | "wasm-bindgen-macro-support", 1477 | ] 1478 | 1479 | [[package]] 1480 | name = "wasm-bindgen-macro-support" 1481 | version = "0.2.70" 1482 | source = "registry+https://github.com/rust-lang/crates.io-index" 1483 | checksum = "4133b5e7f2a531fa413b3a1695e925038a05a71cf67e87dafa295cb645a01385" 1484 | dependencies = [ 1485 | "proc-macro2", 1486 | "quote", 1487 | "syn", 1488 | "wasm-bindgen-backend", 1489 | "wasm-bindgen-shared", 1490 | ] 1491 | 1492 | [[package]] 1493 | name = "wasm-bindgen-shared" 1494 | version = "0.2.70" 1495 | source = "registry+https://github.com/rust-lang/crates.io-index" 1496 | checksum = "dd4945e4943ae02d15c13962b38a5b1e81eadd4b71214eee75af64a4d6a4fd64" 1497 | 1498 | [[package]] 1499 | name = "wayland-client" 1500 | version = "0.28.3" 1501 | source = "registry+https://github.com/rust-lang/crates.io-index" 1502 | checksum = "bdbdbe01d03b2267809f3ed99495b37395387fde789e0f2ebb78e8b43f75b6d7" 1503 | dependencies = [ 1504 | "bitflags", 1505 | "downcast-rs", 1506 | "libc", 1507 | "nix", 1508 | "scoped-tls", 1509 | "wayland-commons", 1510 | "wayland-scanner", 1511 | "wayland-sys", 1512 | ] 1513 | 1514 | [[package]] 1515 | name = "wayland-commons" 1516 | version = "0.28.3" 1517 | source = "registry+https://github.com/rust-lang/crates.io-index" 1518 | checksum = "480450f76717edd64ad04a4426280d737fc3d10a236b982df7b1aee19f0e2d56" 1519 | dependencies = [ 1520 | "nix", 1521 | "once_cell", 1522 | "smallvec", 1523 | "wayland-sys", 1524 | ] 1525 | 1526 | [[package]] 1527 | name = "wayland-cursor" 1528 | version = "0.28.3" 1529 | source = "registry+https://github.com/rust-lang/crates.io-index" 1530 | checksum = "d6eb122c160223a7660feeaf949d0100281d1279acaaed3720eb3c9894496e5f" 1531 | dependencies = [ 1532 | "nix", 1533 | "wayland-client", 1534 | "xcursor", 1535 | ] 1536 | 1537 | [[package]] 1538 | name = "wayland-egl" 1539 | version = "0.28.3" 1540 | source = "registry+https://github.com/rust-lang/crates.io-index" 1541 | checksum = "c653507447113c967a1aeee413699acb42d96d6302ec967c6d51930eae8aa7f5" 1542 | dependencies = [ 1543 | "wayland-client", 1544 | "wayland-sys", 1545 | ] 1546 | 1547 | [[package]] 1548 | name = "wayland-protocols" 1549 | version = "0.28.3" 1550 | source = "registry+https://github.com/rust-lang/crates.io-index" 1551 | checksum = "319a82b4d3054dd25acc32d9aee0f84fa95b63bc983fffe4703b6b8d47e01a30" 1552 | dependencies = [ 1553 | "bitflags", 1554 | "wayland-client", 1555 | "wayland-commons", 1556 | "wayland-scanner", 1557 | ] 1558 | 1559 | [[package]] 1560 | name = "wayland-scanner" 1561 | version = "0.28.3" 1562 | source = "registry+https://github.com/rust-lang/crates.io-index" 1563 | checksum = "7010ba5767b3fcd350decc59055390b4ebe6bd1b9279a9feb1f1888987f1133d" 1564 | dependencies = [ 1565 | "proc-macro2", 1566 | "quote", 1567 | "xml-rs", 1568 | ] 1569 | 1570 | [[package]] 1571 | name = "wayland-sys" 1572 | version = "0.28.3" 1573 | source = "registry+https://github.com/rust-lang/crates.io-index" 1574 | checksum = "6793834e0c35d11fd96a97297abe03d37be627e1847da52e17d7e0e3b51cc099" 1575 | dependencies = [ 1576 | "dlib", 1577 | "lazy_static", 1578 | "pkg-config", 1579 | ] 1580 | 1581 | [[package]] 1582 | name = "web-sys" 1583 | version = "0.3.47" 1584 | source = "registry+https://github.com/rust-lang/crates.io-index" 1585 | checksum = "c40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3" 1586 | dependencies = [ 1587 | "js-sys", 1588 | "wasm-bindgen", 1589 | ] 1590 | 1591 | [[package]] 1592 | name = "webbrowser" 1593 | version = "0.5.5" 1594 | source = "registry+https://github.com/rust-lang/crates.io-index" 1595 | checksum = "ecad156490d6b620308ed411cfee90d280b3cbd13e189ea0d3fada8acc89158a" 1596 | dependencies = [ 1597 | "web-sys", 1598 | "widestring", 1599 | "winapi 0.3.9", 1600 | ] 1601 | 1602 | [[package]] 1603 | name = "webpki" 1604 | version = "0.21.4" 1605 | source = "registry+https://github.com/rust-lang/crates.io-index" 1606 | checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" 1607 | dependencies = [ 1608 | "ring", 1609 | "untrusted", 1610 | ] 1611 | 1612 | [[package]] 1613 | name = "webpki-roots" 1614 | version = "0.21.0" 1615 | source = "registry+https://github.com/rust-lang/crates.io-index" 1616 | checksum = "82015b7e0b8bad8185994674a13a93306bea76cf5a16c5a181382fd3a5ec2376" 1617 | dependencies = [ 1618 | "webpki", 1619 | ] 1620 | 1621 | [[package]] 1622 | name = "widestring" 1623 | version = "0.4.3" 1624 | source = "registry+https://github.com/rust-lang/crates.io-index" 1625 | checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" 1626 | 1627 | [[package]] 1628 | name = "winapi" 1629 | version = "0.2.8" 1630 | source = "registry+https://github.com/rust-lang/crates.io-index" 1631 | checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1632 | 1633 | [[package]] 1634 | name = "winapi" 1635 | version = "0.3.9" 1636 | source = "registry+https://github.com/rust-lang/crates.io-index" 1637 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1638 | dependencies = [ 1639 | "winapi-i686-pc-windows-gnu", 1640 | "winapi-x86_64-pc-windows-gnu", 1641 | ] 1642 | 1643 | [[package]] 1644 | name = "winapi-build" 1645 | version = "0.1.1" 1646 | source = "registry+https://github.com/rust-lang/crates.io-index" 1647 | checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1648 | 1649 | [[package]] 1650 | name = "winapi-i686-pc-windows-gnu" 1651 | version = "0.4.0" 1652 | source = "registry+https://github.com/rust-lang/crates.io-index" 1653 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1654 | 1655 | [[package]] 1656 | name = "winapi-util" 1657 | version = "0.1.5" 1658 | source = "registry+https://github.com/rust-lang/crates.io-index" 1659 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 1660 | dependencies = [ 1661 | "winapi 0.3.9", 1662 | ] 1663 | 1664 | [[package]] 1665 | name = "winapi-x86_64-pc-windows-gnu" 1666 | version = "0.4.0" 1667 | source = "registry+https://github.com/rust-lang/crates.io-index" 1668 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1669 | 1670 | [[package]] 1671 | name = "winit" 1672 | version = "0.24.0" 1673 | source = "registry+https://github.com/rust-lang/crates.io-index" 1674 | checksum = "da4eda6fce0eb84bd0a33e3c8794eb902e1033d0a1d5a31bc4f19b1b4bbff597" 1675 | dependencies = [ 1676 | "bitflags", 1677 | "cocoa 0.24.0", 1678 | "core-foundation 0.9.1", 1679 | "core-graphics 0.22.2", 1680 | "core-video-sys", 1681 | "dispatch", 1682 | "instant", 1683 | "lazy_static", 1684 | "libc", 1685 | "log", 1686 | "mio", 1687 | "mio-extras", 1688 | "ndk", 1689 | "ndk-glue", 1690 | "ndk-sys", 1691 | "objc", 1692 | "parking_lot", 1693 | "percent-encoding", 1694 | "raw-window-handle", 1695 | "smithay-client-toolkit", 1696 | "wayland-client", 1697 | "winapi 0.3.9", 1698 | "x11-dl", 1699 | ] 1700 | 1701 | [[package]] 1702 | name = "ws2_32-sys" 1703 | version = "0.2.1" 1704 | source = "registry+https://github.com/rust-lang/crates.io-index" 1705 | checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1706 | dependencies = [ 1707 | "winapi 0.2.8", 1708 | "winapi-build", 1709 | ] 1710 | 1711 | [[package]] 1712 | name = "x11-clipboard" 1713 | version = "0.3.3" 1714 | source = "registry+https://github.com/rust-lang/crates.io-index" 1715 | checksum = "89bd49c06c9eb5d98e6ba6536cf64ac9f7ee3a009b2f53996d405b3944f6bcea" 1716 | dependencies = [ 1717 | "xcb", 1718 | ] 1719 | 1720 | [[package]] 1721 | name = "x11-dl" 1722 | version = "2.18.5" 1723 | source = "registry+https://github.com/rust-lang/crates.io-index" 1724 | checksum = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8" 1725 | dependencies = [ 1726 | "lazy_static", 1727 | "libc", 1728 | "maybe-uninit", 1729 | "pkg-config", 1730 | ] 1731 | 1732 | [[package]] 1733 | name = "xcb" 1734 | version = "0.8.2" 1735 | source = "registry+https://github.com/rust-lang/crates.io-index" 1736 | checksum = "5e917a3f24142e9ff8be2414e36c649d47d6cc2ba81f16201cdef96e533e02de" 1737 | dependencies = [ 1738 | "libc", 1739 | "log", 1740 | ] 1741 | 1742 | [[package]] 1743 | name = "xcursor" 1744 | version = "0.3.3" 1745 | source = "registry+https://github.com/rust-lang/crates.io-index" 1746 | checksum = "3a9a231574ae78801646617cefd13bfe94be907c0e4fa979cfd8b770aa3c5d08" 1747 | dependencies = [ 1748 | "nom", 1749 | ] 1750 | 1751 | [[package]] 1752 | name = "xdg" 1753 | version = "2.2.0" 1754 | source = "registry+https://github.com/rust-lang/crates.io-index" 1755 | checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" 1756 | 1757 | [[package]] 1758 | name = "xml-rs" 1759 | version = "0.8.3" 1760 | source = "registry+https://github.com/rust-lang/crates.io-index" 1761 | checksum = "b07db065a5cf61a7e4ba64f29e67db906fb1787316516c4e6e5ff0fea1efcd8a" 1762 | --------------------------------------------------------------------------------