## Film Borders in WASM If you have a modern browser, you can use the live WASM web version [here](https://film-borders.romnn.com). #### Installation You can use the [web application](https://film-borders.romnn.com) that uses WASM or the CLI tool for batch processing. To install the CLI, run ```bash cargo install filmborders --bin film-borders ``` For local testing, you can also install the current version locally: ```bash cargo install --bin film-borders --path . ``` #### Benchmarking ```bash sudo apt install linux-tools-common linux-tools-generic linux-`tools-name -r` cargo install flamegraph sudo cargo flamegraph -o my_flamegraph.svg -- apply --image ./samples/sample1.jpg --output ./output/sample1.png --border 0 --scale 1.00 ``` #### Usage ```bash film-borders --image ~/Downloads/testscan.jpg --width 2000 --height 1500 --border 10 --rotate 90 ``` For a list of options, see ```bash film-borders --help ``` #### Linting ```bash cargo clippy --tests --benches --examples --all-features -- -Dclippy::all -Dclippy::pedantic ``` #### TODO - lint - add rendering text - consider: where should into be used, where can be passed by reference - add single simple benchmark - get out the benchmark data as json or so - make a performance tracker via github actions - add a full suite of integration tests that check against expected output - should test: different file formats - should test: all border fill modes - should test: with single image and multiple images - should test: different sets of border configurations - use impls where possible - inline everything - add more benchmarks - add documentation - add more tests - add examples - update the website - use generic image backend #### Done - error handling for lib and border - implement arithmetic errors for more types - make the errors more nuanced, e.g. from what operation they stem from - add backtraces to all error types - make debug statements console log when on wasm target - add builder for image such that path can be set more easily - crop sides should really only be used for the user right? - subimage rect could also directly return a mutable sub image using crop? - consider: where should image rect be used - make all ops checked - implement scale border mode (not sophisticated) - split the types into multiple files - crop to fit should return rect? - write a clamp trait - lint - remove the apply subcommand - make border optional - allow custom border images (cli, lib and web) - make nice ui components - custom background color