#include <string>
#include <vector>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace cv;
using namespace std;

struct props {
  int width;
  int height;
  int fps;
  string videohash;
  string basedir;
  float diagonal;
  int totframes;
};

struct prefs {
  vector<Point> *scissorpoints;

  int halfdecay;
  int forethreshold;
  int mincolor[3];
  int maxcolor[3];
  int manyfish;

  int contours_minshortaxis;
  int contours_maxshortaxis;
  int contours_minlongaxis;
  int contours_maxlongaxis;

  int contours_minarea;
  int contours_maxarea;
  
  int contours_mincircum;
  int contours_maxcircum;

  int contours_maxspeed;

  int contours_maxrot;
};

struct normalprefs {
  double contours_minshortaxis;
  double contours_maxshortaxis;
  double contours_minlongaxis;
  double contours_maxlongaxis;

  double contours_minarea;
  double contours_maxarea;
  
  double contours_mincircum;
  double contours_maxcircum;
  
  double contours_maxspeed;

  double contours_maxrot;

  double halfdecay;
};

extern prefs Prefs;
extern props Props;
extern double frametime;
extern int framenum;
extern int wannabeframenum;
extern normalprefs normalPrefs;

void trackbarCallbackUpdateNormPrefs (int trackpos, void *userdata);
bool isWindowClosed (const char* name);
