From b042647b68abdc82490ca6e059993b8eba28904c Mon Sep 17 00:00:00 2001 From: Russell Cohen Date: Wed, 24 Nov 2010 01:09:12 -0500 Subject: Refactoring complete! Made modules/packages as appropriate. Finally. --- layouts/ZigzagLayout.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 layouts/ZigzagLayout.py (limited to 'layouts/ZigzagLayout.py') diff --git a/layouts/ZigzagLayout.py b/layouts/ZigzagLayout.py new file mode 100644 index 0000000..26b27d8 --- /dev/null +++ b/layouts/ZigzagLayout.py @@ -0,0 +1,45 @@ +from operationscore.LayoutEngine import * +import pdb +#Slightly more complex layout class that makes a zig-Zag Led Pattern +#Inheriting classes must specify zigLength, the length in lights of a of a zig +#and zig Axis, the direction of the long X axis (X or Y). +#EG: zig length = 4, zig Axis = X would give: +# X-X-X-X +# | +# X-X-X-X +# | +# X-X-X-X etc. +class ZigzagLayout(LayoutEngine): + def initLayout(self): + if not 'zigLength' in self.argDict: + raise Exception('zigLength must be defined in argDict') + if not 'zigAxis' in self.argDict: + raise Exception('zigAxis must be defined in argDict') + if not 'xDirection' in self.argDict: + self.argDict['xDirection'] = 1 #right + if not 'yDirection' in self.argDict: + self.argDict['yDirection'] = 1 #down + def layoutFunc(self, lastLocation): + if not 'buildQueue' in self.argDict: + self.argDict['buildQueue'] = self.argDict['zigLength'] + + newLoc = list(lastLocation) + if self.argDict['buildQueue'] > 1: + if self.argDict['zigAxis'] == 'X': + newLoc[0] += self.argDict['spacing'] * self.argDict['xDirection'] + else: + newLoc[1] += self.argDict['spacing'] * self.argDict['yDirection'] + self.argDict['buildQueue'] -= 1 + else: + self.argDict['buildQueue'] = self.argDict['zigLength'] + if self.argDict['zigAxis'] == 'X': + newLoc[1] += self.argDict['spacing'] * self.argDict['yDirection'] + else: + newLoc[0] += self.argDict['spacing'] * self.argDict['xDirection'] + if self.argDict['zigAxis'] == 'X': + self.argDict['xDirection'] *= -1 + else: + self.argDict['yDirection'] *= -1 + return newLoc + + -- cgit v1.2.3