Revision 19361 trunk/extensions/extRasterTools-SE/src/org/gvsig/raster/beans/canvas/layers/StraightLine.java
StraightLine.java | ||
---|---|---|
18 | 18 |
*/ |
19 | 19 |
package org.gvsig.raster.beans.canvas.layers; |
20 | 20 |
|
21 |
import java.awt.BasicStroke; |
|
22 | 21 |
import java.awt.Color; |
23 | 22 |
import java.awt.Cursor; |
24 | 23 |
import java.awt.Graphics; |
25 |
import java.awt.Graphics2D;
|
|
24 |
import java.awt.Image;
|
|
26 | 25 |
import java.awt.Point; |
27 |
import java.awt.Stroke;
|
|
26 |
import java.awt.Toolkit;
|
|
28 | 27 |
import java.awt.event.MouseEvent; |
28 |
import java.awt.image.MemoryImageSource; |
|
29 | 29 |
import java.util.ArrayList; |
30 | 30 |
|
31 | 31 |
import org.gvsig.raster.beans.canvas.DrawableElement; |
... | ... | |
115 | 115 |
g.setColor(color); |
116 | 116 |
g.drawRect((int) valueToPixelX(x) - (width >> 1), (int) valueToPixelY(y) - (width >> 1), (int) width, (int)width); |
117 | 117 |
} |
118 |
|
|
119 |
/** |
|
120 |
* Dibuja el cursor del raton |
|
121 |
* @param g |
|
122 |
*/ |
|
123 |
protected void paintCursor(Graphics g) { |
|
124 |
g.setColor(Color.white); |
|
125 |
g.drawLine(valueToPixelX(x) - 6, valueToPixelY(y), valueToPixelX(x) + 6, valueToPixelY(y)); |
|
126 |
g.drawLine(valueToPixelX(x), valueToPixelY(y) - 6, valueToPixelX(x), valueToPixelY(y) + 6); |
|
127 |
} |
|
118 | 128 |
|
119 | 129 |
/** |
120 | 130 |
* Informa de si el punto pasado por par?metro cae dentro del cuadro o no |
... | ... | |
162 | 172 |
/** |
163 | 173 |
* Lista de cuadrados que intersectan con la recta |
164 | 174 |
*/ |
165 |
private ArrayList listSquare = new ArrayList(); |
|
166 |
private int pointDragged = -1; |
|
175 |
private ArrayList listSquare = new ArrayList(); |
|
176 |
private int pointDragged = -1; |
|
177 |
Cursor transparentCursor = null; |
|
167 | 178 |
|
168 | 179 |
/** |
169 | 180 |
* Constructor. Asigna el color |
170 | 181 |
* @param c |
171 | 182 |
*/ |
172 | 183 |
public StraightLine(Color c) { |
184 |
int[] pixels = new int[16 * 16]; |
|
185 |
Image image = Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(16, 16, pixels, 0, 16)); |
|
186 |
transparentCursor = Toolkit.getDefaultToolkit().createCustomCursor(image, new Point(0, 0), "invisibleCursor"); |
|
187 |
|
|
173 | 188 |
setColor(c); |
174 | 189 |
listSquare.add(new Square(0.0D, 0.0D)); |
175 | 190 |
listSquare.add(new Square(1.0D, 1.0D)); |
... | ... | |
191 | 206 |
// Dibujamos una l?nea desde un punto hasta el siguiente |
192 | 207 |
Square square = null; |
193 | 208 |
Square lastSquare = null; |
194 |
|
|
195 | 209 |
for (int i = 0; i < listSquare.size(); i++) { |
196 | 210 |
lastSquare = square; |
197 | 211 |
square = ((Square) listSquare.get(i)); |
212 |
if (lastSquare != null) |
|
213 |
g.drawLine(lastSquare.getPixelX(), lastSquare.getPixelY(), square.getPixelX(), square.getPixelY()); |
|
214 |
} |
|
215 |
|
|
216 |
// Dibujamos los cuadrados de los puntos |
|
217 |
for (int i = 0; i < listSquare.size(); i++) { |
|
218 |
square = ((Square) listSquare.get(i)); |
|
198 | 219 |
square.setColor(color); |
199 |
// if (canvas.isMouse()) |
|
200 | 220 |
if (pointDragged != i) |
201 | 221 |
square.paint(g); |
202 |
|
|
203 |
if (lastSquare != null) |
|
204 |
g.drawLine(lastSquare.getPixelX(), lastSquare.getPixelY(), square.getPixelX(), square.getPixelY()); |
|
222 |
else |
|
223 |
square.paintCursor(g); |
|
205 | 224 |
} |
206 | 225 |
} |
207 | 226 |
|
... | ... | |
273 | 292 |
public boolean mouseReleased(MouseEvent e) { |
274 | 293 |
pointDragged = -1; |
275 | 294 |
canvas.repaint(); |
295 |
canvas.callDataChanged("line", this); |
|
276 | 296 |
return true; |
277 | 297 |
} |
278 | 298 |
|
... | ... | |
281 | 301 |
*/ |
282 | 302 |
public boolean mouseDragged(MouseEvent e) { |
283 | 303 |
if (pointDragged >= 0) { |
284 |
canvas.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
|
|
304 |
canvas.setCursor(transparentCursor);
|
|
285 | 305 |
int minX = canvas.getCanvasMinX(); |
286 | 306 |
int minY = canvas.getCanvasMinY(); |
287 | 307 |
int maxX = canvas.getCanvasMaxX(); |
... | ... | |
335 | 355 |
} finally { |
336 | 356 |
// Siempre repintamos |
337 | 357 |
canvas.repaint(); |
358 |
canvas.callDataDragged("line", this); |
|
338 | 359 |
} |
339 | 360 |
return false; |
340 | 361 |
} |
Also available in: Unified diff