Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
FigureCanvasCairo can init RendererCairo; kill RendererCairo subclasses.#21981
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
@@ -463,11 +475,10 @@ def print_rgba(self, fobj): | |||
def _get_printed_image_surface(self): | |||
width, height = self.get_width_height() | |||
renderer = RendererCairo(self.figure.dpi) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
This used to make a new renderer, now it gets the cached one. Why should we not be worried about this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I realized that I forgot to update self._renderer.dpi (now fixed), but the point is that other than the dpi, the width/height, and the surface, there's no other state on the renderer (the graphicscontext is reset between draws), and all of these always get reset manually before each draw.
Initialization of RendererCairo is duplicated across allFigureCanvasCairo subclasses (and also in FigureCanvasCairo itself),so just move it to a single place (in a delayed-init property to avoidhaving to play around multiple inheritance and GUI frameworks).RendererCairoGTK{3,4} simply add a set_context method, which can just aswell be defined on the base RendererCairo class (which after all alreadydefines set_ctx_from_surface for the benefit of {qt,tk,wx}cairo).
Initialization of RendererCairo is duplicated across all
FigureCanvasCairo subclasses (and also in FigureCanvasCairo itself),
so just move it to a single place (in a delayed-init property to avoid
having to play around multiple inheritance and GUI frameworks).
RendererCairoGTK{3,4} simply add a set_context method, which can just as
well be defined on the base RendererCairo class (which after all already
defines set_ctx_from_surface for the benefit of {qt,tk,wx}cairo).
PR Summary
PR Checklist
Tests and Styling
pytest
passes).flake8-docstrings
and runflake8 --docstring-convention=all
).Documentation
doc/users/next_whats_new/
(follow instructions in README.rst there).doc/api/next_api_changes/
(follow instructions in README.rst there).