mxNetworks.js 3.3 KB

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