@@ -2086,5 +2086,39 @@ def draw(self, renderer):
20862086
20872087 Text .draw (self , renderer )
20882088
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+
20892123
20902124docstring .interpd .update (Annotation = Annotation .__init__ .__doc__ )
0 commit comments