[package]
edition = "2021"
rust-version = "1.70"
name = "dotmax"
version = "0.1.8"
authors = ["Frosty"]
build = false
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",
"docs/progress_loader_sheet.html",
"docs/examples/*.png",
"tests/visual/",
"tests/assets/",
"tests/fixtures/",
"tests/test_assets/",
"*.context.xml",
"BRAILLE_GRAPHICS_MASTER_PLAN.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "High-performance terminal braille rendering for images, animations, and graphics"
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",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/newjordan/dotmax"
[features]
default = []
image = [
"dep:image",
"dep:imageproc",
"dep:gif",
"dep:png",
]
svg = [
"dep:resvg",
"dep:usvg",
]
video = [
"dep:ffmpeg-next",
"image",
]
[lib]
name = "dotmax"
path = "src/lib.rs"
[[example]]
name = "animated_apng"
path = "examples/animated_apng.rs"
required-features = ["image"]
[[example]]
name = "animated_gif"
path = "examples/animated_gif.rs"
required-features = ["image"]
[[example]]
name = "animation_buffer"
path = "examples/animation_buffer.rs"
[[example]]
name = "bouncing_ball"
path = "examples/animations/bouncing_ball.rs"
[[example]]
name = "braille_mapping_demo"
path = "examples/braille_mapping_demo.rs"
required-features = ["image"]
[[example]]
name = "circles_demo"
path = "examples/circles_demo.rs"
[[example]]
name = "circles_demo_simple"
path = "examples/circles_demo_simple.rs"
[[example]]
name = "clock"
path = "examples/animations/clock.rs"
[[example]]
name = "color_conversion_demo"
path = "examples/color_conversion_demo.rs"
[[example]]
name = "color_demo"
path = "examples/color_demo.rs"
[[example]]
name = "color_detection"
path = "examples/color_detection.rs"
[[example]]
name = "color_image"
path = "examples/color_image.rs"
required-features = ["image"]
[[example]]
name = "color_schemes_demo"
path = "examples/color_schemes_demo.rs"
[[example]]
name = "colored_shapes"
path = "examples/colored_shapes.rs"
[[example]]
name = "colored_shapes_simple"
path = "examples/colored_shapes_simple.rs"
[[example]]
name = "compare_all_sizes"
path = "examples/compare_all_sizes.rs"
required-features = ["image"]
[[example]]
name = "compare_resize_filters"
path = "examples/compare_resize_filters.rs"
required-features = ["image"]
[[example]]
name = "custom_image"
path = "examples/custom_image.rs"
required-features = ["image"]
[[example]]
name = "custom_scheme"
path = "examples/custom_scheme.rs"
[[example]]
name = "density_demo"
path = "examples/density_demo.rs"
[[example]]
name = "differential_demo"
path = "examples/differential_demo.rs"
[[example]]
name = "dither_comparison"
path = "examples/dither_comparison.rs"
required-features = ["image"]
[[example]]
name = "fireworks"
path = "examples/animations/fireworks.rs"
[[example]]
name = "fps_control"
path = "examples/fps_control.rs"
[[example]]
name = "generate_apng_fixtures"
path = "examples/generate_apng_fixtures.rs"
required-features = ["image"]
[[example]]
name = "generate_extreme_test_images"
path = "examples/generate_extreme_test_images.rs"
required-features = ["image"]
[[example]]
name = "heatmap"
path = "examples/heatmap.rs"
[[example]]
name = "hello_braille"
path = "examples/hello_braille.rs"
[[example]]
name = "image_browser"
path = "examples/image_browser.rs"
required-features = [
"image",
"svg",
]
[[example]]
name = "lines_demo"
path = "examples/lines_demo.rs"
[[example]]
name = "load_image"
path = "examples/load_image.rs"
required-features = ["image"]
[[example]]
name = "loading_bar_sheet"
path = "examples/loading_bar_sheet.rs"
[[example]]
name = "loading_bars"
path = "examples/loading_bars.rs"
[[example]]
name = "loading_spinner"
path = "examples/animations/loading_spinner.rs"
[[example]]
name = "logging_demo"
path = "examples/logging_demo.rs"
[[example]]
name = "measure_extreme_baseline"
path = "examples/measure_extreme_baseline.rs"
required-features = ["image"]
[[example]]
name = "prerendered_demo"
path = "examples/prerendered_demo.rs"
[[example]]
name = "quick_demo"
path = "examples/quick_demo.rs"
[[example]]
name = "render_tuner"
path = "examples/render_tuner.rs"
required-features = ["image"]
[[example]]
name = "resize_image"
path = "examples/resize_image.rs"
required-features = ["image"]
[[example]]
name = "save_svg_raster"
path = "examples/save_svg_raster.rs"
required-features = [
"image",
"svg",
]
[[example]]
name = "shapes_demo"
path = "examples/shapes_demo.rs"
[[example]]
name = "shapes_demo_simple"
path = "examples/shapes_demo_simple.rs"
[[example]]
name = "simple_animation"
path = "examples/simple_animation.rs"
[[example]]
name = "simple_image"
path = "examples/simple_image.rs"
required-features = ["image"]
[[example]]
name = "svg_demo"
path = "examples/svg_demo.rs"
required-features = [
"image",
"svg",
]
[[example]]
name = "svg_font_quality"
path = "examples/svg_font_quality.rs"
required-features = [
"image",
"svg",
]
[[example]]
name = "svg_font_visual_demo"
path = "examples/svg_font_visual_demo.rs"
required-features = [
"image",
"svg",
]
[[example]]
name = "terminal_debug"
path = "examples/terminal_debug.rs"
[[example]]
name = "test_adaptive_resize_performance"
path = "examples/test_adaptive_resize_performance.rs"
required-features = ["image"]
[[example]]
name = "test_svg_background_fix"
path = "examples/test_svg_background_fix.rs"
required-features = [
"image",
"svg",
]
[[example]]
name = "test_svg_loading"
path = "examples/test_svg_loading.rs"
required-features = [
"image",
"svg",
]
[[example]]
name = "test_svg_manual"
path = "examples/test_svg_manual.rs"
required-features = [
"image",
"svg",
]
[[example]]
name = "test_video_decode"
path = "examples/test_video_decode.rs"
required-features = ["video"]
[[example]]
name = "threshold_demo"
path = "examples/threshold_demo.rs"
required-features = ["image"]
[[example]]
name = "universal_media"
path = "examples/universal_media.rs"
required-features = ["image"]
[[example]]
name = "video_player"
path = "examples/video_player.rs"
required-features = ["video"]
[[example]]
name = "view_image"
path = "examples/view_image.rs"
required-features = ["image"]
[[example]]
name = "waveform"
path = "examples/animations/waveform.rs"
[[example]]
name = "webcam_selector"
path = "examples/webcam_selector.rs"
[[example]]
name = "webcam_tuner"
path = "examples/webcam_tuner.rs"
[[example]]
name = "webcam_viewer"
path = "examples/webcam_viewer.rs"
[[test]]
name = "density_integration_tests"
path = "tests/density_integration_tests.rs"
[[test]]
name = "image_loading_tests"
path = "tests/image_loading_tests.rs"
[[test]]
name = "image_rendering_tests"
path = "tests/image_rendering_tests.rs"
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[test]]
name = "media_integration_tests"
path = "tests/media_integration_tests.rs"
[[test]]
name = "property_tests"
path = "tests/property_tests.rs"
[[test]]
name = "temporal_coherence_tests"
path = "tests/temporal_coherence_tests.rs"
[[test]]
name = "visual_regression"
path = "tests/visual_regression.rs"
[[bench]]
name = "animation"
path = "benches/animation.rs"
harness = false
[[bench]]
name = "braille_mapping"
path = "benches/braille_mapping.rs"
[[bench]]
name = "color_apply"
path = "benches/color_apply.rs"
harness = false
[[bench]]
name = "color_conversion"
path = "benches/color_conversion.rs"
harness = false
[[bench]]
name = "color_rendering"
path = "benches/color_rendering.rs"
[[bench]]
name = "color_schemes"
path = "benches/color_schemes.rs"
harness = false
[[bench]]
name = "core_rendering"
path = "benches/core_rendering.rs"
harness = false
[[bench]]
name = "density"
path = "benches/density.rs"
[[bench]]
name = "dithering"
path = "benches/dithering.rs"
[[bench]]
name = "extreme_image_pipeline"
path = "benches/extreme_image_pipeline.rs"
harness = false
[[bench]]
name = "image_conversion"
path = "benches/image_conversion.rs"
[[bench]]
name = "image_processing"
path = "benches/image_processing.rs"
harness = false
required-features = ["image"]
[[bench]]
name = "image_resize"
path = "benches/image_resize.rs"
[[bench]]
name = "media_detection"
path = "benches/media_detection.rs"
harness = false
required-features = ["image"]
[[bench]]
name = "media_playback"
path = "benches/media_playback.rs"
harness = false
required-features = ["image"]
[[bench]]
name = "primitives"
path = "benches/primitives.rs"
[[bench]]
name = "quick"
path = "benches/quick.rs"
harness = false
[[bench]]
name = "rendering"
path = "benches/rendering.rs"
harness = false
[[bench]]
name = "svg_rendering"
path = "benches/svg_rendering.rs"
[dependencies.crossterm]
version = "0.29"
[dependencies.ffmpeg-next]
version = "7.0"
optional = true
[dependencies.gif]
version = "0.13"
optional = true
[dependencies.image]
version = "0.25"
optional = true
[dependencies.imageproc]
version = "0.24"
optional = true
[dependencies.png]
version = "0.18"
optional = true
[dependencies.ratatui]
version = "0.29"
[dependencies.resvg]
version = "0.38"
optional = true
[dependencies.thiserror]
version = "2.0"
[dependencies.tracing]
version = "0.1"
[dependencies.usvg]
version = "0.38"
optional = true
[dev-dependencies.criterion]
version = "0.7"
features = ["html_reports"]
[dev-dependencies.proptest]
version = "1.4"
[dev-dependencies.static_assertions]
version = "1.1"
[dev-dependencies.tempfile]
version = "3.10"
[dev-dependencies.tracing-subscriber]
version = "0.3"
[lints.clippy]
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
doc_markdown = "allow"
imprecise_flops = "allow"
needless_pass_by_value = "allow"
too_many_lines = "allow"
uninlined_format_args = "allow"
unnecessary_cast = "allow"
[lints.clippy.all]
level = "deny"
priority = -1
[lints.clippy.nursery]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1