package fr.iutfbleau.dev45.wamster.tp04ex03_dimension;

import android.content.Context;
import android.util.Log;
import android.view.ScaleGestureDetector;
import android.view.View;

public class DetecteZoom extends ScaleGestureDetector.SimpleOnScaleGestureListener {
    private Rectangle viewActuel;
    private int typeZoom;
    private static final int ZOOM_X = 0;
    private static final int ZOOM_Y = 1;
    private static final int AUCUN_ZOOM = -1;

    public DetecteZoom(){
        super();
    }

    public void resetMouvement(){
        this.typeZoom = DetecteZoom.AUCUN_ZOOM;
    }

    public void setViewActuel(Rectangle viewActuel){
        this.viewActuel = viewActuel;
    }
    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        int etatRectangle = this.viewActuel.getEtat();
        if (etatRectangle == Rectangle.ROUGE){
            float pourcentage = detector.getScaleFactor();
            this.viewActuel.setScaleX(this.viewActuel.getScaleX()*pourcentage);
            this.viewActuel.setScaleY(this.viewActuel.getScaleY()*pourcentage);
        }
        else{
            float[] listePourcentageZoom = new float[2];
            listePourcentageZoom[DetecteZoom.ZOOM_X] = detector.getCurrentSpanX() / detector.getPreviousSpanX();
            listePourcentageZoom[DetecteZoom.ZOOM_Y] = detector.getCurrentSpanY() / detector.getPreviousSpanY();

            if (typeZoom == DetecteZoom.AUCUN_ZOOM){
                if (listePourcentageZoom[DetecteZoom.ZOOM_X] > listePourcentageZoom[DetecteZoom.ZOOM_Y]){
                    Log.v("test","x: "+listePourcentageZoom[DetecteZoom.ZOOM_X]+">"+listePourcentageZoom[DetecteZoom.ZOOM_Y]);
                    this.typeZoom = DetecteZoom.ZOOM_X;
                }
                else if (listePourcentageZoom[DetecteZoom.ZOOM_X] < listePourcentageZoom[DetecteZoom.ZOOM_Y]){
                    Log.v("test","y: "+listePourcentageZoom[DetecteZoom.ZOOM_X]+"<"+listePourcentageZoom[DetecteZoom.ZOOM_Y]);
                    this.typeZoom = DetecteZoom.ZOOM_Y;
                }
            }
            else if (this.typeZoom == DetecteZoom.ZOOM_X){
                this.viewActuel.setScaleX(this.viewActuel.getScaleX()*listePourcentageZoom[DetecteZoom.ZOOM_X]);
            }
            else if (this.typeZoom == DetecteZoom.ZOOM_Y){
                this.viewActuel.setScaleY(this.viewActuel.getScaleY()*listePourcentageZoom[DetecteZoom.ZOOM_Y]);
            }
        }
        return true;
    }
}
