commit 95c836b375384297bc121754f7812c165c9268ce
parent d38fcf80b9511c3d7148f65fcae5cb3b53e67080
Author: William Casarin <jb55@jb55.com>
Date: Wed, 7 Feb 2024 12:06:28 -0800
update to latest egui
Signed-off-by: William Casarin <jb55@jb55.com>
Diffstat:
4 files changed, 21 insertions(+), 96 deletions(-)
diff --git a/shell.nix b/shell.nix
@@ -1,7 +1,7 @@
{ pkgs ? import <nixpkgs> {}, use_android ? true }:
with pkgs;
let
- x11libs = lib.makeLibraryPath [ xorg.libX11 xorg.libXcursor xorg.libXrandr xorg.libXi libglvnd vulkan-loader vulkan-validation-layers ];
+ x11libs = lib.makeLibraryPath [ xorg.libX11 xorg.libXcursor xorg.libXrandr xorg.libXi libglvnd vulkan-loader vulkan-validation-layers libxkbcommon ];
ndk-version = "24.0.8215888";
#ndk-version = "21.0.6113669";
diff --git a/src/app.rs b/src/app.rs
@@ -7,7 +7,7 @@ use crate::ui::padding;
use crate::Result;
use egui::containers::scroll_area::ScrollBarVisibility;
use egui::widgets::Spinner;
-use egui::{Context, Frame, Margin, TextureHandle, TextureId};
+use egui::{Context, Frame, ImageSource, Margin, TextureHandle, TextureId};
use egui_extras::Size;
use enostr::{ClientMessage, EventId, Filter, Profile, Pubkey, RelayEvent, RelayMessage};
use poll_promise::Promise;
@@ -94,7 +94,11 @@ fn relay_setup(pool: &mut RelayPool, ctx: &egui::Context) {
fn send_initial_filters(pool: &mut RelayPool, relay_url: &str) {
let filter = Filter::new().limit(100).kinds(vec![1, 42]).pubkeys(
- ["32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245".into()].into(),
+ [
+ Pubkey::from_hex("32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245")
+ .unwrap(),
+ ]
+ .into(),
);
let subid = "initial";
@@ -109,7 +113,7 @@ fn send_initial_filters(pool: &mut RelayPool, relay_url: &str) {
fn try_process_event(damus: &mut Damus, ctx: &egui::Context) {
let amount = 0.2;
- if ctx.input(|i| i.key_pressed(egui::Key::PlusEquals)) {
+ if ctx.input(|i| i.key_pressed(egui::Key::Plus)) {
ctx.set_pixels_per_point(ctx.pixels_per_point() + amount);
} else if ctx.input(|i| i.key_pressed(egui::Key::Minus)) {
ctx.set_pixels_per_point(ctx.pixels_per_point() - amount);
@@ -321,22 +325,22 @@ fn render_pfp(ui: &mut egui::Ui, img_cache: &mut ImageCache, url: &str) {
ui.label("❌");
}
Some(Ok(img)) => {
- pfp_image(ui, img.into(), pfp_size);
+ pfp_image(ui, img, pfp_size);
}
}
}
Some(Ok(img)) => {
- pfp_image(ui, img.into(), pfp_size);
+ pfp_image(ui, img, pfp_size);
}
}
}
-fn pfp_image(ui: &mut egui::Ui, img: TextureId, size: f32) -> egui::Response {
+fn pfp_image<'a>(ui: &mut egui::Ui, img: impl Into<ImageSource<'a>>, size: f32) -> egui::Response {
#[cfg(feature = "profiling")]
puffin::profile_function!();
//img.show_max_size(ui, egui::vec2(size, size))
- ui.image(img, egui::vec2(size, size))
+ ui.image(img)
//.with_options()
}
@@ -647,8 +651,8 @@ fn add_test_events(damus: &mut Damus) {
// For inspiration and more examples, go to https://emilk.github.io/egui
let test_event = Event {
- id: "6938e3cd841f3111dbdbd909f87fd52c3d1f1e4a07fd121d1243196e532811cb".to_string().into(),
- pubkey: "f0a6ff7f70b872de6d82c8daec692a433fd23b6a49f25923c6f034df715cdeec".to_string().into(),
+ id: EventId::from_hex("6938e3cd841f3111dbdbd909f87fd52c3d1f1e4a07fd121d1243196e532811cb").unwrap(),
+ pubkey: Pubkey::from_hex("f0a6ff7f70b872de6d82c8daec692a433fd23b6a49f25923c6f034df715cdeec").unwrap(),
created_at: 1667781968,
kind: 1,
tags: vec![],
@@ -657,8 +661,8 @@ fn add_test_events(damus: &mut Damus) {
};
let test_event2 = Event {
- id: "6938e3cd841f3111dbdbd909f87fd52c3d1f1e4a07fd121d1243196e532811cb".to_string().into(),
- pubkey: "32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245".to_string().into(),
+ id: EventId::from_hex("6938e3cd841f3111dbdbd909f87fd52c3d1f1e4a07fd121d1243196e532811cb").unwrap(),
+ pubkey: Pubkey::from_hex("32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245").unwrap(),
created_at: 1667781968,
kind: 1,
tags: vec![],
diff --git a/src/frame_history.rs b/src/frame_history.rs
@@ -42,85 +42,5 @@ impl FrameHistory {
Does not include GPU usage, nor overhead for sending data to GPU.",
);
egui::warn_if_debug_build(ui);
-
- if !cfg!(target_arch = "wasm32") {
- egui::CollapsingHeader::new("📊 CPU usage history")
- .default_open(false)
- .show(ui, |ui| {
- self.graph(ui);
- });
- }
- }
-
- fn graph(&mut self, ui: &mut egui::Ui) -> egui::Response {
- use egui::*;
-
- ui.label("egui CPU usage history");
-
- let history = &self.frame_times;
-
- // TODO(emilk): we should not use `slider_width` as default graph width.
- let height = ui.spacing().slider_width;
- let size = vec2(ui.available_size_before_wrap().x, height);
- let (rect, response) = ui.allocate_at_least(size, Sense::hover());
- let style = ui.style().noninteractive();
-
- let graph_top_cpu_usage = 0.010;
- let graph_rect = Rect::from_x_y_ranges(history.max_age()..=0.0, graph_top_cpu_usage..=0.0);
- let to_screen = emath::RectTransform::from_to(graph_rect, rect);
-
- let mut shapes = Vec::with_capacity(3 + 2 * history.len());
- shapes.push(Shape::Rect(epaint::RectShape {
- rect,
- rounding: style.rounding,
- fill: ui.visuals().extreme_bg_color,
- stroke: ui.style().noninteractive().bg_stroke,
- }));
-
- let rect = rect.shrink(4.0);
- let color = ui.visuals().text_color();
- let line_stroke = Stroke::new(1.0, color);
-
- if let Some(pointer_pos) = response.hover_pos() {
- let y = pointer_pos.y;
- shapes.push(Shape::line_segment(
- [pos2(rect.left(), y), pos2(rect.right(), y)],
- line_stroke,
- ));
- let cpu_usage = to_screen.inverse().transform_pos(pointer_pos).y;
- let text = format!("{:.1} ms", 1e3 * cpu_usage);
- shapes.push(ui.fonts(|f| {
- Shape::text(
- f,
- pos2(rect.left(), y),
- egui::Align2::LEFT_BOTTOM,
- text,
- TextStyle::Monospace.resolve(ui.style()),
- color,
- )
- }));
- }
-
- let circle_color = color;
- let radius = 2.0;
- let right_side_time = ui.input(|i| i.time); // Time at right side of screen
-
- for (time, cpu_usage) in history.iter() {
- let age = (right_side_time - time) as f32;
- let pos = to_screen.transform_pos_clamped(Pos2::new(age, cpu_usage));
-
- shapes.push(Shape::line_segment(
- [pos2(pos.x, rect.bottom()), pos],
- line_stroke,
- ));
-
- if cpu_usage < graph_top_cpu_usage {
- shapes.push(Shape::circle_filled(pos, radius, circle_color));
- }
- }
-
- ui.painter().extend(shapes);
-
- response
}
}
diff --git a/src/images.rs b/src/images.rs
@@ -1,7 +1,6 @@
use crate::error::Error;
use crate::result::Result;
-use egui::{Color32, ColorImage, TextureHandle};
-use egui_extras::image::FitTo;
+use egui::{Color32, ColorImage, SizeHint, TextureHandle};
use image::imageops::FilterType;
use poll_promise::Promise;
@@ -90,8 +89,10 @@ fn parse_img_response(response: ehttp::Response) -> Result<ColorImage> {
#[cfg(feature = "profiling")]
puffin::profile_scope!("load_svg");
- let mut color_image =
- egui_extras::image::load_svg_bytes_with_size(&response.bytes, FitTo::Size(size, size))?;
+ let mut color_image = egui_extras::image::load_svg_bytes_with_size(
+ &response.bytes,
+ Some(SizeHint::Size(size, size)),
+ )?;
round_image(&mut color_image);
Ok(color_image)
} else if content_type.starts_with("image/") {