|
From: <de...@us...> - 2014-02-03 22:08:02
|
Revision: 8599
http://sourceforge.net/p/fudaa/svn/8599
Author: deniger
Date: 2014-02-03 22:07:59 +0000 (Mon, 03 Feb 2014)
Log Message:
-----------
CRUE-610
Modified Paths:
--------------
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTransfoLib.java
trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueGeometry.java
trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZScene.java
Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTransfoLib.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTransfoLib.java 2014-02-03 22:07:27 UTC (rev 8598)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGTransfoLib.java 2014-02-03 22:07:59 UTC (rev 8599)
@@ -231,7 +231,7 @@
double[] newX = new double[nb];
double[] newY = new double[nb];
final double min = _c.getModel().getX(_min);
- final CtuluNumberFormatFortran ft = new CtuluNumberFormatFortran(6);
+ final CtuluNumberFormatFortran ft = new CtuluNumberFormatFortran(10);
if (_max - _min == 1) {
final double step = (_c.getModel().getX(_max) - min) / (nb + 1);
for (int i = 1; i <= nb; i++) {
Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueGeometry.java
===================================================================
--- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueGeometry.java 2014-02-03 22:07:27 UTC (rev 8598)
+++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueGeometry.java 2014-02-03 22:07:59 UTC (rev 8599)
@@ -9,6 +9,7 @@
import com.memoire.bu.BuLib;
import com.memoire.fu.FuLog;
+import com.vividsolutions.jts.algorithm.PointInRing;
import com.vividsolutions.jts.algorithm.SIRtreePointInRing;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.CoordinateSequence;
@@ -60,14 +61,24 @@
import org.fudaa.ebli.trace.TraceSurface;
/**
- * Un calque g\xE9rant des g\xE9om\xE9tries quelconques, \xE0 un niveau global ou atomique.<p> Le niveau atomique des g\xE9om\xE9tries est le niveau sommet. Le calque
- * s'appuie sur un mod\xE8le {@link ZModeleGeometry}.
+ * Un calque g\xE9rant des g\xE9om\xE9tries quelconques, \xE0 un niveau global ou atomique.<p>
+ * Le niveau atomique des g\xE9om\xE9tries est le niveau sommet. Le calque s'appuie sur un mod\xE8le {@link ZModeleGeometry}.
*
* @author Bertrand Marchand
* @version $Id$
*/
public class ZCalqueGeometry<M extends ZModeleGeometry> extends ZCalqueAffichageDonneesLineAbstract implements ZModelGeometryListener {
+ private boolean selectClosedLineInterior;
+
+ public void setSelectClosedLineInterior(boolean selectClosedLineInterior) {
+ this.selectClosedLineInterior = selectClosedLineInterior;
+ }
+
+ public boolean isSelectClosedLineInterior() {
+ return selectClosedLineInterior;
+ }
+
protected void initTraceForAtomics(TraceIconModel iconeModel, int idxPoly, int idxVertexInPoly) {
}
@@ -582,8 +593,6 @@
setLabelsForegroundColor((Color) _p.get(ZCalqueGeometryLabelConfigure.PROPERTY_LABELS_FOREGROUND));
}
-
-
}
}
@@ -854,7 +863,6 @@
}
initTrace(iconeModel, i);
-
final GrPoint ptDest = new GrPoint();
for (int j = nbPoints - 1; j >= 0; j--) {
//l'icone ne doit pas \xEAtre paint:
@@ -913,7 +921,6 @@
continue;
}
-
final int nbPoints = modele_.getNbPointForGeometry(i);
if (nbPoints <= 0) {
continue;
@@ -1011,9 +1018,6 @@
boolean bferm = modele_.isGeometryFermee(i);
boolean breli = modele_.isGeometryReliee(i);
-
-
-
final GrPoint ptOri = new GrPoint();
modele_.point(ptOri, i, nbPoints - 1);
ptOri.autoApplique2D(versEcran);
@@ -1142,6 +1146,17 @@
r.setSelectionInterval(i, i);
return r;
}
+ if (selectClosedLineInterior) {
+ final Geometry geometry = modele_.getGeomData().getGeometry(i);
+ if (geometry instanceof LinearRing) {
+ LinearRing ring = (LinearRing) geometry;
+ if (GISLib.createPolygoneTester(ring).isInside(new Coordinate(_pt.x_, _pt.y_))) {
+ final CtuluListSelection r = new CtuluListSelection(1);
+ r.setSelectionInterval(i, i);
+ return r;
+ }
+ }
+ }
}
} else {
for (int j = modele_.getNbPointForGeometry(i) - 1; j >= 0; j--) {
@@ -1307,8 +1322,7 @@
}
/**
- * Renvoie sous forme de liste de selection les sommets selectionnes pour la polyligne
- * <code>_poly</code>.
+ * Renvoie sous forme de liste de selection les sommets selectionnes pour la polyligne <code>_poly</code>.
*
* @param _poly Le point pour la selection
* @return la liste des indexs selectionnes (ou null si aucune selection)
@@ -1551,7 +1565,8 @@
} else if (modeleDonnees().isGeometryFermee(i)) {
final Coordinate[] cs = new Coordinate[nbSelected];
int csi = 0;
- final CoordinateSequence seq = ((GISCoordinateSequenceContainerInterface) modeleDonnees().getGeomData().getGeometry(i)).getCoordinateSequence();
+ final CoordinateSequence seq = ((GISCoordinateSequenceContainerInterface) modeleDonnees().getGeomData().getGeometry(i)).
+ getCoordinateSequence();
for (int j = res[0]; j < nbPointForLigne; j++) {
cs[csi++] = seq.getCoordinate(j);
}
Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZScene.java
===================================================================
--- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZScene.java 2014-02-03 22:07:27 UTC (rev 8598)
+++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZScene.java 2014-02-03 22:07:59 UTC (rev 8599)
@@ -16,6 +16,7 @@
import gnu.trove.TIntObjectIterator;
import java.awt.Graphics2D;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashSet;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
@@ -578,6 +579,16 @@
return b;
}
+ boolean useSelectedLayerFirstForSelection = true;
+
+ public void setUseSelectedLayerFirstForSelection(boolean useSelectedLayerFirstForSelection) {
+ this.useSelectedLayerFirstForSelection = useSelectedLayerFirstForSelection;
+ }
+
+ public boolean isUseSelectedLayerFirstForSelection() {
+ return useSelectedLayerFirstForSelection;
+ }
+
/**
* Permet de modifier la selection de la scene \xE0 partir d'un selection ponctuelle. Le premier objet trouv\xE9 interrompt la s\xE9lection.
*
@@ -593,7 +604,7 @@
}
selectionUpdatedFromScene = true;
boolean ret = false;
- for (ZCalqueAffichageDonneesInterface cq : getTargetLayers()) {
+ for (ZCalqueAffichageDonneesInterface cq : getTargetLayers(useSelectedLayerFirstForSelection)) {
if (cq.changeSelection(_pointReel, _tolerancePixel, _action)) {
ret = true;
break;
@@ -617,7 +628,7 @@
public boolean changeSelection(LinearRing _p, int _action, int _mode) {
boolean b = false;
selectionUpdatedFromScene = true;
- for (ZCalqueAffichageDonneesInterface cq : getTargetLayers()) {
+ for (ZCalqueAffichageDonneesInterface cq : getTargetLayers(useSelectedLayerFirstForSelection)) {
b |= cq.changeSelection(_p, _action, _mode);
}
fireSelectionEvent();
@@ -628,7 +639,7 @@
public boolean changeSelection(LinearRing[] _p, int _action, int _mode) {
boolean b = false;
selectionUpdatedFromScene = true;
- for (ZCalqueAffichageDonneesInterface cq : getTargetLayers()) {
+ for (ZCalqueAffichageDonneesInterface cq : getTargetLayers(useSelectedLayerFirstForSelection)) {
b |= cq.changeSelection(_p, _action, _mode);
}
fireSelectionEvent();
@@ -646,7 +657,7 @@
public boolean changeSelection(ZSceneSelection _selection, int _action) {
selectionUpdatedFromScene = true;
boolean b = false;
- for (ZCalqueAffichageDonneesInterface cq : getTargetLayers()) {
+ for (ZCalqueAffichageDonneesInterface cq : getTargetLayers(useSelectedLayerFirstForSelection)) {
EbliListeSelectionMultiInterface sel = _selection.getLayerListSelectionMulti(cq);
b |= cq.changeSelection(sel, _action);
}
@@ -656,8 +667,9 @@
}
/**
- * Retourne la selection pour le point donn\xE9. <p> <b>Remarque:</b> Uniquement des sommets pour le moment, et en tenant compte du fait que la
- * selection est restreinte a un calque ou pas.
+ * Retourne la selection pour le point donn\xE9.
+ * <p>
+ * <b>Remarque:</b> Uniquement des sommets pour le moment, et en tenant compte du fait que la selection est restreinte a un calque ou pas.
*
* @param _pt Le point donn\xE9.
* @param _tolerance La tol\xE9rance, en pixels.
@@ -945,15 +957,20 @@
// selection_=null;
}
+ public ZCalqueAffichageDonneesInterface[] getTargetLayers() {
+ return getTargetLayers(true);
+
+ }
+
/**
* Retourne les calques cibles, soit tous les calques de donn\xE9es si global, soit le calque actif si restreint, soit [0] si restreint et non calque
* de donn\xE9es.
*
* @return Les calques cibles.
*/
- public ZCalqueAffichageDonneesInterface[] getTargetLayers() {
+ public ZCalqueAffichageDonneesInterface[] getTargetLayers(boolean selectedFirst) {
if (!isRestrictedToCalqueActif()) {
- return getAllLayersWithSelectedFirst();
+ return selectedFirst ? getAllLayersWithSelectedFirst() : getAllLayers();
} else if (treeModel_.getSelectedCalque() instanceof ZCalqueAffichageDonneesInterface) {
return new ZCalqueAffichageDonneesInterface[]{(ZCalqueAffichageDonneesInterface) treeModel_.getSelectedCalque()};
} else {
@@ -982,26 +999,23 @@
/**
* Retourne tous les calques de donn\xE9es contenus dans la scene, en mettant en premier les calques selectionn\xE9s, puis dans l'ordre de parcours de
- * l'arbre des calques. <p> Notamment, sert pour la selection de sommets/g\xE9om\xE9tries. TODO : Devrait en toute logique remplacer getAllLayers().
+ * l'arbre des calques.
+ * <p>
+ * Notamment, sert pour la selection de sommets/g\xE9om\xE9tries. TODO : Devrait en toute logique remplacer getAllLayers().
*
* @return Les calques de donn\xE9es.
*/
public ZCalqueAffichageDonneesInterface[] getAllLayersWithSelectedFirst() {
- ArrayList<BCalque> lcqs = new ArrayList<BCalque>();
- for (BCalque cq : treeModel_.getRootCalque().getTousCalques()) {
- if (cq instanceof ZCalqueAffichageDonneesInterface) {
- lcqs.add(cq);
- }
- }
+ ArrayList<ZCalqueAffichageDonneesInterface> lcqs = new ArrayList<ZCalqueAffichageDonneesInterface>();
+ lcqs.addAll(Arrays.<ZCalqueAffichageDonneesInterface>asList(getAllLayers()));
BCalque[] cqsel = treeModel_.getSelection();
for (int i = 0; i < cqsel.length; i++) {
if (cqsel[i] instanceof ZCalqueAffichageDonneesInterface) {
- lcqs.remove(cqsel[i]);
- lcqs.add(i, cqsel[i]);
+ lcqs.remove((ZCalqueAffichageDonneesInterface) cqsel[i]);
+ lcqs.add(i, (ZCalqueAffichageDonneesInterface) cqsel[i]);
}
}
- cqs_ = lcqs.toArray(new ZCalqueAffichageDonneesInterface[0]);
- return cqs_;
+ return lcqs.toArray(new ZCalqueAffichageDonneesInterface[0]);
}
/*
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|