923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
|
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
|
-
-
-
+
+
+
-
|
** au: An array of integers that define thick-line risers for branches.
** The integers are in pairs. For each pair, the first integer is
** is the rail on which the riser should run and the second integer
** is the id of the node upto which the riser should run. If there
** are no risers, this array does not exist.
** mi: "merge-in". An array of integer rail positions from which
** merge arrows should be drawn into this node. If the value is
** negative, then the rail position is the absolute value of mi[]
** and a thin merge-arrow descender is drawn to the bottom of
** the screen. This array is omitted if there are no inbound
** negative, then the rail position is -1-mi[] and a thin merge-arrow
** descender is drawn to the bottom of the screen. This array is
** omitted if there are no inbound merges.
** merges.
** ci: "cherrypick-in". Like "mi" except for cherrypick merges.
** omitted if there are no cherrypick merges.
** h: The artifact hash of the object being graphed
* br: The branch to which the artifact belongs
*/
aiMap = pGraph->aiRailMap;
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
|
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
|
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
|
-
+
|
if( colorGraph && pRow->zBgClr[0]=='#' ){
cgi_printf("\"fg\":\"%s\",", bg_to_fg(pRow->zBgClr));
}
/* mi */
for(i=k=0; i<GR_MAX_RAIL; i++){
if( pRow->mergeIn[i]==1 ){
int mi = aiMap[i];
if( (pRow->mergeDown >> i) & 1 ) mi = -mi;
if( (pRow->mergeDown >> i) & 1 ) mi = -1-mi;
if( k==0 ){
cgi_printf("\"mi\":");
cSep = '[';
}
k++;
cgi_printf("%c%d", cSep, mi);
cSep = ',';
|