Advertisement
Guest User

Untitled

a guest
Jan 21st, 2020
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.02 KB | None | 0 0
  1. (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
  2.  
  3. var mux = require("./shapes/mux.js")
  4. var entity = require("./shapes/entity.js")
  5.  
  6. // export ui for debugging
  7. Draw.loadPlugin(function(ui){window.ui=ui;});
  8.  
  9.  
  10. Draw.loadPlugin(function(ui) {
  11. // Adds custom sidebar entry
  12. ui.sidebar.addESGPalette();
  13. });
  14.  
  15. Sidebar.prototype.addESGPalette = function() {
  16. this.addPaletteFunctions('esg','ESG', true, [
  17. this.createVertexTemplateEntry('shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.esg.abstract.mux;', 80, 120, 'Mux', 'Mux', null, null, this.getTagsForStencil('mxgraph.esg.abstract', 'mux', 'esg ').join(' ')),
  18. this.createVertexTemplateEntry('shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.esg.abstract.entity;', 80, 120, 'Entity', 'Entity', null, null, this.getTagsForStencil('mxgraph.esg.abstract', 'entity', 'esg ').join(' '))
  19. ]);
  20. }
  21.  
  22.  
  23. },{"./shapes/entity.js":2,"./shapes/mux.js":3}],2:[function(require,module,exports){
  24. //**********************************************************************************************************************************************************
  25. //Entity
  26. //**********************************************************************************************************************************************************
  27. /**
  28. * Extends mxShape.
  29. */
  30. function mxShapeESGEntity(bounds, fill, stroke, strokewidth)
  31. {
  32. mxShape.call(this);
  33. this.bounds = bounds;
  34. this.fill = fill;
  35. this.stroke = stroke;
  36. this.strokewidth = (strokewidth != null) ? strokewidth : 1;
  37. };
  38.  
  39. /**
  40. * Extends mxShape.
  41. */
  42. mxUtils.extend(mxShapeESGEntity, mxShape);
  43.  
  44. mxShapeESGEntity.prototype.cst = {
  45. SHAPE_ENTITY : 'mxgraph.esg.abstract.entity'
  46. };
  47.  
  48. mxShapeESGEntity.prototype.customProperties = [
  49. {name: 'type', dispName: 'Type Symbol', type: 'enum', defVal:'none',
  50. enumList:[
  51. {val:'none', dispName:'None'},
  52. {val:'shiftReg', dispName:'Shift Register'},
  53. {val:'fifo', dispName:'Fifo / Queue'},
  54. {val:'ram', dispName:'RAM'},
  55. {val:'stack', dispName:'Stack'},
  56. {val:'ringbuffer', dispName:'Ringbuffer'}
  57. ]},
  58. {name: 'type_loc', dispName: 'Type Symbol Location', type: 'enum', defVal:'topLeft',
  59. enumList:[
  60. {val:'topLeft', dispName:'Top Left'},
  61. {val:'topRight', dispName:'Top Right'},
  62. {val:'center', dispName:'Center'},
  63. {val:'bottomLeft', dispName:'Bottom Left'},
  64. {val:'bottomRight', dispName:'Bottom Right'}
  65. ]},
  66. {name: 'type_size', dispName: 'Symbol size', type: 'int', min:1, max:1000, defVal:30},
  67. {name: 'left', dispName: 'Ports left', type: 'int', min:1, max:32, defVal:2},
  68. {name: 'top', dispName: 'Ports top', type: 'int', min:1, max:32, defVal:1},
  69. {name: 'right', dispName: 'Ports right', type: 'int', min:1, max:32, defVal:2},
  70. {name: 'bottom', dispName: 'Ports bottom', type: 'int', min:1, max:32, defVal:1},
  71. {name: 'clocks', dispName: 'Clock Ports', type: 'int', min:0, max:32, defVal:0},
  72. {name: 'drawPins', dispName: 'Draw Pins', type: 'bool', defVal:false}
  73. ];
  74.  
  75. /**
  76. * Function: paintVertexShape
  77. * Untitled Diagram.drawio
  78. * Paints the vertex shape.
  79. */
  80. mxShapeESGEntity.prototype.paintVertexShape = function(c, x, y, w, h)
  81. {
  82. window.c = c;
  83. c.translate(x, y);
  84. var leftPinNum = parseInt(mxUtils.getValue(this.style, 'left', '2'));
  85. var rightPinNum = parseInt(mxUtils.getValue(this.style, 'right', '2'));
  86. var topPinNum = parseInt(mxUtils.getValue(this.style, 'top', '1'));
  87. var bottomPinNum = parseInt(mxUtils.getValue(this.style, 'bottom', '1'));
  88. var clockPinNum = parseInt(mxUtils.getValue(this.style, 'clocks', '0'));
  89. var type = mxUtils.getValue(this.style, 'type', 'none');
  90. var type_loc = mxUtils.getValue(this.style, 'type_loc', 'topLeft');
  91. var type_size = mxUtils.getValue(this.style, 'type_size', '30');
  92. var drawPins = mxUtils.getValue(this.style, 'drawPins', false);
  93. var padding = drawPins * 10;
  94. var fontSize = parseFloat(mxUtils.getValue(this.style, 'fontSize', '12'));
  95. c.setFontSize(fontSize * 0.5);
  96. var fontColor = mxUtils.getValue(this.style, 'fontColor', '#000000');
  97. c.setFontColor(fontColor);
  98. var dir = mxUtils.getValue(this.style, 'direction', 'east');
  99. var txtRot = 0;
  100.  
  101. var selectorPins = 1;
  102. var operation = 'mux';
  103.  
  104. switch(dir)
  105. {
  106. case 'south' :
  107. txtRot = 270;
  108. break;
  109. case 'west' :
  110. txtRot = 180;
  111. break;
  112. case 'north' :
  113. txtRot = 90;
  114. break;
  115. }
  116.  
  117.  
  118. c.begin();
  119. c.moveTo(padding,padding);
  120. c.lineTo(w-padding,padding);
  121. c.lineTo(w-padding,h-padding);
  122. c.lineTo(padding,h-padding);
  123. c.close()
  124. c.fillAndStroke();
  125.  
  126. if (drawPins) {
  127. c.begin();
  128. leftPinY = padding;
  129. for (var i = 1; i <= leftPinNum + clockPinNum; i++) {
  130. leftPinY += (h - 2*padding) / (leftPinNum + clockPinNum) / 2;
  131. c.moveTo(0,leftPinY);
  132. c.lineTo(padding,leftPinY);
  133. leftPinY += (h - 2*padding) / (leftPinNum + clockPinNum) / 2;
  134. }
  135. rightPinY = padding;
  136. for (var i = 1; i <= rightPinNum; i++) {
  137. rightPinY += (h - 2*padding) / rightPinNum / 2;
  138. c.moveTo(w-padding,rightPinY);
  139. c.lineTo(w,rightPinY);
  140. rightPinY += (h - 2*padding) / rightPinNum / 2;
  141. }
  142. topPinX = padding;
  143. for (var i = 1; i <= topPinNum; i++) {
  144. topPinX += (w - 2*padding) / topPinNum / 2;
  145. c.moveTo(topPinX,0);
  146. c.lineTo(topPinX,10);
  147. topPinX += (w - 2*padding) / topPinNum / 2;
  148. }
  149. bottomPinX = padding;
  150. for (var i = 1; i <= bottomPinNum; i++) {
  151. bottomPinX += (w - 2*padding) / bottomPinNum / 2;
  152. c.moveTo(bottomPinX,h-padding);
  153. c.lineTo(bottomPinX,h);
  154. bottomPinX += (w - 2*padding) / bottomPinNum / 2;
  155. }
  156. }
  157. c.stroke();
  158. c.end();
  159.  
  160. c.begin();
  161. spacing = (h - 2*padding) / (leftPinNum + clockPinNum);
  162. for (var i = leftPinNum+1; i <= leftPinNum + clockPinNum; i++) {
  163. leftPinY = padding + i * spacing;
  164. c.moveTo(padding,leftPinY - 3*spacing/4);
  165. c.lineTo(padding + spacing/4,leftPinY - spacing/2);
  166. c.lineTo(padding,leftPinY- spacing/4);
  167. }
  168. c.stroke();
  169. c.end();
  170.  
  171. var offsetX = 0;
  172. var offsetY = 0;
  173. switch(type_loc) {
  174. case 'topLeft':
  175. offsetX = 5 + type_size/2 + padding;
  176. offsetY = 5 + type_size/2 + padding;
  177. break;
  178. case 'topRight':
  179. offsetX = w - 5 - type_size/2 - padding;
  180. offsetY = 5 + type_size/2 + padding;
  181. break;
  182. case 'center':
  183. offsetX = w/2;
  184. offsetY = h/2;
  185. break;
  186. case 'bottomLeft':
  187. offsetX = 5 + type_size/2 + padding;
  188. offsetY = h - 5 - type_size/2 - padding;
  189. break;
  190. case 'bottomRight':
  191. offsetX = w - 5 - type_size/2 - padding;
  192. offsetY = h - 5 - type_size/2 - padding;
  193. break;
  194. default:
  195. break;
  196. };
  197.  
  198. switch(type) {
  199. case 'shiftReg': symbolESGShiftReg(c,offsetX,offsetY,type_size); break;
  200. case 'fifo': symbolESGFifo(c,offsetX,offsetY,type_size); break;
  201. case 'ram': symbolESGRAM(c,offsetX,offsetY,type_size); break;
  202. case 'stack': symbolESGStack(c,offsetX,offsetY,type_size); break;
  203. case 'ringbuffer': symbolESGRingBuffer(c,offsetX,offsetY,type_size); break;
  204. case 'none':
  205. default:
  206. break;
  207. };
  208. };
  209.  
  210. function symbolESGShiftReg(c,x,y,size) {
  211. var height = 3*size/5;
  212. var width = height/2;
  213. x -= width/2;
  214. y -= height/2;
  215. c.begin()
  216. c.rect(x+width/2,y-height/4,width,height);
  217. c.fillAndStroke();
  218. c.rect(x ,y ,width,height);
  219. c.fillAndStroke();
  220. c.rect(x-width/2,y+height/4,width,height);
  221. c.fillAndStroke();
  222. c.end();
  223. }
  224.  
  225. function symbolESGFifo(c,x,y,size) {
  226. var height = 3*size/4;
  227. var width = height/5;
  228. c.begin()
  229. c.moveTo(x-size/2,y-size/4);
  230. c.lineTo(x-size/2,y-size/2);
  231. c.lineTo(x+size/2,y-size/2);
  232. c.lineTo(x+size/2,y-size/4);
  233.  
  234. c.moveTo(x-size/2,y+size/4);
  235. c.lineTo(x-size/2,y+size/2);
  236. c.lineTo(x+size/2,y+size/2);
  237. c.lineTo(x+size/2,y+size/4);
  238. c.stroke();
  239.  
  240. c.rect(x+size/2-width/4-3*width/2,y-height/2,width,height);
  241. c.stroke();
  242. c.rect(x+size/2-width/4-6*width/2,y-height/2,width,height);
  243. c.stroke();
  244. c.rect(x+size/2-width/4-9*width/2,y-height/2,width,height);
  245. c.stroke();
  246. c.end()
  247. }
  248.  
  249. function symbolESGStack(c,x,y,size) {
  250. var width = 3*size/4;
  251. var height = width/5;
  252. c.begin()
  253. c.moveTo(x-size/4,y-size/2);
  254. c.lineTo(x-size/2,y-size/2);
  255. c.lineTo(x-size/2,y+size/2);
  256. c.lineTo(x+size/2,y+size/2);
  257. c.lineTo(x+size/2,y-size/2);
  258. c.lineTo(x+size/4,y-size/2);
  259. c.stroke();
  260.  
  261. c.rect(x-width/2,y+size/2-height/4-3*height/2,width,height);
  262. c.stroke();
  263. c.rect(x-width/2,y+size/2-height/4-6*height/2,width,height);
  264. c.stroke();
  265. c.rect(x-width/2,y+size/2-height/4-9*height/2,width,height);
  266. c.stroke();
  267. c.end()
  268. }
  269.  
  270. function symbolESGRAM(c,x,y,size) {
  271. var width = size;
  272. var height = width/5;
  273. c.begin()
  274. c.rect(x-width/2,y-size/2,width,height);
  275. c.stroke();
  276. c.rect(x-width/2,y-size/2+height,width,height);
  277. c.stroke();
  278. c.rect(x-width/2,y-size/2+2*height,width,height);
  279. c.stroke();
  280. c.rect(x-width/2,y-size/2+3*height,width,height);
  281. c.stroke();
  282. c.rect(x-width/2,y-size/2+4*height,width,height);
  283. c.stroke();
  284. c.end()
  285. c.begin();
  286. c.moveTo(x-size/4,y-size/2);
  287. c.lineTo(x-size/4,y+size/2);
  288. c.stroke();
  289. c.end()
  290. }
  291.  
  292. function symbolESGRingBuffer(c,x,y,size) {
  293. var height = 3*size/5;
  294. var width = height/2;
  295. x -= width/2;
  296. y -= size/2;
  297. c.begin()
  298. c.rect(x,y,width,height);
  299. c.fillAndStroke();
  300. c.rect(x-7*width/8,y+1*size/16,width,height);
  301. c.fillAndStroke();
  302. c.rect(x+7*width/8,y+1*size/16,width,height);
  303. c.fillAndStroke();
  304. c.rect(x-11*width/8,y+2*size/16,width,height);
  305. c.fillAndStroke();
  306. c.rect(x+11*width/8,y+2*size/16,width,height);
  307. c.fillAndStroke();
  308. c.rect(x-7*width/8,y+4*size/16,width,height);
  309. c.fillAndStroke();
  310. c.rect(x+7*width/8,y+4*size/16,width,height);
  311. c.fillAndStroke();
  312. c.rect(x,y+5*size/16,width,height);
  313. c.fillAndStroke();
  314. c.end();
  315. }
  316.  
  317. mxCellRenderer.registerShape(mxShapeESGEntity.prototype.cst.SHAPE_ENTITY, mxShapeESGEntity);
  318.  
  319. mxShapeESGEntity.prototype.getConstraints = function(style, w, h)
  320. {
  321. var constr = [];
  322. var leftPinNum = parseInt(mxUtils.getValue(this.style, 'left', '2'));
  323. var clockPinNum = parseInt(mxUtils.getValue(this.style, 'clocks', '0'));
  324. var rightPinNum = parseInt(mxUtils.getValue(this.style, 'right', '2'));
  325. var topPinNum = parseInt(mxUtils.getValue(this.style, 'top', '1'));
  326. var bottomPinNum = parseInt(mxUtils.getValue(this.style, 'bottom', '1'));
  327. var dir = mxUtils.getValue(this.style, 'direction', 'east');
  328.  
  329. var padding = 10;
  330.  
  331. leftPinY = padding;
  332. for (var i = 1; i <= leftPinNum + clockPinNum; i++) {
  333. leftPinY += (h - 2*padding) / (leftPinNum + clockPinNum) / 2;
  334. constr.push(new mxConnectionConstraint(new mxPoint(0, (leftPinY)/h), false, 0, 0));
  335. leftPinY += (h - 2*padding) / (leftPinNum + clockPinNum) / 2;
  336. }
  337. rightPinY = padding;
  338. for (var i = 1; i <= rightPinNum; i++) {
  339. rightPinY += (h - 2*padding) / rightPinNum / 2;
  340. constr.push(new mxConnectionConstraint(new mxPoint(1, rightPinY/h), false, 0, 0));
  341. rightPinY += (h - 2*padding) / rightPinNum / 2;
  342. }
  343. topPinX = padding;
  344. for (var i = 1; i <= topPinNum; i++) {
  345. topPinX += (w - 2*padding) / topPinNum / 2;
  346. constr.push(new mxConnectionConstraint(new mxPoint(topPinX/w,0), false, 0, 0));
  347. topPinX += (w - 2*padding) / topPinNum / 2;
  348. }
  349. bottomPinX = padding;
  350. for (var i = 1; i <= bottomPinNum; i++) {
  351. bottomPinX += (w - 2*padding) / bottomPinNum / 2;
  352. constr.push(new mxConnectionConstraint(new mxPoint(bottomPinX/w,1), false, 0, 0));
  353. bottomPinX += (w -2 *padding) / bottomPinNum / 2;
  354. }
  355.  
  356. return (constr);
  357. }
  358.  
  359. },{}],3:[function(require,module,exports){
  360. //**********************************************************************************************************************************************************
  361. //Mux
  362. //**********************************************************************************************************************************************************
  363. /**
  364. * Extends mxShape.
  365. */
  366. function mxShapeESGMux(bounds, fill, stroke, strokewidth)
  367. {
  368. mxShape.call(this);
  369. this.bounds = bounds;
  370. this.fill = fill;
  371. this.stroke = stroke;
  372. this.strokewidth = (strokewidth != null) ? strokewidth : 1;
  373. };
  374.  
  375. /**
  376. * Extends mxShape.
  377. */
  378. mxUtils.extend(mxShapeESGMux, mxShape);
  379.  
  380. mxShapeESGMux.prototype.cst = {
  381. SHAPE_MUX : 'mxgraph.esg.abstract.mux'
  382. };
  383.  
  384. mxShapeESGMux.prototype.customProperties = [
  385. {name: 'operation', dispName: 'Operation', type: 'enum', defVal:'mux',
  386. enumList:[
  387. {val:'mux', dispName:'Mux'},
  388. {val:'demux', dispName:'Demux'}
  389. ]},
  390. {name: 'selectorPins', dispName: 'Selector Pins', type: 'int', min:1, max:8, defVal:2},
  391. ];
  392.  
  393. /**
  394. * Function: paintVertexShape
  395. * Untitled Diagram.drawio
  396. * Paints the vertex shape.
  397. */
  398. mxShapeESGMux.prototype.paintVertexShape = function(c, x, y, w, h)
  399. {
  400. c.translate(x, y);
  401. var selectorPins = parseInt(mxUtils.getValue(this.style, 'selectorPins', '2'));
  402. var operation = mxUtils.getValue(this.style, 'operation', 'mux');
  403. var fontSize = parseFloat(mxUtils.getValue(this.style, 'fontSize', '12'));
  404. c.setFontSize(fontSize * 0.5);
  405. var fontColor = mxUtils.getValue(this.style, 'fontColor', '#000000');
  406. c.setFontColor(fontColor);
  407. var dir = mxUtils.getValue(this.style, 'direction', 'east');
  408. var txtRot = 0;
  409.  
  410. switch(dir)
  411. {
  412. case 'south' :
  413. txtRot = 270;
  414. break;
  415. case 'west' :
  416. txtRot = 180;
  417. break;
  418. case 'north' :
  419. txtRot = 90;
  420. break;
  421. }
  422.  
  423. switch(operation)
  424. {
  425. case 'demux':
  426. c.begin();
  427. c.moveTo(w - 10, 0);
  428. c.lineTo(10, h * 0.1);
  429. c.lineTo(10, h * 0.9 - 10);
  430. c.lineTo(w - 10, h - 10);
  431. c.close();
  432. c.fillAndStroke();
  433. break;
  434. default:
  435. c.begin();
  436. c.moveTo(10, 0);
  437. c.lineTo(w - 10, h * 0.1);
  438. c.lineTo(w - 10, h * 0.9 - 10);
  439. c.lineTo(10, h - 10);
  440. c.close();
  441. c.fillAndStroke();
  442. };
  443.  
  444. var numInputs = 1;
  445. var numOutputs = 1;
  446.  
  447. if (operation == 'mux')
  448. {
  449. numInputs = Math.pow(2, selectorPins);
  450. var spacing = (h - 16) / numInputs;
  451. }
  452. else
  453. {
  454. numOutputs = Math.pow(2, selectorPins);
  455. var spacing = (h - 16) / numOutputs;
  456. }
  457.  
  458. var currH = 3 + spacing * 0.5;
  459.  
  460. c.begin();
  461.  
  462. if (numInputs == 1)
  463. {
  464. c.moveTo(0, (h - 10) * 0.5);
  465. c.lineTo(10, (h - 10) * 0.5);
  466. }
  467. else
  468. {
  469. for (var i = 0; i < numInputs; i++)
  470. {
  471. c.moveTo(0, currH);
  472. c.lineTo(10, currH);
  473. c.text(14, currH + 1, 0, 0, '' + i.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, txtRot);
  474. currH = currH + spacing;
  475. }
  476. }
  477.  
  478. if (numOutputs == 1)
  479. {
  480. c.moveTo(w - 10, (h - 10) * 0.5);
  481. c.lineTo(w, (h - 10) * 0.5);
  482. }
  483. else
  484. {
  485. for (var i = 0; i < numOutputs; i++)
  486. {
  487. c.moveTo(w - 10, currH);
  488. c.lineTo(w, currH);
  489. c.text(w - 14, currH + 1, 0, 0, '' + i.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, txtRot);
  490. currH = currH + spacing;
  491. }
  492. }
  493.  
  494. var spacing = (w - 20) / selectorPins;
  495. var currW = 10 + spacing * 0.5;
  496.  
  497. for (var i = 0; i < selectorPins; i++)
  498. {
  499. if (operation == 'mux')
  500. {
  501. c.moveTo(currW, h - 10 - (currW - 10) / (w - 20) * h * 0.1);
  502. }
  503. else
  504. {
  505. c.moveTo(currW, h - 10 - (w - currW - 10) / (w - 20) * h * 0.1);
  506. }
  507.  
  508. c.lineTo(currW, h);
  509.  
  510. c.text(currW + 5, h -4, 0, 0, 'S' + (selectorPins - i - 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, txtRot);
  511. currW = currW + spacing;
  512. }
  513.  
  514. c.stroke();
  515. };
  516.  
  517. mxCellRenderer.registerShape(mxShapeESGMux.prototype.cst.SHAPE_MUX, mxShapeESGMux);
  518.  
  519. mxShapeESGMux.prototype.getConstraints = function(style, w, h)
  520. {
  521. var constr = [];
  522. var pinRange = (h - 16) / h;
  523. var selectorPins = parseInt(mxUtils.getValue(this.style, 'selectorPins', '1'));
  524. var operation = mxUtils.getValue(this.style, 'operation', 'mux');
  525. var dir = mxUtils.getValue(this.style, 'direction', 'east');
  526.  
  527. var numInputs = 1;
  528. var numOutputs = 1;
  529.  
  530. if (operation == 'mux')
  531. {
  532. numInputs = Math.pow(2, selectorPins);
  533. var spacing = pinRange / numInputs;
  534. }
  535. else
  536. {
  537. numOutputs = Math.pow(2, selectorPins);
  538. var spacing = pinRange / numOutputs;
  539. }
  540.  
  541. var currH = spacing * 0.5;
  542.  
  543. if (numInputs == 1)
  544. {
  545. constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5 * (h - 10) / h), false, 0, 0));
  546. }
  547. else
  548. {
  549. for (var i = 0; i < numInputs; i++)
  550. {
  551. constr.push(new mxConnectionConstraint(new mxPoint(0, currH), false, null, 0, 3));
  552. currH = currH + spacing;
  553. }
  554. }
  555.  
  556. if (numOutputs == 1)
  557. {
  558. constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, -5));
  559. }
  560. else
  561. {
  562. for (var i = 0; i < numOutputs; i++)
  563. {
  564. constr.push(new mxConnectionConstraint(new mxPoint(1, currH), false, null, 0, 3));
  565. currH = currH + spacing;
  566. }
  567. }
  568.  
  569. var spacing = (w - 20) / (w * selectorPins);
  570. var currW = spacing * 0.5;
  571.  
  572. for (var i = 0; i < selectorPins; i++)
  573. {
  574. constr.push(new mxConnectionConstraint(new mxPoint(currW, 1), false, null, 10, 0));
  575. currW = currW + spacing;
  576. }
  577.  
  578. return (constr);
  579. }
  580.  
  581. },{}]},{},[1]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement