00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "Image/Image.H"
00014 #include "Image/Pixels.H"
00015 #include "Util/Timer.H"
00016 #include "Util/Types.H"
00017 #include "Util/log.H"
00018
00019 void BeoSubMappingQtMainForm::init()
00020 {
00021 prefix = "bottom";
00022 setSave = false;
00023 startTimer(100);
00024 }
00025 void BeoSubMappingQtMainForm::change_bottom()
00026 {
00027 prefix = "bottom";
00028 }
00029 void BeoSubMappingQtMainForm::change_front()
00030 {
00031 prefix = "front";
00032 }
00033 void BeoSubMappingQtMainForm::change_top()
00034 {
00035 prefix = "top";
00036 }
00037 void BeoSubMappingQtMainForm::camera_return()
00038 {
00039
00040
00041
00042
00043 }
00044
00045 void BeoSubMappingQtMainForm::displayFunc()
00046 {
00047 float fx, fy;
00048 if(List->currentItem()!= -1)
00049 poolImage->getRealPosition(List->currentItem(), fx, fy);
00050 else
00051 fx= fy = 0.0F;
00052 if(List->currentItem() == 0)
00053 displayCoord->setText(QString(sformat("x:%f y:%f", 0.0F, 0.0F)));
00054 else
00055 displayCoord->setText(QString(sformat("x:%f y:%f", fx, fy)));
00056 }
00057
00058 void BeoSubMappingQtMainForm::timerEvent( QTimerEvent *e )
00059 {
00060 displayFunc();
00061 }
00062
00063 void BeoSubMappingQtMainForm::displayLog()
00064 {
00065
00066 FILE *f;
00067 char stemp[20];
00068 std::string s;
00069 QString qs;
00070
00071 poolImage->currentItem(List->currentItem());
00072 f = fopen(List->currentText().ascii(), "r");
00073
00074 if (f == NULL)
00075 Log->setText(QString("can't find the file"));
00076 else
00077 {
00078 if (fscanf(f, "%s\t", stemp) != 1) LFATAL("fscanf() failed");
00079
00080 for(int i=0 ; i<8 ; i++)
00081 {
00082 if (fscanf( f, "%s", stemp) != 1) LFATAL("fscanf() failed");
00083 if(i%2 == 0)
00084 qs += QString(sformat( "%s\t", stemp));
00085 else
00086 qs += QString(sformat( "%s\n", stemp));
00087 }
00088
00089 Log->setText(qs);
00090 }
00091 fclose(f);
00092
00093
00094 QString qs2 = List->currentText().replace(".txt", ".png");
00095 img = Raster::ReadRGB( qs2 );
00096 QPixmap qpixm = convertToQPixmap( img );
00097
00098 QWMatrix m;
00099 m.rotate( -90 );
00100 QPixmap rpm =qpixm.xForm( m );
00101 test->setPixmap(rpm);
00102 displayImage->setPixmap(qpixm);
00103 }
00104
00105
00106 void BeoSubMappingQtMainForm::loadList()
00107 {
00108 int i, j;
00109
00110 float tempx, tempy, glx, gly;
00111 char stemp[10][20];
00112 FILE *f;
00113
00114 refreshImages();
00115
00116 poolImage->reset();
00117 createIcon();
00118
00119
00120 for(i=0 ; i<numItem ; i++)
00121 {
00122 f = fopen(List->text(i).ascii(), "r");
00123
00124 for(j=0 ; j<9 ; j++)
00125 if (fscanf( f, "%s\t", stemp[j]) != 1) LFATAL("fscanf() failed");
00126
00127 if (fscanf(f, "%f %f", &tempx, &tempy) != 2) LFATAL("fscanf() failed");
00128 if(tempx != -1000 && tempy!=-1000)
00129 {
00130
00131
00132 poolImage->getGLPosition(tempx, tempy, glx, gly);
00133 poolImage->setCoordByGL(i, glx, gly);
00134 }
00135 fclose(f);
00136 }
00137
00138 }
00139
00140
00141
00142 void BeoSubMappingQtMainForm::refreshImages()
00143 {
00144 DIR *dir;
00145 struct dirent *entry;
00146 int size = 50;
00147 char buffer[size], fileName[20];
00148
00149 numItem = 0;
00150 List->clear();
00151 if (getcwd(buffer, size) == NULL) LFATAL("cannot getcwd");
00152 if((dir = opendir(buffer)) == NULL)
00153 printf("open dir error");
00154 else
00155 {
00156
00157 while((entry = readdir(dir)) !=NULL)
00158 {
00159 if(entry->d_name[0] != '.')
00160 {
00161 strcpy(fileName, entry->d_name);
00162 QString qs(fileName);
00163 if(prefix =="bottom")
00164 {
00165 if(qs.contains("taskGdown.txt") > 0)
00166 {
00167 numItem++;
00168 List->insertItem(qs, 0);
00169 }
00170 if(qs.contains("taskAdown.txt") > 0)
00171 {
00172 numItem++;
00173 List->insertItem(qs,1);
00174 }
00175 if(qs.contains("taskBdown.txt") > 0)
00176 {
00177 numItem++;
00178 List->insertItem(qs,2);
00179 }
00180 if(qs.contains("taskCdown.txt") > 0)
00181 {
00182 numItem++;
00183 List->insertItem(qs, 3);
00184 }
00185
00186 }
00187 else if(prefix == "front")
00188 {
00189 if(qs.contains("taskGfront.txt") > 0)
00190 {
00191 numItem++;
00192 List->insertItem(qs, 0);
00193 }
00194 if(qs.contains("taskAfront.txt") > 0)
00195 {
00196 numItem++;
00197 List->insertItem(qs,1);
00198 }
00199 if(qs.contains("taskBfront.txt") > 0)
00200 {
00201 numItem++;
00202 List->insertItem(qs,2);
00203 }
00204 if(prefix == "top")
00205 {
00206 numItem++;
00207 List->insertItem(qs, 3);
00208 }
00209 }
00210 else if(prefix =="top")
00211 {
00212 if(qs.contains("taskGup.txt") > 0)
00213 {
00214 numItem++;
00215 List->insertItem(qs, 0);
00216 }
00217 if(qs.contains("taskSup.txt") > 0)
00218 {
00219 numItem++;
00220 List->insertItem(qs,1);
00221 }
00222 if(qs.contains("taskCup.txt") > 0)
00223 {
00224 numItem++;
00225 List->insertItem(qs, 2);
00226 }
00227
00228 }
00229
00230 }
00231 }
00232 if((dir = opendir(buffer)) == NULL)
00233 printf("open dir error");
00234 else
00235 {
00236 while((entry = readdir(dir)) !=NULL)
00237 {
00238 if(entry->d_name[0] != '.')
00239 {
00240 strcpy(fileName, entry->d_name);
00241 QString qs(fileName);
00242 if(qs.contains(".txt") > 0 &&qs.contains(prefix) > 0&& qs.contains("task") <= 0)
00243 {
00244 numItem++;
00245 List->insertItem(qs);
00246 }
00247 }
00248 }
00249 }
00250 }
00251 }
00252
00253
00254 void BeoSubMappingQtMainForm::createIcon()
00255 {
00256 if(numItem != 0)
00257 poolImage->createIcon(numItem);
00258 }
00259
00260 void BeoSubMappingQtMainForm::saveiconList()
00261 {
00262
00263 FILE *f;
00264 int i, j;
00265
00266 float tempx, tempy, rx, ry;
00267 char stemp[10][20];
00268
00269
00270 for(i=0 ; i<numItem ; i++)
00271 {
00272 f = fopen(List->text(i).ascii(), "r");
00273
00274 for(j=0 ; j<9 ; j++)
00275 if (fscanf( f, "%s\t", stemp[j]) != 1) LFATAL("fscanf() failed");
00276
00277 if (fscanf(f, "%f %f", &tempx, &tempy) != 2) LFATAL("fscanf() failed");
00278 fclose(f);
00279 f = fopen(List->text(i).ascii(), "w");
00280
00281 for(j = 0 ; j<9 ; j++)
00282 fprintf(f, "%s\t", stemp[j]);
00283
00284 poolImage->getRealPosition(i, rx, ry);
00285 fprintf(f, "%f %f", rx, ry);
00286
00287 fclose(f);
00288 }
00289 }
00290
00291 void BeoSubMappingQtMainForm::LoadAngleScale()
00292 {
00293 FILE *f;
00294
00295 float angle;
00296 float scale;
00297 f = fopen("anglescale.as", "r");
00298 if (fscanf(f,"%f %f", &angle, &scale) != 2) LFATAL("fscanf() failed");
00299 poolImage->angle = angle;
00300 poolImage->scale = scale;
00301
00302 fclose(f);
00303 }
00304
00305 void BeoSubMappingQtMainForm::resetAllHeading()
00306 {
00307
00308 DIR *dir;
00309 FILE *f;
00310 struct dirent *entry;
00311 int i, size = 50;
00312 char buffer[size], fileName[20];
00313 char stemp[12][20];
00314 if (getcwd(buffer, size) == NULL) LFATAL("cannot getcwd");
00315 if((dir = opendir(buffer)) == NULL)
00316 printf("open dir error");
00317 else
00318 {
00319
00320 while((entry = readdir(dir)) !=NULL)
00321 {
00322 if(entry->d_name[0] != '.')
00323 {
00324 strcpy(fileName, entry->d_name);
00325 QString qs(fileName);
00326 if(qs.contains(".txt") > 0)
00327 {
00328 f = fopen(qs.ascii(), "r");
00329 for(i=0 ; i<12 ;i++)
00330 {
00331 if(i<9 || i==10)
00332 if (fscanf( f, "%s\t", stemp[i]) != 1) LFATAL("fscanf() failed");
00333 if(i == 9)
00334 if (fscanf(f, "%s ",stemp[i]) != 1) LFATAL("fscanf() failed");
00335 if(i==11)
00336 if (fscanf(f, "%s", stemp[i]) != 1) LFATAL("fscanf() failed");
00337 }
00338
00339 fclose(f);
00340 f = fopen(qs.ascii(), "w");
00341 for(i= 0 ; i<12 ; i++)
00342 {
00343 if(i!=1 && (i<9 ||i==10))
00344 fprintf(f, "%s\t", stemp[i]);
00345 else if(i==1)
00346 fprintf(f, "%s\t", sformat("%f", -1000.0).c_str());
00347 else if(i==11)
00348 fprintf(f, "%s",stemp[i]);
00349 }
00350 fclose(f);
00351 }
00352 }
00353 }
00354 }
00355 }
00356
00357 void BeoSubMappingQtMainForm::changeTheHeading()
00358 {
00359 FILE *f;
00360 int i;
00361 char stemp[12][20];
00362 f = fopen(List->currentText().ascii(), "r");
00363 for(i=0 ; i<12 ;i++)
00364 {
00365 if(i<9 || i==10)
00366 if (fscanf( f, "%s\t", stemp[i]) != 1) LFATAL("fscanf() failed");
00367 if(i == 9)
00368 if (fscanf(f, "%s ",stemp[i]) != 1) LFATAL("fscanf() failed");
00369 if(i==11)
00370 if (fscanf(f, "%s", stemp[i]) != 1) LFATAL("fscanf() failed");
00371 }
00372
00373 fclose(f);
00374 f = fopen(List->currentText().ascii(), "w");
00375 for(i= 0 ; i<12 ; i++)
00376 {
00377 if(i!=1 && (i<9 ||i==10))
00378 fprintf(f, "%s\t", stemp[i]);
00379 else if(i==1)
00380 fprintf(f, "%s\t", changeHeading->text().ascii());
00381 else if(i==11)
00382 fprintf(f, "%s",stemp[i]);
00383 }
00384 fclose(f);
00385 displayLog();
00386 }