/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package feuille.drawing.operation; import java.util.ArrayList; import java.util.List; import feuille.drawing.lib.BSpline; import feuille.drawing.lib.Bezier; import feuille.drawing.lib.ControlPoint; import feuille.drawing.lib.IShape; import feuille.drawing.lib.Line; import feuille.drawing.lib.Move; import feuille.drawing.lib.Point; import feuille.drawing.lib.ReStart; /** * * @author The Wingate 2940 */ public class Translation { private java.awt.Point T = null; private boolean set = false; private double dx = 0d, dy = 0d; private List<IShape> mShapes = new ArrayList<IShape>(); public Translation(){ } public Translation(java.awt.Point T){ this.T = T; if(T != null){ set = true; } } public void clear(){ T = null; set = false; dx = 0d; dy = 0d; mShapes.clear(); } public void setTranslation(java.awt.Point T){ this.T = T; if(T != null){ set = true; } } public boolean isSet(){ return set; } public int getX(){ return T.x; } public int getY(){ return T.y; } public void setDistance(int dx, int dy){ this.dx = dx; this.dy = dy; } public double getTX(){ return dx; } public double getTY(){ return dy; } public double getDX(){ return dx-T.getX(); } public double getDY(){ return dy-T.getY(); } public void setTranslatonPreview(List<IShape> pshapes){ mShapes.clear(); java.awt.Point O, L; int xa, ya; for(IShape s : pshapes){ if(s instanceof ReStart){ ReStart m = (ReStart)s; xa = m.getOriginPoint().x; ya = m.getOriginPoint().y; O = translateWithPoint(getDX(), getDY(), xa, ya); xa = m.getLastPoint().x; ya = m.getLastPoint().y; L = translateWithPoint(getDX(), getDY(), xa, ya); mShapes.add(new ReStart(O.x, O.y, L.x, L.y)); }else if(s instanceof Move){ Move n = (Move)s; xa = n.getOriginPoint().x; ya = n.getOriginPoint().y; O = translateWithPoint(getDX(), getDY(), xa, ya); xa = n.getLastPoint().x; ya = n.getLastPoint().y; L = translateWithPoint(getDX(), getDY(), xa, ya); mShapes.add(new Move(O.x, O.y, L.x, L.y)); }else if(s instanceof Point){ Point p = (Point)s; xa = p.getOriginPoint().x; ya = p.getOriginPoint().y; O = translateWithPoint(getDX(), getDY(), xa, ya); mShapes.add(new Point(O.x, O.y)); }else if(s instanceof Line){ Line l = (Line)s; xa = l.getOriginPoint().x; ya = l.getOriginPoint().y; O = translateWithPoint(getDX(), getDY(), xa, ya); xa = l.getLastPoint().x; ya = l.getLastPoint().y; L = translateWithPoint(getDX(), getDY(), xa, ya); mShapes.add(new Line(O.x, O.y, L.x, L.y)); }else if(s instanceof Bezier){ Bezier b = (Bezier)s; xa = b.getOriginPoint().x; ya = b.getOriginPoint().y; O = translateWithPoint(getDX(), getDY(), xa, ya); xa = b.getLastPoint().x; ya = b.getLastPoint().y; L = translateWithPoint(getDX(), getDY(), xa, ya); xa = b.getControl1().getOriginPoint().x; ya = b.getControl1().getOriginPoint().y; java.awt.Point CP1 = translateWithPoint(getDX(), getDY(), xa, ya); xa = b.getControl2().getOriginPoint().x; ya = b.getControl2().getOriginPoint().y; java.awt.Point CP2 = translateWithPoint(getDX(), getDY(), xa, ya); mShapes.add(new Bezier(O.x, O.y, CP1.x, CP1.y, CP2.x, CP2.y, L.x, L.y)); }else if(s instanceof ControlPoint){ ControlPoint cp = (ControlPoint)s; xa = cp.getOriginPoint().x; ya = cp.getOriginPoint().y; java.awt.Point CP1 = translateWithPoint(getDX(), getDY(), xa, ya); mShapes.add(new ControlPoint(CP1.x, CP1.y)); }else if(s instanceof BSpline){ BSpline bs = (BSpline)s; xa = (int)bs.getOriginPoint().getX(); ya = (int)bs.getOriginPoint().getY(); java.awt.Point P = translateWithPoint(getDX(), getDY(), xa, ya); BSpline nbs = new BSpline(P.x, P.y); for(ControlPoint cp : bs.getControlPoints()){ xa = (int)cp.getOriginPoint().getX(); ya = (int)cp.getOriginPoint().getY(); java.awt.Point CP1 = translateWithPoint(getDX(), getDY(), xa, ya); nbs.addPoint(CP1.x, CP1.y); } if(bs.isNextExist()){ xa = (int)bs.getNextPoint().getX(); ya = (int)bs.getNextPoint().getY(); java.awt.Point NX = translateWithPoint(getDX(), getDY(), xa, ya); nbs.setNextPoint(NX.x, NX.y); } mShapes.add(nbs); } } } public List<IShape> getPreviewShapes(){ return mShapes; } private java.awt.Point translateWithPoint(double rdx, double rdy, int xa, int ya){ java.awt.Point P = new java.awt.Point(xa, ya); java.awt.Point Pprime = P; double xPprime = P.getX() + rdx; double yPprime = P.getY() + rdy; Pprime.setLocation(xPprime, yPprime); return Pprime; } }