/[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.25, Thu Jul 18 15:26:34 2002 UTC revision 1.26, Thu Jul 18 23:08:50 2002 UTC
# Line 55  Line 55 
55    
56  /*#define DEBUG         1*/  /*#define DEBUG         1*/
57  /*#define NOGDFILL      1*/  /*#define NOGDFILL      1*/
58    /*#define DEBUG_IMAGEMAP        1*/
59    
60  #define LOOPSAFEGUARD   100     /* Max itterations in possible infinite loops */  #define LOOPSAFEGUARD   100     /* Max itterations in possible infinite loops */
61    
# Line 1175  Line 1176 
1176          }          }
1177  }  }
1178    
1179  static void draw_branch_box(gdImagePtr im, branch_t *b, int ypos)  static void draw_branch_box(gdImagePtr im, branch_t *b, int xp, int yp)
1180  {  {
1181          int lx;          int lx;
1182          int rx;          int rx;
# Line 1195  Line 1196 
1196                  rx = lx + b->w;                  rx = lx + b->w;
1197                  x2 = b->cx;                  x2 = b->cx;
1198          }          }
1199          draw_rbox(im, lx, ypos, rx, ypos+b->h, 5, &conf.branch_color, &conf.branch_bgcolor);          draw_rbox(im, lx+xp, yp, rx+xp, yp+b->h, 5, &conf.branch_color, &conf.branch_bgcolor);
1200          yy = conf.branch_tspace;          yy = conf.branch_tspace;
1201          draw_string(im, b->branch->branch, &conf.branch_font, x2, ypos+yy, ALIGN_HC, &conf.branch_color);          draw_string(im, b->branch->branch, &conf.branch_font, x2+xp, yp+yy, ALIGN_HC, &conf.branch_color);
1202          yy += get_sheight(b->branch->branch, &conf.branch_font);          yy += get_sheight(b->branch->branch, &conf.branch_font);
1203          for(i = 0; i < b->ntags; i++)          for(i = 0; i < b->ntags; i++)
1204          {          {
1205                  draw_string(im, b->tags[i]->tag, &conf.branch_tag_font, x2, ypos+yy, ALIGN_HC, &conf.branch_tag_color);                  draw_string(im, b->tags[i]->tag, &conf.branch_tag_font, x2+xp, yp+yy, ALIGN_HC, &conf.branch_tag_color);
1206                  yy += get_sheight(b->tags[i]->tag, &conf.branch_font);                  yy += get_sheight(b->tags[i]->tag, &conf.branch_font);
1207          }          }
1208  }  }
# Line 1219  Line 1220 
1220          line[1] = gdTransparent;          line[1] = gdTransparent;
1221          line[3] = conf.rev_color.id;          line[3] = conf.rev_color.id;
1222    
1223          draw_branch_box(im, b, conf.left_right ? b->y - b->h/2 : b->y);          draw_branch_box(im, b, 0, conf.left_right ? b->y - b->h/2 : b->y);
1224    
1225          if(conf.left_right)          if(conf.left_right)
1226          {          {
# Line 1243  Line 1244 
1244                          if(conf.branch_dupbox)                          if(conf.branch_dupbox)
1245                          {                          {
1246                                  i = b->cx - b->tw + b->w;                                  i = b->cx - b->tw + b->w;
1247                                  gdImageLine(im, xx, b->y, i, b->y, conf.rev_color.id);                                  gdImageLine(im, xx, b->y, i+b->w, b->y, conf.rev_color.id);
1248                                  for(sign = l = 1; l < conf.thick_lines; l++)                                  for(sign = l = 1; l < conf.thick_lines; l++)
1249                                  {                                  {
1250                                          int pp = (l+1)/2*sign;                                          int pp = (l+1)/2*sign;
1251                                          gdImageLine(im, xx, b->y+pp, i, b->y+pp, conf.rev_color.id);                                          gdImageLine(im, xx, b->y+pp, i+b->w, b->y+pp, conf.rev_color.id);
1252                                          sign *= -1;                                          sign *= -1;
1253                                  }                                  }
1254                                  draw_branch_box(im, b, i);                                  draw_branch_box(im, b, i - b->cx, b->y - b->h/2);
1255                          }                          }
1256                  }                  }
1257                  else                  else
# Line 1280  Line 1281 
1281                                          gdImageLine(im, xx, b->y+pp, i, b->y+pp, conf.rev_color.id);                                          gdImageLine(im, xx, b->y+pp, i, b->y+pp, conf.rev_color.id);
1282                                          sign *= -1;                                          sign *= -1;
1283                                  }                                  }
1284                                  draw_branch_box(im, b, i);                                  draw_branch_box(im, b, i - b->cx, b->y - b->h/2);
1285                          }                          }
1286                  }                  }
1287          }          }
# Line 1313  Line 1314 
1314                                          gdImageLine(im, b->cx+pp, yy, b->cx+pp, i, conf.rev_color.id);                                          gdImageLine(im, b->cx+pp, yy, b->cx+pp, i, conf.rev_color.id);
1315                                          sign *= -1;                                          sign *= -1;
1316                                  }                                  }
1317                                  draw_branch_box(im, b, i);                                  draw_branch_box(im, b, 0, i);
1318                          }                          }
1319                  }                  }
1320                  else                  else
# Line 1343  Line 1344 
1344                                          gdImageLine(im, b->cx+pp, yy, b->cx+pp, i, conf.rev_color.id);                                          gdImageLine(im, b->cx+pp, yy, b->cx+pp, i, conf.rev_color.id);
1345                                          sign *= -1;                                          sign *= -1;
1346                                  }                                  }
1347                                  draw_branch_box(im, b, i);                                  draw_branch_box(im, b, 0, i);
1348                          }                          }
1349                  }                  }
1350          }          }
# Line 1362  Line 1363 
1363          if(conf.left_right)          if(conf.left_right)
1364          {          {
1365                  x2 = r->cx + r->w/2;                  x2 = r->cx + r->w/2;
1366                  y2 = r->y + r->h/2 + 2;                  y2 = r->y + r->h/2 + 3;
1367                  x1 = b->cx;                  x1 = b->cx;
1368                  y1 = b->y;                  y1 = b->y;
1369                  if(conf.upside_down)                  if(conf.upside_down)
# Line 1382  Line 1383 
1383          for(sign = l = 1; l < conf.thick_lines; l++)          for(sign = l = 1; l < conf.thick_lines; l++)
1384          {          {
1385                  int pp = (l+1)/2*sign;                  int pp = (l+1)/2*sign;
1386                  gdImageLine(im, x1, y1+pp, x2-pp, y1+pp, conf.branch_color.id);                  gdImageLine(im, x1, y1+pp, x2, y1+pp, conf.branch_color.id);
1387                  gdImageLine(im, x2+pp, y1-pp, x2+pp, y2, conf.branch_color.id);                  gdImageLine(im, x2+pp, y1, x2+pp, y2, conf.branch_color.id);
1388                  sign *= -1;                  sign *= -1;
1389          }          }
1390  }  }
# Line 2220  Line 2221 
2221                                  for(j = 0; j < b->nrevs; j++)                                  for(j = 0; j < b->nrevs; j++)
2222                                  {                                  {
2223                                          revision_t *r = b->revs[j];                                          revision_t *r = b->revs[j];
2224                                          r->cx = x - r->cx - r->w + conf.margin_top;                                          r->cx = x - r->cx - r->w + conf.margin_left;
2225                                  }                                  }
2226                                  b->cx = x - b->cx - b->w + conf.margin_top;                                  b->cx = x - b->cx - b->w + conf.margin_left;
2227                          }                          }
2228                  }                  }
2229                  else                  else
# Line 2247  Line 2248 
2248   * Imagemap functions   * Imagemap functions
2249   **************************************************************************   **************************************************************************
2250   */   */
2251  void make_imagemap(rcsfile_t *rcs, FILE *fp)  void make_imagemap(rcsfile_t *rcs, FILE *fp, gdImagePtr im)
2252  {  {
2253          int i, j;          int i, j;
2254          fprintf(fp, "<map name=\"%s\">\n", conf.map_name);          fprintf(fp, "<map name=\"%s\">\n", conf.map_name);
# Line 2257  Line 2258 
2258                  tag_t *tag = b->ntags ? b->tags[0] : NULL;                  tag_t *tag = b->ntags ? b->tags[0] : NULL;
2259                  char *bhref = expand_string(conf.map_branch_href, rcs, NULL, b->branch, NULL, tag);                  char *bhref = expand_string(conf.map_branch_href, rcs, NULL, b->branch, NULL, tag);
2260                  char *balt = expand_string(conf.map_branch_alt, rcs, NULL, b->branch, NULL, tag);                  char *balt = expand_string(conf.map_branch_alt, rcs, NULL, b->branch, NULL, tag);
2261                    int x1;
2262                    int x2;
2263                    int y1;
2264                    int y2;
2265    
2266                    if(conf.left_right)
2267                    {
2268                            x1 = b->cx;
2269                            y1 = b->y - b->h/2;
2270                            x2 = b->cx + b->w;
2271                            y2 = b->y + b->h/2;
2272                    }
2273                    else
2274                    {
2275                            x1 = b->cx - b->w/2;
2276                            y1 = b->y;
2277                            x2 = b->cx + b->w/2;
2278                            y2 = b->y + b->h;
2279                    }
2280                  fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",                  fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",
2281                                  bhref,                                  bhref, x1, y1, x2, y2, balt);
2282                                  b->cx - b->w/2, b->y, b->cx + b->w/2, b->y + b->h,                  if(im)
2283                                  balt);                  {
2284                            gdImageFilledRectangle(im, x1-2, y1-2, x1+2, y1+2, conf.title_color.id);
2285                            gdImageFilledRectangle(im, x2-2, y2-2, x2+2, y2+2, conf.tag_color.id);
2286                            gdImageLine(im, x1, y1, x2, y2, conf.title_color.id);
2287                    }
2288                  for(j = 0; j < b->nrevs; j++)                  for(j = 0; j < b->nrevs; j++)
2289                  {                  {
2290                          revision_t *r = b->revs[j];                          revision_t *r = b->revs[j];
2291                          revision_t* r1;                          revision_t* r1;
2292                          int xoff;                          int xoff = 1;
2293                          int x1;                          int yoff = 1;
                         int x2;  
                         int y1;  
                         int y2;  
2294                          char *href;                          char *href;
2295                          char *alt;                          char *alt;
2296    
2297                          tag = r->ntags ? r->tags[0] : NULL;                          tag = r->ntags ? r->tags[0] : NULL;
2298                          href = expand_string(conf.map_rev_href, rcs, r, r->rev, NULL, tag);                          href = expand_string(conf.map_rev_href, rcs, r, r->rev, NULL, tag);
2299                          alt = expand_string(conf.map_rev_alt, rcs, r, r->rev, NULL, tag);                          alt = expand_string(conf.map_rev_alt, rcs, r, r->rev, NULL, tag);
2300                            if(conf.left_right)
2301                            {
2302                                    x1 = r->cx;
2303                                    y1 = r->y - r->h/2;
2304                                    x2 = r->cx + r->w;
2305                                    y2 = r->y + r->h/2;
2306                            }
2307                            else
2308                            {
2309                                    x1 = r->cx - r->w/2;
2310                                    y1 = r->y;
2311                                    x2 = r->cx + r->w/2;
2312                                    y2 = r->y + r->h;
2313                            }
2314                          fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",                          fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",
2315                                  href,                                  href, x1, y1, x2, y2, alt);
2316                                  r->cx - r->w/2, r->y, r->cx + r->w/2, r->y + r->h,                          if(im)
2317                                  alt);                          {
2318                                    gdImageFilledRectangle(im, x1-2, y1-2, x1+2, y1+2, conf.title_color.id);
2319                                    gdImageFilledRectangle(im, x2-2, y2-2, x2+2, y2+2, conf.tag_color.id);
2320                                    gdImageLine(im, x1, y1, x2, y2, conf.title_color.id);
2321                            }
2322                          xfree(href);                          xfree(href);
2323                          xfree(alt);                          xfree(alt);
2324                          if(j > 0 || b->branchpoint)                          if(j > 0 || b->branchpoint)
# Line 2287  Line 2326 
2326                                  if(j > 0)                                  if(j > 0)
2327                                  {                                  {
2328                                          r1 = b->revs[j-1];                                          r1 = b->revs[j-1];
2329                                          xoff = MIN(r->w, r1->w)/4;                                          if(conf.left_right)
2330                                          y1 = conf.upside_down ? r1->y : r1->y + r1->h;                                          {
2331                                                    yoff = MIN(r->h, r1->h)/4;
2332                                                    x1 = conf.upside_down ? r1->cx : r1->cx + r1->w;
2333                                            }
2334                                            else
2335                                            {
2336                                                    xoff = MIN(r->w, r1->w)/4;
2337                                                    y1 = conf.upside_down ? r1->y : r1->y + r1->h;
2338                                            }
2339                                  }                                  }
2340                                  else                                  else
2341                                  {                                  {
2342                                          r1 = b->branchpoint;                                          r1 = b->branchpoint;
2343                                          xoff = MIN(r->w, b->w)/4;                                          if(conf.left_right)
2344                                          y1 = conf.upside_down ? b->y : b->y + b->h;                                          {
2345                                                    yoff = MIN(r->h, b->h)/4;
2346                                                    x1 = conf.upside_down ? b->cx : b->cx + b->w;
2347                                            }
2348                                            else
2349                                            {
2350                                                    xoff = MIN(r->w, b->w)/4;
2351                                                    y1 = conf.upside_down ? b->y : b->y + b->h;
2352                                            }
2353                                    }
2354                                    if(conf.left_right)
2355                                    {
2356                                            y1 = r->y - yoff;
2357                                            y2 = r->y + yoff;
2358                                            x2 = conf.upside_down ? r->cx + r->w : r->cx;
2359                                            yoff = 0;
2360                                    }
2361                                    else
2362                                    {
2363                                            x1 = r->cx - xoff;
2364                                            x2 = r->cx + xoff;
2365                                            y2 = conf.upside_down ? r->y + r->h : r->y;
2366                                            xoff = 0;
2367                                    }
2368                                    if(x1 > x2)
2369                                    {
2370                                            int tt = x1;
2371                                            x1 = x2;
2372                                            x2 = tt;
2373                                    }
2374                                    if(y1 > y2)
2375                                    {
2376                                            int tt = y1;
2377                                            y1 = y2;
2378                                            y2 = tt;
2379                                  }                                  }
                                 x1 = r->cx - xoff;  
                                 x2 = r->cx + xoff;  
                                 y2 = conf.upside_down ? r->y + r->h : r->y;  
