#ifndef UTILS_H
#define UTILS_H

#include <QString>
#include <QTime>
#include <stdio.h>
#include <fstream>

#include "interval/box.h"
#include "interval/scalarTube.h"

// parse a string from the edit line to setup axes
Box parse(QString str, QString token)
{
    if (str.isEmpty())
        return Box(Interval(0,10),Interval(0,10));
    QStringList list = str.split(token);
    if (list.count() != 4)
        return Box(Interval(0,10),Interval(0,10));
    Box b(Interval(list.at(0).toDouble(), list.at(1).toDouble()),Interval(list.at(2).toDouble(), list.at(3).toDouble()));
    return b;
}
// parse a string from SLAM file data
Interval parseForSlam(QString str)
{
    if (str.isEmpty())
        return Interval(0,0);
    QStringList list = str.split(':');
    if (list.count() != 2)
      return Interval(0,0);
    str = list.at(1);
    //list.at(1) contient [x.xx,x.xx]
    str.remove('[');
    str.remove(']');
    list = str.split(',');
    if (list.count() != 2)
      return Interval(0,0);
    Interval i(list.at(0).toDouble(), list.at(1).toDouble());
    return i;
}
//Save datas
void printTubesToFile(const std::string & pFileName, ScalarTube & pTubeDx, ScalarTube & pTubeDy){
    QString myFileName(pFileName.c_str()+QTime::currentTime().toString()+QString(".txt"));

    std::ofstream fichier(myFileName.toStdString().c_str(), std::ios::out | std::ios::trunc);  // ouverture en écriture avec effacement du fichier ouvert

    if(fichier)
    {
        float dt = pTubeDx.dt;
        //On écrit l'entete
        fichier << "%Data from a simulation via matlab of AUVEN making a looping motion"<< std::endl;
        fichier << "% Sampling time"<< std::endl;
        fichier << dt<< std::endl;
        fichier << "%t phi dphi theta dtheta psi dpsi vx dvx vy dvy vz dvz depth ddepth a da x dx y dy"<< std::endl;
        //On écrit les données
        for (unsigned int i=0 ; i < pTubeDx.size() ; i++){
            fichier <<i*dt<<" 0 0 0 0 0 0 "<<pTubeDx.at(i).center()<<" "<<pTubeDx.at(i).width()/2<<" "<<pTubeDy.at(i).center()<<" "<<pTubeDy.at(i).width()/2<<"0 0 0 0 0 0 0 0 0 0"<< std::endl;
        }
        fichier.close();
    }
    else
        std::cerr << "Impossible d'ouvrir le fichier !" << std::endl;
}

#endif // UTILS_H
