#ifndef RIS_H
#define RIS_H


#include "my_image.h"
#include "funkce.h"


#define PI 3.14159265

class ris
{
    //metody
    public:
        ris(my_image *img,int pocet=10,int delka=20,bool modd=false);//img je referencni obraz.
                                                                //pokud je bool body =true,je trida prepnuta do rezimu ve kterem nepocita primky
                                                                //pro vsechny vstupni body obrazu img_ref ale jen pro urcite body,
                                                                //ktere jsou zadany pomoci find-> pro kazdy mod tedy musim pozit spravny find
        ~ris();
        bool find(my_image *img);//vraci true pokud vyhovuje alespon jeden bod
        bool find(my_image *img,std::vector<BOD> candidats);//pokud je RIS mod v true->pouzi pro find tuto metodu -> body ve vektoru jsou kandidati

    private:
        class RI{//trida znaci jediny bod v RIS prostoru
               //promenne
                public:
                     int x;
                     int y;
                     std::vector<int> sum;
                private:
                //metody
                public:
                    RI();
                    ~RI();
                    int operator-(const ris::RI &t1) const;
                private:


        };
        ris::RI** img2RI(my_image *img, int *count);
        ris::RI * point2RI(int x,int y,my_image * img);
        int RI_l(my_image * image,int x0, int y0, int x1,int y1 ); //vypocita sumu bodu na jednom radiusu
        void del_img();
        int get_pixel(int x,int y,my_image *image);

//promenne
public:
        int length;
        int count_l;
        bool mod;//pokud je mod true,prohledavam pouze konkretni body, jinak cely img_ref
        std::vector<BOD> body;

private:
     RI **ri_ref;
     RI **ri;//pole ma jeden prvek
     int count_ri_ref;
     int count_ri;
     my_image *img_ref;
     my_image * img;
};


#endif // RIS_H
