/[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.1, Tue Feb 20 12:07:03 2001 UTC revision 1.5, Sat Feb 24 00:35:13 2001 UTC
# Line 72  Line 72 
72  #include <gd.h>  #include <gd.h>
73  #include <gdfontt.h>  #include <gdfontt.h>
74    
75    #include "config.h"
76  #include "cvsgraph.h"  #include "cvsgraph.h"
77  #include "utils.h"  #include "utils.h"
78  #include "readconf.h"  #include "readconf.h"
79    
80    #if !defined(HAVE_IMAGE_GIF) && !defined(HAVE_IMAGE_PNG) && !defined(HAVE_IMAGE_JPEG)
81    # error No image output format available. Check libgd
82    #endif
83    
84    
85  /*#define DEBUG         1*/  /*#define DEBUG         1*/
86    
87  #define RLOGCMD         "/usr/bin/rlog"  #define RLOGCMD         "/usr/bin/rlog"
# Line 595  Line 601 
601   * Sort and find helpers   * Sort and find helpers
602   **************************************************************************   **************************************************************************
603   */   */
604    int count_dots(const char *s)
605    {
606            int i;
607            for(i = 0; *s; s++)
608            {
609                    if(*s == '.')
610                            i++;
611            }
612            return i;
613    }
614    
615    int compare_revid(const revid_t *r1, const revid_t *r2)
616    {
617            int d1, d2;
618            char *v1, *v2;
619            char *s1, *s2;
620            int retval = 0;
621            assert(r1 != NULL);
622            assert(r1->rev != NULL);
623            assert(r2 != NULL);
624            assert(r2->rev != NULL);
625    
626            d1 = count_dots(r1->rev);
627            d2 = count_dots(r2->rev);
628            if(d1 != d2)
629            {
630                    return d1 - d2;
631            }
632    
633            s1 = v1 = xstrdup(r1->rev);
634            s2 = v2 = xstrdup(r2->rev);
635            while(1)
636            {
637                    char *vc1 = strchr(s1, '.');
638                    char *vc2 = strchr(s2, '.');
639                    if(vc1 && vc2)
640                            *vc1 = *vc2 = '\0';
641                    if(*s1 && *s2)
642                    {
643                            d1 = atoi(s1);
644                            d2 = atoi(s2);
645                            if(d1 != d2)
646                            {
647                                    retval = d1 - d2;
648                                    break;
649                            }
650                    }
651                    if(!vc1 || !vc2)
652                            break;
653                    s1 = vc1 + 1;
654                    s2 = vc2 + 1;
655            }
656            xfree(v1);
657            xfree(v2);
658            return retval;
659    }
660    
661  int tag_sort(const void *t1, const void *t2)  int tag_sort(const void *t1, const void *t2)
662  {  {
663  #define TAGPTR(t)       (*((tag_t **)t))  #define TAGPTR(t)       (*((tag_t **)t))
# Line 605  Line 668 
668  int rev_sort(const void *v1, const void *v2)  int rev_sort(const void *v1, const void *v2)
669  {  {
670  #define REVPTR(t)       (*((revision_t **)t))  #define REVPTR(t)       (*((revision_t **)t))
671          return strcmp(REVPTR(v1)->rev->rev, REVPTR(v2)->rev->rev);          return compare_revid(REVPTR(v1)->rev, REVPTR(v2)->rev);
672  #undef REVPTR  #undef REVPTR
673  }  }
674    
# Line 619  Line 682 
682  int rev_cmp(const void *id, const void *v)  int rev_cmp(const void *id, const void *v)
683  {  {
684  #define REVPTR(t)       (*((revision_t **)t))  #define REVPTR(t)       (*((revision_t **)t))
685          return strcmp(((revid_t *)id)->rev, REVPTR(v)->rev->rev);          return compare_revid((revid_t *)id, REVPTR(v)->rev);
686  #undef REVPTR  #undef REVPTR
687  }  }
688    
# Line 988  Line 1051 
1051                          branch_t *b = r->branches[j];                          branch_t *b = r->branches[j];
1052                          x += w2 + conf.rev_minline + b->tw/2 - b->x;                          x += w2 + conf.rev_minline + b->tw/2 - b->x;
1053                          w2 = b->tw/2;                          w2 = b->tw/2;
1054                          move_branch(b, x, r->y + conf.rev_minline);                          move_branch(b, x, r->y + r->h);
1055                          x = b->x;                          x = b->x;
1056                  }                  }
1057          }          }
# Line 1080  Line 1143 
1143          rcsfilelog_t *rcs;          rcsfilelog_t *rcs;
1144          gdImagePtr im;          gdImagePtr im;
1145    
1146    #ifdef DEBUG
1147            setvbuf(stdout, NULL, 0, _IONBF);
1148            setvbuf(stderr, NULL, 0, _IONBF);
1149    #endif
1150    
1151          while((optc = getopt(argc, argv, "c:hm:o:r:V")) != EOF)          while((optc = getopt(argc, argv, "c:hm:o:r:V")) != EOF)
1152          {          {
1153                  switch(optc)                  switch(optc)
# Line 1229  Line 1297 
1297          }          }
1298          else          else
1299                  fp = stdout;                  fp = stdout;
1300          gdImageGif(im, fp);  
1301            switch(conf.image_type)
1302            {
1303    #ifdef HAVE_IMAGE_GIF
1304            default:
1305            case IMAGE_GIF:
1306                    gdImageGif(im, fp);
1307                    break;
1308    #endif
1309    #ifdef HAVE_IMAGE_PNG
1310    # ifndef HAVE_IMAGE_GIF
1311            default:
1312    # endif
1313            case IMAGE_PNG:
1314                    gdImagePng(im, fp);
1315                    break;
1316    #endif
1317    #ifdef HAVE_IMAGE_JPEG
1318    # if !defined(HAVE_IMAGE_GIF) && !defined(HAVE_IMAGE_PNG)
1319            default:
1320    # endif
1321            case IMAGE_JPEG:
1322                    gdImageJpeg(im, fp, conf.image_quality);
1323                    break;
1324    #endif
1325            }
1326    
1327          if(outfile)          if(outfile)
1328                  fclose(fp);                  fclose(fp);
1329          gdImageDestroy(im);          gdImageDestroy(im);

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.0 with CvsGraph 1.7.0