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