1 | <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"> |
---|
2 | <head> |
---|
3 | <title>Create DojoX GFX JSON</title> |
---|
4 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
---|
5 | <style type="text/css"> |
---|
6 | @import "../../../dojo/resources/dojo.css"; |
---|
7 | @import "../../../dijit/tests/css/dijitTests.css"; |
---|
8 | td.cell { padding: 1em 1em 0em 0em; } |
---|
9 | </style> |
---|
10 | <script type="text/javascript" src="../../../dojo/dojo.js"></script> |
---|
11 | <script type="text/javascript"> |
---|
12 | dojo.require("dojox.gfx"); |
---|
13 | dojo.require("dojox.gfx.utils"); |
---|
14 | |
---|
15 | surface = null; |
---|
16 | grid_size = 500; |
---|
17 | grid_step = 50; |
---|
18 | |
---|
19 | init = function(){ |
---|
20 | // initialize graphics |
---|
21 | var container = dojo.byId("gfx"); |
---|
22 | surface = dojox.gfx.createSurface(container, 500, 500); |
---|
23 | // create a picture |
---|
24 | |
---|
25 | // make a grid |
---|
26 | var grid = surface.createGroup(); |
---|
27 | for(var i = 0; i <= grid_size; i += grid_step){ |
---|
28 | grid.createLine({x1: 0, x2: grid_size, y1: i, y2: i}).setStroke("black"); |
---|
29 | grid.createLine({y1: 0, y2: grid_size, x1: i, x2: i}).setStroke("black"); |
---|
30 | } |
---|
31 | |
---|
32 | // make a checkerboard |
---|
33 | var board = surface.createGroup(), gs2 = grid_step * 2; |
---|
34 | for(var i = 0; i < grid_size; i += grid_step){ |
---|
35 | for(var j = 0; j < grid_size; j += grid_step){ |
---|
36 | if(i % gs2 == j % gs2) { |
---|
37 | board.createRect({x: i, y: j, width: grid_step, height: grid_step}).setFill([255, 0, 0, 0.1]); |
---|
38 | } |
---|
39 | } |
---|
40 | } |
---|
41 | |
---|
42 | // draw test_transform shapes |
---|
43 | var g1 = surface.createGroup(); |
---|
44 | var r1 = g1.createShape({type: "rect", x: 200, y: 200}) |
---|
45 | .setFill("green") |
---|
46 | .setStroke({}) |
---|
47 | ; |
---|
48 | var r2 = surface.createShape({type: "rect"}).setStroke({}) |
---|
49 | .setFill({type: "linear", to: {x: 50, y: 100}, |
---|
50 | colors: [{offset: 0, color: "green"}, {offset: 0.5, color: "red"}, {offset: 1, color: "blue"}] }) |
---|
51 | .setTransform({dx: 100, dy: 100}) |
---|
52 | ; |
---|
53 | var r3 = surface.createRect().setStroke({}) |
---|
54 | .setFill({ type: "linear" }) |
---|
55 | ; |
---|
56 | var r4 = g1.createShape({type: "rect"}) |
---|
57 | .setFill("blue") |
---|
58 | .setTransform([dojox.gfx.matrix.rotategAt(-30, 350, 250), { dx: 300, dy: 200 }]) |
---|
59 | ; |
---|
60 | var p1 = g1.createShape({type: "path"}) |
---|
61 | .setStroke({}) |
---|
62 | .moveTo(300, 100) |
---|
63 | .lineTo(400, 200) |
---|
64 | .lineTo(400, 300) |
---|
65 | .lineTo(300, 400) |
---|
66 | .curveTo(400, 300, 400, 200, 300, 100) |
---|
67 | .setTransform({}) |
---|
68 | ; |
---|
69 | var p2 = g1.createShape(p1.getShape()) |
---|
70 | .setStroke({color: "red", width: 2}) |
---|
71 | .setTransform({dx: 100}) |
---|
72 | ; |
---|
73 | var p3 = g1.createShape({type: "path"}) |
---|
74 | .setStroke({color: "blue", width: 2}) |
---|
75 | .moveTo(300, 100) |
---|
76 | .setAbsoluteMode(false) |
---|
77 | .lineTo ( 100, 100) |
---|
78 | .lineTo ( 0, 100) |
---|
79 | .lineTo (-100, 100) |
---|
80 | .curveTo( 100, -100, 100, -200, 0, -300) |
---|
81 | //.setTransform(dojox.gfx.matrix.rotategAt(135, 250, 250)) |
---|
82 | .setTransform(dojox.gfx.matrix.rotategAt(180, 250, 250)) |
---|
83 | ; |
---|
84 | g1.moveToFront(); |
---|
85 | g1.setTransform(dojox.gfx.matrix.rotategAt(-15, 250, 250)); |
---|
86 | |
---|
87 | // dump everything |
---|
88 | dump(); |
---|
89 | }; |
---|
90 | |
---|
91 | dump = function(){ |
---|
92 | var objects = dojox.gfx.utils.serialize(surface); |
---|
93 | // name top-level objects |
---|
94 | for(var i = 0; i < objects.length; ++i){ |
---|
95 | objects[i].name = "shape" + i; |
---|
96 | } |
---|
97 | // format and show |
---|
98 | dojo.byId("io").value = dojo.toJson(objects, dojo.byId("pprint").checked); |
---|
99 | }; |
---|
100 | |
---|
101 | dojo.addOnLoad(init); |
---|
102 | </script> |
---|
103 | </head> |
---|
104 | <body> |
---|
105 | <h1>Create DojoX GFX JSON</h1> |
---|
106 | <p>This is a helper file, which serves as a template to generate static pictures.</p> |
---|
107 | <table> |
---|
108 | <tr> |
---|
109 | <td align="left" valign="top" class="cell"> |
---|
110 | <div id="gfx" style="width: 500px; height: 500px; border: solid 1px black;"> |
---|
111 | </div> |
---|
112 | </td> |
---|
113 | </tr> |
---|
114 | </table> |
---|
115 | <p><textarea id="io" cols="80" rows="10" wrap="off"></textarea></p> |
---|
116 | <p><button onclick="dump()">Dump!</button> |
---|
117 | <input type="checkbox" id="pprint" checked="checked" /> <label for="pprint">Pretty-print JSON</label></p> |
---|
118 | </body> |
---|
119 | </html> |
---|