1/**
2 * $Id: mxNetworks.js,v 1.0 2015/06/15 17:05:39 mate Exp $
3 * Copyright (c) 2006-2015, JGraph Ltd
4 */
5
6//**********************************************************************************************************************************************************
7//Bus
8//**********************************************************************************************************************************************************
9/**
10* Extends mxShape.
11*/
12function mxShapeNetworksBus(bounds, fill, stroke, strokewidth)
13{
14	mxShape.call(this);
15	this.bounds = bounds;
16	this.fill = fill;
17	this.stroke = stroke;
18	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
19};
20
21/**
22* Extends mxShape.
23*/
24mxUtils.extend(mxShapeNetworksBus, mxShape);
25
26mxShapeNetworksBus.prototype.cst = {
27		SHAPE_BUS : 'mxgraph.networks.bus'
28};
29
30/**
31* Function: paintVertexShape
32*
33* Paints the vertex shape.
34*/
35mxShapeNetworksBus.prototype.paintVertexShape = function(c, x, y, w, h)
36{
37	c.translate(x, y);
38	this.background(c, x, y, w, h);
39	c.setShadow(false);
40	this.foreground(c, x, y, w, h);
41};
42
43mxShapeNetworksBus.prototype.background = function(c, x, y, w, h)
44{
45	c.begin();
46	c.moveTo(8, h * 0.5 + 10);
47	c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10);
48	c.lineTo(w - 8, h * 0.5 - 10);
49	c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10);
50	c.close();
51	c.fillAndStroke();
52};
53
54mxShapeNetworksBus.prototype.foreground = function(c, x, y, w, h)
55{
56	c.setFillColor('#ffffff');
57	c.begin();
58	c.moveTo(w - 8, h * 0.5 - 10);
59	c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10);
60	c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10);
61	c.fillAndStroke();
62};
63
64mxCellRenderer.registerShape(mxShapeNetworksBus.prototype.cst.SHAPE_BUS, mxShapeNetworksBus);
65
66//**********************************************************************************************************************************************************
67//Comm Link
68//**********************************************************************************************************************************************************
69function mxShapeNetworksCommLinkEdge()
70{
71	mxArrow.call(this);
72};
73
74mxUtils.extend(mxShapeNetworksCommLinkEdge, mxArrow);
75
76mxShapeNetworksCommLinkEdge.prototype.paintEdgeShape = function(c, pts)
77{
78	// Base vector (between end points)
79	var p0 = pts[0];
80	var pe = pts[pts.length - 1];
81
82	var dx = pe.x - p0.x;
83	var dy = pe.y - p0.y;
84
85	p0.x = p0.x + dx * 0.05;
86	p0.y = p0.y + dy * 0.05;
87	pe.x = pe.x - dx * 0.05;
88	pe.y = pe.y - dy * 0.05;
89	dx = pe.x - p0.x;
90	dy = pe.y - p0.y;
91
92	var dist = Math.sqrt(dx * dx + dy * dy);
93	var nx = dx / dist;
94	var ny = dy / dist;
95	var midX = p0.x + dx * 0.5;
96	var midY = p0.y + dy * 0.5;
97
98	var p1x = midX + nx * dist / 3 * 0.1 - ny / 3 * dist * 0.1;
99	var p1y = midY + ny * dist / 3 * 0.1 + nx / 3 * dist * 0.1;
100	var p2x = midX + nx * dist * 0.1 + ny * dist * 0.1;
101	var p2y = midY + ny * dist * 0.1 - nx * dist * 0.1;
102
103	var p3x = midX - nx * dist / 3 * 0.1 + ny / 3 * dist * 0.1;
104	var p3y = midY - ny * dist / 3 * 0.1 - nx / 3 * dist * 0.1;
105	var p4x = midX - nx * dist * 0.1 - ny * dist * 0.1;
106	var p4y = midY - ny * dist * 0.1 + nx * dist * 0.1;
107
108	c.begin();
109	c.moveTo(p0.x, p0.y);
110	c.lineTo(p2x, p2y);
111	c.lineTo(p1x, p1y);
112	c.lineTo(pe.x, pe.y);
113	c.lineTo(p4x, p4y);
114	c.lineTo(p3x, p3y);
115	c.close();
116	c.fillAndStroke();
117};
118
119//Registers the comm link edge
120mxCellRenderer.registerShape('mxgraph.networks.comm_link_edge', mxShapeNetworksCommLinkEdge);
121