@@ -2086,5 +2086,39 @@ def draw(self, renderer):
2086
2086
2087
2087
Text .draw (self , renderer )
2088
2088
2089
+ def get_window_extent (self , renderer = None ):
2090
+ '''
2091
+ Return a :class:`~matplotlib.transforms.Bbox` object bounding
2092
+ the text and arrow annotation, in display units.
2093
+
2094
+ *renderer* defaults to the _renderer attribute of the text
2095
+ object. This is not assigned until the first execution of
2096
+ :meth:`draw`, so you must use this kwarg if you want
2097
+ to call :meth:`get_window_extent` prior to the first
2098
+ :meth:`draw`. For getting web page regions, it is
2099
+ simpler to call the method after saving the figure. The
2100
+ *dpi* used defaults to self.figure.dpi; the renderer dpi is
2101
+ irrelevant.
2102
+
2103
+ '''
2104
+ arrow = self .arrow
2105
+ arrow_patch = self .arrow_patch
2106
+
2107
+ text_bbox = Text .get_window_extent (self , renderer = renderer )
2108
+ if text_bbox .width == 0.0 and text_bbox .height == 0.0 :
2109
+ bboxes = []
2110
+ else :
2111
+ bboxes = [text_bbox ]
2112
+
2113
+ if self .arrow is not None :
2114
+ bboxes .append (arrow .get_window_extent (renderer = renderer ))
2115
+ elif self .arrow_patch is not None :
2116
+ bboxes .append (arrow_patch .get_window_extent (renderer = renderer ))
2117
+
2118
+ if len (bboxes ) == 0 :
2119
+ return Bbox .from_bounds (self ._x , self ._y , 0.0 , 0.0 )
2120
+ else :
2121
+ return Bbox .union (bboxes )
2122
+
2089
2123
2090
2124
docstring .interpd .update (Annotation = Annotation .__init__ .__doc__ )
0 commit comments