filmborders 0.0.32

add hipster film borders to your images :)
Documentation
## 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