int main(int argc, char** argv) { Uint noofvecs, i; Sint optindex, c; vector_t info; #ifdef MEMMAN_H Spacetable spacetab; #endif void *space = NULL; char *url = NULL; char *outpath = NULL; char *pveclistfile = NULL; char *alphabetfile = NULL; char *vecext="vec"; char *seqext="seq"; struct prob_vec *p_vec; IntSequence *sequence; FAlphabet *alphabet; stringset_t *tok; stringset_t **fn; #ifdef MEMMAN_H initmemoryblocks(&spacetab, 1000); space = &spacetab; #endif while(1) { c=getopt_long(argc, argv, "f:a:o:", long_options, &optindex); if (c==-1) break; switch(c) { case 'f': pveclistfile = optarg; break; case 'a': alphabetfile = optarg; break; case 'o': outpath = optarg; break; default: usage(argv[0]); exit (EXIT_FAILURE); } } if (pveclistfile==NULL || alphabetfile == NULL) { usage(argv[0]); exit (EXIT_FAILURE); } fn=readcsv(space, pveclistfile, ".", &noofvecs); alphabet = loadCSValphabet(space, alphabetfile); sortMapdomain(space, alphabet); for(i=0; i<noofvecs; i++) { INITVECTOR(&info); SETSTR(fn[i],0) = concatdelim(space, SETSTR(fn[i],0), vecext, SETSTRLEN(fn[i],0), 3, '.'); p_vec = prob_vec_read (SETSTR(fn[i],0)); if (p_vec->mship == NULL) prob_vec_expand(p_vec); sequence = encode_prob_vec(space, alphabet, p_vec, 0, 0, cantorchar, &info); sequence->info = (Uint*) info.elements; sequence->namelen= strlen(alphabetfile); COPYSTR(space, sequence->alphabetname, alphabetfile, strlen(alphabetfile)); /*this is a potential security risk*/ if (p_vec->compnd_len > 0) { sequence->descrlen = p_vec->compnd_len-1; COPYSTR(space, sequence->description, p_vec->compnd, p_vec->compnd_len-1); } else { sequence->descrlen = 14; COPYSTR(space, sequence->description, "descriptor n/a", 14); } sequence->urllen = SETSTRLEN(fn[i],0); COPYSTR(space, sequence->url, SETSTR(fn[i],0), SETSTRLEN(fn[i],0)); SETSTR(fn[i],0) = concatdelim(space, SETSTR(fn[i],0), seqext, SETSTRLEN(fn[i],0), 3, '.'); SETSTRLEN(fn[i],0) += 4; if (outpath) { tok = tokensToStringset(space, "/", SETSTR(fn[i],0), SETSTRLEN(fn[i],0)); COPYSTR(space, url, outpath, strlen(outpath)); url = concat(space, url, SETSTR(tok, tok->noofstrings-1), strlen(url), SETSTRLEN(tok, tok->noofstrings-1)); saveSequence(sequence, url); destructStringset(space, tok); FREEMEMORY(space, url); url = NULL; } else { saveSequence(sequence, SETSTR(fn[i],0)); } destructSequence (space, sequence); prob_vec_destroy (p_vec); destructStringset (space, fn[i]); progressBarVT("probability vectors converted", noofvecs-1, i, 25); } printf("\nexit.\n"); FREEMEMORY(space, fn); destructAlphabet(space, alphabet); return EXIT_SUCCESS; }
/* * Load the sequence from a file */ void MovieSequenceForm::loadClicked() { int numSeg, iseg, err, se, cl, numObj; char *buffer; int *intArray = NULL; MovieSegment *segp; MovieTerminus *term; QString key; if (mModified) { iseg = dia_choice("Save current movie sequence before loading a new one?", "Yes", "No", "Cancel"); if (iseg == 3) return; if (iseg == 1 && saveSequence() < 0) return; } key = utilOpenFileName(this, "Select movie sequence file to load", 0, NULL); if (key.isEmpty()) return; if (AdocRead(LATIN1(key)) < 0) { dia_err("Error reading the movie sequence file as an autodoc"); AdocDone(); return; } mSegments->clear(); numSeg = AdocGetNumberOfSections(MSA_SEGMENT); if (numSeg <= 0) { dia_err(numSeg ? "Error getting number of segments from autodoc" : "No segments were found in the file"); loadTable(); return; } mSegments->resize(numSeg); for (iseg = 0; iseg < numSeg; iseg++) { err = 1; segp = &(mSegments->at(iseg)); // General segment items if (AdocGetInteger(MSA_SEGMENT, iseg, MSA_FRAMES, &segp->numFrames)) break; err++; if (AdocGetInteger(MSA_SEGMENT, iseg, MSA_VIEW, &segp->viewNum)) break; err++; if (AdocGetInteger(MSA_SEGMENT, iseg, MSA_FULL_AXIS, &segp->fullAxis)) break; err++; if (AdocGetInteger(MSA_SEGMENT, iseg, MSA_NUM_CLIPS, &segp->numClips)) break; err++; if (AdocGetInteger(MSA_SEGMENT, iseg, MSA_CLIP_FLAGS, &segp->clipFlags)) break; err++; if (AdocGetInteger(MSA_SEGMENT, iseg, MSA_IMG_AXIS, &segp->imgAxisFlags)) break; // Segment image drawing state if (segp->imgAxisFlags) { if (AdocGetThreeIntegers(MSA_SEGMENT, iseg, MSA_IMG_SIZE, &segp->imgXsize, &segp->imgYsize, &segp->imgZsize)) break; if (AdocGetTwoIntegers(MSA_SEGMENT, iseg, MSA_IMG_LEVELS, &segp->imgBlackLevel, &segp->imgWhiteLevel)) break; if (AdocGetInteger(MSA_SEGMENT, iseg, MSA_IMG_FALSE, &segp->imgFalseColor)) break; } // Segment clip normals for (cl = 0; cl < segp->numClips; cl++) { key.sprintf("%s%d", MSA_CLIP_NORM, cl + 1); if (AdocGetThreeFloats(MSA_SEGMENT, iseg, LATIN1(key), &segp->clipNormal[cl].x, &segp->clipNormal[cl].y, &segp->clipNormal[cl].z)) break; } if (cl < segp->numClips) break; err++; if (AdocGetString(MSA_SEGMENT, iseg, MSA_LABEL, &buffer) == 0) { segp->label = QString(buffer); free(buffer); } err++; // The object states if (AdocGetInteger(MSA_SEGMENT, iseg, MSA_NUM_ONOFF, &numObj) || !numObj) break; err++; segp->objStates.resize(numObj); if (AdocGetString(MSA_SEGMENT, iseg, MSA_OBJ_ONOFF, &buffer)) break; err++; if (strlen(buffer) < 2 * numObj - 1) { free(buffer); break; } for (cl = 0; cl < numObj; cl++) segp->objStates[cl] = buffer[cl * 2] == '0' ? 0 : 1; free(buffer); err++; // Objects with changed transparency if (AdocGetInteger(MSA_SEGMENT, iseg, MSA_NUMOBJ_DELTRANS, &numObj)) break; err++; if (numObj > 0) { intArray = B3DMALLOC(int, numObj); if (!intArray) break; if (AdocGetIntegerArray(MSA_SEGMENT, iseg, MSA_OBJ_DELTRANS, intArray, &numObj, numObj)) break; segp->transChangeObjs.resize(numObj); for (cl = 0; cl < numObj; cl++) segp->transChangeObjs[cl] = intArray[cl]; } err++; // Now start and end data term = &segp->start; for (se = 0; se < 2; se++) { key.sprintf("%s%s", MSA_ROTATION, se ? "End" : "Start"); if (AdocGetThreeFloats(MSA_SEGMENT, iseg, LATIN1(key), &term->rotation.x, &term->rotation.y, &term->rotation.z)) break; err++; key.sprintf("%s%s", MSA_TRANSLATE, se ? "End" : "Start"); if (AdocGetThreeFloats(MSA_SEGMENT, iseg, LATIN1(key), &term->translate.x, &term->translate.y, &term->translate.z)) break; err++; key.sprintf("%s%s", MSA_ZOOM, se ? "End" : "Start"); if (AdocGetFloat(MSA_SEGMENT, iseg, LATIN1(key), &term->zoomRad)) break; // Terminus image drawing if (segp->imgAxisFlags) { key.sprintf("%s%s", MSA_IMG_CEN, se ? "End" : "Start"); if (AdocGetThreeIntegers(MSA_SEGMENT, iseg, LATIN1(key), &term->imgXcenter, &term->imgYcenter, &term->imgZcenter)) break; key.sprintf("%s%s", MSA_IMG_SLICES, se ? "End" : "Start"); if (AdocGetInteger(MSA_SEGMENT, iseg, LATIN1(key), &term->imgSlices)) break; key.sprintf("%s%s", MSA_IMG_TRANSP, se ? "End" : "Start"); if (AdocGetInteger(MSA_SEGMENT, iseg, LATIN1(key), &term->imgTransparency)) break; } // Terminus clip points for (cl = 0; cl < segp->numClips; cl++) { key.sprintf("%s%s%d", MSA_CLIP_POINT, se ? "End" : "Start", cl + 1); if (AdocGetThreeFloats(MSA_SEGMENT, iseg, LATIN1(key), &term->clipPoint[cl].x, &term->clipPoint[cl].y, &term->clipPoint[cl].z)) break; } if (cl < segp->numClips) break; err++; // Terminus transparencies if (numObj > 0) { key.sprintf("%s%s", MSA_OBJ_TRANSP, se ? "End" : "Start"); if (AdocGetIntegerArray(MSA_SEGMENT, iseg, LATIN1(key), intArray, &numObj, numObj)) break; for (cl = 0; cl < numObj; cl++) term->objTrans[cl] = (unsigned char)intArray[cl]; } term= &segp->end; } if (se < 2) break; err = 0; }
void ImageSequenceSave::process() { if (inport_.hasChanged() && continousSave_.get()) saveSequence(); }
/* * Save the sequence to a file */ void MovieSequenceForm::saveClicked() { saveSequence(); }
DataViewWindow::DataViewWindow(std::vector<Data> data, QWidget *parent) : QWidget(parent) { dataEnregistre = data; // ###################### Size ###################### //this->setFixedSize(1024, 680); // Main layout QVBoxLayout *mainLayout = new QVBoxLayout(this); // Button layout QHBoxLayout *btnLayout = new QHBoxLayout; // Restart button btnRestart = new QPushButton("Redémarrer une séquence"); btnLayout->addWidget(btnRestart); // Save button btnSave = new QPushButton("Enregister la séquence"); btnLayout->addWidget(btnSave); // Init table table = new QTableView; table->setMinimumWidth(382); table->setMaximumWidth(382); table->verticalHeader()->setHidden(true); table->horizontalHeader()->setHidden(true); QHBoxLayout *tableLayout = new QHBoxLayout; tableLayout->addWidget(table); tableLayout->setAlignment(Qt::AlignCenter); mainLayout->addLayout(tableLayout); //mainLayout->addWidget(table); mainLayout->addLayout(btnLayout); //table->setGeometry(120, 120, 784, 440); table->setGeometry(1024/2-484/2, 100, 420, 340); model = new QStandardItemModel; table->setModel(model); // Title model->setItem(0, 0, new QStandardItem("Distance")); model->setItem(0, 1, new QStandardItem("Largeur bouton")); model->setItem(0, 2, new QStandardItem("Temps Fitts")); model->setItem(0, 3, new QStandardItem("Temps réel")); // Disable editing table->setEditTriggers(QAbstractItemView::NoEditTriggers); // Set size table->setColumnWidth(0,80); table->setColumnWidth(1,120); table->setColumnWidth(2,90); table->setColumnWidth(3,90); // Work variable to calculate average time tpsRealTot=0; tpsFittTot=0; // To fill table for(unsigned int i=1; i<data.size()+1; i++) { model->setItem(i, 0, new QStandardItem(QString::number(data[i-1].getDistance()))); model->setItem(i, 1, new QStandardItem(QString::number(data[i-1].getWidthBtn()))); model->setItem(i, 2, new QStandardItem(QString::number(data[i-1].getTpsFitts()))); model->setItem(i, 3, new QStandardItem(QString::number((double)data[i-1].getTpsReal()/1000))); // Calculate average times tpsRealTot += (double)data[i-1].getTpsReal()/1000; tpsFittTot += data[i-1].getTpsFitts(); } model->setItem(data.size()+1, 1, new QStandardItem("Avg time:")); model->setItem(data.size()+1, 2, new QStandardItem(QString::number(tpsFittTot/data.size()))); model->setItem(data.size()+1, 3, new QStandardItem(QString::number(tpsRealTot/data.size()))); //Connection connect(btnSave, SIGNAL(clicked()), this, SLOT(saveSequence())); }