[package]
edition = "2021"
rust-version = "1.86"
name = "hephaestus"
version = "0.2.0"
build = false
exclude = [
"CLAUDE.md",
"src/**/CLAUDE.md",
".github/",
"PLAN.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Backend-agnostic 2D scene renderer for data visualization."
readme = "README.md"
keywords = [
"visualization",
"plotting",
"graphics",
"renderer",
"vello",
]
categories = [
"graphics",
"visualization",
"rendering::engine",
]
license = "MIT"
repository = "https://github.com/posit-dev/hephaestus"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
blend2d = []
canvas = [
"dep:wasm-bindgen",
"dep:wasm-bindgen-futures",
"dep:js-sys",
"dep:web-sys",
]
chrono = ["dep:chrono"]
default = [
"vello",
"png",
]
document = [
"document-read",
"document-write",
]
document-read = []
document-write = []
geom-geojson = []
geom-wkb = []
geom-wkt = []
google-fonts = [
"dep:ureq",
"dep:directories",
]
jiff = ["dep:jiff"]
jpeg = ["dep:jpeg-encoder"]
pdf = []
png = ["dep:png"]
svg = []
tiff = ["dep:tiff"]
time = ["dep:time"]
vello = [
"dep:vello",
"dep:wgpu",
"dep:pollster",
"dep:futures-intrusive",
"dep:bytemuck",
]
vello-hybrid = [
"dep:vello_hybrid",
"vello_hybrid/wgpu",
"vello_hybrid/std",
"dep:glifo",
"dep:vello_common",
"vello_common/std",
"dep:wgpu",
"dep:pollster",
"dep:futures-intrusive",
"dep:bytemuck",
]
webgl = [
"dep:vello_hybrid",
"vello_hybrid/webgl",
"vello_hybrid/libm",
"dep:glifo",
"dep:vello_common",
"vello_common/libm",
"dep:wasm-bindgen",
"dep:js-sys",
"dep:web-sys",
]
webp = ["dep:image-webp"]
window = ["dep:winit"]
[lib]
name = "hephaestus"
path = "src/lib.rs"
[[example]]
name = "aa_nondeterminism"
path = "examples/aa_nondeterminism.rs"
required-features = ["vello"]
[[example]]
name = "aspect_log"
path = "examples/aspect_log.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "aspect_mode"
path = "examples/aspect_mode.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "aspect_sqrt"
path = "examples/aspect_sqrt.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "backend_perf"
path = "examples/backend_perf.rs"
required-features = [
"vello",
"vello-hybrid",
"png",
]
[[example]]
name = "bspline"
path = "examples/bspline.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "chord_diagram"
path = "examples/chord_diagram.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "closed_shape_markers"
path = "examples/closed_shape_markers.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "composition_demo"
path = "examples/composition_demo.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "document_load"
path = "examples/document_load.rs"
required-features = [
"vello",
"document-read",
"png",
]
[[example]]
name = "document_save"
path = "examples/document_save.rs"
required-features = ["document-write"]
[[example]]
name = "ellipse"
path = "examples/ellipse.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "endpoint_arrows"
path = "examples/endpoint_arrows.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "facet_strips"
path = "examples/facet_strips.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "faceted"
path = "examples/faceted.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "font_registration"
path = "examples/font_registration.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "geometry"
path = "examples/geometry.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "glyph_markers"
path = "examples/glyph_markers.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "google_fonts"
path = "examples/google_fonts.rs"
required-features = [
"vello",
"png",
"google-fonts",
]
[[example]]
name = "hello"
path = "examples/hello.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "hello_hybrid"
path = "examples/hello_hybrid.rs"
required-features = [
"vello-hybrid",
"png",
]
[[example]]
name = "image_formats"
path = "examples/image_formats.rs"
required-features = [
"vello",
"png",
"jpeg",
"tiff",
"webp",
]
[[example]]
name = "layout_demo"
path = "examples/layout_demo.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "legends"
path = "examples/legends.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "line"
path = "examples/line.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "locale_de"
path = "examples/locale_de.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "log_scale"
path = "examples/log_scale.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "long_labels"
path = "examples/long_labels.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "nesting_asymmetric"
path = "examples/nesting_asymmetric.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "nesting_chrome_coupling"
path = "examples/nesting_chrome_coupling.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "nesting_deep"
path = "examples/nesting_deep.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "nesting_faceted_title"
path = "examples/nesting_faceted_title.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "nesting_fixed_aspect"
path = "examples/nesting_fixed_aspect.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "nesting_outer_chrome_propagates"
path = "examples/nesting_outer_chrome_propagates.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "point"
path = "examples/point.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "polar"
path = "examples/polar.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "polar_nested"
path = "examples/polar_nested.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "polygon"
path = "examples/polygon.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "polygon_features"
path = "examples/polygon_features.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "polyline_features"
path = "examples/polyline_features.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "polyline_markers"
path = "examples/polyline_markers.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "primitives_demo"
path = "examples/primitives_demo.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "projection_custom"
path = "examples/projection_custom.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "radar"
path = "examples/radar.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "rect"
path = "examples/rect.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "ribbon_bspline"
path = "examples/ribbon_bspline.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "ribbon_geom"
path = "examples/ribbon_geom.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "ribbon_gradient"
path = "examples/ribbon_gradient.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "ribbon_line_polar"
path = "examples/ribbon_line_polar.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "rich_text_chrome"
path = "examples/rich_text_chrome.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "rich_text_inline"
path = "examples/rich_text_inline.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "rich_text_marquee_parity"
path = "examples/rich_text_marquee_parity.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "rotation"
path = "examples/rotation.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "segment"
path = "examples/segment.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "shapes_demo"
path = "examples/shapes_demo.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "temporal"
path = "examples/temporal.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "text_fit"
path = "examples/text_fit.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "text_geom"
path = "examples/text_geom.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "text_outline"
path = "examples/text_outline.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "text_path"
path = "examples/text_path.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "theme_axis_title_inside"
path = "examples/theme_axis_title_inside.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "theme_blank"
path = "examples/theme_blank.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "theme_brand"
path = "examples/theme_brand.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "theme_dark"
path = "examples/theme_dark.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "theme_geom_defaults"
path = "examples/theme_geom_defaults.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "theme_legend_variants"
path = "examples/theme_legend_variants.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "theme_plot_background"
path = "examples/theme_plot_background.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "theme_polar_corner_radius"
path = "examples/theme_polar_corner_radius.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "theme_text_align_to"
path = "examples/theme_text_align_to.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "wedge"
path = "examples/wedge.rs"
required-features = [
"vello",
"png",
]
[[example]]
name = "window"
path = "examples/window.rs"
required-features = [
"vello",
"window",
]
[[test]]
name = "alpha_format"
path = "tests/alpha_format.rs"
required-features = ["vello"]
[[test]]
name = "binned_scale_render"
path = "tests/binned_scale_render.rs"
[[test]]
name = "composition_public_paths"
path = "tests/composition_public_paths.rs"
[[test]]
name = "document_roundtrip"
path = "tests/document_roundtrip.rs"
required-features = [
"vello",
"document",
]
[[test]]
name = "geometry_geom"
path = "tests/geometry_geom.rs"
required-features = ["vello"]
[[test]]
name = "hybrid"
path = "tests/hybrid.rs"
required-features = ["vello-hybrid"]
[[test]]
name = "image_writers"
path = "tests/image_writers.rs"
required-features = ["vello"]
[[test]]
name = "mesh"
path = "tests/mesh.rs"
required-features = ["vello"]
[[test]]
name = "module_boundaries"
path = "tests/module_boundaries.rs"
[[test]]
name = "picking"
path = "tests/picking.rs"
required-features = ["vello"]
[[test]]
name = "projection_custom"
path = "tests/projection_custom.rs"
required-features = ["vello"]
[[test]]
name = "rich_text"
path = "tests/rich_text.rs"
required-features = ["vello"]
[[test]]
name = "smoke"
path = "tests/smoke.rs"
required-features = ["vello"]
[[test]]
name = "texture_smoke"
path = "tests/texture_smoke.rs"
required-features = ["vello"]
[[test]]
name = "theme_parity"
path = "tests/theme_parity.rs"
[[test]]
name = "theme_render"
path = "tests/theme_render.rs"
[[test]]
name = "window_blit"
path = "tests/window_blit.rs"
required-features = ["vello"]
[dependencies.bytemuck]
version = "1"
optional = true
[dependencies.chrono]
version = "0.4"
optional = true
default-features = false
[dependencies.clipper2-rust]
version = "1.1"
[dependencies.directories]
version = "5"
optional = true
[dependencies.futures-intrusive]
version = "0.5"
optional = true
[dependencies.glifo]
version = "0.3"
optional = true
default-features = false
[dependencies.image-webp]
version = "0.2"
optional = true
[dependencies.jiff]
version = "0.2"
optional = true
default-features = false
[dependencies.jpeg-encoder]
version = "0.7"
optional = true
[dependencies.js-sys]
version = "0.3"
optional = true
[dependencies.kurbo]
version = "0.13"
[dependencies.parley]
version = "0.9"
[dependencies.peniko]
version = "0.6"
[dependencies.png]
version = "0.18"
optional = true
[dependencies.pollster]
version = "0.4"
optional = true
[dependencies.pulldown-cmark]
version = "0.13"
default-features = false
[dependencies.thiserror]
version = "2"
[dependencies.tiff]
version = "0.11"
features = [
"deflate",
"lzw",
]
optional = true
default-features = false
[dependencies.time]
version = "0.3"
optional = true
default-features = false
[dependencies.ureq]
version = "2"
features = ["tls"]
optional = true
default-features = false
[dependencies.vello]
version = "0.10"
features = ["wgpu"]
optional = true
default-features = false
[dependencies.vello_common]
version = "0.2"
optional = true
default-features = false
[dependencies.vello_hybrid]
version = "0.2"
features = ["text"]
optional = true
default-features = false
[dependencies.wasm-bindgen]
version = "0.2"
optional = true
[dependencies.wasm-bindgen-futures]
version = "0.4"
optional = true
[dependencies.web-sys]
version = "0.3"
features = [
"Window",
"Document",
"Element",
"HtmlCanvasElement",
"CssStyleDeclaration",
"WebGl2RenderingContext",
]
optional = true
[dependencies.wgpu]
version = "29"
features = [
"wgsl",
"std",
]
optional = true
default-features = false
[dependencies.winit]
version = "0.30"
optional = true
[target.'cfg(all(unix, not(any(target_os = "macos", target_os = "ios"))))'.dependencies.wgpu]
version = "29"
features = [
"vulkan",
"gles",
]
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.wgpu]
version = "29"
features = ["webgpu"]
optional = true
default-features = false
[target.'cfg(target_os = "ios")'.dependencies.wgpu]
version = "29"
features = ["metal"]
optional = true
default-features = false
[target.'cfg(target_os = "macos")'.dependencies.wgpu]
version = "29"
features = ["metal"]
optional = true
default-features = false
[target."cfg(windows)".dependencies.wgpu]
version = "29"
features = ["dx12"]
optional = true
default-features = false