From 3d5ff6fcd19d4ca93f49ab70420b317766657aa9 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Tue, 28 Jun 2022 22:53:59 +0200 Subject: [PATCH] Move the deprecated RendererGTK{3,4}Cairo to a single place. ... and inline _to_context, which is not used anywhere else and can thus also be deleted at the same time. --- lib/matplotlib/backends/backend_cairo.py | 29 +++++++++----------- lib/matplotlib/backends/backend_gtk3cairo.py | 16 +++-------- lib/matplotlib/backends/backend_gtk4cairo.py | 15 +++------- 3 files changed, 21 insertions(+), 39 deletions(-) diff --git a/lib/matplotlib/backends/backend_cairo.py b/lib/matplotlib/backends/backend_cairo.py index 1b7e58e96efd..2a0b30094701 100644 --- a/lib/matplotlib/backends/backend_cairo.py +++ b/lib/matplotlib/backends/backend_cairo.py @@ -38,22 +38,6 @@ backend_version = cairo.version -if cairo.__name__ == "cairocffi": - # Convert a pycairo context to a cairocffi one. - def _to_context(ctx): - if not isinstance(ctx, cairo.Context): - ctx = cairo.Context._from_pointer( - cairo.ffi.cast( - 'cairo_t **', - id(ctx) + object.__basicsize__)[0], - incref=True) - return ctx -else: - # Pass-through a pycairo context. - def _to_context(ctx): - return ctx - - def _append_path(ctx, path, transform, clip=None): for points, code in path.iter_segments( transform, remove_nans=True, clip=clip): @@ -547,6 +531,19 @@ def _save(self, fmt, fobj, *, orientation='portrait'): print_svgz = functools.partialmethod(_save, "svgz") +@_api.deprecated("3.6") +class _RendererGTKCairo(RendererCairo): + def set_context(self, ctx): + if (cairo.__name__ == "cairocffi" + and not isinstance(ctx, cairo.Context)): + ctx = cairo.Context._from_pointer( + cairo.ffi.cast( + 'cairo_t **', + id(ctx) + object.__basicsize__)[0], + incref=True) + self.gc.ctx = ctx + + @_Backend.export class _BackendCairo(_Backend): FigureCanvas = FigureCanvasCairo diff --git a/lib/matplotlib/backends/backend_gtk3cairo.py b/lib/matplotlib/backends/backend_gtk3cairo.py index 0f955956465f..590daf8357dc 100644 --- a/lib/matplotlib/backends/backend_gtk3cairo.py +++ b/lib/matplotlib/backends/backend_gtk3cairo.py @@ -1,19 +1,11 @@ from contextlib import nullcontext -from .. import _api -from . import backend_cairo, backend_gtk3 -from .backend_gtk3 import Gtk, _BackendGTK3 +from .backend_cairo import ( + FigureCanvasCairo, _RendererGTKCairo as RendererGTK3Cairo) +from .backend_gtk3 import Gtk, FigureCanvasGTK3, _BackendGTK3 -@_api.deprecated("3.6") -class RendererGTK3Cairo(backend_cairo.RendererCairo): - def set_context(self, ctx): - self.gc.ctx = backend_cairo._to_context(ctx) - - -class FigureCanvasGTK3Cairo(backend_cairo.FigureCanvasCairo, - backend_gtk3.FigureCanvasGTK3): - +class FigureCanvasGTK3Cairo(FigureCanvasCairo, FigureCanvasGTK3): def on_draw_event(self, widget, ctx): with (self.toolbar._wait_cursor_for_draw_cm() if self.toolbar else nullcontext()): diff --git a/lib/matplotlib/backends/backend_gtk4cairo.py b/lib/matplotlib/backends/backend_gtk4cairo.py index 09c1e9f90ba8..697884174be3 100644 --- a/lib/matplotlib/backends/backend_gtk4cairo.py +++ b/lib/matplotlib/backends/backend_gtk4cairo.py @@ -1,18 +1,11 @@ from contextlib import nullcontext -from .. import _api -from . import backend_cairo, backend_gtk4 -from .backend_gtk4 import Gtk, _BackendGTK4 +from .backend_cairo import ( + FigureCanvasCairo, _RendererGTKCairo as RendererGTK4Cairo) +from .backend_gtk4 import Gtk, FigureCanvasGTK4, _BackendGTK4 -@_api.deprecated("3.6") -class RendererGTK4Cairo(backend_cairo.RendererCairo): - def set_context(self, ctx): - self.gc.ctx = backend_cairo._to_context(ctx) - - -class FigureCanvasGTK4Cairo(backend_cairo.FigureCanvasCairo, - backend_gtk4.FigureCanvasGTK4): +class FigureCanvasGTK4Cairo(FigureCanvasCairo, FigureCanvasGTK4): _context_is_scaled = True def on_draw_event(self, widget, ctx):