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

Skip to content

Commit 3170fda

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 8ddeea1 commit 3170fda

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

@@ -630,21 +622,9 @@ def set_offset(self, xy):
630622
xy : (float, float)
631623
The (x, y) coordinates of the offset in display units.
632624
"""
633-
self._offset = xy
634625
self.offset_transform.clear()
635626
self.offset_transform.translate(xy[0], xy[1])
636-
self.stale = True
637-
638-
def get_offset(self):
639-
"""Return offset of the container."""
640-
return self._offset
641-
642-
def get_window_extent(self, renderer):
643-
# docstring inherited
644-
w, h, xd, yd = self.get_extent(renderer)
645-
ox, oy = self.get_offset() # w, h, xd, yd)
646-
647-
return mtransforms.Bbox.from_bounds(ox - xd, oy - yd, w, h)
627+
super().set_offset(xy)
648628

649629
def get_extent(self, renderer):
650630
"""Return width, height, xdescent, ydescent of box."""
@@ -790,20 +770,9 @@ def set_offset(self, xy):
790770
xy : (float, float)
791771
The (x, y) coordinates of the offset in display units.
792772
"""
793-
self._offset = xy
794773
self.offset_transform.clear()
795774
self.offset_transform.translate(xy[0], xy[1])
796-
self.stale = True
797-
798-
def get_offset(self):
799-
"""Return offset of the container."""
800-
return self._offset
801-
802-
def get_window_extent(self, renderer):
803-
# docstring inherited
804-
w, h, xd, yd = self.get_extent(renderer)
805-
ox, oy = self.get_offset()
806-
return mtransforms.Bbox.from_bounds(ox - xd, oy - yd, w, h)
775+
super().set_offset(xy)
807776

808777
def get_extent(self, renderer):
809778
_, h_, d_ = renderer.get_text_width_height_descent(
@@ -891,20 +860,9 @@ def set_offset(self, xy):
891860
xy : (float, float)
892861
The (x, y) coordinates of the offset in display units.
893862
"""
894-
self._offset = xy
895863
self.offset_transform.clear()
896864
self.offset_transform.translate(xy[0], xy[1])
897-
self.stale = True
898-
899-
def get_offset(self):
900-
"""Return offset of the container."""
901-
return self._offset
902-
903-
def get_window_extent(self, renderer):
904-
# docstring inherited
905-
w, h, xd, yd = self.get_extent(renderer)
906-
ox, oy = self.get_offset() # w, h, xd, yd)
907-
return mtransforms.Bbox.from_bounds(ox - xd, oy - yd, w, h)
865+
super().set_offset(xy)
908866

909867
def get_extent(self, renderer):
910868
# clear the offset transforms
@@ -1087,9 +1045,7 @@ def set_bbox_to_anchor(self, bbox, transform=None):
10871045
def get_window_extent(self, renderer):
10881046
# docstring inherited
10891047
self._update_offset_func(renderer)
1090-
w, h, xd, yd = self.get_extent(renderer)
1091-
ox, oy = self.get_offset(w, h, xd, yd, renderer)
1092-
return Bbox.from_bounds(ox - xd, oy - yd, w, h)
1048+
return super().get_window_extent(renderer)
10931049

10941050
def _update_offset_func(self, renderer, fontsize=None):
10951051
"""
@@ -1240,10 +1196,6 @@ def set_zoom(self, zoom):
12401196
def get_zoom(self):
12411197
return self._zoom
12421198

1243-
def get_offset(self):
1244-
"""Return offset of the container."""
1245-
return self._offset
1246-
12471199
def get_children(self):
12481200
return [self.image]
12491201

0 commit comments

Comments
 (0)