[package]
name = "epaint"
version = "0.20.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Minimal 2D graphics library for GUI work"
edition = "2021"
rust-version = "1.65"
homepage = "https://github.com/emilk/egui/tree/master/crates/epaint"
license = "(MIT OR Apache-2.0) AND OFL-1.1 AND LicenseRef-UFL-1.0" # OFL and UFL used by default_fonts. See https://github.com/emilk/egui/issues/2321
readme = "README.md"
repository = "https://github.com/emilk/egui/tree/master/crates/epaint"
categories = ["graphics", "gui"]
keywords = ["graphics", "gui", "egui"]
include = [
  "../LICENSE-APACHE",
  "../LICENSE-MIT",
  "**/*.rs",
  "Cargo.toml",
  "fonts/*.ttf",
  "fonts/*.txt",
  "fonts/OFL.txt",
  "fonts/UFL.txt",
]

[package.metadata.docs.rs]
all-features = true

[lib]


[features]
default = ["default_fonts"]

## [`bytemuck`](https://docs.rs/bytemuck) enables you to cast [`Vertex`] to `&[u8]`.
bytemuck = ["dep:bytemuck", "emath/bytemuck", "ecolor/bytemuck"]

## [`cint`](https://docs.rs/cint) enables interopability with other color libraries.
cint = ["ecolor/cint"]

## Enable the [`hex_color`] macro.
color-hex = ["ecolor/color-hex"]

## This will automatically detect deadlocks due to double-locking on the same thread.
## If your app freezes, you may want to enable this!
## Only affects [`mutex::RwLock`] (which epaint and egui uses a lot).
deadlock_detection = ["dep:backtrace"]

## If set, epaint will use `include_bytes!` to bundle some fonts.
## If you plan on specifying your own fonts you may disable this feature.
default_fonts = []

## Enable additional checks if debug assertions are enabled (debug builds).
extra_debug_asserts = [
  "emath/extra_debug_asserts",
  "ecolor/extra_debug_asserts",
]
## Always enable additional checks.
extra_asserts = ["emath/extra_asserts", "ecolor/extra_asserts"]

## [`mint`](https://docs.rs/mint) enables interopability with other math libraries such as [`glam`](https://docs.rs/glam) and [`nalgebra`](https://docs.rs/nalgebra).
mint = ["emath/mint"]

## Allow serialization using [`serde`](https://docs.rs/serde).
serde = ["dep:serde", "ahash/serde", "emath/serde", "ecolor/serde"]

[dependencies]
emath = { version = "0.20.0", path = "../emath" }
ecolor = { version = "0.20.0", path = "../ecolor" }

ab_glyph = "0.2.11"
ahash = { version = "0.8.1", default-features = false, features = [
  "no-rng", # we don't need DOS-protection, so we let users opt-in to it instead
  "std",
] }
nohash-hasher = "0.2"

#! ### Optional dependencies
bytemuck = { version = "1.7.2", optional = true, features = ["derive"] }

## Enable this when generating docs.
document-features = { version = "0.2", optional = true }

## Allow serialization using [`serde`](https://docs.rs/serde) .
serde = { version = "1", optional = true, features = ["derive", "rc"] }

# native:
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
backtrace = { version = "0.3", optional = true }
parking_lot = "0.12"                             # Using parking_lot over std::sync::Mutex gives 50% speedups in some real-world scenarios.

# web:
[target.'cfg(target_arch = "wasm32")'.dependencies]
atomic_refcell = "0.1" # Used instead of parking_lot on on wasm. See https://github.com/emilk/egui/issues/1401


[dev-dependencies]
criterion = { version = "0.4", default-features = false }


[[bench]]
name = "benchmark"
harness = false
