package net.robinx.lib.blurview.processor;

import android.content.Context;
import android.graphics.Bitmap;
import android.support.v8.renderscript.RenderScript;

import net.robinx.lib.blurview.algorithm.IBlur;
import net.robinx.lib.blurview.algorithm.rs.RSGaussianBlur;

/**
 * Created by Robin on 2016/8/20 15:51.
 */
public class RSGaussianBlurProcessor implements BlurProcessor {

    private volatile static RSGaussianBlurProcessor INSTANCE;

    private RSGaussianBlurProcessor(Context context) {
        mRSGaussianBlur = new RSGaussianBlur(RenderScript.create(context));
    }

    public static RSGaussianBlurProcessor getInstance(Context context) {
        if (INSTANCE == null) {
            synchronized (RSGaussianBlurProcessor.class) {
                if (INSTANCE == null) {
                    INSTANCE = new RSGaussianBlurProcessor(context);
                }
            }
        }
        return INSTANCE;
    }


    private IBlur mRSGaussianBlur;


    @Override
    public Bitmap process(Bitmap original, int radius) {
        return mRSGaussianBlur.blur(radius, original);
    }
}