Fossil SCM

Add the ability to draw graph rail lines in node color.

drh 2015-03-30 16:57 improved-skin-edit
Commit 675f8c7d29b09eab1f5dd2f0688270fd38733bf6
--- skins/aht/details.txt
+++ skins/aht/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/aht/details.txt
+++ skins/aht/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/aht/details.txt
+++ skins/aht/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
--- skins/black_and_white/details.txt
+++ skins/black_and_white/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/black_and_white/details.txt
+++ skins/black_and_white/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/black_and_white/details.txt
+++ skins/black_and_white/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
--- skins/blitz/details.txt
+++ skins/blitz/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/blitz/details.txt
+++ skins/blitz/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/blitz/details.txt
+++ skins/blitz/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
--- skins/blitz_no_logo/details.txt
+++ skins/blitz_no_logo/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/blitz_no_logo/details.txt
+++ skins/blitz_no_logo/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/blitz_no_logo/details.txt
+++ skins/blitz_no_logo/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
--- skins/default/details.txt
+++ skins/default/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/default/details.txt
+++ skins/default/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/default/details.txt
+++ skins/default/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
--- skins/eagle/details.txt
+++ skins/eagle/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 1
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 1
55
--- skins/eagle/details.txt
+++ skins/eagle/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 1
5
--- skins/eagle/details.txt
+++ skins/eagle/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 1
5
--- skins/enhanced1/details.txt
+++ skins/enhanced1/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/enhanced1/details.txt
+++ skins/enhanced1/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/enhanced1/details.txt
+++ skins/enhanced1/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
--- skins/khaki/details.txt
+++ skins/khaki/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/khaki/details.txt
+++ skins/khaki/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/khaki/details.txt
+++ skins/khaki/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
--- skins/original/details.txt
+++ skins/original/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/original/details.txt
+++ skins/original/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/original/details.txt
+++ skins/original/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
--- skins/plain_gray/details.txt
+++ skins/plain_gray/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/plain_gray/details.txt
+++ skins/plain_gray/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/plain_gray/details.txt
+++ skins/plain_gray/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
--- skins/rounded1/details.txt
+++ skins/rounded1/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/rounded1/details.txt
+++ skins/rounded1/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/rounded1/details.txt
+++ skins/rounded1/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
--- skins/xekri/details.txt
+++ skins/xekri/details.txt
@@ -1,4 +1,4 @@
1
-timeline-arrowheads: 1
2
-timeline-circle-nodes: 0
3
-timeline-colored-lines: 0
4
-white-foreground: 0
1
+timeline-arrowheads: 1
2
+timeline-circle-nodes: 0
3
+timeline-color-graph-lines: 0
4
+white-foreground: 0
55
--- skins/xekri/details.txt
+++ skins/xekri/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-colored-lines: 0
4 white-foreground: 0
5
--- skins/xekri/details.txt
+++ skins/xekri/details.txt
@@ -1,4 +1,4 @@
1 timeline-arrowheads: 1
2 timeline-circle-nodes: 0
3 timeline-color-graph-lines: 0
4 white-foreground: 0
5
+4 -4
--- src/skins.c
+++ src/skins.c
@@ -75,14 +75,14 @@
7575
*/
7676
static struct SkinDetail {
7777
const char *zName; /* Name of the detail */
7878
char *zValue; /* Value of the detail */
7979
} aSkinDetail[] = {
80
- { "timeline-arrowheads", "1" },
81
- { "timeline-circle-nodes", "0" },
82
- { "timeline-multicolor", "0" },
83
- { "white-foreground", "0" }
80
+ { "timeline-arrowheads", "1" },
81
+ { "timeline-circle-nodes", "0" },
82
+ { "timeline-color-graph-lines", "0" },
83
+ { "white-foreground", "0" },
8484
};
8585
8686
/*
8787
** Invoke this routine to set the alternative skin. Return NULL if the
8888
** alternative was successfully installed. Return a string listing all
8989
--- src/skins.c
+++ src/skins.c
@@ -75,14 +75,14 @@
75 */
76 static struct SkinDetail {
77 const char *zName; /* Name of the detail */
78 char *zValue; /* Value of the detail */
79 } aSkinDetail[] = {
80 { "timeline-arrowheads", "1" },
81 { "timeline-circle-nodes", "0" },
82 { "timeline-multicolor", "0" },
83 { "white-foreground", "0" }
84 };
85
86 /*
87 ** Invoke this routine to set the alternative skin. Return NULL if the
88 ** alternative was successfully installed. Return a string listing all
89
--- src/skins.c
+++ src/skins.c
@@ -75,14 +75,14 @@
75 */
76 static struct SkinDetail {
77 const char *zName; /* Name of the detail */
78 char *zValue; /* Value of the detail */
79 } aSkinDetail[] = {
80 { "timeline-arrowheads", "1" },
81 { "timeline-circle-nodes", "0" },
82 { "timeline-color-graph-lines", "0" },
83 { "white-foreground", "0" },
84 };
85
86 /*
87 ** Invoke this routine to set the alternative skin. Return NULL if the
88 ** alternative was successfully installed. Return a string listing all
89
+16 -13
--- src/timeline.c
+++ src/timeline.c
@@ -614,17 +614,16 @@
614614
char cSep;
615615
int mergeOffset; /* Pixel offset from rail to merge riser */
616616
int iRailPitch; /* Pixels between consecutive rails */
617617
int showArrowheads; /* True to draw arrowheads. False to omit. */
618618
int circleNodes; /* True for circle nodes. False for square nodes */
619
- int multicolorLines; /* Use colors for graph lines */
619
+ int colorGraph; /* Use colors for graph lines */
620620
621621
iRailPitch = pGraph->iRailPitch;
622622
showArrowheads = skin_detail_boolean("timeline-arrowheads");
623623
circleNodes = skin_detail_boolean("timeline-circle-nodes");
624
- multicolorLines = skin_detail_boolean("timeline-multicolor");
625
- (void)multicolorLines; /* Not currently used */
624
+ colorGraph = skin_detail_boolean("timeline-color-graph-lines");
626625
627626
/* Number of pixels that the thin merge lines are offset from the
628627
** the center of the think rail lines. If zero, then the vertical
629628
** merge lines overlap with the thicker rail lines.
630629
*/
@@ -697,12 +696,16 @@
697696
cgi_printf("%c%d,%d", cSep, i, pRow->aiRiser[i]);
698697
cSep = ',';
699698
}
700699
}
701700
if( cSep=='[' ) cgi_printf("[");
702
- cgi_printf("],mi:");
701
+ cgi_printf("],");
702
+ if( colorGraph && pRow->zBgClr[0]=='#' ){
703
+ cgi_printf("fg:\"%s\",", pRow->zBgClr);
704
+ }
703705
/* mi */
706
+ cgi_printf("mi:");
704707
cSep = '[';
705708
for(i=0; i<GR_MAX_RAIL; i++){
706709
if( pRow->mergeIn[i] ){
707710
int mi = i*iRailPitch;
708711
if( pRow->mergeIn[i]==1 ) mi -= mergeOffset-1;
@@ -760,12 +763,12 @@
760763
@ }while( obj = obj.offsetParent );
761764
@ }
762765
@ return left;
763766
@ }
764767
if( showArrowheads ){
765
- @ function drawUpArrow(x,y0,y1){
766
- @ drawBox(lineClr,x,y0+4,x+1,y1);
768
+ @ function drawUpArrow(x,y0,y1,clr){
769
+ @ drawBox(clr,x,y0+4,x+1,y1);
767770
@ var n = document.createElement("div"),
768771
@ l = x-2,
769772
@ t = y0;
770773
@ n.style.position = "absolute";
771774
@ n.style.left = l+"px";
@@ -775,22 +778,22 @@
775778
@ n.style.transform = "scale(.999)";
776779
@ n.style.borderWidth = 0;
777780
@ n.style.borderStyle = "solid";
778781
@ n.style.borderColor = "transparent";
779782
@ n.style.borderRightWidth = "3px";
780
- @ n.style.borderBottomColor = lineClr;
783
+ @ n.style.borderBottomColor = clr;
781784
@ n.style.borderLeftWidth = "3px";
782785
@ if( y0+10>=y1 ){
783786
@ n.style.borderBottomWidth = "5px";
784787
@ } else {
785788
@ n.style.borderBottomWidth = "7px";
786789
@ }
787790
@ cDiv.appendChild(n);
788791
@ }
789792
}else{
790
- @ function drawUpArrow(x,y0,y1){
791
- @ drawBox(lineClr,x,y0+1,x+1,y1);
793
+ @ function drawUpArrow(x,y0,y1,clr){
794
+ @ drawBox(clr,x,y0+1,x+1,y1);
792795
@ }
793796
}
794797
@ function drawThinArrow(y,xFrom,xTo){
795798
@ var n = document.createElement("div"),
796799
@ t = y-2;
@@ -828,15 +831,15 @@
828831
}
829832
@ }
830833
@ function drawNode(p, left, btm){
831834
@ drawNodeBox(boxColor,p.x-5,p.y-5,p.x+6,p.y+6);
832835
@ drawNodeBox(p.bg||bgClr,p.x-4,p.y-4,p.x+5,p.y+5);
833
- @ if( p.u>0 ) drawUpArrow(p.x, rowinfo[p.u-1].y+6, p.y-5);
836
+ @ if( p.u>0 ) drawUpArrow(p.x,rowinfo[p.u-1].y+6,p.y-6,p.fg||lineClr);
834837
@ if( p.f&1 ) drawNodeBox(boxColor,p.x-1,p.y-1,p.x+2,p.y+2);
835838
if( !omitDescenders ){
836
- @ if( p.u==0 ) drawUpArrow(p.x, 0, p.y-5);
837
- @ if( p.d ) drawUpArrow(p.x, p.y+6, btm);
839
+ @ if( p.u==0 ) drawUpArrow(p.x,0,p.y-6,p.fg||lineClr);
840
+ @ if( p.d ) drawUpArrow(p.x,p.y+6,btm,p.fg||lineClr);
838841
}
839842
@ if( p.mo>0 ){
840843
@ var x1 = p.mo + left - 1;
841844
@ var y1 = p.y-3;
842845
@ var x0 = x1>p.x ? p.x+7 : p.x-6;
@@ -855,11 +858,11 @@
855858
@ var x1 = p.au[i]*railPitch + left;
856859
@ var x0 = x1>p.x ? p.x+7 : p.x-6;
857860
@ var u = rowinfo[p.au[i+1]-1];
858861
@ if(u.id<p.id){
859862
@ drawBox(lineClr,x0,p.y,x1+1,p.y+1);
860
- @ drawUpArrow(x1, u.y+6, p.y);
863
+ @ drawUpArrow(x1,u.y+6,p.y,p.fg||lineClr);
861864
@ }else{
862865
@ drawBox("#600000",x0,p.y,x1,p.y+1);
863866
@ drawBox("#600000",x1-1,p.y,x1,u.y+1);
864867
@ drawBox("#600000",x1,u.y,u.x-10,u.y+1);
865868
@ var n = document.createElement("div"),
866869
--- src/timeline.c
+++ src/timeline.c
@@ -614,17 +614,16 @@
614 char cSep;
615 int mergeOffset; /* Pixel offset from rail to merge riser */
616 int iRailPitch; /* Pixels between consecutive rails */
617 int showArrowheads; /* True to draw arrowheads. False to omit. */
618 int circleNodes; /* True for circle nodes. False for square nodes */
619 int multicolorLines; /* Use colors for graph lines */
620
621 iRailPitch = pGraph->iRailPitch;
622 showArrowheads = skin_detail_boolean("timeline-arrowheads");
623 circleNodes = skin_detail_boolean("timeline-circle-nodes");
624 multicolorLines = skin_detail_boolean("timeline-multicolor");
625 (void)multicolorLines; /* Not currently used */
626
627 /* Number of pixels that the thin merge lines are offset from the
628 ** the center of the think rail lines. If zero, then the vertical
629 ** merge lines overlap with the thicker rail lines.
630 */
@@ -697,12 +696,16 @@
697 cgi_printf("%c%d,%d", cSep, i, pRow->aiRiser[i]);
698 cSep = ',';
699 }
700 }
701 if( cSep=='[' ) cgi_printf("[");
702 cgi_printf("],mi:");
 
 
 
703 /* mi */
 
704 cSep = '[';
705 for(i=0; i<GR_MAX_RAIL; i++){
706 if( pRow->mergeIn[i] ){
707 int mi = i*iRailPitch;
708 if( pRow->mergeIn[i]==1 ) mi -= mergeOffset-1;
@@ -760,12 +763,12 @@
760 @ }while( obj = obj.offsetParent );
761 @ }
762 @ return left;
763 @ }
764 if( showArrowheads ){
765 @ function drawUpArrow(x,y0,y1){
766 @ drawBox(lineClr,x,y0+4,x+1,y1);
767 @ var n = document.createElement("div"),
768 @ l = x-2,
769 @ t = y0;
770 @ n.style.position = "absolute";
771 @ n.style.left = l+"px";
@@ -775,22 +778,22 @@
775 @ n.style.transform = "scale(.999)";
776 @ n.style.borderWidth = 0;
777 @ n.style.borderStyle = "solid";
778 @ n.style.borderColor = "transparent";
779 @ n.style.borderRightWidth = "3px";
780 @ n.style.borderBottomColor = lineClr;
781 @ n.style.borderLeftWidth = "3px";
782 @ if( y0+10>=y1 ){
783 @ n.style.borderBottomWidth = "5px";
784 @ } else {
785 @ n.style.borderBottomWidth = "7px";
786 @ }
787 @ cDiv.appendChild(n);
788 @ }
789 }else{
790 @ function drawUpArrow(x,y0,y1){
791 @ drawBox(lineClr,x,y0+1,x+1,y1);
792 @ }
793 }
794 @ function drawThinArrow(y,xFrom,xTo){
795 @ var n = document.createElement("div"),
796 @ t = y-2;
@@ -828,15 +831,15 @@
828 }
829 @ }
830 @ function drawNode(p, left, btm){
831 @ drawNodeBox(boxColor,p.x-5,p.y-5,p.x+6,p.y+6);
832 @ drawNodeBox(p.bg||bgClr,p.x-4,p.y-4,p.x+5,p.y+5);
833 @ if( p.u>0 ) drawUpArrow(p.x, rowinfo[p.u-1].y+6, p.y-5);
834 @ if( p.f&1 ) drawNodeBox(boxColor,p.x-1,p.y-1,p.x+2,p.y+2);
835 if( !omitDescenders ){
836 @ if( p.u==0 ) drawUpArrow(p.x, 0, p.y-5);
837 @ if( p.d ) drawUpArrow(p.x, p.y+6, btm);
838 }
839 @ if( p.mo>0 ){
840 @ var x1 = p.mo + left - 1;
841 @ var y1 = p.y-3;
842 @ var x0 = x1>p.x ? p.x+7 : p.x-6;
@@ -855,11 +858,11 @@
855 @ var x1 = p.au[i]*railPitch + left;
856 @ var x0 = x1>p.x ? p.x+7 : p.x-6;
857 @ var u = rowinfo[p.au[i+1]-1];
858 @ if(u.id<p.id){
859 @ drawBox(lineClr,x0,p.y,x1+1,p.y+1);
860 @ drawUpArrow(x1, u.y+6, p.y);
861 @ }else{
862 @ drawBox("#600000",x0,p.y,x1,p.y+1);
863 @ drawBox("#600000",x1-1,p.y,x1,u.y+1);
864 @ drawBox("#600000",x1,u.y,u.x-10,u.y+1);
865 @ var n = document.createElement("div"),
866
--- src/timeline.c
+++ src/timeline.c
@@ -614,17 +614,16 @@
614 char cSep;
615 int mergeOffset; /* Pixel offset from rail to merge riser */
616 int iRailPitch; /* Pixels between consecutive rails */
617 int showArrowheads; /* True to draw arrowheads. False to omit. */
618 int circleNodes; /* True for circle nodes. False for square nodes */
619 int colorGraph; /* Use colors for graph lines */
620
621 iRailPitch = pGraph->iRailPitch;
622 showArrowheads = skin_detail_boolean("timeline-arrowheads");
623 circleNodes = skin_detail_boolean("timeline-circle-nodes");
624 colorGraph = skin_detail_boolean("timeline-color-graph-lines");
 
625
626 /* Number of pixels that the thin merge lines are offset from the
627 ** the center of the think rail lines. If zero, then the vertical
628 ** merge lines overlap with the thicker rail lines.
629 */
@@ -697,12 +696,16 @@
696 cgi_printf("%c%d,%d", cSep, i, pRow->aiRiser[i]);
697 cSep = ',';
698 }
699 }
700 if( cSep=='[' ) cgi_printf("[");
701 cgi_printf("],");
702 if( colorGraph && pRow->zBgClr[0]=='#' ){
703 cgi_printf("fg:\"%s\",", pRow->zBgClr);
704 }
705 /* mi */
706 cgi_printf("mi:");
707 cSep = '[';
708 for(i=0; i<GR_MAX_RAIL; i++){
709 if( pRow->mergeIn[i] ){
710 int mi = i*iRailPitch;
711 if( pRow->mergeIn[i]==1 ) mi -= mergeOffset-1;
@@ -760,12 +763,12 @@
763 @ }while( obj = obj.offsetParent );
764 @ }
765 @ return left;
766 @ }
767 if( showArrowheads ){
768 @ function drawUpArrow(x,y0,y1,clr){
769 @ drawBox(clr,x,y0+4,x+1,y1);
770 @ var n = document.createElement("div"),
771 @ l = x-2,
772 @ t = y0;
773 @ n.style.position = "absolute";
774 @ n.style.left = l+"px";
@@ -775,22 +778,22 @@
778 @ n.style.transform = "scale(.999)";
779 @ n.style.borderWidth = 0;
780 @ n.style.borderStyle = "solid";
781 @ n.style.borderColor = "transparent";
782 @ n.style.borderRightWidth = "3px";
783 @ n.style.borderBottomColor = clr;
784 @ n.style.borderLeftWidth = "3px";
785 @ if( y0+10>=y1 ){
786 @ n.style.borderBottomWidth = "5px";
787 @ } else {
788 @ n.style.borderBottomWidth = "7px";
789 @ }
790 @ cDiv.appendChild(n);
791 @ }
792 }else{
793 @ function drawUpArrow(x,y0,y1,clr){
794 @ drawBox(clr,x,y0+1,x+1,y1);
795 @ }
796 }
797 @ function drawThinArrow(y,xFrom,xTo){
798 @ var n = document.createElement("div"),
799 @ t = y-2;
@@ -828,15 +831,15 @@
831 }
832 @ }
833 @ function drawNode(p, left, btm){
834 @ drawNodeBox(boxColor,p.x-5,p.y-5,p.x+6,p.y+6);
835 @ drawNodeBox(p.bg||bgClr,p.x-4,p.y-4,p.x+5,p.y+5);
836 @ if( p.u>0 ) drawUpArrow(p.x,rowinfo[p.u-1].y+6,p.y-6,p.fg||lineClr);
837 @ if( p.f&1 ) drawNodeBox(boxColor,p.x-1,p.y-1,p.x+2,p.y+2);
838 if( !omitDescenders ){
839 @ if( p.u==0 ) drawUpArrow(p.x,0,p.y-6,p.fg||lineClr);
840 @ if( p.d ) drawUpArrow(p.x,p.y+6,btm,p.fg||lineClr);
841 }
842 @ if( p.mo>0 ){
843 @ var x1 = p.mo + left - 1;
844 @ var y1 = p.y-3;
845 @ var x0 = x1>p.x ? p.x+7 : p.x-6;
@@ -855,11 +858,11 @@
858 @ var x1 = p.au[i]*railPitch + left;
859 @ var x0 = x1>p.x ? p.x+7 : p.x-6;
860 @ var u = rowinfo[p.au[i+1]-1];
861 @ if(u.id<p.id){
862 @ drawBox(lineClr,x0,p.y,x1+1,p.y+1);
863 @ drawUpArrow(x1,u.y+6,p.y,p.fg||lineClr);
864 @ }else{
865 @ drawBox("#600000",x0,p.y,x1,p.y+1);
866 @ drawBox("#600000",x1-1,p.y,x1,u.y+1);
867 @ drawBox("#600000",x1,u.y,u.x-10,u.y+1);
868 @ var n = document.createElement("div"),
869

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button