[go: up one dir, main page]

i-slint-core 1.12.0

Internal Slint Runtime Library.
Documentation
# Copyright © SixtyFPS GmbH <info@slint.dev>
# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0

[package]
name = "i-slint-core"
description = "Internal Slint Runtime Library."
authors.workspace = true
documentation.workspace = true
edition.workspace = true
homepage.workspace = true
keywords.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
version.workspace = true
categories = ["gui", "development-tools", "no-std"]

[lib]
path = "lib.rs"

[features]
ffi = ["dep:static_assertions"]           # Expose C ABI
libm = ["num-traits/libm", "euclid/libm"]
# Allow the viewer to query at runtime information about item types
rtti = []
# Use the standard library
std = [
  "euclid/std",
  "once_cell/std",
  "scoped-tls-hkt",
  "lyon_path",
  "lyon_algorithms",
  "lyon_geom",
  "lyon_extra",
  "dep:web-time",
  "image-decoders",
  "svg",
  "raw-window-handle-06?/std",
  "chrono/std",
  "chrono/wasmbind",
  "chrono/clock",
  "dep:sys-locale",
]
# Unsafe feature meaning that there is only one core running and all thread_local are static.
# You can only enable this feature if you are sure that any API of this crate is only called
# from a single core, and not in a interrupt or signal handler.
unsafe-single-threaded = []

unicode = ["unicode-script", "unicode-linebreak"]

software-renderer-systemfonts = ["shared-fontdb", "rustybuzz", "fontdue", "software-renderer"]
software-renderer = ["bytemuck", "rustversion"]

image-decoders = ["dep:image", "dep:clru"]
image-default-formats = ["image?/default-formats"]
svg = ["dep:resvg", "shared-fontdb"]

box-shadow-cache = []

shared-fontdb = ["i-slint-common/shared-fontdb"]

raw-window-handle-06 = ["dep:raw-window-handle-06"]

experimental = []

unstable-wgpu-24 = ["dep:wgpu-24"]

default = ["std", "unicode"]

[dependencies]
i-slint-common = { workspace = true, features = ["default"] }
i-slint-core-macros = { workspace = true, features = ["default"] }

const-field-offset = { version = "0.1.5", path = "../../helper_crates/const-field-offset" }
vtable = { workspace = true }

portable-atomic = { version = "1", features = ["critical-section"] }
auto_enums = "0.8.0"
cfg-if = "1"
derive_more = { workspace = true, features = ["error"] }
euclid = { workspace = true }
lyon_algorithms = { version = "1.0", optional = true }
lyon_geom = { version = "1.0", optional = true }
lyon_path = { version = "1.0", optional = true }
lyon_extra = { version = "1.0.1", optional = true }
num-traits = { version = "0.2", default-features = false }
once_cell = { version = "1.5", default-features = false, features = ["critical-section"] }
pin-project = "1"
pin-weak = { version = "1.1", default-features = false }
# Note: the rgb version is extracted in ci.yaml for rustdoc builds
rgb = "0.8.27"
scoped-tls-hkt = { version = "0.1", optional = true }
scopeguard = { version = "1.1.0", default-features = false }
slab = { version = "0.4.3", default-features = false }
static_assertions = { version = "1.1", optional = true }
strum = { workspace = true }
unicode-segmentation = { workspace = true }
unicode-linebreak = { version = "0.1.5", optional = true }
unicode-script = { version = "0.5.7", optional = true }
integer-sqrt = { version = "0.1.5" }
bytemuck = { workspace = true, optional = true, features = ["derive"] }
sys-locale = { version = "0.3.2", optional = true }

image = { workspace = true, optional = true, default-features = false }
clru = { workspace = true, optional = true }

resvg = { workspace = true, optional = true }
fontdb = { workspace = true, optional = true }
serde = { workspace = true, optional = true }

raw-window-handle-06 = { workspace = true, optional = true }
bitflags = { version = "2.4.2" }

chrono = { version = "0.4", default-features = false, features = ["alloc"] }

rustybuzz = { workspace = true, optional = true }
fontdue = { workspace = true, optional = true }

wgpu-24 = { workspace = true, optional = true }

rustversion = { version = "1.0", optional = true }

[target.'cfg(target_family = "unix")'.dependencies]
gettext-rs = { version = "0.7.1", optional = true, features = ["gettext-system"] }

[target.'cfg(target_arch = "wasm32")'.dependencies]
web-time = { version = "1.0", optional = true }
wasm-bindgen = { version = "0.2" }
web-sys = { workspace = true, features = ["HtmlImageElement", "Navigator"] }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
fontdb = { workspace = true, optional = true, default-features = true }

[dev-dependencies]
slint = { path = "../../api/rs/slint", default-features = false, features = ["std", "compat-1-2"] }
i-slint-backend-testing = { path = "../backends/testing" }
rustybuzz = { workspace = true }
ttf-parser = { workspace = true }
fontdb = { workspace = true, default-features = true }
serde_json = { workspace = true }
tiny-skia = "0.11.0"
tokio = { version = "1.35", features = ["rt-multi-thread", "macros", "time", "net", "io-util"] }
async-compat = { version = "0.2.4" }
tempfile = { version = "3.12.0" }

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(slint_debug_property)", "cfg(cbindgen)", "cfg(slint_int_coord)"] }

[lints.clippy]
# Coord is an alias for f32 in most architectures, but not always, so the cast
# to f32 *is* necessary.
unnecessary_cast = { level = "allow" }

[package.metadata.docs.rs]
rustdoc-args = ["--generate-link-to-definition"]