提交 148892ed 编写于 作者: J jonnedtc 提交者: Kentaro Wada

Exponential zooming and relative stickiness.

上级 f7635f61
......@@ -346,10 +346,10 @@ class MainWindow(QtWidgets.QMainWindow):
)
self.zoomWidget.setEnabled(False)
zoomIn = action('Zoom &In', functools.partial(self.addZoom, 10),
zoomIn = action('Zoom &In', functools.partial(self.addZoom, 1.1),
shortcuts['zoom_in'], 'zoom-in',
'Increase zoom level', enabled=False)
zoomOut = action('&Zoom Out', functools.partial(self.addZoom, -10),
zoomOut = action('&Zoom Out', functools.partial(self.addZoom, 0.9),
shortcuts['zoom_out'], 'zoom-out',
'Decrease zoom level', enabled=False)
zoomOrg = action('&Original size',
......@@ -1069,13 +1069,14 @@ class MainWindow(QtWidgets.QMainWindow):
self.zoomMode = self.MANUAL_ZOOM
self.zoomWidget.setValue(value)
def addZoom(self, increment=10):
self.setZoom(self.zoomWidget.value() + increment)
def addZoom(self, increment=1.1):
self.setZoom(self.zoomWidget.value() * increment)
def zoomRequest(self, delta, pos):
canvas_width_old = self.canvas.width()
units = delta * 0.1
units = 1.1
if delta < 0:
units = 0.9
self.addZoom(units)
canvas_width_new = self.canvas.width()
......
......@@ -40,7 +40,7 @@ fit_to_content:
column: true
row: false
epsilon: 11.0
epsilon: 10.0
shortcuts:
close: Ctrl+W
......
......@@ -36,7 +36,7 @@ class Canvas(QtWidgets.QWidget):
_fill_drawing = False
def __init__(self, *args, **kwargs):
self.epsilon = kwargs.pop('epsilon', 11.0)
self.epsilon = kwargs.pop('epsilon', 10.0)
super(Canvas, self).__init__(*args, **kwargs)
# Initialise local state.
self.mode = self.EDIT
......@@ -542,7 +542,8 @@ class Canvas(QtWidgets.QWidget):
# d = distance(p1 - p2)
# m = (p1-p2).manhattanLength()
# print "d %.2f, m %d, %.2f" % (d, m, d - m)
return labelme.utils.distance(p1 - p2) < self.epsilon
# divide by scale to allow more precision when zoomed in
return labelme.utils.distance(p1 - p2) < (self.epsilon / self.scale)
def intersectionPoint(self, p1, p2):
# Cycle through each image edge in clockwise fashion,
......
......@@ -8,7 +8,7 @@ class ZoomWidget(QtWidgets.QSpinBox):
def __init__(self, value=100):
super(ZoomWidget, self).__init__()
self.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
self.setRange(1, 500)
self.setRange(10, 1000)
self.setSuffix(' %')
self.setValue(value)
self.setToolTip('Zoom Level')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册