#ifndef _IMAGE_H
#define _IMAGE_H
#include "Pixel.h"
#include <iostream>

using namespace std;

class Image
{
private:
    unsigned int dimx,dimy;
    Pixel * tab;
    

    public:
    Image();
    Image(unsigned int x, unsigned int y);
    ~Image();
    Pixel & getPix(unsigned int x, unsigned int y) const;
    Pixel getPix2(unsigned int x, unsigned int y) const;
    void setPix(unsigned int x, unsigned int y, Pixel couleur);
    void dessinerRectangle(unsigned int Xmin, unsigned int Ymin, unsigned int Xmax, unsigned int Ymax, Pixel couleur);
    void effacer (Pixel couleur);
    Pixel * getTab()const;
    void sauver(const string &filename) const;
    void ouvrir(const string &filename);
    void afficherConsole();

    static void testRegression()
    {
        Pixel p;
        Pixel p2(10,20,30);    

        Image im(50,50);
        p = im.getPix2(20,26);
        cout<<int(p.r)<<endl;
        cout<<endl;

        im.setPix(27,12,p2);
        Pixel p3 = im.getPix2(27,12);
        cout<<int(p3.r)<<","<<int(p3.g)<<","<<int(p3.b)<<endl;
        cout<<endl;

        im.dessinerRectangle(10,10,30,30,Pixel(78,36,108));

        Pixel p4 = im.getPix2(15,20);
        cout<<int(p4.r)<<","<<int(p4.g)<<","<<int(p4.b)<<endl;

        cout<<endl;

        im.effacer(Pixel(0,0,0));
        p4 = im.getPix2(18,25);
        cout<<int(p4.r)<<","<<int(p4.g)<<","<<int(p4.b)<<endl;


        im.~Image();

    };
    
};

#endif