@@ -221,15 +221,6 @@ def __init__(self, figure):
221221 _create_qApp ()
222222 super ().__init__ (figure = figure )
223223
224- # We don't want to scale up the figure DPI more than once.
225- # Note, we don't handle a signal for changing DPI yet.
226- figure ._original_dpi = figure .dpi
227- self ._update_figure_dpi ()
228- # In cases with mixed resolution displays, we need to be careful if the
229- # dpi_ratio changes - in this case we need to resize the canvas
230- # accordingly.
231- self ._dpi_ratio_prev = self ._dpi_ratio
232-
233224 self ._draw_pending = False
234225 self ._is_drawing = False
235226 self ._draw_rect_callback = lambda painter : None
@@ -241,22 +232,13 @@ def __init__(self, figure):
241232 palette = QtGui .QPalette (QtCore .Qt .white )
242233 self .setPalette (palette )
243234
244- def _update_figure_dpi (self ):
245- dpi = self ._dpi_ratio * self .figure ._original_dpi
246- self .figure ._set_dpi (dpi , forward = False )
247-
248- @property
249- def _dpi_ratio (self ):
250- return _devicePixelRatioF (self )
251-
252235 def _update_pixel_ratio (self ):
253- # As described in __init__ above, we need to be careful in cases with
254- # mixed resolution displays if dpi_ratio is changing between painting
255- # events.
256- if self ._dpi_ratio != self . _dpi_ratio_prev :
236+ # We need to be careful in cases with mixed resolution displays if
237+ # pixel_ratio changes.
238+ current_pixel_ratio = _devicePixelRatioF ( self )
239+ if self .pixel_ratio != current_pixel_ratio :
257240 # We need to update the figure DPI.
258- self ._update_figure_dpi ()
259- self ._dpi_ratio_prev = self ._dpi_ratio
241+ self .pixel_ratio = current_pixel_ratio
260242 # The easiest way to resize the canvas is to emit a resizeEvent
261243 # since we implement all the logic for resizing the canvas for
262244 # that event.
@@ -283,10 +265,6 @@ def showEvent(self, event):
283265 window .screenChanged .connect (self ._update_screen )
284266 self ._update_screen (window .screen ())
285267
286- def get_width_height (self ):
287- w , h = FigureCanvasBase .get_width_height (self )
288- return int (w / self ._dpi_ratio ), int (h / self ._dpi_ratio )
289-
290268 def enterEvent (self , event ):
291269 try :
292270 x , y = self .mouseEventCoords (event .pos ())
@@ -309,11 +287,11 @@ def mouseEventCoords(self, pos):
309287
310288 Also, the origin is different and needs to be corrected.
311289 """
312- dpi_ratio = self ._dpi_ratio
290+ pixel_ratio = self .pixel_ratio
313291 x = pos .x ()
314292 # flip y so y=0 is bottom of canvas
315- y = self .figure .bbox .height / dpi_ratio - pos .y ()
316- return x * dpi_ratio , y * dpi_ratio
293+ y = self .figure .bbox .height / pixel_ratio - pos .y ()
294+ return x * pixel_ratio , y * pixel_ratio
317295
318296 def mousePressEvent (self , event ):
319297 x , y = self .mouseEventCoords (event .pos ())
@@ -374,8 +352,8 @@ def keyReleaseEvent(self, event):
374352 FigureCanvasBase .key_release_event (self , key , guiEvent = event )
375353
376354 def resizeEvent (self , event ):
377- w = event .size ().width () * self ._dpi_ratio
378- h = event .size ().height () * self ._dpi_ratio
355+ w = event .size ().width () * self .pixel_ratio
356+ h = event .size ().height () * self .pixel_ratio
379357 dpival = self .figure .dpi
380358 winch = w / dpival
381359 hinch = h / dpival
@@ -473,7 +451,7 @@ def blit(self, bbox=None):
473451 if bbox is None and self .figure :
474452 bbox = self .figure .bbox # Blit the entire canvas if bbox is None.
475453 # repaint uses logical pixels, not physical pixels like the renderer.
476- l , b , w , h = [int (pt / self ._dpi_ratio ) for pt in bbox .bounds ]
454+ l , b , w , h = [int (pt / self .pixel_ratio ) for pt in bbox .bounds ]
477455 t = b + h
478456 self .repaint (l , self .rect ().height () - t , w , h )
479457
@@ -494,11 +472,11 @@ def drawRectangle(self, rect):
494472 # Draw the zoom rectangle to the QPainter. _draw_rect_callback needs
495473 # to be called at the end of paintEvent.
496474 if rect is not None :
497- x0 , y0 , w , h = [int (pt / self ._dpi_ratio ) for pt in rect ]
475+ x0 , y0 , w , h = [int (pt / self .pixel_ratio ) for pt in rect ]
498476 x1 = x0 + w
499477 y1 = y0 + h
500478 def _draw_rect_callback (painter ):
501- pen = QtGui .QPen (QtCore .Qt .black , 1 / self ._dpi_ratio )
479+ pen = QtGui .QPen (QtCore .Qt .black , 1 / self .pixel_ratio )
502480 pen .setDashPattern ([3 , 3 ])
503481 for color , offset in [
504482 (QtCore .Qt .black , 0 ), (QtCore .Qt .white , 3 )]:
0 commit comments