-
-
Notifications
You must be signed in to change notification settings - Fork 7.8k
Cairo rendering for Qt5 #8771
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cairo rendering for Qt5 #8771
Conversation
4ebcc97
to
017aeed
Compare
ffe84ac
to
b776786
Compare
(Apparently the version parsing can sometimes fail on Travis.)
gdk_window_process_updates is deprecated since GDK 3.22. Agg animations run fine without it, and removing it makes mpl_cairo animations faster. Being drawable is synonym to being mapped and visible.
Vector surfaces do not report their extents, so we need to pass them in manually.
I would really appreciate if this could make it in 2.2 because it is more or less a prerequisite for me to make a first release of mplcairo (i.e. with a working GUI backend). So labeling it as such, but feel free to retag if you think this is too hard. |
@anntzer I'd be OK w/ it if it were more self contained. What are good tests that the changes in I agree it would be very nice to see this in for 2.2. It seems that cairo is a great way forward, particularly as it can be used to drive openGL if I understand correctly. |
Splitting out the nonessential parts... |
Superseded by #10210. |
This PR implements a cairo based renderer for Qt canvas, under the name "Qt4Cairo"/"Qt5Cairo". Test e.g. by setting the MPLBACKEND environment variable to
qt4cairo
/qt5cairo
.The following commits implement the Qt5Cairo backend, then the Qt4Cairo backend, and redistributes relevant code chunks between the various
backend_qt*
modules in order to maximize code reuse, and then update the docs. I would suggest restricting comments for this PR to the diff of these last commits.Note that because of the way the cairo backend is currently written, all the drawing occurs during the Qt draw event, instead of being buffered before it as in Agg. The third party mplcairo backend works around this limitation, but this PR is still useful to cleanly separate the windowing and rendering parts of the code.
PR Checklist
-> see test_backends_interactive.py