/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package feuille.drawing.ornament; import java.awt.Rectangle; /** * * @author The Wingate 2940 */ public abstract class AShape implements IShape { //Les points de coordonnées 'origine' et 'dernier'. protected java.awt.Point originPoint = null; protected java.awt.Point lastPoint = null; //Les variables suivantes avertissent d'un changement de position en cours //sur le point 'origine' (ochange) ou le point dernier (lchange). protected boolean oChange = false; protected boolean lChange = false; //marked sert à signalé un changement de position de façon globale. protected boolean marked = false; //Montre la grosseur en fonction du zoom. Thickness thickness = Thickness.Big; //Sauvegarde le temps de la phase. protected String duration = "0"; public AShape(){ } public enum Thickness{ Big(10),Large(8),Medium(6),Small(4); private int thick; Thickness(int thick){ this.thick = thick; } public int getThickness(){ return thick; } } public void updateThickness(Thickness thickness){ this.thickness = thickness; } @Override public void setOriginPoint(int x, int y) { originPoint = new java.awt.Point(x, y); } @Override public java.awt.Point getOriginPoint() { return originPoint; } @Override public void setLastPoint(int x, int y) { lastPoint = new java.awt.Point(x, y); } @Override public java.awt.Point getLastPoint() { return lastPoint; } /** Renvoie <b>true</b> si une extrémité de l'objet est concernée par * un changement et définit lequel dans l'élément objet. */ public boolean isPointisNear(java.awt.Point p){ int xp = (int)p.getX(); int yp = (int)p.getY(); Rectangle rect = new Rectangle( xp-thickness.getThickness()/2, yp-thickness.getThickness()/2, thickness.getThickness(), thickness.getThickness()); if(rect.contains(originPoint)){oChange=true; return true;} if(rect.contains(lastPoint)){lChange=true; return true;} return false; } /** Met à jour la position du point concerné. */ public void updatePointPosition(java.awt.Point p){ if(oChange==true){originPoint = p;} if(lChange==true){lastPoint = p;} } /** Retourne à la configuration par défaut. */ public void updatehasEnded(){ oChange=false; lChange=false; } @Override public void setMarked(boolean b) { marked = b; } @Override public boolean getMarked() { return marked; } @Override public void setDuration(String dur) { duration = dur; } @Override public String getDuration() { return duration; } }