comment in pcf.c
[imago.git] / imago_pack / imago.py
index c0e6202..806ddcc 100755 (executable)
@@ -18,6 +18,7 @@ import linef
 import manual
 import intrsc
 import gridf
+import output
 
 def argument_parser():
     parser = argparse.ArgumentParser(description=__doc__)
@@ -35,6 +36,8 @@ def argument_parser():
                         help="save images instead of displaying them")
     parser.add_argument('-c', '--cache', dest='l_cache', action='store_true',
                         help="use cached lines")
+    parser.add_argument('-S', '--sgf', dest='sgf_output', action='store_true',
+                        help="output in SGF")
     parser.add_argument('-v', '--verbose', dest='verbose', action='store_true',
                         help="report progress")
     return parser
@@ -79,16 +82,15 @@ def main():
             if os.path.exists(filename):
                 lines, l1, l2, bounds, hough = pickle.load(open(filename))
                 print >> sys.stderr, "using cached results"
-                im_h = None
             else:
-                lines, l1, l2, bounds, hough, im_h = linef.find_lines(image, show_all, do_something, verbose)
+                lines, l1, l2, bounds, hough = linef.find_lines(image, show_all, do_something, verbose)
                 if not os.path.isdir(cache_dir):
                     os.makedirs(cache_dir)
                 d_file = open(filename, 'wb')
                 pickle.dump((lines, l1, l2, bounds, hough), d_file)
                 d_file.close()
         else:
-            lines, l1, l2, bounds, hough, im_h = linef.find_lines(image, show_all, do_something, verbose)
+            lines, l1, l2, bounds, hough = linef.find_lines(image, show_all, do_something, verbose)
 
         grid, lines = gridf.find(lines, image.size, l1, l2, bounds, hough,
                                  show_all, do_something)
@@ -101,22 +103,33 @@ def main():
 
     board = intrsc.board(image, lines, show_all, do_something)
 
-    #simple ASCII output:
-    for line in board:
-        print ' '.join(line)
+    if len(args.files) == 1:
+
+        if args.sgf_output:
+            print board.asSGFsetPos()
+        else:
+            print board
     
-    if len(args.files) > 1:
+    else:
+        game = output.Game(19, board) #TODO size parameter
         for f in args.files[1:]:
             try:
                 image = Image.open(f)
             except IOError, msg:
                 print >> sys.stderr, msg
                 continue
+            if verbose:
+                print >> sys.stderr, "Opening", f
             if image.mode == 'P':
                 image = image.convert('RGB')
             board = intrsc.board(image, lines, show_all, do_something)
-            for line in board:
-                print ' '.join(line)
+            if args.sgf_output:
+                game.addMove(board)
+            else:
+                print board
+
+        if args.sgf_output:
+            print game.asSGF()
 
     return 0
 
@@ -139,5 +152,5 @@ if __name__ == '__main__':
     try:
         sys.exit(main())
     except KeyboardInterrupt: #TODO does this work?
-        print "Interrupted."
+        print >> sys.stderr, "Interrupted."
         sys.exit(1)