Skia vs. Cairo for wxpython

I mainly just wanted to get advice on whether the Skia graphics engine or Cairo is better for usage with wxpython. By, better, I mean faster, easier to implement into a wxpython window with events, etc and longevity.

From my research, I can see:

  • Cairo has been around quite awhile and used in many projects (though pycairo not so much)
  • wxPython has integration for Cairo already as per wx.lib

  • Skia seems to be faster and uses the GPU (if I am not mistaken). This is probably the most compelling reason I see to use it over cairo.
  • Skia aso has a more relaxed license and is mostly maintained by Google (that could be a good or bad thing, depending on how you look at it)
  • Skia doesn’t seem to have integration with wxpython (yet)?

Anyone have experience with these libraries + wxpython? I would esp. like to hear about Skia + wxpython and how that kind of integration would/could work. Thanks! :wink:

I’m going through working out this choice right now - started down the cairo route. It looks like the cairo project is dead or dying - surprising given the large number of projects that depend on it. There hasn’t been a release in years, the website is completely outdated, the mailing list is broken, several targets don’t compile out of the box, and the maintainer does not respond to emails. Some information about what’s going on over there is here: Cairo is in a maintenance-only mode. Nobody develops this library anymore and it... | Hacker News and here: Is there still somebody in the Cairo community who is able to make a release? | Hacker News

It looks like Skia or Blend2D is the way to go, now. I’d happily contribute to a project whose goal was a tighter integration between wx and either of these…

Yeah, I think Skia is the way to go.

Using moderngl and skia-python, I was able to experiment a bit a while back and ended up with this: GitHub - Correct-Syntax/vectorsk: Experimental vector graphics editor using skia, moderngl and wxpython, if that helps you any. It is not perfect, :wink: but should give a good starting place. Or, at least a demo to see if you want to use Skia.