[package]
name = "gpui"
version = "0.2.2"
edition.workspace = true
authors = ["Nathan Sobo <nathan@zed.dev>"]
description = "Zed's GPU-accelerated UI framework"
repository = "https://github.com/zed-industries/zed"
publish = true
license = "Apache-2.0"
homepage = "https://gpui.rs"
readme = "README.md"
keywords = ["desktop", "gui", "immediate"]
categories = ["gui"]


[lints]
workspace = true

[features]
default = ["font-kit", "wayland", "x11", "windows-manifest"]
test-support = [
    "leak-detection",
    "collections/test-support",
    "http_client/test-support",
    "wayland",
    "x11",
    "proptest",
]
inspector = ["gpui_macros/inspector"]
leak-detection = ["backtrace"]
wayland = [
    "bitflags",
]
x11 = [
    "scap?/x11",
]
screen-capture = [
    "scap",
]
windows-manifest = ["dep:embed-resource"]

[lib]
path = "src/gpui.rs"
doctest = false

[dependencies]
anyhow.workspace = true
async-task = "4.7"
backtrace = { workspace = true, optional = true }
bitflags = { workspace = true, optional = true }

collections.workspace = true
ctor.workspace = true
derive_more.workspace = true
etagere = "0.2"
futures.workspace = true
futures-concurrency.workspace = true
gpui_macros.workspace = true
gpui_shared_string.workspace = true
http_client.workspace = true
image.workspace = true
inventory.workspace = true
itertools.workspace = true
log.workspace = true
num_cpus = "1.13"
parking = "2.0.0"
parking_lot.workspace = true
postage.workspace = true
proptest = { workspace = true, optional = true }
chrono.workspace = true
profiling.workspace = true
rand.workspace = true
raw-window-handle = "0.6"
regex.workspace = true
refineable.workspace = true
scheduler.workspace = true
resvg = { version = "0.45.0", default-features = false, features = [
    "text",
    "system-fonts",
    "memmap-fonts",
    "raster-images"
] }
usvg = { version = "0.45.0", default-features = false }
ttf-parser = "0.25"
util_macros.workspace = true
schemars.workspace = true
seahash = "4.1"
serde.workspace = true
serde_json.workspace = true
slotmap.workspace = true
smallvec.workspace = true
async-channel.workspace = true
stacksafe.workspace = true
strum.workspace = true
sum_tree.workspace = true
taffy = "=0.9.0"
thiserror.workspace = true
gpui_util.workspace = true
waker-fn = "1.2.0"
lyon = "1.0"
pin-project = "1.1.10"
spin = "0.10.0"
pollster.workspace = true
url.workspace = true
uuid.workspace = true
web-time.workspace = true

[target.'cfg(target_family = "wasm")'.dependencies]
getrandom = { version = "0.3.4", features = ["wasm_js"] }
uuid = { workspace = true, features = ["js"] }


[target.'cfg(target_os = "macos")'.dependencies]
block = "0.1"
cocoa.workspace = true
cocoa-foundation.workspace = true
core-foundation.workspace = true
core-foundation-sys.workspace = true
core-graphics = "0.24"
core-video.workspace = true
core-text = "21"
# WARNING: If you change this, you must also publish a new version of zed-font-kit to crates.io
font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "94b0f28166665e8fd2f53ff6d268a14955c82269", package = "zed-font-kit", version = "0.14.1-zed", optional = true }
foreign-types = "0.5"
log.workspace = true
media.workspace = true
objc.workspace = true
objc2 = { version = "0.6", optional = true }
objc2-metal = { version = "0.3", optional = true }
mach2.workspace = true
#TODO: replace with "objc2"
metal.workspace = true

[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "macos"))'.dependencies]
pathfinder_geometry = "0.5"

[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "windows"))'.dependencies]
scap = { workspace = true, optional = true }



[target.'cfg(target_os = "windows")'.dependencies]
windows = { version = "0.61", features = ["Win32_Foundation"] }


[dev-dependencies]
backtrace.workspace = true
collections = { workspace = true, features = ["test-support"] }
env_logger.workspace = true
gpui_platform = { workspace = true, features = ["font-kit"] }
gpui_util = { workspace = true }
lyon = { version = "1.0", features = ["extra"] }
proptest = { workspace = true }
rand.workspace = true
scheduler = { workspace = true, features = ["test-support"] }
unicode-segmentation = { workspace = true }

[target.'cfg(not(target_family = "wasm"))'.dev-dependencies]
http_client = { workspace = true, features = ["test-support"] }
reqwest_client = { workspace = true, features = ["test-support"] }

[target.'cfg(target_family = "wasm")'.dev-dependencies]
wasm-bindgen = { workspace = true }
gpui_web.workspace = true

[build-dependencies]
embed-resource = { version = "3.0", optional = true }

[target.'cfg(target_os = "macos")'.build-dependencies]
bindgen = "0.71"
cbindgen = { version = "0.28.0", default-features = false }
naga.workspace = true




[[example]]
name = "hello_world"
path = "examples/hello_world.rs"

[[example]]
name = "image"
path = "examples/image/image.rs"

[[example]]
name = "input"
path = "examples/input.rs"

[[example]]
name = "on_window_close_quit"
path = "examples/on_window_close_quit.rs"

[[example]]
name = "opacity"
path = "examples/opacity.rs"

[[example]]
name = "pattern"
path = "examples/pattern.rs"

[[example]]
name = "set_menus"
path = "examples/set_menus.rs"

[[example]]
name = "shadow"
path = "examples/shadow.rs"

[[example]]
name = "svg"
path = "examples/svg/svg.rs"

[[example]]
name = "tab_stop"
path = "examples/tab_stop.rs"

[[example]]
name = "text"
path = "examples/text.rs"

[[example]]
name = "text_wrapper"
path = "examples/text_wrapper.rs"

[[example]]
name = "tree"
path = "examples/tree.rs"

[[example]]
name = "uniform_list"
path = "examples/uniform_list.rs"

[[example]]
name = "window_shadow"
path = "examples/window_shadow.rs"

[[example]]
name = "grid_layout"
path = "examples/grid_layout.rs"

[[example]]
name = "list_example"
path = "examples/list_example.rs"

[[example]]
name = "mouse_pressure"
path = "examples/mouse_pressure.rs"
