]> git.proxmox.com Git - extjs.git/blame - extjs/build/examples/kitchensink/modern/src/view/XRay.js
add extjs 6.0.1 sources
[extjs.git] / extjs / build / examples / kitchensink / modern / src / view / XRay.js
CommitLineData
6527f429
DM
1Ext.define('KitchenSink.view.XRay', {\r
2 alias: 'sprite.xray',\r
3 extend: 'Ext.draw.sprite.Path',\r
4 render: function (surface, ctx) {\r
5 var attr = this.attr,\r
6 mat = attr.matrix,\r
7 imat = attr.inverseMatrix,\r
8 path = attr.path,\r
9 size = imat.x(2, 0) - imat.x(0, 0);\r
10 if (attr.path.params.length === 0) {\r
11 return;\r
12 }\r
13 mat.toContext(ctx);\r
14 var i = 0, j = 0,\r
15 commands = path.commands,\r
16 params = path.params,\r
17 ln = commands.length;\r
18\r
19 ctx.beginPath();\r
20 for (; i < ln; i++) {\r
21 switch (commands[i]) {\r
22 case "M":\r
23 ctx.moveTo(params[j], params[j + 1]);\r
24 j += 2;\r
25 break;\r
26 case "L":\r
27 ctx.lineTo(params[j], params[j + 1]);\r
28 j += 2;\r
29 break;\r
30 case "C":\r
31 ctx.bezierCurveTo(\r
32 params[j], params[j + 1],\r
33 params[j + 2], params[j + 3],\r
34 params[j + 4], params[j + 5]\r
35 );\r
36 j += 6;\r
37 break;\r
38 case "Z":\r
39 ctx.closePath();\r
40 break;\r
41 default:\r
42 }\r
43 }\r
44 ctx.fillStroke(attr);\r
45\r
46 mat.toContext(ctx);\r
47 ctx.beginPath();\r
48 for (i = 0, j = 0; i < ln; i++) {\r
49 switch (commands[i]) {\r
50 case "M":\r
51 ctx.moveTo(params[j] - size, params[j + 1] - size);\r
52 ctx.rect(params[j] - size, params[j + 1] - size, size * 2, size * 2);\r
53 j += 2;\r
54 break;\r
55 case "L":\r
56 ctx.moveTo(params[j] - size, params[j + 1] - size);\r
57 ctx.rect(params[j] - size, params[j + 1] - size, size * 2, size * 2);\r
58 j += 2;\r
59 break;\r
60 case "C":\r
61 ctx.moveTo(params[j] + size, params[j + 1]);\r
62 ctx.arc(params[j], params[j + 1], size, 0, Math.PI * 2, true);\r
63 j += 2;\r
64 ctx.moveTo(params[j] + size, params[j + 1]);\r
65 ctx.arc(params[j], params[j + 1], size, 0, Math.PI * 2, true);\r
66 j += 2;\r
67 ctx.moveTo(params[j] + size * 2, params[j + 1]);\r
68 ctx.rect(params[j] - size, params[j + 1] - size, size * 2, size * 2);\r
69 j += 2;\r
70 break;\r
71 default:\r
72 }\r
73 }\r
74 imat.toContext(ctx);\r
75 ctx.strokeStyle = "black";\r
76 ctx.strokeOpacity = 1;\r
77 ctx.lineWidth = 1;\r
78 ctx.stroke();\r
79\r
80 mat.toContext(ctx);\r
81 ctx.beginPath();\r
82 for (i = 0, j = 0; i < ln; i++) {\r
83 switch (commands[i]) {\r
84 case "M":\r
85 ctx.moveTo(params[j], params[j + 1]);\r
86 j += 2;\r
87 break;\r
88 case "L":\r
89 ctx.moveTo(params[j], params[j + 1]);\r
90 j += 2;\r
91 break;\r
92 case "C":\r
93 ctx.lineTo(params[j], params[j + 1]);\r
94 j += 2;\r
95 ctx.moveTo(params[j], params[j + 1]);\r
96 j += 2;\r
97 ctx.lineTo(params[j], params[j + 1]);\r
98 j += 2;\r
99 break;\r
100 default:\r
101 }\r
102 }\r
103 imat.toContext(ctx);\r
104 ctx.lineWidth = 1 / 2;\r
105 ctx.stroke();\r
106 }\r
107});