## TODO - [x] detect rectangles - [x] detect whether used as text or used as graphs (if any of the 8 has no get character then it is used as text) - [ ] complete the specs - [ ] ~~Make the string literal escape work multiline~~ Impractical - [x] Make a swap out interface. - useful for detecting broken lines such as - - - and replace it with ~~~~~. This way it will be easier to process by the fragment emitter - [ ] Fix broken line implementation - [ ] Group traced elements together, then reduce as needed - [x] Add `#` as square start marker for lines - [x] Support for geometric shapes https://en.wikipedia.org/wiki/Geometric_Shapes - [x] Add enhance circle, detect circles then enhance it. - [ ] Add test cases - [X] Re-implement the escape string with double quotes. - [ ] Use perfect hashmap [phf](https://crates.io/crates/phf) to efficiently build the maps(unicode_map, circle_map, ascii_map) at compile time. - [ ] Fix the double arrow issue When there is 2 arrows in the middle of a line `---->>-------` or `----<<----` - [X] Clean the project enforce deny warnings. - [~] Fix a bug where an escaped text has whitespaces, the whitespaces are gone. - ~~This is a rendering bug in the browser where spaces are compressed into narrow widths~~ - [X] Revise calculation of Circle and Arc center by basing on the number of chars/width - [ ] Add more circle art, dynamically created - use `ito-canvas` - [~] Enhance quarter arc to be able to merge 2 or 3 quarters to form bigger arcs - [X] Quarter circle arcs - [X] Half circle arcs - [ ] 3/4 circle arcs - [ ] Support for pills, elongated ovals - [X] Update to library to latest version - nalgebra - ncollide2d -> parry2d - [X] Make the top-level directory a workspace and put svgbob and cli into packages/ - [X] Make a trait for the merging algorithms - [X] merge_recursive - [X] first_pass_merge - [X] second_pass_merge - [ ] Try again to endorse the span of the grouped fragments that are in the same span but not reduces into a single shape - [ ] Move the modules into flat structure as possible rather than deep - [ ] Make use of dot canvas for circles that are larger than radius 10. - [ ] Use `jss` and json syntax for the legen to allow more flexibility with layered class names.