4 Web CGI script for 3D View |
4 Web CGI script for 3D View |
5 """ |
5 """ |
6 |
6 |
7 import cgi, data, json, config |
7 import cgi, data, json, config |
8 from cylindertransport import CylinderSpacerCalculator |
8 from cylindertransport import CylinderSpacerCalculator |
|
9 import base64 |
|
10 import cStringIO |
9 |
11 |
10 # enable debugging |
12 # enable debugging |
11 #import sys |
13 #import sys |
12 #sys.stderr = sys.stdout |
14 #sys.stderr = sys.stdout |
13 #import cgitb |
15 import cgitb |
14 #cgitb.enable() |
16 cgitb.enable() |
15 |
17 |
16 def do_action(args): |
18 def do_action(args): |
17 """ |
19 """ |
18 process some actions (like JSON requests) |
20 process some actions (like JSON requests) |
19 """ |
21 """ |
20 if args["action"].value == "calculate": |
22 if args["action"].value == "calculate": |
21 cylinders = args.getlist("cylinders[]") |
23 cylinders = args.getlist("cylinders[]") |
22 calc = CylinderSpacerCalculator(cylinders) |
24 calc = CylinderSpacerCalculator(cylinders) |
23 calc.calculate() |
25 calc.calculate() |
|
26 image = calc.render_image() |
|
27 buffer = cStringIO.StringIO() |
|
28 image.save(buffer, format="PNG") |
|
29 img_str = base64.b64encode(buffer.getvalue()) |
24 print json.dumps({ |
30 print json.dumps({ |
25 "objects": calc.circles, |
31 "objects": calc.circles, |
26 "scale3d": config.SCALE3D |
32 "scale3d": config.SCALE3D, |
|
33 "image": img_str |
27 }) |
34 }) |
28 else: |
35 else: |
29 print "unknown Action %s" % args["action"].value |
36 print "unknown Action %s" % args["action"].value |
30 |
37 |
31 def run(): |
38 def run(): |