i-slint-core 1.9.1

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 = [] # 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"]

image-decoders = ["dep:image", "dep:clru"]
svg = ["dep:resvg", "shared-fontdb"]

box-shadow-cache = []

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

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

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 }
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 = "1.1"
strum = { workspace = true }
unicode-segmentation = "1.12.0"
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 }

[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" ] }

[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" }