package com.reactlibrary.vishwamdkyclib.Tracker;

/**
 * Vishwam Corp CONFIDENTIAL

 * Vishwam Corp 2018
 * All Rights Reserved.

 * NOTICE:  All information contained herein is, and remains
 * the property of Vishwam Corp. The intellectual and technical concepts contained
 * herein are proprietary to Vishwam Corp
 * and are protected by trade secret or copyright law of U.S.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Vishwam Corp
 */

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.TextView;
/**
 * View class used for drawing out aadhar aspect ratio square with transparent color and background with white color.
 * This is used on top of camera preview class to abstarct only aadhar aspect ratio.
 *
 * **/
public class DocRectangleView extends View {

    private Paint p = new Paint();
    private Paint transparentPaint = new Paint();
    private Paint semiTransparentPaint = new Paint();
    private int parentWidth;
    private int parentHeight;
    double padding;
    Context context;
    /**
     * This constructor is used to initialise view programmatically using java.
     * **/
    public DocRectangleView(Context context) {
        super(context);
        init();
    }
    /**
     * This constructor is used to initialise view using xml declarations.
     * **/
    public DocRectangleView(Context context, double padding) {
        super(context);
        this.padding = padding;
        this.context = context;
        init();
    }
    /**
     * This constructor is used to initialise view using xml declarations.
     * **/
    public DocRectangleView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
    /**
     * This method is used to initialise transparent paints and background paint object.
     * **/
    private void init() {
        transparentPaint.setColor(getResources().getColor(android.R.color.transparent));
        transparentPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
        semiTransparentPaint.setColor(getResources().getColor(android.R.color.white));
    }
    /**
     * This invoked to draw the view.
     * Here we get display metrics and draw bitmap on to canvas with white as background and transparent color as aadhar rect view.
     * **/
    @SuppressLint({"DrawAllocation", "CanvasSize"})
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        DisplayMetrics metrics = new DisplayMetrics();
        ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);

        int height = metrics.heightPixels;
        int width = metrics.widthPixels;

        int widthPreview = (int) (width * (1-(2*padding)));

        Bitmap bitmap = Bitmap.createBitmap(parentWidth, parentHeight, Bitmap.Config.ARGB_8888);
        Canvas cnvs = new Canvas(bitmap);

        RectF rectangle = new RectF((width - widthPreview) / 2, ((width *2/3) - (widthPreview / 2.9f)), (width + widthPreview) / 2, (width * 2/3) + (widthPreview / 2.9f));

        cnvs.drawRect(0, 0, cnvs.getWidth(), cnvs.getHeight(), semiTransparentPaint);
        cnvs.drawRoundRect(rectangle, 20, 20, transparentPaint);
        canvas.drawBitmap(bitmap, 0, 0, p);
    }
    /**
     * This invoked to get view view measurements before view inflation.
     * **/
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        parentWidth = MeasureSpec.getSize(widthMeasureSpec);
        parentHeight = MeasureSpec.getSize(heightMeasureSpec);

        this.setMeasuredDimension(parentWidth, parentHeight);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}
