/[CvsGraph]/cvsgraph/cvsgraph.c
ViewVC logotype

Diff of /cvsgraph/cvsgraph.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.48, Thu Sep 23 20:29:01 2004 UTC revision 1.49, Wed Oct 20 22:03:36 2004 UTC
# Line 740  Line 740 
740          return dup_string();          return dup_string();
741  }  }
742    
743    static void find_merges_cvsnt(rcsfile_t *rcs)
744    {
745            int i;
746    
747            if(!conf.merge_cvsnt)
748                    return;
749    
750            for(i = 0; i < rcs->nsrev; i++)
751            {
752                    revision_t **r;
753    
754                    if(!rcs->srev[i]->delta->mergepoint)
755                            continue;
756    
757                    r = bsearch(rcs->srev[i]->delta->mergepoint->rev, rcs->srev, rcs->nsrev, sizeof(rcs->srev[0]), search_revision);
758                    if(!r)
759                            continue;
760                    rcs->merges = xrealloc(rcs->merges, sizeof(rcs->merges[0]) * (rcs->nmerges+1));
761                    rcs->merges[rcs->nmerges].type = TR_REVISION;
762                    rcs->merges[rcs->nmerges].from.rev = *r;
763                    rcs->merges[rcs->nmerges].to.rev = rcs->srev[i];
764                    rcs->nmerges++;
765            }
766    }
767    
768  static void find_merges(rcsfile_t *rcs)  static void find_merges(rcsfile_t *rcs)
769  {  {
770          int i;          int i;
# Line 813  Line 838 
838                                                          /* Tag matches */                                                          /* Tag matches */
839                                                          rcs->merges = xrealloc(rcs->merges,                                                          rcs->merges = xrealloc(rcs->merges,
840                                                                          sizeof(rcs->merges[0]) * (rcs->nmerges+1));                                                                          sizeof(rcs->merges[0]) * (rcs->nmerges+1));
841                                                          rcs->merges[rcs->nmerges].to = nt;                                                          rcs->merges[rcs->nmerges].type = TR_TAG;
842                                                          rcs->merges[rcs->nmerges].from = t;                                                          rcs->merges[rcs->nmerges].to.tag = nt;
843                                                            rcs->merges[rcs->nmerges].from.tag = t;
844                                                          rcs->nmerges++;                                                          rcs->nmerges++;
845                                                          if(!conf.tag_ignore_merge)                                                          if(!conf.tag_ignore_merge)
846                                                          {                                                          {
# Line 1754  Line 1780 
1780          int i;          int i;
1781          for(i = 0; i < rcs->nmerges; i++)          for(i = 0; i < rcs->nmerges; i++)
1782          {          {
1783                  revision_t *fr = rcs->merges[i].from->logrev;                  revision_t *fr;
1784                  revision_t *tr = rcs->merges[i].to->logrev;                  revision_t *tr;
1785                    int colorid;
1786                  int x1, x2, y1, y2;                  int x1, x2, y1, y2;
1787                    switch(rcs->merges[i].type)
1788                    {
1789                    case TR_TAG:
1790                            fr = rcs->merges[i].from.tag->logrev;
1791                            tr = rcs->merges[i].to.tag->logrev;
1792                            colorid = conf.merge_color.id;
1793                            break;
1794                    case TR_REVISION:
1795                            fr = rcs->merges[i].from.rev;
1796                            tr = rcs->merges[i].to.rev;
1797                            colorid = conf.merge_cvsnt_color.id;
1798                            break;
1799                    default:
1800                            continue;
1801                    }
1802                  if(!fr || !tr || fr == tr)                  if(!fr || !tr || fr == tr)
1803                          continue;       /* This can happen with detached tags and self-references */                          continue;       /* This can happen with detached tags and self-references */
1804                  if(conf.left_right)                  if(conf.left_right)
# Line 1802  Line 1844 
1844                                          x2 = tr->cx + tr->w/2;                                          x2 = tr->cx + tr->w/2;
1845                                  }                                  }
1846                          }                          }
1847                          y1 = fr->y + rcs->merges[i].from->yofs;                          if(rcs->merges[i].type == TR_TAG)
1848                          y2 = tr->y + rcs->merges[i].to->yofs;                          {
1849                                    y1 = fr->y + rcs->merges[i].from.tag->yofs;
1850                                    y2 = tr->y + rcs->merges[i].to.tag->yofs;
1851                            }
1852                            else
1853                            {
1854                                    y1 = fr->y + fr->h/2;
1855                                    y2 = tr->y + tr->h/2;
1856                            }
1857                  }                  }
1858                  if(dot && !conf.merge_arrows)                  if(dot && !conf.merge_arrows)
1859                  {                  {
1860                          int o = conf.left_right ? 1 : 0;                          int o = conf.left_right ? 1 : 0;
1861                          gdImageArc(im, x2, y2+o, 8, 8, 0, 360, conf.merge_color.id);                          gdImageArc(im, x2, y2+o, 8, 8, 0, 360, colorid);
1862                          /* BUG: We clip manually because libgd segfaults on out of bound values */                          /* BUG: We clip manually because libgd segfaults on out of bound values */
1863                          if(x2+1 >= 0 && x2+1 < gdImageSX(im) && y2+o+1 >= 0 && y2+o+1 < gdImageSY(im))                          if(x2+1 >= 0 && x2+1 < gdImageSX(im) && y2+o+1 >= 0 && y2+o+1 < gdImageSY(im))
1864                                  gdImageFillToBorder(im, x2+1, y2+o+1, conf.merge_color.id, conf.merge_color.id);                                  gdImageFillToBorder(im, x2+1, y2+o+1, colorid, colorid);
1865                  }                  }
1866                  else if(dot && conf.merge_arrows)                  else if(dot && conf.merge_arrows)
1867                  {                  {
# Line 1893  Line 1943 
1943                          p[2].x = ROUND(ex + u1 + u2);                          p[2].x = ROUND(ex + u1 + u2);
1944                          p[2].y = ROUND(ey + v1 + v2);                          p[2].y = ROUND(ey + v1 + v2);
1945                          /* draw the polygon (triangle) */                          /* draw the polygon (triangle) */
1946                          gdImageFilledPolygon(im, p, 3, conf.merge_color.id);                          gdImageFilledPolygon(im, p, 3, colorid);
1947                  }                  }
1948                  else                  else
1949                  {                  {
# Line 1902  Line 1952 
1952                                  if(fr->branch == tr->branch)                                  if(fr->branch == tr->branch)
1953                                  {                                  {
1954                                          int yy = (y1 < y2 ? y1 : y2) - 5;                                          int yy = (y1 < y2 ? y1 : y2) - 5;
1955                                          gdImageLine(im, x1, y1, x1, yy, conf.merge_color.id);                                          gdImageLine(im, x1, y1, x1, yy, colorid);
1956                                          gdImageLine(im, x2, y2, x2, yy, conf.merge_color.id);                                          gdImageLine(im, x2, y2, x2, yy, colorid);
1957                                          gdImageLine(im, x1, yy, x2, yy, conf.merge_color.id);                                          gdImageLine(im, x1, yy, x2, yy, colorid);
1958                                  }                                  }
1959                                  else                                  else
1960                                  {                                  {
1961                                          if(y1 > y2)                                          if(y1 > y2)
1962                                          {                                          {
1963                                                  gdImageLine(im, x1, y1, x1, y1-3, conf.merge_color.id);                                                  gdImageLine(im, x1, y1, x1, y1-3, colorid);
1964                                                  gdImageLine(im, x2, y2+1, x2, y2+3+1, conf.merge_color.id);                                                  gdImageLine(im, x2, y2+1, x2, y2+3+1, colorid);
1965                                                  gdImageLine(im, x1, y1-3, x2, y2+3+1, conf.merge_color.id);                                                  gdImageLine(im, x1, y1-3, x2, y2+3+1, colorid);
1966                                          }                                          }
1967                                          else                                          else
1968                                          {                                          {
1969                                                  gdImageLine(im, x1, y1+1, x1, y1+3+1, conf.merge_color.id);                                                  gdImageLine(im, x1, y1+1, x1, y1+3+1, colorid);
1970                                                  gdImageLine(im, x2, y2, x2, y2-3, conf.merge_color.id);                                                  gdImageLine(im, x2, y2, x2, y2-3, colorid);
1971                                                  gdImageLine(im, x1, y1+3+1, x2, y2-3, conf.merge_color.id);                                                  gdImageLine(im, x1, y1+3+1, x2, y2-3, colorid);
1972                                          }                                          }
1973                                  }                                  }
1974                          }                          }
# Line 1927  Line 1977 
1977                                  if(fr->branch == tr->branch)                                  if(fr->branch == tr->branch)
1978                                  {                                  {
1979                                          int xx = (x1 < x2 ? x1 : x2) - 5;                                          int xx = (x1 < x2 ? x1 : x2) - 5;
1980                                          gdImageLine(im, xx, y1, x1, y1, conf.merge_color.id);                                          gdImageLine(im, xx, y1, x1, y1, colorid);
1981                                          gdImageLine(im, xx, y2, x2, y2, conf.merge_color.id);                                          gdImageLine(im, xx, y2, x2, y2, colorid);
1982                                          gdImageLine(im, xx, y1, xx, y2, conf.merge_color.id);                                          gdImageLine(im, xx, y1, xx, y2, colorid);
1983                                  }                                  }
1984                                  else                                  else
1985                                  {                                  {
1986                                          if(x1 > x2)                                          if(x1 > x2)
1987                                          {                                          {
1988                                                  gdImageLine(im, x1, y1, x1-3, y1, conf.merge_color.id);                                                  gdImageLine(im, x1, y1, x1-3, y1, colorid);
1989                                                  gdImageLine(im, x2, y2, x2+3, y2, conf.merge_color.id);                                                  gdImageLine(im, x2, y2, x2+3, y2, colorid);
1990                                                  gdImageLine(im, x1-3, y1, x2+3, y2, conf.merge_color.id);                                                  gdImageLine(im, x1-3, y1, x2+3, y2, colorid);
1991                                          }                                          }
1992                                          else                                          else
1993                                          {                                          {
1994                                                  gdImageLine(im, x1, y1, x1+3, y1, conf.merge_color.id);                                                  gdImageLine(im, x1, y1, x1+3, y1, colorid);
1995                                                  gdImageLine(im, x2, y2, x2-3, y2, conf.merge_color.id);                                                  gdImageLine(im, x2, y2, x2-3, y2, colorid);
1996                                                  gdImageLine(im, x1+3, y1, x2-3, y2, conf.merge_color.id);                                                  gdImageLine(im, x1+3, y1, x2-3, y2, colorid);
1997                                          }                                          }
1998                                  }                                  }
1999                          }                          }
# Line 2029  Line 2079 
2079          alloc_color(im, &conf.branch_bgcolor);          alloc_color(im, &conf.branch_bgcolor);
2080          alloc_color(im, &conf.title_color);          alloc_color(im, &conf.title_color);
2081          alloc_color(im, &conf.merge_color);          alloc_color(im, &conf.merge_color);
2082            alloc_color(im, &conf.merge_cvsnt_color);
2083          alloc_color(im, &conf.msg_color);          alloc_color(im, &conf.msg_color);
2084          alloc_color(im, &black_color);          alloc_color(im, &black_color);
2085          alloc_color(im, &white_color);          alloc_color(im, &white_color);
# Line 3154  Line 3205 
3205    
3206          for(i = 0; i < rcs->nmerges; i++)          for(i = 0; i < rcs->nmerges; i++)
3207          {          {
3208                  revision_t *fr = rcs->merges[i].from->logrev;                  revision_t *fr;
3209                  revision_t *tr = rcs->merges[i].to->logrev;                  revision_t *tr;
3210                  int x1, x2, y1, y2;                  int x1, x2, y1, y2;
3211                    switch(rcs->merges[i].type)
3212                    {
3213                    case TR_TAG:
3214                            fr = rcs->merges[i].from.tag->logrev;
3215                            tr = rcs->merges[i].to.tag->logrev;
3216                            break;
3217                    case TR_REVISION:
3218                            fr = rcs->merges[i].from.rev;
3219                            tr = rcs->merges[i].to.rev;
3220                            break;
3221                    default:
3222                            continue;
3223                    }
3224                  if(!fr || !tr || fr == tr)                  if(!fr || !tr || fr == tr)
3225                          continue;       /* This can happen with detached tags and self-references */                          continue;       /* This can happen with detached tags and self-references */
3226                  if(conf.left_right)                  if(conf.left_right)
# Line 3202  Line 3266 
3266                                          x2 = tr->cx + tr->w/2;                                          x2 = tr->cx + tr->w/2;
3267                                  }                                  }
3268                          }                          }
3269                          y1 = fr->y + rcs->merges[i].from->yofs;                          if(rcs->merges[i].type == TR_TAG)
3270                          y2 = tr->y + rcs->merges[i].to->yofs;                          {
3271                                    y1 = fr->y + rcs->merges[i].from.tag->yofs;
3272                                    y2 = tr->y + rcs->merges[i].to.tag->yofs;
3273                            }
3274                            else
3275                            {
3276                                    y1 = fr->y + fr->h/2;
3277                                    y2 = tr->y + tr->h/2;
3278                            }
3279                  }                  }
3280    
3281                  if(conf.left_right)                  if(conf.left_right)
# Line 3699  Line 3771 
3771          conf.rev_color          = black_color;          conf.rev_color          = black_color;
3772          conf.rev_bgcolor        = white_color;          conf.rev_bgcolor        = white_color;
3773          conf.merge_color        = black_color;          conf.merge_color        = black_color;
3774            conf.merge_cvsnt_color  = black_color;
3775          conf.tag_color          = black_color;          conf.tag_color          = black_color;
3776          conf.title_color        = black_color;          conf.title_color        = black_color;
3777          conf.rev_text_color     = black_color;          conf.rev_text_color     = black_color;
# Line 3764  Line 3837 
3837    
3838          assign_tags(rcs);          assign_tags(rcs);
3839          find_merges(rcs);          find_merges(rcs);
3840            find_merges_cvsnt(rcs);
3841    
3842          if(outfile)          if(outfile)
3843          {          {

Legend:
Removed from v.1.48  
changed lines
  Added in v.1.49

  ViewVC Help
Powered by ViewVC 1.1.0 with CvsGraph 1.7.0