Arbol de plugins y clases nuevas
[DND.git] / DNDCore / CanvasSmartObject.java
blob7471c809e2e9fcbf010d0722d49ed5764a7591bb
1 package DNDCore;
4 import java.awt.Graphics2D;
5 import java.awt.Point;
7 /**
9 * @author DND Team
11 public class CanvasSmartObject extends CanvasObject implements Cloneable {
13 Canvas embeddedCanvas;
14 Double[] scaleFactor;
16 public CanvasSmartObject(Point position)
18 super(position);
20 scaleFactor = new Double[2];
21 scaleFactor[0] = new Double(getWidthScale());
22 scaleFactor[1] = new Double(getHeightScale());
24 embeddedCanvas = new Canvas(scaleFactor);
27 public void setScaleFactor(Double[] sFactor)
29 scaleFactor = sFactor;
32 @Override
33 public void setCanvas(Canvas canvas)
35 super.setCanvas(canvas);
38 public void addElement(CanvasObject element)
40 embeddedCanvas.addElement(element);
43 public boolean removeElement(CanvasObject element)
45 return embeddedCanvas.removeElement(element);
48 public Canvas getEmbeddedCanvas()
50 return embeddedCanvas;
53 public void setEmbeddedCanvas(Canvas embedded)
55 embeddedCanvas = embedded;
59 private Point inversePoint(Point p)
61 p.x = -p.x;
62 p.y = -p.y;
63 return p;
66 public void draw(Graphics2D engine)
68 Point position = getPosition();
69 Point newOrigin = new Point((int)(position.x/getWidthScale()), (int)(position.y/getHeightScale()));
70 Canvas.changeOrigin(engine, newOrigin);
71 // setPosition(newOrigin);
72 embeddedCanvas.drawAll(engine);
73 // setPosition(position);
74 Canvas.changeOrigin(engine, inversePoint(newOrigin));
77 public CanvasObject containsObject(Point position) {
78 Point p = position;
79 Point op = getEffectivePosition();
80 Point rp = new Point(p.x - op.x, p.y - op.y);
82 /* rp : Relative position */
83 for(CanvasObject o : embeddedCanvas.getElementsArray())
84 if(o.contains(rp))
85 return o;
87 return null;
90 public boolean contains(Point position)
92 if(containsObject(position) == null)
93 return false;
95 return true;
98 @Override
99 int getWidth() {
100 return embeddedCanvas.getSize().width;
103 @Override
104 int getHeight() {
105 return embeddedCanvas.getSize().height;
108 @Override
109 public Object clone() throws CloneNotSupportedException
111 CanvasSmartObject cso = (CanvasSmartObject) super.clone();
112 Double[] nScaleFactor = new Double[2];
113 nScaleFactor[0] = new Double(scaleFactor[0]);
114 nScaleFactor[1] = new Double(scaleFactor[1]);
115 cso.setScaleFactor(nScaleFactor);
116 cso.setEmbeddedCanvas((Canvas)cso.getEmbeddedCanvas().clone());
117 cso.getEmbeddedCanvas().setScaleFactor(nScaleFactor);
118 return cso;
121 @Override
122 public void setWidthScale(double factor)
124 super.setWidthScale(factor);
125 scaleFactor[0] = new Double(getWidthScale());
128 @Override
129 public void setHeightScale(double factor)
131 super.setHeightScale(factor);
132 scaleFactor[1] = new Double(getHeightScale());