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. |