changeset 445:79ba44e04b57

Add offset support.
author Simon Cross <hodgestar@gmail.com>
date Sat, 07 Sep 2013 14:48:53 +0200
parents 547320870aed
children 3054c62f9d64 0f8945232e54
files tools/generate_poly.py
diffstat 1 files changed, 28 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/tools/generate_poly.py	Sat Sep 07 14:47:34 2013 +0200
+++ b/tools/generate_poly.py	Sat Sep 07 14:48:53 2013 +0200
@@ -14,6 +14,15 @@
 def parse_args(args):
     """Parse arguments."""
     parser = optparse.OptionParser(usage="%prog <type> arg1=foo arg2=bar")
+
+    parser.add_option('-x',
+                      dest='offset_x', type=int, default=0,
+                      help='X offset for poly.')
+
+    parser.add_option('-y',
+                      dest='offset_y', type=int, default=0,
+                      help='Y offset for poly.')
+
     opts, args = parser.parse_args(args)
     args = args[1:]
 
@@ -27,17 +36,21 @@
 
 
 class PolyGenerator(object):
-    def generate(self, obj_type, params, opts):
+    def __init__(self, opts):
+        self.offset_x = opts.offset_x
+        self.offset_y = opts.offset_y
+
+    def generate(self, obj_type, params):
         handler = getattr(self, 'generate_%s' % (obj_type,),
                           self.unknown_type)
-        return handler(params, opts)
+        return handler(params)
 
     def print_poly(self, poly):
         print "Poly:"
         for point in poly:
             print "  - [%d, %d]" % tuple(point)
 
-    def unknown_type(self, params, opts):
+    def unknown_type(self, params):
         prefix = "generate_"
         known_types = [k[len(prefix):] for k in self.__dict__
                        if k.startswith(prefix)]
@@ -57,7 +70,15 @@
             results.append(result)
         return results
 
-    def generate_circle(self, params, opts):
+    def apply_opts(self, poly):
+        new_poly = []
+        for p in poly:
+            x = p[0] + self.offset_x
+            y = p[1] + self.offset_y
+            new_poly.append([x, y])
+        return new_poly
+
+    def generate_circle(self, params):
         r, steps = self.check_params(params, ("r", int), ("steps", int))
         poly = []
         rad, step_size = 0, 2 * math.pi / steps
@@ -65,12 +86,12 @@
             x, y = r * math.sin(rad), r * math.cos(rad)
             poly.append([x, y])
             rad += step_size
-        return poly
+        return self.apply_opts(poly)
 
 
 if __name__ == "__main__":
     obj_type, params, opts = parse_args(sys.argv)
     if obj_type is not None:
-        p = PolyGenerator()
-        poly = p.generate(obj_type, params, opts)
+        p = PolyGenerator(opts)
+        poly = p.generate(obj_type, params)
         p.print_poly(poly)