21
21
22
22
import math
23
23
24
+ from qtpy .QtCore import QLineF , QPoint , QPointF , QRect , QRectF , Qt , qFuzzyCompare
25
+ from qtpy .QtGui import QFontMetrics , QPalette , QTransform
26
+
27
+ from qwt ._math import qwtRadians
24
28
from qwt .scale_div import QwtScaleDiv
25
29
from qwt .scale_map import QwtScaleMap
26
30
from qwt .text import QwtText
27
- from qwt ._math import qwtRadians
28
-
29
- from qtpy .QtGui import QPalette , QFontMetrics , QTransform
30
- from qtpy .QtCore import Qt , qFuzzyCompare , QLineF , QRectF , QPointF , QRect , QPoint
31
31
32
32
33
33
class QwtAbstractScaleDraw_PrivateData (object ):
@@ -181,7 +181,7 @@ def setScaleDiv(self, scaleDiv):
181
181
"""
182
182
self .__data .scaleDiv = scaleDiv
183
183
self .__data .map .setScaleInterval (scaleDiv .lowerBound (), scaleDiv .upperBound ())
184
- self .__data . labelCache . clear ()
184
+ self .invalidateCache ()
185
185
186
186
def setTransformation (self , transformation ):
187
187
"""
@@ -436,16 +436,16 @@ def tickLabel(self, font, value):
436
436
437
437
:param QFont font: Font
438
438
:param float value: Value
439
- :return: Tick label
439
+ :return: Tuple (tick label, text size)
440
440
"""
441
- lbl = self .__data .labelCache .get (value )
441
+ lbl , tsize = self .__data .labelCache .get (value , ( None , None ) )
442
442
if lbl is None :
443
443
lbl = QwtText (self .label (value ))
444
444
lbl .setRenderFlags (0 )
445
445
lbl .setLayoutAttribute (QwtText .MinimumLayout )
446
- lbl .textSize (font )
447
- self .__data .labelCache [value ] = lbl
448
- return lbl
446
+ tsize = lbl .textSize (font )
447
+ self .__data .labelCache [value ] = lbl , tsize
448
+ return lbl , tsize
449
449
450
450
def invalidateCache (self ):
451
451
"""
@@ -941,11 +941,10 @@ def drawLabel(self, painter, value):
941
941
:py:meth:`drawTick()`, :py:meth:`drawBackbone()`,
942
942
:py:meth:`boundingLabelRect()`
943
943
"""
944
- lbl = self .tickLabel (painter .font (), value )
944
+ lbl , labelSize = self .tickLabel (painter .font (), value )
945
945
if lbl is None or lbl .isEmpty ():
946
946
return
947
947
pos = self .labelPosition (value )
948
- labelSize = lbl .textSize (painter .font ())
949
948
transform = self .labelTransformation (pos , labelSize )
950
949
painter .save ()
951
950
painter .setWorldTransform (transform , True )
@@ -967,11 +966,10 @@ def boundingLabelRect(self, font, value):
967
966
968
967
:py:meth:`labelRect()`
969
968
"""
970
- lbl = self .tickLabel (font , value )
969
+ lbl , labelSize = self .tickLabel (font , value )
971
970
if lbl .isEmpty ():
972
971
return QRect ()
973
972
pos = self .labelPosition (value )
974
- labelSize = lbl .textSize (font )
975
973
transform = self .labelTransformation (pos , labelSize )
976
974
return transform .mapRect (QRect (QPoint (0 , 0 ), labelSize .toSize ()))
977
975
@@ -1024,11 +1022,10 @@ def labelRect(self, font, value):
1024
1022
:param float value: Value
1025
1023
:return: Bounding rectangle that is needed to draw a label
1026
1024
"""
1027
- lbl = self .tickLabel (font , value )
1025
+ lbl , labelSize = self .tickLabel (font , value )
1028
1026
if not lbl or lbl .isEmpty ():
1029
1027
return QRectF (0.0 , 0.0 , 0.0 , 0.0 )
1030
1028
pos = self .labelPosition (value )
1031
- labelSize = lbl .textSize (font )
1032
1029
transform = self .labelTransformation (pos , labelSize )
1033
1030
br = transform .mapRect (QRectF (QPointF (0 , 0 ), labelSize ))
1034
1031
br .translate (- pos .x (), - pos .y ())
0 commit comments