Skip to content

ScottPlot 4.1.0#605

Merged
swharden merged 192 commits intomasterfrom
IPlottable
Nov 18, 2020
Merged

ScottPlot 4.1.0#605
swharden merged 192 commits intomasterfrom
IPlottable

Conversation

@swharden
Copy link
Member

@swharden swharden commented Oct 23, 2020

This PR extends work that started in #578 where the final steps are to replace the Plottable abstract class with an IPlottable interface, improve data validation for all plottables, improve the rendering system (render onto a single Bitmap and never store Bitmaps), and also add the framework to eventually support for multiple axes.

Since this involves small breaking changes, I'll roll version 4.0 -> 4.1 and mark NuGet packages as pre-release (beta) until development stabilizes.

IPlottable now has one method to check for errors and return a string if they exist #578 #553 #603 #605
excellent code and logic introduced in #553 has now been moved inside individual plottables
now supports custom actions
@swharden swharden mentioned this pull request Oct 23, 2020
38 tasks
Copy link
Contributor

@StendProg StendProg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IsVisible -> Visible.
Is - commonly used for check methods.

@StendProg
Copy link
Contributor

Hi @swharden, good job.
I maked review, but it does not contain any significant comments.

The only thing is, I would move the deepValidation into a separate method, and a separate interface. And would call it from Plot level as needed. This would allow simple Plottalbe to not implement this interface if they don't need it.

@swharden
Copy link
Member Author

swharden commented Nov 14, 2020

Multi-axis plots are now fully supported, including support for an arbitrary number/combination of axes and automatic layout adjustment based on axis label and tick size.

I'm still thinking about how to best present this using a simplified API, but for now this is functional.

https://github.com/swharden/ScottPlot/blob/71c3876dcef9e6e00225603ec9574e76ec32335c/tests/AxisRenderTests/MultiAxis.cs#L10-L44

image

@swharden swharden changed the title Refactor Plot Rendering System ScottPlot 4.1.0 Nov 18, 2020
@swharden
Copy link
Member Author

Large-scale refactoring is now mostly complete. Cookbook and demos work acceptably. Several improvements still need to be made, but they can achieved by modifying just a few modules, so I think now is a good time to merge this PR.

See /dev/changelog.md for a summary of major changes.

Remaining high priority tasks include:

  • Refactor layout API for improved simplicity
  • Refine multi-axis API for improved simplicity
  • Improve data validation for plottables
  • Create new plottables specifically for growing data (mark public data fields readonly and provide setters to replace data arrays)
  • Refactor the cookbook generator to create a simpler multi-page HTML (not markdown) static website
  • Refactor user controls for improved multi-threaded rendering by making Render() non-blocking and thread-safe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants