[package] name = "pdfcraft-ui-egui" description = "The egui shell of PdfCraft" version.workspace = true edition.workspace = true license.workspace = true rust-version = "1.95" [lints] workspace = true [dependencies] craft-ui = { workspace = true } # The menus: native on macOS, an egui bar elsewhere, from one definition (menus.rs). craft-menu = { workspace = true } craft-keymap = { workspace = true } # Quit from the menus asks the window to close, so the unsaved-changes check runs; on macOS a window # close also quits through `terminate:` (the Touch Bar crash, #1136). craft-quit = { workspace = true, features = ["egui"] } pdfcraft-fonts = { workspace = true } pdfcraft-engine = { workspace = true } pdfcraft-cos = { workspace = true } pdfcraft-content = { workspace = true } pdfcraft-render = { workspace = true } pdfcraft-model = { workspace = true } pdfcraft-platform = { workspace = true } egui = { workspace = true, features = ["bytemuck", "default_fonts", "monochrome_emoji_fonts"] } egui_extras = { workspace = true } eframe = { workspace = true, features = ["default_fonts", "wgpu", "accesskit", "persistence", "links", "clipboard"] } serde = { workspace = true } serde_json = { workspace = true } log = { workspace = true } # UTC/calendar display (combine modified-time stamp, the form date picker) goes through chrono # (no hand-rolled calendar code); std-only, so it stays wasm-safe. chrono = { workspace = true } # Monotonic deadlines for work that runs in `logic` with no UI pass (native and web). web-time = { workspace = true } # Hands rendered rasters to egui as its pixels, without copying; already in the tree through egui and wgpu. bytemuck = { version = "1", features = ["extern_crate_alloc"] } rfd = { workspace = true } png = "0.18" base64 = "0.23" # Unicode bidi paragraph segmentation for right-to-left comment wrapping; egui 0.37's epaint owns # display reordering. Already in the tree through egui’s epaint. unicode-bidi = "0.3" # Checks that an installed fallback font parses and has the glyphs, and reads the vertical metrics # that put fallback faces on the interface's baseline (#1676); the same skrifa egui uses. skrifa = "0.44" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] craft-update = { workspace = true } # Control-channel tokens. getrandom = "0.4" # Create ▸ Clipboard (images; already in the tree through egui-winit). arboard = { version = "3.6", default-features = false, features = ["image-data"] } # Waits for native file pickers off the UI thread (already in the tree through wgpu). pollster = "1.0" [target.'cfg(all(unix, not(target_os = "macos"), not(target_arch = "wasm32")))'.dependencies] # Discover configured font directories without linking libfontconfig or running a subprocess. fontconfig-parser = "0.5.8" [target.'cfg(target_os = "macos")'.dependencies] # Safe AppKit calls for drag coordinates and repairing an existing per-file PDFCraft binding. # The Objective-C wrappers and block support are already in the tree through arboard and rfd. objc2 = "0.6" objc2-app-kit = { version = "0.3", default-features = false, features = ["std", "NSEvent", "NSScreen", "NSWorkspace", "block2"] } objc2-foundation = { version = "0.3", default-features = false, features = ["std", "NSArray", "NSGeometry", "NSBundle", "NSURL", "NSString", "NSError"] } block2 = "0.6" plist = "1.10" # A plain fsync where a volume refuses the full flush `sync_all` asks for (SMB, FUSE); already in # the tree through pdfcraft-cli. rustix = { version = "1", features = ["fs"] } [target.'cfg(windows)'.dependencies] # Auto interface language: the Windows display language, without starting a process. sys-locale = "0.3" # Region ▸ Measurement system for the default Units, read from the registry without starting reg.exe; # where the pointer is while files are dragged over the window (winit doesn't say). winsafe = { version = "0.0.29", default-features = false, features = ["advapi", "user"] } [target.'cfg(target_arch = "wasm32")'.dependencies] rfd = { workspace = true, features = ["file-handle-inner"] } wasm-bindgen-futures = "0.4" wasm-bindgen = "0.2" js-sys = "0.3" web-sys = { version = "0.3", features = ["Window", "Document", "Element", "HtmlElement", "HtmlAnchorElement", "Blob", "BlobPropertyBag", "Url", "HtmlIFrameElement", "HtmlImageElement", "HtmlCollection", "Node", "EventTarget", "Navigator"] } [dev-dependencies] craft-update = { workspace = true } pdfcraft-xfa = { workspace = true } egui_kittest = { workspace = true, features = ["eframe", "wgpu"] } # Tests draw PdfCraft text without a system provider: the bundled and monochrome emoji faces must # be enabled on the test graph itself (a dependency's dev-features do not propagate). egui = { workspace = true, features = ["default_fonts", "monochrome_emoji_fonts"] } image = { version = "0.25", default-features = false, features = ["png"] } # Glyph-coverage test of the interface fonts; the same skrifa pdfcraft-fonts already uses. skrifa = "0.44" proptest = { workspace = true } [build-dependencies] serde_json = { workspace = true } toml = "1" [target.'cfg(target_os = "macos")'.dev-dependencies] # Only synthetic attribute fixtures use xattr; product reads/writes use rustix. xattr = "1.6"