Skip to content

Commit e4bb02d

Browse files
authored
Merge pull request #777 from multiplex55/codex/refactor-screenshot-editor-for-markup-layers
Add markup layers and tools to screenshot editor
2 parents 14f3339 + dbe50f7 commit e4bb02d

7 files changed

Lines changed: 843 additions & 73 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ rfd = { version = "0.15.3", features = ["common-controls-v6"] }
6767
slab = "0.4.11"
6868
rdev = { git = "https://github.com/Narsil/rdev", rev = "c14f2dc5c8100a96c5d7e3013de59d6aa0b9eae2", features = ["x11"] }
6969
rodio = { version = "0.17", default-features = false, features = ["wav"] }
70+
ab_glyph = "0.2"
7071

7172
[features]
7273
unstable_grab = ["rdev/unstable_grab"]

src/gui/mod.rs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ pub use note_panel::{
5353
NotePanel,
5454
};
5555
pub use notes_dialog::NotesDialog;
56-
pub use screenshot_editor::ScreenshotEditor;
56+
pub use screenshot_editor::{
57+
render_markup_layers, MarkupArrow, MarkupHistory, MarkupLayer, MarkupRect, MarkupStroke,
58+
MarkupText, MarkupTool, ScreenshotEditor,
59+
};
5760
pub use shell_cmd_dialog::ShellCmdDialog;
5861
pub use snippet_dialog::SnippetDialog;
5962
pub use tempfile_alias_dialog::TempfileAliasDialog;
@@ -2542,16 +2545,17 @@ impl LauncherApp {
25422545
}
25432546
} else if let Some(mode) = a.action.strip_prefix("screenshot:") {
25442547
use crate::actions::screenshot::Mode as ScreenshotMode;
2545-
let (mode, clip) = match mode {
2546-
"window" => (ScreenshotMode::Window, false),
2547-
"region" => (ScreenshotMode::Region, false),
2548-
"desktop" => (ScreenshotMode::Desktop, false),
2549-
"window_clip" => (ScreenshotMode::Window, true),
2550-
"region_clip" => (ScreenshotMode::Region, true),
2551-
"desktop_clip" => (ScreenshotMode::Desktop, true),
2552-
_ => (ScreenshotMode::Desktop, false),
2548+
let (mode, clip, tool) = match mode {
2549+
"window" => (ScreenshotMode::Window, false, MarkupTool::Rectangle),
2550+
"region" => (ScreenshotMode::Region, false, MarkupTool::Rectangle),
2551+
"region_markup" => (ScreenshotMode::Region, false, MarkupTool::Pen),
2552+
"desktop" => (ScreenshotMode::Desktop, false, MarkupTool::Rectangle),
2553+
"window_clip" => (ScreenshotMode::Window, true, MarkupTool::Rectangle),
2554+
"region_clip" => (ScreenshotMode::Region, true, MarkupTool::Rectangle),
2555+
"desktop_clip" => (ScreenshotMode::Desktop, true, MarkupTool::Rectangle),
2556+
_ => (ScreenshotMode::Desktop, false, MarkupTool::Rectangle),
25532557
};
2554-
if let Err(e) = crate::plugins::screenshot::launch_editor(self, mode, clip) {
2558+
if let Err(e) = crate::plugins::screenshot::launch_editor(self, mode, clip, tool) {
25552559
self.set_error(format!("Failed: {e}"));
25562560
} else if a.action != "help:show" {
25572561
self.record_history_usage(&a, &current, source);
@@ -4583,7 +4587,7 @@ impl LauncherApp {
45834587
}
45844588

45854589
/// Open the screenshot editor for a captured image.
4586-
pub fn open_screenshot_editor(&mut self, img: image::RgbaImage, clip: bool) {
4590+
pub fn open_screenshot_editor(&mut self, img: image::RgbaImage, clip: bool, tool: MarkupTool) {
45874591
use chrono::Local;
45884592
let dir = crate::plugins::screenshot::screenshot_dir();
45894593
let _ = std::fs::create_dir_all(&dir);
@@ -4597,6 +4601,7 @@ impl LauncherApp {
45974601
path,
45984602
clip,
45994603
self.screenshot_auto_save,
4604+
tool,
46004605
));
46014606
self.update_panel_stack();
46024607
}

0 commit comments

Comments
 (0)