@@ -350,27 +350,59 @@
350 350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
GraphRow *pRow;
351 351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
352 352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char cSep;
353 353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <script type="text/JavaScript">
354 354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ /* <![CDATA[ */
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* the rowinfo[] array contains all the information needed to generate
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the graph. Each entry contains information for a single row:
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** id: The id of the <div> element for the row. This is an integer.
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to get an actual id, prepend "m" to the integer. The top node
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is 1 and numbers increase moving down the timeline.
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** bg: The background color for this row
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** r: The "rail" that the node for this row sits on. The left-most
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** rail is 0 and the number increases to the right.
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** d: True if there is a "descender" - an arrow coming from the bottom
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the page straight up to this node.
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** mo: "merge-out". If non-negative, this is a rail number on which
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a merge arrow travels upward. The merge arrow is drawn upwards
369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to the row identified by mu:. This value is negative then
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** node has no merge children and no merge-out line is drawn.
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** mu: The id of the row which is the top of the merge-out arrow.
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** md: A bitmask of rails on which merge-arrow descenders should be
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** drawn from this row to the bottom of the page. The least
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** significant bit (1) corresponds to rail 0. The 2-bit corresponds
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to rail 1. And so forth. This value is 0 if there are no
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** merge-arrow descenders.
377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** u: Draw a think child-line out of the top of this node and up to
378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the node with an id equal to this value. 0 if there is no
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** thick-line riser.
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** au: An array of integers that define thick-line risers for branches.
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The integers are in pairs. For each pair, the first integer is
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is the rail on which the riser should run and the second integer
383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is the id of the node upto which the riser should run.
384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** mi: "merge-in". An array of integer rail numbers from which
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** merge arrows should be drawn into this node.
386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
355 387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("var rowinfo = [\n");
356 388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("{id:\"m%d\",bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,md:%u,u:%d,au:",
389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("{id:%d,bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,md:%u,u:%d,au:",
358 390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRow->idx,
359 391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRow->zBgClr,
360 392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRow->iRail,
361 393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRow->bDescender,
362 394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRow->mergeOut,
363 395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRow->mergeUpto,
364 396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRow->mergeDown,
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRow->aiRaiser[pRow->iRail]
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRow->aiRiser[pRow->iRail]
366 398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
367 399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cSep = '[';
368 400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<GR_MAX_RAIL; i++){
369 401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i==pRow->iRail ) continue;
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pRow->aiRaiser[i]>0 ){
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("%c%d,%d", cSep, i, pRow->aiRaiser[i]);
402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRow->aiRiser[i]>0 ){
403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("%c%d,%d", cSep, i, pRow->aiRiser[i]);
372 404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cSep = ',';
373 405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
374 406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
375 407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cSep=='[' ) cgi_printf("[");
376 408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("],mi:");
@@ -497,14 +529,14 @@
497 529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var canvasDiv = document.getElementById("canvas");
498 530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ while( canvasDiv.hasChildNodes() ){
499 531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ canvasDiv.removeChild(canvasDiv.firstChild);
500 532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
501 533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var canvasY = absoluteY("timelineTable");
502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ var left = absoluteX(rowinfo[0].id) - absoluteX("canvas") + 15;
534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var left = absoluteX("m"+rowinfo[0].id) - absoluteX("canvas") + 15;
503 535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var width = nrail*20;
504 536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ for(var i in rowinfo){
505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ rowinfo[i].y = absoluteY(rowinfo[i].id) + 10 - canvasY;
537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ rowinfo[i].y = absoluteY("m"+rowinfo[i].id) + 10 - canvasY;
506 538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ rowinfo[i].x = left + rowinfo[i].r*20;
507 539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
508 540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var btm = absoluteY("grbtm") + 10 - canvasY;
509 541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( btm<32768 ){
510 542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ canvasDiv.innerHTML = '<canvas id="timeline-canvas" '+
@@ -528,11 +560,11 @@
528 560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
529 561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ for(var i in rowinfo){
530 562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ drawNode(rowinfo[i], left, btm);
531 563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
532 564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ }
533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ var lastId = rowinfo[rowinfo.length-1].id;
565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ var lastId = "m"+rowinfo[rowinfo.length-1].id;
534 566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var lastY = 0;
535 567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ function checkHeight(){
536 568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ var h = absoluteY(lastId);
537 569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ if( h!=lastY ){
538 570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ renderGraph();
539 571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
540 572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
A DDED test/graph-test-1.wiki