gctl_toolkits/archive/xyzdiff/main.cpp
2024-09-10 20:25:18 +08:00

97 lines
2.3 KiB
C++

#include "datafunc.h"
void dis_play()
{
cout<<"xyzdiff 0.2 - simple functions calculating the difference or sum of two xyz data"<<endl<<endl
<<"usage: xyzdiff <xyzfile1> <xyzfile2> -a|-m [-r<xmin>/<xmax>/<ymin>/<ymax>] [-i<dx>/<dy>] -o<outfile>"<<endl
<<"-a|-m\tadd data and minus data from xyzfile1 and xyzfile2"<<endl
<<"-r\tspecify the range of interested"<<endl
<<"-i\tspecify intervals of interested"<<endl
<<"-o\tspecify outfile name"<<endl<<endl
<<"examples: xyzdiff example.xyz example2.xyz -m -r0/100/0/100 -i1/1 -oexample-out.xyz"<<endl;
}
int main(int argc, char* argv[])
{
char cmd_type[1024] = {0};
char filename[1024] = {0};
char filename2[1024] = {0};
char outname[1024] = {0};
int caltype = -1;
double range[4] = {MAX,MAX,MAX,MAX};
double interval[2] = {MAX,MAX};
if (argc<=3)
{
dis_play();
}
else
{
if(-1==sscanf(argv[1],"%s",filename))
{
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[1]<<endl;
return 0;
}
if(-1==sscanf(argv[2],"%s",filename2))
{
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[2]<<endl;
return 0;
}
for (int i = 3; i < argc; i++)
{
sscanf(argv[i],"%2s",cmd_type);
if (!strcmp(cmd_type,ADD)) caltype = 2;
else if (!strcmp(cmd_type,MINUS)) caltype = 1;
else if (!strcmp(cmd_type,RANGE))
{
if (4!=sscanf(argv[i],"%*2s%lf/%lf/%lf/%lf",&range[0],&range[1],&range[2],&range[3]))
{
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
return 0;
}
else
{
if (range[0]>=range[1]
||range[2]>=range[3])
{
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
return 0;
}
}
}
else if (!strcmp(cmd_type,INTERVAL))
{
if (2!=sscanf(argv[i],"%*2s%lf/%lf",&interval[0],&interval[1]))
{
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
return 0;
}
else
{
if (interval[0]<=0.0||interval[1]<=0.0)
{
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
return 0;
}
}
}
else if (!strcmp(cmd_type,OUTFILE))
{
if (-1==sscanf(argv[i],"%*2s%s",outname))
{
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
return 0;
}
}
}
if (range[0] == MAX)
xyz_add_minus(filename,filename2,outname,caltype);
else
xyz_add_minus(filename,filename2,outname,range,interval,caltype);
}
return 0;
}