package com.dam.profesor.paint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
/**
* Created by Profesor on 29/10/2015.
*/
public class Lienzo extends View {
//Path que utilizaré para ir pintando las lineas
private Path drawPath;
//Paint de dibujar y Paint de Canvas
private static Paint drawPaint;
private Paint canvasPaint;
//Color Inicial
private static int paintColor = 0xFFFF0000;
//canvas
private Canvas drawCanvas;
//canvas para guardar
private Bitmap canvasBitmap;
static float TamanyoPunto;
private static boolean borrado=false;
public Lienzo(Context context, AttributeSet attrs) {
super(context, attrs);
setupDrawing();
}
private void setupDrawing(){
//Configuración del area sobre la que pintar
drawPath = new Path();
drawPaint = new Paint();
drawPaint.setColor(paintColor);
drawPaint.setAntiAlias(true);
//setTamanyoPunto(20);
drawPaint.setStrokeWidth(20);
drawPaint.setStyle(Paint.Style.STROKE);
drawPaint.setStrokeJoin(Paint.Join.ROUND);
drawPaint.setStrokeCap(Paint.Cap.ROUND);
canvasPaint = new Paint(Paint.DITHER_FLAG);
}
//Tamaño asignado a la vista
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
drawCanvas = new Canvas(canvasBitmap);
}
//Pinta la vista. Será llamado desde el OnTouchEvent
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint);
canvas.drawPath(drawPath, drawPaint);
}
//Registra los touch de usuario
@Override
public boolean onTouchEvent(MotionEvent event) {
float touchX = event.getX();
float touchY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
drawPath.moveTo(touchX, touchY);
break;
case MotionEvent.ACTION_MOVE:
drawPath.lineTo(touchX, touchY);
break;
case MotionEvent.ACTION_UP:
drawPath.lineTo(touchX, touchY);
drawCanvas.drawPath(drawPath, drawPaint);
drawPath.reset();
break;
default:
return false;
}
//repintar
invalidate();
return true;
}
//Actualiza color
public void setColor(String newColor){
invalidate();
paintColor = Color.parseColor(newColor);
drawPaint.setColor(paintColor);
}
//Poner tamaño del punto
public static void setTamanyoPunto(float nuevoTamanyo){
//float pixel = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
// nuevoTamanyo, getResources().getDisplayMetrics());
//TamanyoPunto=pixel;
drawPaint.setStrokeWidth(nuevoTamanyo);
}
//set borrado true or false
public static void setBorrado(boolean estaborrado){
borrado=estaborrado;
if(borrado) {
drawPaint.setColor(Color.WHITE);
//drawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
}
else {
drawPaint.setColor(paintColor);
//drawPaint.setXfermode(null);
}
}
public void NuevoDibujo(){
drawCanvas.drawColor(0, PorterDuff.Mode.CLEAR);
invalidate();
}
}