9#include "tpcclibConfig.h"
21static char *info[] = {
22 "Transform TAC x1 and x2 (frame start and end times) to x at each x1 and x2",
25 "Usage: @P [Options] tacfile outputfile",
30 "See also: tac4frpl, tacframe, simframe, tac2svg, tacformat, tacsetx",
32 "Keywords: TAC, AUC, simulation, time",
51int main(
int argc,
char **argv)
53 int ai, help=0, version=0, verbose=1;
54 char tacfile1[FILENAME_MAX], tacfile2[FILENAME_MAX];
60 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
61 tacfile1[0]=tacfile2[0]=(char)0;
63 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
66 fprintf(stderr,
"Error: invalid option '%s'\n", argv[ai]);
75 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
80 if(ai<argc) {
strlcpy(tacfile1, argv[ai++], FILENAME_MAX);}
81 if(ai<argc) {
strlcpy(tacfile2, argv[ai++], FILENAME_MAX);}
82 if(ai<argc) {fprintf(stderr,
"Error: invalid argument '%s'.\n", argv[ai]);
return(1);}
85 if(!tacfile2[0]) {
tpcPrintUsage(argv[0], info, stdout);
return(1);}
89 for(ai=0; ai<argc; ai++) printf(
"%s ", argv[ai]);
91 printf(
"tacfile1 := %s\n", tacfile1);
92 printf(
"tacfile2 := %s\n", tacfile2);
100 if(verbose>1) printf(
"reading %s\n", tacfile1);
102 ret=
tacRead(&tac1, tacfile1, &status);
105 if(verbose>1) printf(
"ret := %d\n", ret);
110 printf(
"tacNr := %d\n", tac1.
tacNr);
111 printf(
"sampleNr := %d\n", tac1.
sampleNr);
114 printf(
"isframe := %d\n", tac1.
isframe);
119 fprintf(stderr,
"Error: invalid data.\n");
124 fprintf(stderr,
"Error: file does not contain frame start and end times.\n");
129 if(verbose>1) printf(
"ret := %d\n", ret);
135 fprintf(stderr,
"Error: %s\n",
errorMsg(ret));
154 if(verbose>2) printf(
"writing %s\n", tacfile2);
155 FILE *fp; fp=fopen(tacfile2,
"w");
157 fprintf(stderr,
"Error: cannot open file for writing (%s)\n", tacfile2);
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
int tpcHtmlUsage(const char *program, char *text[], const char *path)
void tpcPrintBuild(const char *program, FILE *fp)
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
void statusInit(TPCSTATUS *s)
char * errorMsg(tpcerror e)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
int verbose
Verbose level, used by statusPrint() etc.
tpcerror error
Error code.
int tacRead(TAC *d, const char *fname, TPCSTATUS *status)
char * tacFormattxt(tacformat c)
int tacWrite(TAC *tac, FILE *fp, tacformat format, int extra, TPCSTATUS *status)
int tacSortByTime(TAC *d, TPCSTATUS *status)
int tacFramesToSteps(TAC *inp, TAC *out, TPCSTATUS *status)
Transform TAC with frames into TAC with frames represented with stepwise changing dot-to-dot data.
int tacSetXContiguous(TAC *d)
Set PET TAC frame times contiguous, without even tiny overlap or gaps in between.
Header file for library libtpcextensions.
char * unitName(int unit_code)
Header file for library libtpctac.
@ TAC_FORMAT_UNKNOWN
Unknown format.