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;
 }
Beispiel #2
0
/*
 * 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();
}
Beispiel #4
0
/*
 * 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()));

}