Spaces:
Running
Running
PerceptionLabPortable
/
python_embed
/Lib
/site-packages
/matplotlib
/backends
/backend_gtk3cairo.py
| from contextlib import nullcontext | |
| from .backend_cairo import FigureCanvasCairo | |
| from .backend_gtk3 import GLib, Gtk, FigureCanvasGTK3, _BackendGTK3 | |
| class FigureCanvasGTK3Cairo(FigureCanvasCairo, FigureCanvasGTK3): | |
| def on_draw_event(self, widget, ctx): | |
| if self._idle_draw_id: | |
| GLib.source_remove(self._idle_draw_id) | |
| self._idle_draw_id = 0 | |
| self.draw() | |
| with (self.toolbar._wait_cursor_for_draw_cm() if self.toolbar | |
| else nullcontext()): | |
| allocation = self.get_allocation() | |
| # Render the background before scaling, as the allocated size here is in | |
| # logical pixels. | |
| Gtk.render_background( | |
| self.get_style_context(), ctx, | |
| 0, 0, allocation.width, allocation.height) | |
| scale = self.device_pixel_ratio | |
| # Scale physical drawing to logical size. | |
| ctx.scale(1 / scale, 1 / scale) | |
| self._renderer.set_context(ctx) | |
| # Set renderer to physical size so it renders in full resolution. | |
| self._renderer.width = allocation.width * scale | |
| self._renderer.height = allocation.height * scale | |
| self._renderer.dpi = self.figure.dpi | |
| self.figure.draw(self._renderer) | |
| class _BackendGTK3Cairo(_BackendGTK3): | |
| FigureCanvas = FigureCanvasGTK3Cairo | |