[package]
name = "dotmax"
version = "0.1.7"
authors = ["Frosty"]
edition = "2021"
rust-version = "1.70"
description = "High-performance terminal braille rendering for images, animations, and graphics"
license = "MIT OR Apache-2.0"
repository = "https://github.com/newjordan/dotmax"
homepage = "https://github.com/newjordan/dotmax"
documentation = "https://docs.rs/dotmax"
readme = "README.md"
keywords = ["terminal", "braille", "graphics", "cli", "visualization"]
categories = ["command-line-interface", "graphics", "rendering"]
exclude = [
".github/",
".bmad/",
".claude/",
".augment/",
".gemini/",
"docs/sprint-artifacts/",
"docs/profiling/",
"docs/adr/",
"docs/*.yaml",
"docs/bmm-*",
"docs/*-2025-*.md",
"docs/PRD.md",
"docs/epics.md",
"docs/research-*.md",
"docs/implementation-*.md",
"docs/sprint-*.md",
"tests/visual/",
"tests/assets/",
"tests/fixtures/",
"tests/test_assets/",
"*.context.xml",
"BRAILLE_GRAPHICS_MASTER_PLAN.md",
]
[dependencies]
ratatui = "0.29"
crossterm = "0.29"
thiserror = "2.0"
tracing = "0.1"
image = { version = "0.25", optional = true }
imageproc = { version = "0.24", optional = true }
gif = { version = "0.13", optional = true }
png = { version = "0.18", optional = true }
resvg = { version = "0.38", optional = true }
usvg = { version = "0.38", optional = true }
ffmpeg-next = { version = "7.0", optional = true }
[features]
default = []
image = ["dep:image", "dep:imageproc", "dep:gif", "dep:png"]
svg = ["dep:resvg", "dep:usvg"]
video = ["dep:ffmpeg-next", "image"]
[dev-dependencies]
criterion = { version = "0.7", features = ["html_reports"] }
tracing-subscriber = "0.3"
tempfile = "3.10"
proptest = "1.4"
static_assertions = "1.1"
[[bench]]
name = "rendering"
harness = false
[[bench]]
name = "extreme_image_pipeline"
harness = false
[[bench]]
name = "color_conversion"
harness = false
[[bench]]
name = "color_schemes"
harness = false
[[bench]]
name = "color_apply"
harness = false
[[bench]]
name = "animation"
harness = false
[[bench]]
name = "core_rendering"
harness = false
[[bench]]
name = "image_processing"
harness = false
required-features = ["image"]
[[bench]]
name = "quick"
harness = false
[[bench]]
name = "media_detection"
harness = false
required-features = ["image"]
[[bench]]
name = "media_playback"
harness = false
required-features = ["image"]
[[example]]
name = "compare_resize_filters"
required-features = ["image"]
[[example]]
name = "resize_image"
required-features = ["image"]
[[example]]
name = "measure_extreme_baseline"
required-features = ["image"]
[[example]]
name = "dither_comparison"
required-features = ["image"]
[[example]]
name = "compare_all_sizes"
required-features = ["image"]
[[example]]
name = "svg_demo"
required-features = ["image", "svg"]
[[example]]
name = "threshold_demo"
required-features = ["image"]
[[example]]
name = "image_browser"
required-features = ["image", "svg"]
[[example]]
name = "test_svg_background_fix"
required-features = ["image", "svg"]
[[example]]
name = "color_image"
required-features = ["image"]
[[example]]
name = "view_image"
required-features = ["image"]
[[example]]
name = "custom_image"
required-features = ["image"]
[[example]]
name = "svg_font_visual_demo"
required-features = ["image", "svg"]
[[example]]
name = "svg_font_quality"
required-features = ["image", "svg"]
[[example]]
name = "test_svg_manual"
required-features = ["image", "svg"]
[[example]]
name = "simple_image"
required-features = ["image"]
[[example]]
name = "test_svg_loading"
required-features = ["image", "svg"]
[[example]]
name = "load_image"
required-features = ["image"]
[[example]]
name = "braille_mapping_demo"
required-features = ["image"]
[[example]]
name = "save_svg_raster"
required-features = ["image", "svg"]
[[example]]
name = "test_adaptive_resize_performance"
required-features = ["image"]
[[example]]
name = "generate_extreme_test_images"
required-features = ["image"]
[[example]]
name = "universal_media"
required-features = ["image"]
[[example]]
name = "animated_gif"
required-features = ["image"]
[[example]]
name = "generate_apng_fixtures"
required-features = ["image"]
[[example]]
name = "animated_apng"
required-features = ["image"]
[[example]]
name = "video_player"
required-features = ["video"]
[[example]]
name = "test_video_decode"
required-features = ["video"]
[[example]]
name = "render_tuner"
required-features = ["image"]
[[example]]
name = "bouncing_ball"
path = "examples/animations/bouncing_ball.rs"
[[example]]
name = "loading_spinner"
path = "examples/animations/loading_spinner.rs"
[[example]]
name = "waveform"
path = "examples/animations/waveform.rs"
[[example]]
name = "fireworks"
path = "examples/animations/fireworks.rs"
[[example]]
name = "clock"
path = "examples/animations/clock.rs"
[lints.clippy]
all = { level = "deny", priority = -1 }
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
uninlined_format_args = "allow"
doc_markdown = "allow"
cast_precision_loss = "allow"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_sign_loss = "allow"
too_many_lines = "allow"
cast_lossless = "allow"
unnecessary_cast = "allow"
needless_pass_by_value = "allow"
imprecise_flops = "allow"