#ifndef IMGMANIPBS_H
#define IMGMANIPBS_H

#define cimg_use_jpeg
#include "CImg.h"
using namespace cimg_library;

class ImgManipBS
{
public:
    ImgManipBS();
    ImgManipBS(const char* fileName);

    CImg<unsigned char> mainImage;
    CImg<unsigned char> outImages[2];    // One for white(0) and one for black(1)

    int width;
    int height;

    int **whiteMeanValues;
    int **blackMeanValues;


    void EvaluateImage();
    double GetBrightness(unsigned int x,unsigned int y);
    void findNearValues(int x,int y, double &meanWhite, double &meanBlack);
    void MarkPixelInOutImage(int imageNo,int x,int y);
    void DrawGradRect(int imageNo,int x,int y, unsigned char p1, unsigned char p2, unsigned char p3, unsigned char p4);
    void DrawTopGradRect(int imageNo,int x,int y, unsigned char p1, unsigned char p2);
    void CreateGradiantImage();

    int noOfWSquares;
    int noOfHSquares;

    // Constants that affect the sizes of differents measurements in the image process
    const int squareSize = 150;
    const int measureSquareSize = 70;
    const int squareMargin = measureSquareSize / 2;

    const int noOfMeanValues = 10;
};

#endif // IMGMANIPBS_H
