#include "matrix.h"

Matrix::Matrix(QImage * img,int s,double a[50][50]):img(img),s(s)//,a(a)
{
    sum=0;
    for (int i=0;i<s;i++)
        for (int j=0; j<s; j++)
        {
            this->a[i][j]=a[i][j];
            sum+=a[i][j];
        }
}


void Matrix::multiply(int x, int y, int size)
{
    double r=0,g=0,b=0;
    QRgb clr;

    int smesh=(size-1)/2;

    for (int i=0;i<size;i++)
        for (int j=0; j<size; j++)
        {
            clr=img->pixel(x-smesh+j,y-smesh+i);
            r+=qRed(clr)*a[i][j];
            g+=qGreen(clr)*a[i][j];
            b+=qBlue(clr)*a[i][j];
        }
   // r=r/sum;
  //  g=g/sum;
   // b=b/sum;
    if (r>255) r=255;
    if (r<0) r=0;
    if (g>255) g=255;
    if (g<0) g=0;
    if (b>255) b=255;
    if (b<0) b=0;
    res->setPixel(x,y,qRgb(r,g,b));

}


void Matrix::go(void)
{
    res=new QImage(*img);
    int smesh=(s-1)/2;
    int width = img->width();
    int height = img->height();
    for (int i=smesh;i<width-smesh;i++)
        for (int j=smesh;j<height-smesh;j++)
            multiply(i,j,s);
    *img=*res;

}
