46 |
46 |
import org.gvsig.fmap.geom.Geometry;
|
47 |
47 |
import org.gvsig.fmap.geom.handler.Handler;
|
48 |
48 |
import org.gvsig.fmap.geom.primitive.Curve;
|
|
49 |
import org.gvsig.fmap.geom.primitive.Envelope;
|
49 |
50 |
import org.gvsig.fmap.geom.primitive.GeneralPathX;
|
50 |
51 |
import org.gvsig.fmap.geom.type.GeometryType;
|
51 |
52 |
import org.gvsig.fmap.mapcontext.ViewPort;
|
|
53 |
import org.gvsig.fmap.mapcontext.layers.SpatialCache;
|
|
54 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
|
52 |
55 |
import org.gvsig.fmap.mapcontrol.MapControlDrawer;
|
53 |
56 |
import org.gvsig.tools.dispose.DisposableIterator;
|
54 |
57 |
|
... | ... | |
195 |
198 |
Geometry geom =
|
196 |
199 |
(feature.getDefaultGeometry())
|
197 |
200 |
.cloneGeometry();
|
198 |
|
Rectangle2D originalRec = geom.getBounds2D();
|
|
201 |
Envelope original_env = geom.getEnvelope();
|
199 |
202 |
Geometry g =
|
200 |
203 |
createPoint(
|
201 |
|
originalRec.getX()
|
|
204 |
original_env.getMinimum(0)
|
202 |
205 |
+ operations.getDistColumns()
|
203 |
|
* columns, originalRec.getY()
|
|
206 |
* columns, original_env.getMinimum(1)
|
204 |
207 |
+ operations.getDistRows() * rows);
|
205 |
208 |
AffineTransform at = new AffineTransform();
|
206 |
209 |
at.rotate(
|
207 |
210 |
Math.toRadians(operations.getRotation()),
|
208 |
|
originalRec.getMinX(),
|
209 |
|
originalRec.getMinY());
|
|
211 |
original_env.getMinimum(0),
|
|
212 |
original_env.getMinimum(1));
|
210 |
213 |
g.transform(at);
|
|
214 |
Envelope new_env = g.getEnvelope();
|
211 |
215 |
Point2D pDest =
|
212 |
|
new Point2D.Double(g.getBounds2D().getX(),
|
213 |
|
g.getBounds2D().getY());
|
|
216 |
new Point2D.Double(
|
|
217 |
new_env.getMinimum(0),
|
|
218 |
new_env.getMinimum(1));
|
214 |
219 |
|
215 |
|
double difX = pDest.getX() - originalRec.getX();
|
216 |
|
double difY = pDest.getY() - originalRec.getY();
|
|
220 |
double difX = pDest.getX() - original_env.getMinimum(0);
|
|
221 |
double difY = pDest.getY() - original_env.getMinimum(1);
|
217 |
222 |
Handler[] handlers =
|
218 |
223 |
geom.getHandlers(Geometry.SELECTHANDLER);
|
219 |
224 |
for (int j = 0; j < handlers.length; j++) {
|
... | ... | |
248 |
253 |
(feature.getDefaultGeometry()).cloneGeometry();
|
249 |
254 |
|
250 |
255 |
if (!operations.isRotateElements()) {
|
251 |
|
Rectangle2D originalRec = geom.getBounds2D();
|
|
256 |
Envelope orig_env = geom.getEnvelope();
|
252 |
257 |
Geometry g =
|
253 |
|
createPoint(originalRec.getX(),
|
254 |
|
originalRec.getY());
|
|
258 |
createPoint(
|
|
259 |
orig_env.getMinimum(0),
|
|
260 |
orig_env.getMinimum(1));
|
255 |
261 |
AffineTransform at = new AffineTransform();
|
256 |
262 |
at.rotate(Math.toRadians(rotation * numElem),
|
257 |
263 |
operations.getPositionX(),
|
258 |
264 |
operations.getPositionY());
|
259 |
265 |
g.transform(at);
|
|
266 |
|
|
267 |
Envelope new_env = g.getEnvelope();
|
|
268 |
|
260 |
269 |
Point2D pDest =
|
261 |
|
new Point2D.Double(g.getBounds2D().getX(),
|
262 |
|
g.getBounds2D().getY());
|
|
270 |
new Point2D.Double(
|
|
271 |
new_env.getMinimum(0),
|
|
272 |
new_env.getMinimum(1));
|
263 |
273 |
|
264 |
|
double difX = pDest.getX() - originalRec.getX();
|
265 |
|
double difY = pDest.getY() - originalRec.getY();
|
|
274 |
double difX = pDest.getX() - orig_env.getMinimum(0);
|
|
275 |
double difY = pDest.getY() - orig_env.getMinimum(1);
|
266 |
276 |
Handler[] handlers =
|
267 |
277 |
geom.getHandlers(Geometry.SELECTHANDLER);
|
268 |
278 |
for (int j = 0; j < handlers.length; j++) {
|
... | ... | |
273 |
283 |
} else {// Cuando los elemtos rotan al mismo tiempo
|
274 |
284 |
// que se van a?adiendo.
|
275 |
285 |
|
276 |
|
Rectangle2D originalRec = geom.getBounds2D();
|
|
286 |
Envelope orig_env = geom.getEnvelope();
|
277 |
287 |
AffineTransform at = new AffineTransform();
|
278 |
288 |
at.rotate(Math.toRadians(rotation * numElem),
|
279 |
289 |
operations.getPositionX(),
|
280 |
290 |
operations.getPositionY());
|
281 |
291 |
geom.transform(at);
|
|
292 |
|
|
293 |
Envelope new_env = geom.getEnvelope();
|
|
294 |
|
282 |
295 |
Point2D pDest =
|
283 |
|
new Point2D.Double(geom.getBounds2D()
|
284 |
|
.getX(), geom.getBounds2D().getY());
|
|
296 |
new Point2D.Double(
|
|
297 |
new_env.getMinimum(0),
|
|
298 |
new_env.getMinimum(1)
|
|
299 |
);
|
285 |
300 |
|
286 |
|
double difX = pDest.getX() - originalRec.getX();
|
287 |
|
double difY = pDest.getY() - originalRec.getY();
|
|
301 |
double difX = pDest.getX() - orig_env.getMinimum(0);
|
|
302 |
double difY = pDest.getY() - orig_env.getMinimum(1);
|
288 |
303 |
Handler[] handlers =
|
289 |
304 |
geom.getHandlers(Geometry.SELECTHANDLER);
|
290 |
305 |
for (int j = 0; j < handlers.length; j++) {
|
... | ... | |
304 |
319 |
}
|
305 |
320 |
}
|
306 |
321 |
}
|
|
322 |
|
|
323 |
// =================================================
|
|
324 |
/*
|
|
325 |
* Inserting geometries of matrix
|
|
326 |
*/
|
|
327 |
SpatialCache spatialCache =
|
|
328 |
((FLyrVect) vle.getLayer()).getSpatialCache();
|
|
329 |
|
|
330 |
for (int i=0; i<selectedRowAux.size(); i++) {
|
|
331 |
EditableFeature efeat = (EditableFeature) selectedRowAux.get(i);
|
|
332 |
featureStore.insert(efeat);
|
|
333 |
Geometry ngeom = efeat.getDefaultGeometry();
|
|
334 |
Envelope envelope = ngeom.getEnvelope();
|
|
335 |
/*
|
|
336 |
* Updating spatial cache
|
|
337 |
*/
|
|
338 |
spatialCache.insert(envelope, ngeom);
|
|
339 |
}
|
|
340 |
|
|
341 |
// =================================================
|
|
342 |
|
307 |
343 |
featureStore.endEditingGroup();
|
308 |
344 |
// vle.setSelectionCache(VectorialLayerEdited.SAVEPREVIOUS,
|
309 |
345 |
// selectedRowAux);
|