summaryrefslogtreecommitdiffstats
path: root/extra/arandr/arandr-0.1.3/screenlayout/snap.py
diff options
context:
space:
mode:
Diffstat (limited to 'extra/arandr/arandr-0.1.3/screenlayout/snap.py')
-rw-r--r--extra/arandr/arandr-0.1.3/screenlayout/snap.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/extra/arandr/arandr-0.1.3/screenlayout/snap.py b/extra/arandr/arandr-0.1.3/screenlayout/snap.py
new file mode 100644
index 000000000..b08223f38
--- /dev/null
+++ b/extra/arandr/arandr-0.1.3/screenlayout/snap.py
@@ -0,0 +1,30 @@
+from .auxiliary import Position
+
+class Snap(object):
+ """Snap-to-edges manager"""
+ def __init__(self, size, tolerance, list):
+ self.tolerance = tolerance
+
+ self.horizontal = set()
+ self.vertical = set()
+ for i in list:
+ self.vertical.add(i[0].left)
+ self.vertical.add(i[0].left+i[1].width)
+ self.horizontal.add(i[0].top)
+ self.horizontal.add(i[0].top+i[1].height)
+
+ self.vertical.add(i[0].left-size.width)
+ self.vertical.add(i[0].left+i[1].width-size.width)
+ self.horizontal.add(i[0].top-size.height)
+ self.horizontal.add(i[0].top+i[1].height-size.height)
+
+ def suggest(self, position):
+ vertical = [x for x in self.vertical if abs(x-position[0])<self.tolerance]
+ horizontal = [y for y in self.horizontal if abs(y-position[1])<self.tolerance]
+
+ if vertical:
+ position = Position((vertical[0], position[1]))
+ if horizontal:
+ position = Position((position[0], horizontal[0]))
+
+ return position