[package]
name = "epaint"
version.workspace = true
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Minimal 2D graphics library for GUI work"
edition.workspace = true
rust-version.workspace = true
homepage = "https://github.com/emilk/egui/tree/main/crates/epaint"
license = "MIT OR Apache-2.0"
readme = "README.md"
repository = "https://github.com/emilk/egui/tree/main/crates/epaint"
categories = ["graphics", "gui"]
keywords = ["graphics", "gui", "egui"]
include = ["../../LICENSE-APACHE", "../../LICENSE-MIT", "**/*.rs", "Cargo.toml"]

[lints]
workspace = true

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

[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 interoperability with other color libraries.
cint = ["ecolor/cint"]

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

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

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

## Enable parallel tessellation using [`rayon`](https://docs.rs/rayon).
##
## This can help performance for graphics-intense applications.
rayon = ["dep:rayon"]

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

## Change Vertex layout to be compatible with unity
unity = []

## Override and disable the unity feature
## This exists, so that when testing with --all-features, snapshots render correctly.
_override_unity = []

[dependencies]
emath.workspace = true
ecolor.workspace = true

ahash.workspace = true
font-types.workspace = true
harfrust.workspace = true
log.workspace = true
nohash-hasher.workspace = true
parking_lot.workspace = true # Using parking_lot over std::sync::Mutex gives 50% speedups in some real-world scenarios.
profiling.workspace = true
self_cell.workspace = true
skrifa.workspace = true
smallvec.workspace = true
unicode-general-category.workspace = true
unicode-segmentation.workspace = true
vello_cpu.workspace = true

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

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

rayon = { workspace = true, optional = true }

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

epaint_default_fonts = { workspace = true, optional = true }

[dev-dependencies]
criterion.workspace = true
mimalloc.workspace = true
similar-asserts.workspace = true


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