242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
|
+
-
-
+
+
-
+
|
if( p.hasOwnProperty('d') ) drawUpArrow({x: p.x, y: btm-node.h/2},p,p.fg);
}
if( p.hasOwnProperty('mo') ){
var x0 = p.x + node.w/2;
var x1 = p.mo*railPitch + node.w/2;
var u = tx.rowinfo[p.mu-tx.iTopRow];
var y1 = miLineY(u);
var drawMethod = (p.f&2) ? drawCherrypickLine : drawMergeLine;
if( p.u<0 || p.mo!=p.r ){
x1 += mergeLines[p.mo] = -mLine.w/2;
var y0 = p.y+2;
if( p.r!=p.mo ) drawMergeLine(x0,y0,x1+(x0<x1 ? mLine.w : 0),null);
drawMergeLine(x1,y0+mLine.w,null,y1);
if( p.r!=p.mo ) drawMethod(x0,y0,x1+(x0<x1 ? mLine.w : 0),null);
drawMethod(x1,y0+mLine.w,null,y1);
}else if( mergeOffset ){
mergeLines[p.mo] = u.r<p.r ? -mergeOffset-mLine.w : mergeOffset;
x1 += mergeLines[p.mo];
drawMergeLine(x1,p.y+node.h/2,null,y1);
drawMethod(x1,p.y+node.h/2,null,y1);
}else{
delete mergeLines[p.mo];
}
}
if( p.hasOwnProperty('au') ){
for( var i=0; i<p.au.length; i+=2 ){
var rail = p.au[i];
|
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
|
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
|
-
+
|
if( p.hasOwnProperty('cpi') ){
for( var i=0; i<p.cpi.length; i++ ){
var rail = p.cpi[i];
if( rail<0 ){
rail = -rail;
mergeLines[rail] = -mLine.w/2;
var x = rail*railPitch + (node.w-mLine.w)/2;
drawMergeLine(x,miLineY(p),null,btm);
drawCherrypickLine(x,miLineY(p),null,btm);
}
drawMergeArrow(p,rail,1);
}
}
}
var mergeLines;
function renderGraph(){
|