Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 78d087f

Browse files
committed
Inherit OffsetBox.{get_offset,get_window_extent}.
By making the parameters of OffsetBox.get_offset optional (which matches the fact that there are currently subclasses for which get_offset does *not* take any parameters), and adjusting OffsetBox.get_window_extent to use get_extent (which is typically redefined in subclasses) instead of get_extent_offsets (which is not), we can inherit the implementation of OffsetBox.get_window_extent across most subclasses instead of having to copy-paste it again and again.
1 parent cc71742 commit 78d087f

File tree

1 file changed

+11
-59
lines changed

1 file changed

+11
-59
lines changed

lib/matplotlib/offsetbox.py

Lines changed: 11 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -272,23 +272,15 @@ def offset(width, height, xdescent, ydescent, renderer) \
272272
self._offset = xy
273273
self.stale = True
274274

275-
def get_offset(self, width, height, xdescent, ydescent, renderer):
275+
def get_offset(self, *args, **kwargs):
276276
"""
277-
Return the offset as a tuple (x, y).
278-
279-
The extent parameters have to be provided to handle the case where the
280-
offset is dynamically determined by a callable (see
281-
`~.OffsetBox.set_offset`).
282-
283-
Parameters
284-
----------
285-
width, height, xdescent, ydescent
286-
Extent parameters.
287-
renderer : `.RendererBase` subclass
277+
Return the (x, y) offset.
288278
279+
Parameters must be passed if the offset is dynamically determined by a
280+
callable (see `~.OffsetBox.set_offset`), and are forwarded to that
281+
callable.
289282
"""
290-
return (self._offset(width, height, xdescent, ydescent, renderer)
291-
if callable(self._offset)
283+
return (self._offset(*args, **kwargs) if callable(self._offset)
292284
else self._offset)
293285

294286
def set_width(self, width):
@@ -347,7 +339,7 @@ def get_extent(self, renderer):
347339

348340
def get_window_extent(self, renderer):
349341
# docstring inherited
350-
w, h, xd, yd, offsets = self.get_extent_offsets(renderer)
342+
w, h, xd, yd = self.get_extent(renderer)
351343
px, py = self.get_offset(w, h, xd, yd, renderer)
352344
return mtransforms.Bbox.from_bounds(px - xd, py - yd, w, h)
353345

@@ -622,21 +614,9 @@ def set_offset(self, xy):
622614
xy : (float, float)
623615
The (x, y) coordinates of the offset in display units.
624616
"""
625-
self._offset = xy
626617
self.offset_transform.clear()
627618
self.offset_transform.translate(xy[0], xy[1])
628-
self.stale = True
629-
630-
def get_offset(self):
631-
"""Return offset of the container."""
632-
return self._offset
633-
634-
def get_window_extent(self, renderer):
635-
# docstring inherited
636-
w, h, xd, yd = self.get_extent(renderer)
637-
ox, oy = self.get_offset() # w, h, xd, yd)
638-
639-
return mtransforms.Bbox.from_bounds(ox - xd, oy - yd, w, h)
619+
super().set_offset(xy)
640620

641621
def get_extent(self, renderer):
642622
"""Return width, height, xdescent, ydescent of box."""
@@ -782,20 +762,9 @@ def set_offset(self, xy):
782762
xy : (float, float)
783763
The (x, y) coordinates of the offset in display units.
784764
"""
785-
self._offset = xy
786765
self.offset_transform.clear()
787766
self.offset_transform.translate(xy[0], xy[1])
788-
self.stale = True
789-
790-
def get_offset(self):
791-
"""Return offset of the container."""
792-
return self._offset
793-
794-
def get_window_extent(self, renderer):
795-
# docstring inherited
796-
w, h, xd, yd = self.get_extent(renderer)
797-
ox, oy = self.get_offset()
798-
return mtransforms.Bbox.from_bounds(ox - xd, oy - yd, w, h)
767+
super().set_offset(xy)
799768

800769
def get_extent(self, renderer):
801770
_, h_, d_ = renderer.get_text_width_height_descent(
@@ -883,20 +852,9 @@ def set_offset(self, xy):
883852
xy : (float, float)
884853
The (x, y) coordinates of the offset in display units.
885854
"""
886-
self._offset = xy
887855
self.offset_transform.clear()
888856
self.offset_transform.translate(xy[0], xy[1])
889-
self.stale = True
890-
891-
def get_offset(self):
892-
"""Return offset of the container."""
893-
return self._offset
894-
895-
def get_window_extent(self, renderer):
896-
# docstring inherited
897-
w, h, xd, yd = self.get_extent(renderer)
898-
ox, oy = self.get_offset() # w, h, xd, yd)
899-
return mtransforms.Bbox.from_bounds(ox - xd, oy - yd, w, h)
857+
super().set_offset(xy)
900858

901859
def get_extent(self, renderer):
902860
# clear the offset transforms
@@ -1078,9 +1036,7 @@ def set_bbox_to_anchor(self, bbox, transform=None):
10781036
def get_window_extent(self, renderer):
10791037
# docstring inherited
10801038
self._update_offset_func(renderer)
1081-
w, h, xd, yd = self.get_extent(renderer)
1082-
ox, oy = self.get_offset(w, h, xd, yd, renderer)
1083-
return Bbox.from_bounds(ox - xd, oy - yd, w, h)
1039+
return super().get_window_extent(renderer)
10841040

10851041
def _update_offset_func(self, renderer, fontsize=None):
10861042
"""
@@ -1231,10 +1187,6 @@ def set_zoom(self, zoom):
12311187
def get_zoom(self):
12321188
return self._zoom
12331189

1234-
def get_offset(self):
1235-
"""Return offset of the container."""
1236-
return self._offset
1237-
12381190
def get_children(self):
12391191
return [self.image]
12401192

0 commit comments

Comments
 (0)