/* NAME: Kirill Vasil'evich Timofeev, 322
 * ASGN: N1
 */
#ifndef LOGIC_H
#define LOGIC_H

#include <iostream>
#include <iomanip>
#include <cstring>
#include <vector>
#include <QtCore/QFile>
#include <QtGui/QImage>
#include <QtCore/QString>

class Logic: public QObject
{
    Q_OBJECT

public:
    QImage *curImage;
    QFile *inFile;
    QFile *outFile;
    int *curHist;
    struct model* myModel;
    std::vector< std::vector<double> > trainFeatures;
    std::vector<int> trainLabels;
    QString *curFile;
    QString curInFile;
    QString curModelFile;
    QString curOutFile;
    QString curCat;

    explicit Logic();
    ~Logic();

    bool getFilesTr();
    void getFileNameFromInt(int);
    bool useImage(int);
    char* PRcount();
    bool getFilesSDir();
    bool getFilesSImg();

private:
    void trainModel(const bool);
    bool testModel();
    void makeHOG(const int, const int, const int, const int);
    void paint(const int, const int, const int, const int);
    void makeModel();
    void wash(int** , int**, int** ,int, int, int, int, int, int**, bool);

};


#endif // LOGIC_H