2380                                  href = expand_string(conf.map_diff_href, rcs, r, r->rev, r1->rev, tag);                                  href = expand_string(conf.map_diff_href, rcs, r, r->rev, r1->rev, tag);
2381                                  alt = expand_string(conf.map_diff_alt, rcs, r, r->rev, r1->rev, tag);                                  alt = expand_string(conf.map_diff_alt, rcs, r, r->rev, r1->rev, tag);
2382                                  fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",                                  fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",
2383                                          href,                                          href,
2384                                          x1, (conf.upside_down ? y2 : y1) + 1, x2, (conf.upside_down ? y1 : y2) - 1,                                          x1+xoff, y1+yoff, x2-xoff, y2-yoff,
2385                                          alt);                                          alt);
2386                                    if(im)
2387                                    {
2388                                            gdImageFilledRectangle(im, x1-2, y1-2, x1+2, y1+2, conf.title_color.id);
2389                                            gdImageFilledRectangle(im, x2-2, y2-2, x2+2, y2+2, conf.tag_color.id);
2390                                            gdImageLine(im, x1, y1, x2, y2, conf.title_color.id);
2391                                    }
2392                                  xfree(href);                                  xfree(href);
2393                                  xfree(alt);                                  xfree(alt);
2394                          }                          }
2395                  }                  }
2396                  if(conf.branch_dupbox)                  if(conf.branch_dupbox)
2397                  {                  {
2398                          int y;                          if(conf.left_right)
2399                          if(conf.upside_down)                          {
2400                                  y = b->y + b->h - b->th;                                  x1 = conf.upside_down ? b->cx + b->w - b->tw : b->cx - b->w + b->tw;
2401                                    y1 = b->y - b->h/2;
2402                                    x2 = x1 + b->w;
2403                                    y2 = b->y + b->h/2;
2404                            }
2405                          else                          else
2406                                  y = b->y - b->h + b->th;                          {
2407                                    x1 = b->cx - b->w/2;
2408                                    y1 = conf.upside_down ? b->y + b->h - b->th : b->y - b->h + b->th;
2409                                    x2 = b->cx + b->w/2;
2410                                    y2 = y1 + b->h;
2411                            }
2412                          fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",                          fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",
2413                                          bhref,                                          bhref, x1, y1, x2, y2, balt);
2414                                          b->cx - b->w/2, y, b->cx + b->w/2, y + b->h,                          if(im)
2415                                          balt);                          {
2416                                    gdImageFilledRectangle(im, x1-2, y1-2, x1+2, y1+2, conf.title_color.id);
2417                                    gdImageFilledRectangle(im, x2-2, y2-2, x2+2, y2+2, conf.tag_color.id);
2418                                    gdImageLine(im, x1, y1, x2, y2, conf.title_color.id);
2419                            }
2420                  }                  }
2421                  xfree(bhref);                  xfree(bhref);
2422                  xfree(balt);                  xfree(balt);
# Line 2592  Line 2689 
2689          {          {
2690                  /* Create an image */                  /* Create an image */
2691                  im = make_image(rcs);                  im = make_image(rcs);
2692    #ifdef DEBUG_IMAGEMAP
2693                    {
2694                            FILE *nulfile = fopen("/dev/null", "w");
2695                            make_imagemap(rcs, nulfile, im);
2696                            fclose(nulfile);
2697                    }
2698    #endif
2699                  switch(conf.image_type)                  switch(conf.image_type)
2700                  {                  {
2701  #ifdef HAVE_IMAGE_GIF  #ifdef HAVE_IMAGE_GIF
# Line 2624  Line 2727 
2727          else          else
2728          {          {
2729                  /* Create an imagemap */                  /* Create an imagemap */
2730                  make_imagemap(rcs, fp);                  make_imagemap(rcs, fp, NULL);
2731          }          }
2732    
2733          /* Also create imagemap to file if requested */          /* Also create imagemap to file if requested */
# Line 2636  Line 2739 
2739                          perror(imgmapfile);                          perror(imgmapfile);
2740                          return 1;                          return 1;
2741                  }                  }
2742                  make_imagemap(rcs, ifp);                  make_imagemap(rcs, ifp, NULL);
2743                  fclose(ifp);                  fclose(ifp);
2744          }          }
2745    

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.26

  ViewVC Help
Powered by ViewVC 1.1.0 with CvsGraph 1.7.0