tyoma / agge

Anti-Grain Evolution. 2D graphics engine for Speed and Quality in C++.
MIT License
117 stars 17 forks source link

plotting/charts library #9

Open DaMilyutin opened 1 year ago

DaMilyutin commented 1 year ago

Hi, Artem, Thank you for developing this library! I've always dreamed about backend as agg for plotting. I was astonished my Maxim's work. (It is still big loss for C++ community that Maxim passed away in 2013). Unfortunately, I wasn't able to totally grasp his library.

I know python's matplotlib uses agg as backend. So I was thinking to find something as good in implementation details but with modern C++ interfaces to use as backend. And I'm glad I've found agge. In answer to issue question about performance you mentioned you use agge for charts on your main work.

If you already have charts is it possible to share this library in github? Otherwise, I'd write my own (if I don't burn out 😄) and bombard you with questions in the process. I also want to implement 3d-line plots in 3d-axes as matplotlib does.

I want this plotting library to be able to render huge time series in almost real time, i.e. as fast as possible. So agge backend looks very attractive for this matter, too.

Actually, I want to use plotting library in my data visualisation project. And for GUI I plan to use slint-ui. They do not have plotting library, and I can render plot in buffer there. (There is Rust library called plotters I tried to use. But I'm not happy with it's backend. I'd want different linestyles. I even proposed some ideas there and implemented them by "forking and breaking". But I'm not sure those will be there any tine. And I'm not that good in Rust, I guess.) And agge go same approach agg did. So agge already has all functionality I need. Backend is floating point, too.

I'm not sure if antialiasing is made. Because I see pixelised saws on knot edges image Maybe, it is already aliased, and I have way too big monitor. And I'm too picky. 😅

To finalize all my wordy essay, I have some questions.

  1. Consider opening discussions section, because issues is hard way to contact you. There Is also show and tell section. I could share some code snippets there.
  2. Is there anti-aliasing? AFAIK, agg boasted smooth antialiased lines. Maybe, there is some special wrapper to have this. https://agg.sourceforge.net/antigrain.com/doc/introduction/introduction.agdoc.html#toc0005
  3. Could you share plotting/charts library (in abstract part) if possible?
  4. Otherwise, could you direct me to write my own plotting/charts library using agge as backend?
  5. Also, you mentioned you are writing your own GUI. How raw is it? Maybe, I could use it instead of slint-ui?

Thank you for library once again. I'll study it this weekend, definetely.

Best Regards, Daniel