#include "oneshadow.h"

#include "imageblur.h"

OneShadow::OneShadow(QSize contentSize,int radius,QColor shadowColor)
{

    /* 图片(阴影)宽和高 */
    int imageWidth = contentSize.width()+radius*2;
    int imageHeight = contentSize.height()+radius*2;
    m_image = new QImage(imageWidth, imageHeight, QImage::Format_ARGB32);
    m_image->fill(shadowColor);
    //边框设为透明
    for(int x= 0 ;x < m_image->width();x++)
    {
        for(int y=0;y<m_image->height();y++)
        {
            /* 设置阴影圈部分透明 */
            if(x>=radius && x<(m_image->width()-radius) && y>=radius && y<(m_image->height()-radius)) continue;
            m_image->setPixelColor(QPoint(x,y), Qt::transparent);
        }
    }
    /* 通过高斯模糊来设置阴影 */
    GaussBlur::Blur(*m_image, radius);
}

OneShadow::~OneShadow()
{
    delete m_image;
}


QImage& OneShadow::image()
{
    return *m_image;
}