These methods don't require a string.format call so we'll directly call the Render method without a call to string.format.
Added bonus of a a couple fewer allocations too.
Makes the Report method an explicit implementation to allow for better interoperability with standard .NET progress functionality while keeping backwards compatibility with existing ProgressTask functionality.
Closes#285
Previous behavior was that the only way to get a task to a finished state was to artificially set the Value to MaxValue.
With this change StopTask() will also complete the task with the change that a task cannot be restarted.
In both of these loops context is captured preventing caching of the lambda. this results in a pretty significant amount of allocations especially with progress bars that constantly are remeasuring
R# and Rider have quite a bit of noise related to documentation in the testing projects so this disables those warnings.
In the main projects, R# and Rider complain loudly about the namespaces not matching the file structure. The DotSettings file disables that warning.
Once you get rid of that noise there are quite a few opportunities for trimming out redundant code that R# points out especially with the nullable support enabled, plus there are some bugs related to multiple enumerations worth looking into I think.
* Implemented buffer/stream constructors for CanvasImage and added section to Canvas example
Signed-off-by: David Butler <mail@davidbutlerdesign.co.uk>
Fixes some tree rendering problems where lines were not properly drawn
at some levels during some circumstances.
* Change the API back to only allow one root.
* Now uses a stack based approach to rendering instead of recursion.
* Removes the need for measuring the whole tree in advance.
Leave this up to each child to render.