#ifndef UTILS_HPP
#define UTILS_HPP

#include <iosfwd>

static const double pi = 3.14159265358979323846;

/** Opens file for writing with fixed scientific precision. */
void openWriteScientificPrecision(std::ofstream& out, const std::string& filename, const int& precision);

void openWritePrecision(std::ofstream& out, const std::string& filename, const int& precision);

/** Opens files and checks how it went. */
bool openCheck(std::ifstream& f, const std::string& filename, const std::string& callingFunctionName);
bool openCheck(std::ofstream& f, const std::string& filename, const std::string& callingFunctionName);


// inline 

inline double square(const int& a) { return a*a;}

/** Implements key bindings, for example for cvWaitKey(). */
inline bool forwardKey(const int& pressedKey) { return (((char)pressedKey) == '+');}

inline bool backwardKey(const int& pressedKey) { return (((char)pressedKey) == '-');}

inline bool saveKey(const int& pressedKey) { return (((char)pressedKey) == 's' || ((char)pressedKey) == 'S');}

inline bool interruptionKey(const int& pressedKey) { return (((char)pressedKey) == 'q' || ((char)pressedKey) == 'Q');}

inline bool skipKey(const int& pressedKey) { return (((char)pressedKey) == 'n' || ((char)pressedKey) == 'N');}

#endif
