-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcommand.cpp
More file actions
115 lines (102 loc) · 3.39 KB
/
command.cpp
File metadata and controls
115 lines (102 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include "command.h"
void Command::readCmdTxt(QString CmdTxt)
{
// vector<vector<char *>> datacmd;
if(iput==0){
qDebug()<<"You must define the input path";
return;
}
QFile qf(CmdTxt);
qDebug()<<CmdTxt;
if (! qf.open(QIODevice::ReadOnly | QIODevice::Text))
{
v3d_msg(QString("open file [%1] failed!").arg(CmdTxt));
//return datacmd;
return;
}
while (! qf.atEnd())
{
char _buf[1000], *buf;
qf.readLine(_buf, sizeof(_buf));
for (buf=_buf; (*buf && *buf==' '); buf++); //skip space
if (buf[0]=='#')
{
continue;
}
QStringList qsl = QString(buf).trimmed().split(" ");
if (qsl.size()==0) continue;
// for(auto &q:qsl){
// qDebug()<<q;
// }
this->convertcmd(qsl);
//qDebug()<<"------------";
}
}
void Command::convertcmd(QStringList txtline)
{
QString input=QString(iput);
vector<vector<char *>> dataflowarg;
dataflowarg.clear();
vector<char *> funcparas;
funcparas.clear();
//QString output=QString(otput);
char *ipimg=(input+"\\"+txtline[1]).toLatin1().data();
QString suffix=txtline[1].split(".")[txtline[1].split(".").size()-1];
Image4DSimple *nimg=new Image4DSimple;
if(suffix=="tiff"||suffix=="v3draw"||suffix=="v3dpbd")
nimg=mcallback->loadImage(ipimg);
NeuronTree *nt=new NeuronTree;
if(suffix=="swc"||suffix=="eswc")
*nt=readSWC_file(input+"\\"+txtline[1]);
DataFlow *ndtf=new DataFlow;
ndtf->push_img(nimg);
ndtf->push_swc(nt);
ndtf->dataname.append(txtline[1]);
ndtf->otdataname.append(txtline[2]);
dtf.emplace_back(ndtf);
otresult.emplace_back(txtline[3]);
for(int i=4;i<txtline.size();i++){
qDebug()<<txtline[i];
char *para=new char(txtline[i].size()+1);
for(int j=0;j<=txtline[i].size();j++){
para[j]=txtline[i].toLatin1().data()[j];
}
para[txtline[i].size()]='\0';
//qDebug()<<"csz debug "<<para;
if(txtline[i][0]>='a'&&txtline[i][0]<='z'){ //DataFlowArg[0] is empty.
dataflowarg.emplace_back(funcparas);
funcparas.clear();
funcparas.emplace_back(para);
if(i==txtline.size()-1)
dataflowarg.emplace_back(funcparas);
continue;
}
funcparas.emplace_back(para);
if(i==txtline.size()-1)
dataflowarg.emplace_back(funcparas);
}
DataFlowCmd.emplace_back(dataflowarg);
}
void Command::acceptcmd(const V3DPluginArgList &input, V3DPluginArgList &output)
{
iput=(*(vector<char*> *)(input.at(0).p)).at(0);
otput=(*(vector<char*> *)(output.at(0).p)).at(0);
// paralist=(*(vector<char*> *)(input.at(1).p));
// qDebug()<<inputlist[0];
// qDebug()<<outputlist[0];
// otpath=QString(outputlist[0]);
// vector<char *> funcparas;
// for(int i=2;i<paralist.size();i++){
// if(paralist[i][0]>='a'&¶list[i][0]<='z'){ //DataFlowArg[0] is empty.
// DataFlowCmd.push_back(funcparas);
// funcparas.clear();
// funcparas.push_back(paralist[i]);
// if(i==paralist.size()-1)
// DataFlowCmd.push_back(funcparas);
// continue;
// }
// funcparas.push_back(paralist[i]);
// if(i==paralist.size()-1)
// DataFlowCmd.push_back(funcparas);
// }
}