|
From: <bma...@us...> - 2008-07-17 10:56:53
|
Revision: 3692
http://fudaa.svn.sourceforge.net/fudaa/?rev=3692&view=rev
Author: bmarchan
Date: 2008-07-17 10:56:03 +0000 (Thu, 17 Jul 2008)
Log Message:
-----------
Le support de localisations triable suivant X utilis?\195?\169 par le package d'interpolation est g?\195?\169n?\195?\169ralis?\195?\169 pour ?\195?\170tre utilis?\195?\169 en dehors.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportGISAdapter.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportPoint.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/bilinear/InterpolationBilinearSupportSorted.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/bilinear/InterpolatorBilinear.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/test/org/fudaa/ctulu/interpolation/TestJInterpolation.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/ef/EfGridDataInterpolationValuesAdapter.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/ef/interpolation/EfInterpolationGridSupportAdapter.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/test/org/fudaa/dodico/h2d/TestJMaillage.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportCoordinate.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportLocationI.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportLocationXYComparator.java
Removed Paths:
-------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportLocationI.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportGISAdapter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportGISAdapter.java 2008-07-17 10:41:09 UTC (rev 3691)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportGISAdapter.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -18,7 +18,7 @@
* @author Fred Deniger
* @version $Id: InterpolationSupportGISAdapter.java,v 1.2 2007-06-11 13:03:29 deniger Exp $
*/
-public class InterpolationSupportGISAdapter implements InterpolationSupportLocationI, InterpolationSupportValuesI {
+public class InterpolationSupportGISAdapter implements SupportLocationI, InterpolationSupportValuesI {
final GISDataModel model_;
final TObjectIntHashMap attInt_;
Deleted: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportLocationI.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportLocationI.java 2008-07-17 10:41:09 UTC (rev 3691)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportLocationI.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -1,34 +0,0 @@
-/*
- * @creation 4 f\xE9vr. 2004
- * @modification $Date: 2007-06-05 08:57:42 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.ctulu.interpolation;
-
-/**
- * @author deniger
- * @version $Id: InterpolationSupportLocationI.java,v 1.1 2007-06-05 08:57:42 deniger Exp $
- */
-public interface InterpolationSupportLocationI {
-
- /**
- * @return le nombre de points
- */
- int getPtsNb();
-
- /**
- * @param _i indice
- * @return x en _i
- */
- double getPtX(int _i);
-
- /**
- * @param _i indice
- * @return y en _i
- */
- double getPtY(int _i);
-
-
-}
\ No newline at end of file
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportPoint.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportPoint.java 2008-07-17 10:41:09 UTC (rev 3691)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportPoint.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -14,7 +14,7 @@
* @author Fred Deniger
* @version $Id: InterpolationSupportPoint.java,v 1.2 2007-06-11 13:03:29 deniger Exp $
*/
-public class InterpolationSupportPoint implements InterpolationSupportLocationI, InterpolationSupportValuesI {
+public class InterpolationSupportPoint implements SupportLocationI, InterpolationSupportValuesI {
final GISPoint[] list_;
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportCoordinate.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportCoordinate.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportCoordinate.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -0,0 +1,45 @@
+/*
+ * @creation 22 avr. 2005
+ * @modification $Date: 2007-06-11 13:03:29 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ctulu.interpolation;
+
+import org.fudaa.ctulu.CtuluVariable;
+import org.fudaa.ctulu.gis.GISPoint;
+
+import com.vividsolutions.jts.geom.Coordinate;
+
+/**
+ * Un support de location \xE0 partir de coordonn\xE9es {@link Coordinate}
+ * @author Bertrand Marchand
+ * @version $Id: InterpolationSupportPoint.java,v 1.2 2007-06-11 13:03:29 deniger Exp $
+ */
+public class SupportCoordinate implements SupportLocationI, InterpolationSupportValuesI {
+
+ final Coordinate[] list_;
+
+ public SupportCoordinate(final Coordinate[] _list) {
+ list_ = _list;
+ }
+
+ public int getPtsNb() {
+ return list_.length;
+ }
+
+ public double getPtX(final int _i) {
+ return list_[_i].x;
+ }
+
+ public double getPtY(final int _i) {
+ return list_[_i].y;
+ }
+
+ public double getV(CtuluVariable _var, int _ptIdx) {
+ /* _var n'est pas utilis\xE9e. */
+ return list_[_ptIdx].z;
+ }
+
+}
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportCoordinate.java
___________________________________________________________________
Added: svn:eol-style
+ native
Copied: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportLocationI.java (from rev 3624, branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportLocationI.java)
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportLocationI.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportLocationI.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -0,0 +1,34 @@
+/*
+ * @creation 4 f\xE9vr. 2004
+ * @modification $Date: 2007-06-05 08:57:42 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ctulu.interpolation;
+
+/**
+ * @author deniger
+ * @version $Id: InterpolationSupportLocationI.java,v 1.1 2007-06-05 08:57:42 deniger Exp $
+ */
+public interface SupportLocationI {
+
+ /**
+ * @return le nombre de points
+ */
+ int getPtsNb();
+
+ /**
+ * @param _i indice
+ * @return x en _i
+ */
+ double getPtX(int _i);
+
+ /**
+ * @param _i indice
+ * @return y en _i
+ */
+ double getPtY(int _i);
+
+
+}
\ No newline at end of file
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportLocationXYComparator.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportLocationXYComparator.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportLocationXYComparator.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -0,0 +1,66 @@
+/*
+ * @creation 16 juil. 2008
+ * @modification $Date:$
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.ctulu.interpolation;
+
+import java.util.Comparator;
+
+/**
+ * Un comparateur de coordonn\xE9es XY d'un support. Utilis\xE9 pour trier.
+ * @author Bertrand Marchand
+ * @version $Id:$
+ */
+public class SupportLocationXYComparator implements Comparator<Integer> {
+
+ final SupportLocationI srcData_;
+
+ /**
+ * @param _data
+ */
+ public SupportLocationXYComparator(final SupportLocationI _data) {
+ super();
+ srcData_ = _data;
+ }
+
+ /**
+ * Compare les coordonn\xE9es d'un point _idx avec les coordonn\xE9es _x2, y2.
+ * @param _idx Le point a comparer.
+ * @param _x2 Le x a comparer.
+ * @param _y2 Le y a comparer.
+ * @return -1 : Si point _idx a coordonn\xE9e X inf\xE9rieur. 1 : Si point a coordonn\xE9e X sup\xE9rieur.
+ * 0 : Si m\xEAme coordonn\xE9es.
+ */
+ public int compare(final int _idx, final double _x2, final double _y2) {
+ final double x1 = srcData_.getPtX(_idx);
+ if (x1 < _x2) {
+ return -1;
+ }
+ if (x1 > _x2) {
+ return 1;
+ }
+ final double y1 = srcData_.getPtY(_idx);
+ if (y1 < _y2) {
+ return -1;
+ }
+ if (y1 > _y2) {
+ return 1;
+ }
+ return 0;
+ }
+
+ public int compare(final int _o1, final int _o2) {
+ if (_o1 == _o2) {
+ return 0;
+ }
+ return compare(_o1, srcData_.getPtX(_o2), srcData_.getPtY(_o2));
+ }
+
+ public int compare(final Integer _o1, final Integer _o2) {
+ return compare(_o1.intValue(),_o2.intValue());
+ }
+
+}
\ No newline at end of file
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/SupportLocationXYComparator.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/bilinear/InterpolationBilinearSupportSorted.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/bilinear/InterpolationBilinearSupportSorted.java 2008-07-17 10:41:09 UTC (rev 3691)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/bilinear/InterpolationBilinearSupportSorted.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -12,7 +12,8 @@
import org.fudaa.ctulu.ProgressionInterface;
import org.fudaa.ctulu.ProgressionUpdater;
-import org.fudaa.ctulu.interpolation.InterpolationSupportLocationI;
+import org.fudaa.ctulu.interpolation.SupportLocationI;
+import org.fudaa.ctulu.interpolation.SupportLocationXYComparator;
/**
* Un classe representant une source pour une interpolation des plus proches voisins.
@@ -22,50 +23,7 @@
*/
public final class InterpolationBilinearSupportSorted {
- private final static class ComparatorIdx implements Comparator {
-
- final InterpolationSupportLocationI srcData_;
-
- /**
- * @param _data
- */
- public ComparatorIdx(final InterpolationSupportLocationI _data) {
- super();
- srcData_ = _data;
- }
-
- public int compare(final int _idx, final double _x2, final double _y2) {
- final double x1 = srcData_.getPtX(_idx);
- if (x1 < _x2) {
- return -1;
- }
- if (x1 > _x2) {
- return 1;
- }
- final double y1 = srcData_.getPtY(_idx);
- if (y1 < _y2) {
- return -1;
- }
- if (y1 > _y2) {
- return 1;
- }
- return 0;
- }
-
- public int compare(final int _o1, final int _o2) {
- if (_o1 == _o2) {
- return 0;
- }
- return compare(_o1, srcData_.getPtX(_o2), srcData_.getPtY(_o2));
- }
-
- public int compare(final Object _o1, final Object _o2) {
- return compare(((Integer) _o1).intValue(), ((Integer) _o2).intValue());
- }
-
- }
-
- public static InterpolationBilinearSupportSorted buildSortedSrc(final InterpolationSupportLocationI _src,
+ public static InterpolationBilinearSupportSorted buildSortedSrc(final SupportLocationI _src,
final ProgressionInterface _prog) {
final Integer[] idxs = new Integer[_src.getPtsNb()];
final ProgressionUpdater up = new ProgressionUpdater(_prog);
@@ -74,7 +32,7 @@
idxs[i] = new Integer(i);
up.majAvancement();
}
- Arrays.sort(idxs, new ComparatorIdx(_src));
+ Arrays.sort(idxs, new SupportLocationXYComparator(_src));
final int[] sortedIdx = new int[idxs.length];
for (int i = idxs.length - 1; i >= 0; i--) {
sortedIdx[i] = idxs[i].intValue();
@@ -83,15 +41,15 @@
}
- final private ComparatorIdx comp_;
- InterpolationSupportLocationI ref_;
+ final private SupportLocationXYComparator comp_;
+ SupportLocationI ref_;
final int[] sortedIdx_;
- private InterpolationBilinearSupportSorted(final InterpolationSupportLocationI _ref, final int[] _sorted) {
+ private InterpolationBilinearSupportSorted(final SupportLocationI _ref, final int[] _sorted) {
ref_ = _ref;
sortedIdx_ = _sorted;
- comp_ = new ComparatorIdx(ref_);
+ comp_ = new SupportLocationXYComparator(ref_);
}
private int searchIdx(final double _x, final double _y) {
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/bilinear/InterpolatorBilinear.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/bilinear/InterpolatorBilinear.java 2008-07-17 10:41:09 UTC (rev 3691)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/bilinear/InterpolatorBilinear.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -20,7 +20,7 @@
import org.fudaa.ctulu.ProgressionUpdater;
import org.fudaa.ctulu.interpolation.InterpolationParameters;
import org.fudaa.ctulu.interpolation.InterpolationResultsHolderI;
-import org.fudaa.ctulu.interpolation.InterpolationSupportLocationI;
+import org.fudaa.ctulu.interpolation.SupportLocationI;
import org.fudaa.ctulu.interpolation.InterpolationSupportValuesI;
import org.fudaa.ctulu.interpolation.InterpolationTarget;
import org.fudaa.ctulu.interpolation.Interpolator;
@@ -33,7 +33,7 @@
double distance_;
InterpolationBilinearSupportSorted ref_;
- final InterpolationSupportLocationI init_;
+ final SupportLocationI init_;
boolean stop_;
/**
@@ -41,7 +41,7 @@
* @param _ref
* @param _results
*/
- public InterpolatorBilinear(final InterpolationSupportLocationI _ref) {
+ public InterpolatorBilinear(final SupportLocationI _ref) {
super();
init_ = _ref;
distance_ = -1;
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/test/org/fudaa/ctulu/interpolation/TestJInterpolation.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/test/org/fudaa/ctulu/interpolation/TestJInterpolation.java 2008-07-17 10:41:09 UTC (rev 3691)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/test/org/fudaa/ctulu/interpolation/TestJInterpolation.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -260,7 +260,7 @@
}
}
- static class InterpolationSrcAdapter implements InterpolationSupportValuesI, InterpolationSupportLocationI {
+ static class InterpolationSrcAdapter implements InterpolationSupportValuesI, SupportLocationI {
final double[] x_ = new double[] { 0, 1, 0, 1 };
final double[] y_ = new double[] { 0, 0, 1, 1 };
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/ef/EfGridDataInterpolationValuesAdapter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/ef/EfGridDataInterpolationValuesAdapter.java 2008-07-17 10:41:09 UTC (rev 3691)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/ef/EfGridDataInterpolationValuesAdapter.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -13,7 +13,7 @@
import org.fudaa.ctulu.CtuluVariable;
import org.fudaa.ctulu.collection.CtuluCollectionDouble;
-import org.fudaa.ctulu.interpolation.InterpolationSupportLocationI;
+import org.fudaa.ctulu.interpolation.SupportLocationI;
import org.fudaa.ctulu.interpolation.InterpolationSupportValuesMultiI;
/**
@@ -21,7 +21,7 @@
* @version $Id: EfGridDataInterpolationValuesAdapter.java,v 1.2 2007-06-11 13:04:05 deniger Exp $
*/
public class EfGridDataInterpolationValuesAdapter implements InterpolationSupportValuesMultiI,
- InterpolationSupportLocationI {
+ SupportLocationI {
final EfGridData data_;
final int tIdx_;
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/ef/interpolation/EfInterpolationGridSupportAdapter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/ef/interpolation/EfInterpolationGridSupportAdapter.java 2008-07-17 10:41:09 UTC (rev 3691)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/ef/interpolation/EfInterpolationGridSupportAdapter.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -8,7 +8,7 @@
package org.fudaa.dodico.ef.interpolation;
import org.fudaa.ctulu.CtuluVariable;
-import org.fudaa.ctulu.interpolation.InterpolationSupportLocationI;
+import org.fudaa.ctulu.interpolation.SupportLocationI;
import org.fudaa.ctulu.interpolation.InterpolationSupportValuesI;
import org.fudaa.dodico.ef.EfGridInterface;
@@ -17,7 +17,7 @@
* @author Fred Deniger
* @version $Id: EfInterpolationGridSupportAdapter.java,v 1.2 2007-06-11 13:04:06 deniger Exp $
*/
-public abstract class EfInterpolationGridSupportAdapter implements InterpolationSupportLocationI,
+public abstract class EfInterpolationGridSupportAdapter implements SupportLocationI,
InterpolationSupportValuesI {
final EfGridInterface grid_;
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/test/org/fudaa/dodico/h2d/TestJMaillage.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/test/org/fudaa/dodico/h2d/TestJMaillage.java 2008-07-17 10:41:09 UTC (rev 3691)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/test/org/fudaa/dodico/h2d/TestJMaillage.java 2008-07-17 10:56:03 UTC (rev 3692)
@@ -43,7 +43,7 @@
import org.fudaa.ctulu.gis.GISPoint;
import org.fudaa.ctulu.interpolation.InterpolationParameters;
import org.fudaa.ctulu.interpolation.InterpolationResultsHolderI;
-import org.fudaa.ctulu.interpolation.InterpolationSupportLocationI;
+import org.fudaa.ctulu.interpolation.SupportLocationI;
import org.fudaa.ctulu.interpolation.InterpolationSupportPoint;
import org.fudaa.ctulu.interpolation.InterpolationSupportValuesI;
import org.fudaa.ctulu.interpolation.TestJInterpolation;
@@ -818,7 +818,7 @@
assertTrue(mail_.getFrontiers().isSame(l.toNativeArray()));
}
- private static class GridRef implements InterpolationSupportLocationI, InterpolationSupportValuesI {
+ private static class GridRef implements SupportLocationI, InterpolationSupportValuesI {
final EfGridInterface g_;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-17 11:36:24
|
Revision: 3694
http://fudaa.svn.sourceforge.net/fudaa/?rev=3694&view=rev
Author: bmarchan
Date: 2008-07-17 11:36:00 +0000 (Thu, 17 Jul 2008)
Log Message:
-----------
Implementation de l'export vers Dunes g?\195?\169om?\195?\169trie
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOFileFormat.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOWriter.java
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOFileFormat.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOFileFormat.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOFileFormat.java 2008-07-17 11:36:00 UTC (rev 3694)
@@ -0,0 +1,61 @@
+/**
+ * @creation 11 f\xE9vr. 2004
+ * @modification $Date: 2007/05/04 13:47:27 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.dodico.dunes.io;
+
+import java.io.File;
+
+import org.fudaa.ctulu.CtuluIOOperationSynthese;
+import org.fudaa.ctulu.ProgressionInterface;
+import org.fudaa.ctulu.fileformat.FileFormatUnique;
+import org.fudaa.ctulu.fileformat.FileReadOperationAbstract;
+import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract;
+
+import org.fudaa.dodico.commun.DodicoLib;
+import org.fudaa.dodico.fichiers.FileFormatSoftware;
+import org.fudaa.dodico.h2d.type.H2dFileFormatType;
+
+/**
+ * Un format pour les fichiers de modelisation geometriques Dunes.
+ * @author Bertrand Marchand
+ * @version $Id: SinusxFileFormat.java,v 1.15 2007/05/04 13:47:27 deniger Exp $
+ */
+public final class DunesGEOFileFormat extends FileFormatUnique {
+
+ static final DunesGEOFileFormat INSTANCE = new DunesGEOFileFormat();
+
+ /**
+ * @return singleton
+ */
+ public static DunesGEOFileFormat getInstance() {
+ return INSTANCE;
+ }
+
+ private DunesGEOFileFormat() {
+ super(1);
+ extensions_ = new String[] { "geo" };
+ id_ = "DUNESGEO";
+ nom_ = "Dunes g\xE9ometrie";
+ description_ = DodicoLib.getS("Comporte les d\xE9finitions de points, polylignes et polygones");
+ software_ = FileFormatSoftware.REFLUX_IS;
+// type_ = : Geometrique => Autre
+ }
+
+ public FileReadOperationAbstract createReader() {
+ return null;
+// return new DunesGEOReader(this);
+ }
+
+ public CtuluIOOperationSynthese write(final File _f, final Object _source, final ProgressionInterface _prog) {
+ return super.write(_f, _source, _prog);
+ }
+
+ public FileWriteOperationAbstract createWriter() {
+ return new DunesGEOWriter(this);
+ }
+
+}
\ No newline at end of file
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOFileFormat.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOWriter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOWriter.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOWriter.java 2008-07-17 11:36:00 UTC (rev 3694)
@@ -0,0 +1,268 @@
+/*
+ * @creation 2002-11-21
+ * @modification $Date: 2007/05/04 13:47:27 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.dodico.dunes.io;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+import org.fudaa.ctulu.CtuluActivity;
+import org.fudaa.ctulu.ProgressionUpdater;
+import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
+import org.fudaa.ctulu.gis.GISDataModel;
+import org.fudaa.ctulu.gis.GISDataModelPointMultiPointAdapter;
+import org.fudaa.ctulu.gis.GISMultiPoint;
+import org.fudaa.dodico.fortran.FileOpWriterCharSimpleAbstract;
+import org.fudaa.dodico.fortran.FortranWriter;
+import org.fudaa.dodico.h2d.resource.H2dResource;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.CoordinateSequence;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.LineString;
+import com.vividsolutions.jts.geom.Point;
+
+/**
+ * Une classe pour ecrire des fichiers Dunes de mod\xE9lisation (.geo)
+ * @version $Id: SinusxWriter.java,v 1.24 2007/05/04 13:47:27 deniger Exp $
+ * @author Bertrand Marchand
+ */
+public class DunesGEOWriter extends FileOpWriterCharSimpleAbstract implements CtuluActivity {
+
+ final FileFormatVersionInterface v_;
+ boolean stop_;
+
+ public void stop() {
+ stop_ = true;
+ }
+
+ /**
+ * @param _v la version utilisee.
+ */
+ public DunesGEOWriter(final FileFormatVersionInterface _v) {
+ v_ = _v;
+ }
+
+ /**
+ * Ecriture des g\xE9om\xE9tries contenues dans les mod\xE8les. Les g\xE9om\xE9tries peuvent \xEAtre
+ * des points, des polylignes/polygones ou des multipoints. Chaque modele est cens\xE9 contenir
+ * le m\xEAme type de g\xE9om\xE9tries.<p>
+ *
+ * Les doublons de coordonn\xE9es (si X et Y sont equivalents) sont supprim\xE9s.
+ * @param _geometries Les mod\xE8les de g\xE9om\xE9tries
+ */
+ protected void internalWrite(final Object _o) {
+ if (!(_o instanceof GISDataModel[])) {
+ donneesInvalides(_o);
+ return;
+ }
+
+ GISDataModel[] mdls=(GISDataModel[])_o;
+ if (mdls == null) {
+ analyze_.addFatalError(H2dResource.getS("Les donn\xE9es sont nulles"));
+ return;
+ }
+
+ final ProgressionUpdater up = new ProgressionUpdater(progress_);
+ if (progress_ != null) {
+ progress_.setProgression(0);
+ }
+ up.majProgessionStateOnly();
+
+ Coordinate[] coords=null;
+
+ // Les coordonn\xE9es, d'abord la totalit\xE9, puis sans les doublons.
+ ArrayList<Coordinate> vcoords=new ArrayList<Coordinate>();
+ int nblig=0;
+
+ // Recuperation des coordonn\xE9es : d'abord les lignes...
+ GISDataModel[] mdlligs=filtreModels(mdls,1);
+ if (mdlligs.length==0) {
+ analyze_.addFatalError(H2dResource.getS("Aucune ligne trouv\xE9e"));
+ return;
+ }
+
+ for (int i=0; i<mdlligs.length; i++) {
+ GISDataModel mdl=mdlligs[i];
+ int nbgeo=mdl.getNumGeometries();
+ for (int j=0; j<nbgeo; j++) {
+ LineString g=(LineString)mdl.getGeometry(j);
+ int nbpt=g.getNumPoints();
+ nblig+=nbpt-1;
+ CoordinateSequence seq=g.getCoordinateSequence();
+ for (int k=0; k<nbpt; k++) {
+ vcoords.add(seq.getCoordinate(k));
+ }
+ }
+ }
+ if (stop_) return;
+ up.setValue(1,1,10,10);
+ up.majProgessionStateOnly();
+
+ // ...Ensuite les points
+ GISDataModel[] mdlpts=filtreModels(mdls,0);
+
+ for (int i=0; i<mdlpts.length; i++) {
+ GISDataModel mdl=mdlpts[i];
+ int nbgeo=mdl.getNumGeometries();
+ for (int j=0; j<nbgeo; j++) {
+ GISMultiPoint g=(GISMultiPoint)mdl.getGeometry(j);
+ int nbpt=g.getNumPoints();
+ CoordinateSequence seq=g.getCoordinateSequence();
+ for (int k=0; k<nbpt; k++) {
+ vcoords.add(seq.getCoordinate(k));
+ }
+ }
+ }
+ if (stop_) return;
+
+ coords=vcoords.toArray(new Coordinate[0]);
+ // Les indexs de coordonn\xE9es pour les lignes.
+ int[] idxs=new int[coords.length];
+ for (int i=0; i<idxs.length; i++) idxs[i]=i;
+
+ // Suppression des doublons (pas optimal, mais fonctionnel).
+ // Il serait plus efficace d'utiliser un tri suivant X pour supprimer les doublons.
+ // La difficult\xE9 une fois le tri fait est de retrouver l'indice des points pour les lignes.
+ up.setValue(100,coords.length,10,70);
+ int nbsup=0;
+ for (int i=0; i<coords.length; i++) {
+ up.majAvancement();
+ if (stop_) return;
+
+ if (coords[i]==null) {
+ nbsup++;
+ continue;
+ }
+ // Reindexation au fur et a mesure des suppressions.
+ idxs[i]-=nbsup;
+
+ for (int j=i+1; j<coords.length; j++) {
+ if (coords[j]==null) continue;
+ if (coords[i].distance(coords[j])<1.e-6) {
+ idxs[j]=idxs[i];
+ coords[j]=null;
+ }
+ }
+ }
+
+ int nbtrous=0;
+ int nbreg=0;
+ up.setValue(20, coords.length-nbsup+nblig+nbtrous+nbreg, 80, 20);
+
+ // Ecriture des infos. Repris de DParametresDunes.
+ final FortranWriter fout = new FortranWriter(out_);
+ try {
+ int[] fmt;
+
+ /** Ecriture des coordonnees des points * */
+ fmt = new int[] { 8, 8 };
+ fout.intField(1, 1);
+ fout.intField(0, coords.length-nbsup);
+ fout.writeFields(fmt);
+ fmt = new int[] { 8, 24, 24, 24 };
+ for (int i = 0; i < coords.length; i++) {
+ if (stop_) return;
+ if (coords[i]==null) continue;
+ fout.doubleField(3, coords[i].z);
+ fout.intField(0, idxs[i]+1);
+ fout.doubleField(1, coords[i].x);
+ fout.doubleField(2, coords[i].y);
+ fout.writeFields(fmt);
+ up.majAvancement();
+ }
+
+ /** Ecriture des polylignes * */
+ fmt = new int[] { 8, 8 };
+ fout.intField(1, 0);
+ fout.intField(0, nblig);
+ fout.writeFields(fmt);
+ fmt = new int[] { 8, 8, 8 };
+ int ilig=0;
+ for (int i=0; i<mdlligs.length; i++) {
+ if (stop_) return;
+ GISDataModel mdl=mdlligs[i];
+ int nbgeo=mdl.getNumGeometries();
+ for (int j=0; j<nbgeo; j++) {
+ LineString g=(LineString)mdl.getGeometry(j);
+ int nbpt=g.getNumPoints();
+ for (int k=1; k<nbpt; k++) {
+ int index1=idxs[ilig]+1;
+ int index2=idxs[ilig+1]+1;
+ fout.intField(2, index2);
+ fout.intField(0, ilig+1);
+ fout.intField(1, index1);
+ fout.writeFields(fmt);
+ ilig++;
+ up.majAvancement();
+ }
+ }
+ }
+
+ /** Ecriture des positions des trous * */
+ fmt = new int[] { 8 };
+ fout.intField(0, nbtrous);
+ fout.writeFields(fmt);
+ fmt = new int[] { 8, 24, 24 };
+ for (int i = 0; i < nbtrous; i++) {
+ if (stop_) return;
+ double x=0;
+ double y=0;
+ fout.intField(0, i + 1);
+ fout.doubleField(1, x);
+ fout.doubleField(2, y);
+ fout.writeFields(fmt);
+ up.majAvancement();
+ }
+
+ /** Ecriture des positions des regions * */
+ fmt = new int[] { 8 };
+ fout.intField(0, nbreg);
+ fout.writeFields(fmt);
+ fmt = new int[] { 8, 24, 24, 24, 24 };
+ for (int i = 0; i < nbreg; i++) {
+ if (stop_) return;
+ double x=0;
+ double y=0;
+ double z=0;
+ final double aireMax = 0;
+ fout.intField(0, i + 1);
+ fout.doubleField(1, x);
+ fout.doubleField(2, y);
+ fout.doubleField(3, z);
+ fout.doubleField(4, aireMax);
+ fout.writeFields(fmt);
+ up.majAvancement();
+ }
+ } catch (final IOException ex) {
+ analyze_.manageException(ex);
+ }
+ }
+
+ /**
+ * R\xE9cup\xE8re les modeles d'un type particulier.
+ * @param _mdls Les models
+ * @param _type 0 : Points et multipoints. 1 : Lignes, polygones.
+ * @return Les modeles, une fois filtr\xE9s.
+ */
+ GISDataModel[] filtreModels(GISDataModel[] _mdls, int _type) {
+ ArrayList<GISDataModel> mdls=new ArrayList<GISDataModel>();
+ for (int i=0; i<_mdls.length; i++) {
+ if (_mdls[i].getNumGeometries()==0) continue;
+
+ Geometry g=_mdls[i].getGeometry(0);
+ if (_type==0 && g instanceof GISMultiPoint)
+ mdls.add(_mdls[i]);
+ else if (_type==0 && g instanceof Point)
+ mdls.add(new GISDataModelPointMultiPointAdapter(_mdls[i]));
+ else if (_type==1 && g instanceof LineString)
+ mdls.add(_mdls[i]);
+ }
+
+ return mdls.toArray(new GISDataModel[0]);
+ }
+}
\ No newline at end of file
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOWriter.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java 2008-07-17 11:32:59 UTC (rev 3693)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java 2008-07-17 11:36:00 UTC (rev 3694)
@@ -58,6 +58,7 @@
import org.fudaa.ctulu.gui.CtuluDialogPanel;
import org.fudaa.ctulu.gui.CtuluFileChooser;
import org.fudaa.ctulu.gui.CtuluFileChooserPanel;
+import org.fudaa.dodico.dunes.io.DunesGEOFileFormat;
import org.fudaa.dodico.rubar.io.RubarStCnFileFormat;
import org.fudaa.dodico.telemac.io.SinusxFileFormat;
@@ -196,10 +197,12 @@
private BuFileFilter[] buildFilter2Export() {
final BuFileFilter sx = SinusxFileFormat.getInstance().createFileFilter();
final BuFileFilter st = RubarStCnFileFormat.createStFilter();
+ final BuFileFilter dunes= DunesGEOFileFormat.getInstance().createFileFilter();
filter2Exporter_ = new HashMap(5);// pour l'instant .....
filter2Exporter_.put(sx, new FSigLayerExporter.ToSinusX());
filter2Exporter_.put(st, new FSigLayerExporter.ToRubar());
+ filter2Exporter_.put(dunes, new FSigLayerExporter.ToDunes());
// final Map dataStores = GISExportDataStoreFactory.buildFileFilterMap(false);
// for (final Iterator it = dataStores.entrySet().iterator(); it.hasNext();) {
// final Map.Entry e = (Map.Entry) it.next();
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2008-07-17 11:32:59 UTC (rev 3693)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2008-07-17 11:36:00 UTC (rev 3694)
@@ -38,6 +38,7 @@
import org.fudaa.ctulu.gis.gml.GISGMLZoneExporter;
import org.fudaa.ctulu.gis.mif.MIFDataStoreFactory;
+import org.fudaa.dodico.dunes.io.DunesGEOFileFormat;
import org.fudaa.dodico.rubar.io.RubarSEMFileFormat;
import org.fudaa.dodico.rubar.io.RubarSEMWriterGISAdapter;
import org.fudaa.dodico.rubar.io.RubarStCnFileFormat;
@@ -142,6 +143,29 @@
}
}
+ public static class ToDunes extends FSigLayerExporter {
+
+ CtuluIOOperationSynthese exportTo(final FSigLayerFilter _filter, final CtuluUI _impl, final File _f,
+ final ProgressionInterface _prog) {
+ File f = CtuluLibFile.appendExtensionIfNeeded(_f, DunesGEOFileFormat.getInstance().getExtensions()[0]);
+
+ List<GISDataModel> mdls=new ArrayList<GISDataModel>();
+ for (int i=0; i<_filter.pointCq_.size(); i++) {
+ mdls.add(new GISDataModelPointMultiPointAdapter(
+ GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.pointCq_.get(i)), null)));
+ }
+ for (int i = 0; i < _filter.mlptsCq_.size(); i++) {
+ mdls.add(_filter.getCollect(_filter.mlptsCq_.get(i)));
+ }
+ for (int i = 0; i < _filter.polyCq_.size(); i++) {
+ final GISZoneCollection collec = _filter.getCollect(_filter.polyCq_.get(i));
+ mdls.add(collec);
+ }
+
+ return DunesGEOFileFormat.getInstance().write(f, mdls.toArray(new GISDataModel[0]), _prog);
+ }
+ }
+
/**
* Export des g\xE9om\xE9tries vers les fichiers Rubar (ST, SEM, CN).
* @author Bertrand Marchand
@@ -164,7 +188,7 @@
for (int i=0; i<_filter.pointCq_.size(); i++) {
mdlsemis.add(new GISDataModelPointMultiPointAdapter(
- GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.mlptsCq_.get(i)), null)));
+ GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.pointCq_.get(i)), null)));
}
for (int i = 0; i < _filter.mlptsCq_.size(); i++) {
mdlsemis.add(GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.mlptsCq_.get(i)), null));
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java 2008-07-17 11:32:59 UTC (rev 3693)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java 2008-07-17 11:36:00 UTC (rev 3694)
@@ -34,7 +34,7 @@
*/
public class FSigLayerFilter implements BCalqueVisitor {
- final Set cq_ = new HashSet();
+ final Set cqs_ = new HashSet();
List pointCq_ = new ArrayList();
List polyCq_ = new ArrayList();
List mlptsCq_=new ArrayList();
@@ -89,8 +89,9 @@
// Calque non trait\xE9 si invisible.
if (bonlyVisible_ && !_cq.isVisible()) return true;
- if (!cq_.contains(_cq) && _cq instanceof ZCalqueAffichageDonneesInterface
+ if (!cqs_.contains(_cq) && _cq instanceof ZCalqueAffichageDonneesInterface
&& ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees() instanceof ZModeleGeom) {
+ cqs_.add(_cq);
final ZModeleGeom geom = (ZModeleGeom) ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees();
if (geom.getGeomData().getDataStoreClass().equals(Point.class)) {
pointCq_.add(_cq);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-17 12:46:49
|
Revision: 3695
http://fudaa.svn.sourceforge.net/fudaa/?rev=3695&view=rev
Author: bmarchan
Date: 2008-07-17 12:46:28 +0000 (Thu, 17 Jul 2008)
Log Message:
-----------
Renommage des classes Dunesxxx en DunesMAIxxx
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesAdapter.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/olb/OLBExec.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/test/org/fudaa/dodico/reflux/TestJDunes.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/export/MvExportFactory.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/impl/MvActLoadDefault.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardFileMng.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/common/TrFileFormatManager.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIFileFormat.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIReader.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIWriter.java
Removed Paths:
-------------
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesFileFormat.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesReader.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesWriter.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesAdapter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesAdapter.java 2008-07-17 11:36:00 UTC (rev 3694)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesAdapter.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -47,7 +47,7 @@
}
public FileFormat getFileFormat() {
- return DunesFileFormat.getInstance();
+ return DunesMAIFileFormat.getInstance();
}
}
Deleted: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesFileFormat.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesFileFormat.java 2008-07-17 11:36:00 UTC (rev 3694)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesFileFormat.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -1,136 +0,0 @@
-/*
- * @creation 13 mars 2003
- * @modification $Date: 2006-11-15 09:22:54 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- */
-package org.fudaa.dodico.dunes.io;
-
-import java.io.File;
-
-import org.fudaa.ctulu.CtuluIOOperationSynthese;
-import org.fudaa.ctulu.ProgressionInterface;
-import org.fudaa.ctulu.fileformat.FileFormatUnique;
-import org.fudaa.ctulu.fileformat.FileReadOperationAbstract;
-import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract;
-
-import org.fudaa.dodico.ef.EfGridInterface;
-import org.fudaa.dodico.ef.EfGridSource;
-import org.fudaa.dodico.ef.FileFormatGridVersion;
-import org.fudaa.dodico.fichiers.FileFormatSoftware;
-import org.fudaa.dodico.h2d.resource.H2dResource;
-import org.fudaa.dodico.h2d.type.H2dFileFormatType;
-
-/**
- * @author deniger
- * @version $Id: DunesFileFormat.java,v 1.25 2006-11-15 09:22:54 deniger Exp $
- */
-public final class DunesFileFormat extends FileFormatUnique implements DunesVersionInterface, FileFormatGridVersion {
-
- public static final DunesFileFormat INSTANCE = new DunesFileFormat();
-
- /**
- * @return le singleton
- */
- public static DunesFileFormat getInstance() {
- return INSTANCE;
- }
-
- private DunesFileFormat() {
- super(1);
- extensions_ = new String[] { "mail", "geo", "dunes" };
- id_ = "DUNES";
- nom_ = "Dunes";
- description_ = H2dResource.getS("utilis\xE9 par le mailleur Dunes");
- software_ = FileFormatSoftware.REFLUX_IS;
- type_ = H2dFileFormatType.MAILLAGE;
- }
-
- public boolean containsGrid() {
- return true;
- }
-
- /**
- * Returns the aDAPTATIF.
- *
- * @return int
- */
- public int getAdaptatifCode() {
- return 2;
- }
-
- /**
- * Returns the eLEMENT_ID.
- *
- * @return String
- */
- public String getElementCode() {
- return "ELEMENT";
- }
-
- /**
- * Returns the nOEUD_ID.
- *
- * @return String
- */
- public String getNoeudCode() {
- return "NOEUD";
- }
-
- /**
- * Returns the nON_ADAPTATIF.
- *
- * @return int
- */
- public int getNonAdaptatifCode() {
- return 1;
- }
-
- public FileReadOperationAbstract createReader() {
- return new DunesReader(this);
- }
-
- public FileWriteOperationAbstract createWriter() {
- return new DunesWriter(this);
- }
-
- /**
- * @param _f le fichier cible a ecrire
- * @param _inter le source des donnees
- * @param _prog la barre de progression
- * @return la synthese de l'operation
- */
- public CtuluIOOperationSynthese write(final File _f, final DunesInterface _inter, final ProgressionInterface _prog) {
- final DunesWriter w = new DunesWriter(this);
- w.setFile(_f);
- w.setProgressReceiver(_prog);
- return w.write(_inter);
- }
-
- /**
- * @param _f le fichier cible
- * @param _m le maillage a ecrire
- * @param _prog la barre de progression
- * @return la synthese
- */
- public CtuluIOOperationSynthese writeGrid(final File _f, final EfGridInterface _m, final ProgressionInterface _prog) {
- final DunesAdapter inter = new DunesAdapter();
- inter.setMaillage(_m);
- return write(_f, inter, _prog);
- }
-
- public CtuluIOOperationSynthese writeGrid(final File _f, final EfGridSource _m, final ProgressionInterface _prog) {
- return writeGrid(_f, _m.getGrid(), _prog);
- }
-
- public CtuluIOOperationSynthese readGrid(final File _f, final ProgressionInterface _prog) {
- return read(_f, _prog);
- }
-
- public CtuluIOOperationSynthese readListPoint(final File _f, final ProgressionInterface _prog) {
- final CtuluIOOperationSynthese s = readGrid(_f, _prog);
- s.setSource(((EfGridSource) s.getSource()).getGrid());
- return s;
- }
-
-}
\ No newline at end of file
Copied: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIFileFormat.java (from rev 3624, branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesFileFormat.java)
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIFileFormat.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIFileFormat.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -0,0 +1,136 @@
+/*
+ * @creation 13 mars 2003
+ * @modification $Date: 2006-11-15 09:22:54 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ */
+package org.fudaa.dodico.dunes.io;
+
+import java.io.File;
+
+import org.fudaa.ctulu.CtuluIOOperationSynthese;
+import org.fudaa.ctulu.ProgressionInterface;
+import org.fudaa.ctulu.fileformat.FileFormatUnique;
+import org.fudaa.ctulu.fileformat.FileReadOperationAbstract;
+import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract;
+
+import org.fudaa.dodico.ef.EfGridInterface;
+import org.fudaa.dodico.ef.EfGridSource;
+import org.fudaa.dodico.ef.FileFormatGridVersion;
+import org.fudaa.dodico.fichiers.FileFormatSoftware;
+import org.fudaa.dodico.h2d.resource.H2dResource;
+import org.fudaa.dodico.h2d.type.H2dFileFormatType;
+
+/**
+ * @author deniger
+ * @version $Id: DunesFileFormat.java,v 1.25 2006-11-15 09:22:54 deniger Exp $
+ */
+public final class DunesMAIFileFormat extends FileFormatUnique implements DunesVersionInterface, FileFormatGridVersion {
+
+ public static final DunesMAIFileFormat INSTANCE = new DunesMAIFileFormat();
+
+ /**
+ * @return le singleton
+ */
+ public static DunesMAIFileFormat getInstance() {
+ return INSTANCE;
+ }
+
+ private DunesMAIFileFormat() {
+ super(1);
+ extensions_ = new String[] { "mail", "dunes" };
+ id_ = "DUNES";
+ nom_ = "Dunes maillage";
+ description_ = H2dResource.getS("utilis\xE9 par le mailleur Dunes");
+ software_ = FileFormatSoftware.REFLUX_IS;
+ type_ = H2dFileFormatType.MAILLAGE;
+ }
+
+ public boolean containsGrid() {
+ return true;
+ }
+
+ /**
+ * Returns the aDAPTATIF.
+ *
+ * @return int
+ */
+ public int getAdaptatifCode() {
+ return 2;
+ }
+
+ /**
+ * Returns the eLEMENT_ID.
+ *
+ * @return String
+ */
+ public String getElementCode() {
+ return "ELEMENT";
+ }
+
+ /**
+ * Returns the nOEUD_ID.
+ *
+ * @return String
+ */
+ public String getNoeudCode() {
+ return "NOEUD";
+ }
+
+ /**
+ * Returns the nON_ADAPTATIF.
+ *
+ * @return int
+ */
+ public int getNonAdaptatifCode() {
+ return 1;
+ }
+
+ public FileReadOperationAbstract createReader() {
+ return new DunesMAIReader(this);
+ }
+
+ public FileWriteOperationAbstract createWriter() {
+ return new DunesMAIWriter(this);
+ }
+
+ /**
+ * @param _f le fichier cible a ecrire
+ * @param _inter le source des donnees
+ * @param _prog la barre de progression
+ * @return la synthese de l'operation
+ */
+ public CtuluIOOperationSynthese write(final File _f, final DunesInterface _inter, final ProgressionInterface _prog) {
+ final DunesMAIWriter w = new DunesMAIWriter(this);
+ w.setFile(_f);
+ w.setProgressReceiver(_prog);
+ return w.write(_inter);
+ }
+
+ /**
+ * @param _f le fichier cible
+ * @param _m le maillage a ecrire
+ * @param _prog la barre de progression
+ * @return la synthese
+ */
+ public CtuluIOOperationSynthese writeGrid(final File _f, final EfGridInterface _m, final ProgressionInterface _prog) {
+ final DunesAdapter inter = new DunesAdapter();
+ inter.setMaillage(_m);
+ return write(_f, inter, _prog);
+ }
+
+ public CtuluIOOperationSynthese writeGrid(final File _f, final EfGridSource _m, final ProgressionInterface _prog) {
+ return writeGrid(_f, _m.getGrid(), _prog);
+ }
+
+ public CtuluIOOperationSynthese readGrid(final File _f, final ProgressionInterface _prog) {
+ return read(_f, _prog);
+ }
+
+ public CtuluIOOperationSynthese readListPoint(final File _f, final ProgressionInterface _prog) {
+ final CtuluIOOperationSynthese s = readGrid(_f, _prog);
+ s.setSource(((EfGridSource) s.getSource()).getGrid());
+ return s;
+ }
+
+}
\ No newline at end of file
Copied: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIReader.java (from rev 3624, branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesReader.java)
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIReader.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIReader.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -0,0 +1,240 @@
+/*
+ * @creation 19 f\xE9vr. 2003
+ * @modification $Date: 2007-01-19 13:07:22 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.dodico.dunes.io;
+
+import java.io.EOFException;
+import java.io.IOException;
+
+import org.fudaa.ctulu.CtuluLibMessage;
+import org.fudaa.ctulu.CtuluLibString;
+import org.fudaa.ctulu.ProgressionUpdater;
+import org.fudaa.ctulu.fileformat.FileFormat;
+import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
+
+import org.fudaa.dodico.ef.EfElement;
+import org.fudaa.dodico.ef.EfLib;
+import org.fudaa.dodico.ef.EfNode;
+import org.fudaa.dodico.ef.impl.EfGrid;
+import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract;
+import org.fudaa.dodico.h2d.resource.H2dResource;
+
+/**
+ * Lecteur de fichiers dunes (.mail).
+ *
+ * @author deniger
+ * @version $Id: DunesReader.java,v 1.28 2007-01-19 13:07:22 deniger Exp $
+ */
+public class DunesMAIReader extends FileOpReadCharSimpleAbstract {
+
+ DunesVersionInterface version_;
+
+ /**
+ * Utilise la derniere version de DunesFileFormat.
+ */
+ public DunesMAIReader() {
+ this(DunesMAIFileFormat.getInstance());
+ }
+
+ /**
+ * @param _f le format a utiliser
+ */
+ public DunesMAIReader(final DunesVersionInterface _f) {
+ version_ = _f;
+ }
+
+ protected Object internalRead() {
+ return readDunes();
+ }
+
+ private EfElement[] readElement(final ProgressionUpdater _up) throws IOException {
+ final int nbElem = in_.intField(0);
+ // Les donnees utiles pour l'etat d'avancement
+ _up.setValue(2, nbElem, 50, 50);
+ _up.majProgessionStateOnly();
+ int[] index;
+
+ final EfElement[] elems = new EfElement[nbElem];
+ for (int i = 0; i < nbElem; i++) {
+ in_.readFields();
+ if (in_.getNumberOfFields() < 2) {
+ analyze_.addInfo(H2dResource.getS("Format attendu") + "NUM_ELEMENT NB_POINT P[1] ...P[NB_POINT]", in_
+ .getLineNumber());
+ analyze_.addError(H2dResource.getS("La d\xE9finition de l'\xE9l\xE9ment {0} n'est pas valide"), in_.getLineNumber());
+ return null;
+ }
+ // le numero d'element
+ int temp = in_.intField(0);
+ if (temp != (i + 1)) {
+ analyze_
+ .addInfo(H2dResource.getS("L'index de l'\xE9l\xE9ment ne correspond pas \xE0 l'index r\xE9el"), in_.getLineNumber());
+ }
+ temp = in_.intField(1);
+ if (temp <= 0) {
+ analyze_.addError(H2dResource.getS("Le nombre de points est n\xE9gatif ou nul pour l'\xE9l\xE9ment d'indice {0}",
+ CtuluLibString.getString(i + 1)), in_.getLineNumber());
+ return null;
+ }
+ if (in_.getNumberOfFields() != (temp + 2)) {
+ analyze_.addInfo(H2dResource.getS("Nombre indiqu\xE9") + ": " + temp + CtuluLibString.DOT + H2dResource.getS("Nombre lu") + ": "
+ + (in_.getNumberOfFields() - 2), in_.getLineNumber());
+ analyze_.addFatalError(H2dResource.getS("Le nombre d'\xE9l\xE9ments est incorrect"), in_.getLineNumber());
+ return null;
+ }
+ index = new int[temp];
+ for (int j = 0; j < temp; j++) {
+ // on stocke les indexs en commencant a 0.
+ index[j] = in_.intField(2 + j) - 1;
+ }
+ elems[i] = new EfElement(index);
+ _up.majAvancement();
+ }
+ return elems;
+ }
+
+ private EfNode[] readNodes(final int _nbNoeuds, final ProgressionUpdater _up, final double[] _adaptatifs) throws IOException {
+ final EfNode[] points = new EfNode[_nbNoeuds];
+ _up.setValue(2, _nbNoeuds, 0, 50);
+ _up.majProgessionStateOnly();
+ int temp;
+ // lecture des noeuds
+ for (int i = 0; i < _nbNoeuds; i++) {
+ in_.readFields();
+ if (in_.getNumberOfFields() != 4) {
+ analyze_.addInfo(H2dResource.getS("Format attendu") + ": NUM_POINT X Y Z", in_.getLineNumber());
+ analyze_.addError(H2dResource.getS("La d\xE9finition du noeud {0} n'est pas valide", CtuluLibString
+ .getString(i + 1)), in_.getLineNumber());
+ return null;
+ }
+ temp = in_.intField(0);
+ if (temp != (i + 1)) {
+ analyze_.addInfo(H2dResource.getS("Le num\xE9ro du point ne correspond pas au num\xE9ro r\xE9el"), in_.getLineNumber());
+ }
+ points[i] = new EfNode(in_.doubleField(1), in_.doubleField(2), in_.doubleField(3));
+ if (_adaptatifs != null) {
+ in_.readFields();
+ if (in_.getNumberOfFields() != 1) {
+ analyze_.addWarn(H2dResource.getS("La ligne du coefficient adaptatif ne doit contenir qu'un champ"), in_
+ .getLineNumber());
+ }
+ _adaptatifs[i] = in_.doubleField(0);
+ }
+ _up.majAvancement();
+ }
+ return points;
+
+ }
+
+ private DunesInterface readDunes() {
+ DunesAdapter source = null;
+ EfNode[] points = null;
+ EfElement[] elems = null;
+ double[] adaptatifs = null;
+ in_.setJumpBlankLine(true);
+ try {
+ // lit jusqu'a la premiere ligne non vide.
+ // Lecture de l'identifiant NOEUD
+ in_.readFields();
+ if ((in_.getNumberOfFields() != 1) || (!version_.getNoeudCode().equals(in_.stringField(0)))) {
+ analyze_.addError(H2dResource.getS("L'identifiant {0} est attendu", version_.getNoeudCode()), in_
+ .getLineNumber());
+ return null;
+
+ }
+ in_.readFields();
+ // Lecture du nombre de noeud et format du maillage (apaptatif ou non)
+ // NOMBRE_DE_NOEUD TYPE_DE_MAILLAGE
+
+ // verification que l'on a bien 2 champs
+ if (in_.getNumberOfFields() != 2) {
+ analyze_.addFatalError(H2dResource.getS("Nombre de noeuds non trouv\xE9"), in_.getLineNumber());
+ return null;
+ }
+ // le nombre de noeud
+ final int nbNoeuds = in_.intField(0);
+ // le type de maillage.
+ // Si 2, des infos sur le maillage adaptatif seront presentes
+ final int typeMaillage = in_.intField(1);
+ // Si adaptatif, on initialise le tableau stockant les valeurs.
+ if (typeMaillage == version_.getAdaptatifCode()) {
+ adaptatifs = new double[nbNoeuds];
+ // on affecte a source le tableau.
+ }
+ final ProgressionUpdater up = new ProgressionUpdater(progress_);
+ points = readNodes(nbNoeuds, up, adaptatifs);
+ if (points == null) {
+ return null;
+ }
+ // Lecture du mot cle ELEMENT
+ in_.readFields();
+ if ((in_.getNumberOfFields() != 1) && (!version_.getElementCode().equals(in_.stringField(0)))) {
+ analyze_.addError(H2dResource.getS("L'identifiant {0} est attendu", version_.getElementCode()), in_
+ .getLineNumber());
+ return null;
+ }
+ // Lecture du nombre d'elements.
+ in_.readFields();
+ // Un seul champ attendu
+ if (in_.getNumberOfFields() != 1) {
+ analyze_.addFatalError(H2dResource.getS("Cette ligne est invalide"), in_.getLineNumber());
+ return null;
+ }
+ elems = readElement(up);
+ if (elems == null) {
+ return null;
+ }
+ in_.readFields();
+ if (!"0 0 0 0".equals(in_.getLine().trim())) {
+ if (in_.getLine().trim().length() > 0) {
+ analyze_.addWarn(H2dResource
+ .getS("Cette ligne et les suivantes sont ignor\xE9es"), in_.getLineNumber());
+ }
+ }
+ in_.readFields();
+ if (in_.getLine().trim().length() > 0) {
+ analyze_.addWarn(H2dResource
+ .getS("Cette ligne et les suivantes sont ignor\xE9es"), in_.getLineNumber());
+ }
+ } catch (final EOFException e) {
+ if (CtuluLibMessage.DEBUG) {
+ CtuluLibMessage.debug("Dunes Read end");
+ }
+ } catch (final NumberFormatException fe) {
+ analyze_.manageException(fe, in_.getLineNumber());
+ } catch (final IOException _e) {
+ analyze_.manageException(_e);
+ }
+ // Le mot clef noeud est trouve, on peut creer le maillage.
+ final EfGrid maillage = new EfGrid(points, elems);
+ EfLib.orienteGrid(maillage, progress_, true, analyze_);
+ source = new DunesAdapter();
+ source.setMaillage(maillage);
+ source.setAdaptatif(adaptatifs);
+ return source;
+ }
+
+ /**
+ * @return le format
+ */
+ public FileFormat getFileFormat() {
+ return getDunesFileFormat();
+ }
+
+ /**
+ * @return le format utilise
+ */
+ public DunesMAIFileFormat getDunesFileFormat() {
+ return (DunesMAIFileFormat) version_.getFileFormat();
+ }
+
+ /**
+ * @return la version utilisee
+ */
+ public FileFormatVersionInterface getVersion() {
+ return version_;
+ }
+}
\ No newline at end of file
Copied: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIWriter.java (from rev 3624, branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesWriter.java)
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIWriter.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesMAIWriter.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -0,0 +1,197 @@
+/*
+ * @creation 2003-02-20
+ * @modification $Date: 2006-10-16 07:55:47 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.dodico.dunes.io;
+
+import java.io.IOException;
+
+import org.fudaa.ctulu.CtuluIOOperationSynthese;
+import org.fudaa.ctulu.ProgressionUpdater;
+import org.fudaa.ctulu.fileformat.FileFormat;
+import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
+
+import org.fudaa.dodico.commun.DodicoLib;
+import org.fudaa.dodico.ef.EfElement;
+import org.fudaa.dodico.ef.EfGridInterface;
+import org.fudaa.dodico.fortran.FileOpWriterCharSimpleAbstract;
+import org.fudaa.dodico.h2d.resource.H2dResource;
+
+/**
+ * @author deniger
+ * @version $Id: DunesWriter.java,v 1.27 2006-10-16 07:55:47 deniger Exp $
+ */
+public class DunesMAIWriter extends FileOpWriterCharSimpleAbstract {
+
+ DunesVersionInterface version_;
+
+ /**
+ * Construit avec une version par defaut.
+ */
+ public DunesMAIWriter() {
+ this(DunesMAIFileFormat.getInstance());
+ }
+
+ /**
+ * @param _f la version a utiliser
+ */
+ public DunesMAIWriter(final DunesVersionInterface _f) {
+ version_ = _f;
+ }
+
+ /**
+ * @return le format utilise
+ */
+ public FileFormat getFileFormat() {
+ return version_.getFileFormat();
+ }
+
+ /**
+ * Ecrire les donnees de l'interface <code>DunesInterface</code> sur la sortie <code>Writer</code>. L'ecriture
+ * n'est effectu\xE9e que si les points et elements du maillage sont non nuls. La m\xE9thode se termine par un flush mais ne
+ * ferme pas le flux.
+ */
+ protected void writeDunes(final DunesInterface _d) {
+ final DunesInterface dunes = _d;
+ // Test sur les objets a ecrire
+ if (dunes == null) {
+ analyze_.addFatalError(H2dResource.getS("Les donn\xE9es sont nulles"));
+ return;
+ }
+ if (out_ == null) {
+ analyze_.addFatalError(DodicoLib.getS("Le flux de sortie est nul"));
+ return;
+ }
+ final EfGridInterface maillage = dunes.getGrid();
+ if (maillage == null) {
+ analyze_.addFatalError("Le maillage est nul");
+ return;
+ }
+ final int nPts = maillage.getPtsNb();
+ if (nPts == 0) {
+ analyze_.addFatalError(H2dResource.getS("Le maillage ne contient pas de points"));
+ return;
+ }
+ // H2dElement[] elems= maillage.getElts();
+ // if (elems == null)
+ // {
+ // analyze_.addFatalError("Le maillage ne contient pas d'\xE9l\xE9ments !");
+ // return;
+ // }
+ final int nElems = maillage.getEltNb();
+ if (nElems == 0) {
+ analyze_.addFatalError(H2dResource.getS("Le maillage ne contient pas d'\xE9l\xE9ments"));
+ return;
+ }
+ try {
+ StringBuffer b = new StringBuffer(600);
+ b.append(version_.getNoeudCode());
+ b.append(' ');
+ b.append(lineSep_);
+ b.append(nPts);
+ boolean printAdaptatifV = false;
+ final double[] adValeur = dunes.getAdaptatifValeur();
+ b.append(' ');
+ if (adValeur == null) {
+ b.append(version_.getNonAdaptatifCode());
+ } else {
+ b.append(version_.getAdaptatifCode());
+ printAdaptatifV = true;
+ }
+ writelnToOut(b.toString());
+ // Gestion de l'etat d'avancement
+ // le pas pour afficher l'etat d'avancement
+ final int pourc = 0;
+ final boolean afficheAvance = (progress_ == null ? false : true);
+ if (afficheAvance) {
+ progress_.setProgression(pourc);
+ progress_.setDesc(H2dResource.getS("Ecriture fichier") + " dunes");
+ }
+ final ProgressionUpdater up = new ProgressionUpdater(progress_);
+ up.setValue(2, nPts);
+
+ for (int i = 0; i < nPts; i++) {
+ b = new StringBuffer();
+ b.append((i + 1));
+ b.append(' ');
+ b.append(maillage.getPtX(i));
+ b.append(' ');
+ b.append(maillage.getPtY(i));
+ b.append(' ');
+ b.append(maillage.getPtZ(i));
+ b.append(lineSep_);
+ if (printAdaptatifV&&adValeur!=null) {
+ b.append(adValeur[i]);
+ b.append(lineSep_);
+ }
+ writeToOut(b.toString());
+ up.majAvancement();
+ }
+ b = new StringBuffer();
+ // Cette ligne blanche est-elle utile ?
+ b.append(lineSep_);
+ // L'identifiant element
+ b.append(version_.getElementCode());
+ b.append(lineSep_);
+ // le nb d'\xE9l\xE9ments
+ b.append(nElems);
+ writelnToOut(b.toString());
+ // pour afficher l'etat d'avancement
+ up.setValue(2, nElems, 50, 50);
+ up.majAvancement();
+ // les points par elements
+ EfElement ppel;
+ // le nombre de points par elements.
+ int nppel;
+ for (int i = 0; i < nElems; i++) {
+ b = new StringBuffer();
+ ppel = maillage.getElement(i);
+ nppel = ppel.getPtNb();
+ // le num d'elements
+ b.append((i + 1));
+ b.append(' ');
+ // le nombre de point pour l'\xE9l\xE9ment i
+ b.append(nppel);
+ // les indices des points pour l'element i
+ for (int j = 0; j < nppel; j++) {
+ b.append(' ');
+ // Les indices sont stock\xE9s a partir de 0.
+ b.append(ppel.getPtIndex(j) + 1);
+ }
+ writelnToOut(b.toString());
+ // mis a jour de l'etat d'avancement au cas ou.
+ up.majAvancement();
+ }
+ out_.flush();
+ } catch (final IOException _ex) {
+ analyze_.manageException(_ex);
+ }
+ }
+
+ protected void internalWrite(final Object _o) {
+ if (_o instanceof DunesInterface) {
+ writeDunes((DunesInterface) _o);
+ } else {
+ analyze_.addFatalError(DodicoLib.getS("Donn\xE9es invalides"));
+ }
+ }
+
+ /**
+ * @param _o la source a ecrire
+ * @return la synthese de l'operation
+ */
+ public final CtuluIOOperationSynthese write(final DunesInterface _o) {
+ writeDunes(_o);
+ return closeOperation(_o);
+ }
+
+ /**
+ * @return la version utilisee
+ */
+ public FileFormatVersionInterface getVersion() {
+ return version_;
+ }
+}
Deleted: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesReader.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesReader.java 2008-07-17 11:36:00 UTC (rev 3694)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesReader.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -1,240 +0,0 @@
-/*
- * @creation 19 f\xE9vr. 2003
- * @modification $Date: 2007-01-19 13:07:22 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.dodico.dunes.io;
-
-import java.io.EOFException;
-import java.io.IOException;
-
-import org.fudaa.ctulu.CtuluLibMessage;
-import org.fudaa.ctulu.CtuluLibString;
-import org.fudaa.ctulu.ProgressionUpdater;
-import org.fudaa.ctulu.fileformat.FileFormat;
-import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
-
-import org.fudaa.dodico.ef.EfElement;
-import org.fudaa.dodico.ef.EfLib;
-import org.fudaa.dodico.ef.EfNode;
-import org.fudaa.dodico.ef.impl.EfGrid;
-import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract;
-import org.fudaa.dodico.h2d.resource.H2dResource;
-
-/**
- * Lecteur de fichiers dunes (.mail).
- *
- * @author deniger
- * @version $Id: DunesReader.java,v 1.28 2007-01-19 13:07:22 deniger Exp $
- */
-public class DunesReader extends FileOpReadCharSimpleAbstract {
-
- DunesVersionInterface version_;
-
- /**
- * Utilise la derniere version de DunesFileFormat.
- */
- public DunesReader() {
- this(DunesFileFormat.getInstance());
- }
-
- /**
- * @param _f le format a utiliser
- */
- public DunesReader(final DunesVersionInterface _f) {
- version_ = _f;
- }
-
- protected Object internalRead() {
- return readDunes();
- }
-
- private EfElement[] readElement(final ProgressionUpdater _up) throws IOException {
- final int nbElem = in_.intField(0);
- // Les donnees utiles pour l'etat d'avancement
- _up.setValue(2, nbElem, 50, 50);
- _up.majProgessionStateOnly();
- int[] index;
-
- final EfElement[] elems = new EfElement[nbElem];
- for (int i = 0; i < nbElem; i++) {
- in_.readFields();
- if (in_.getNumberOfFields() < 2) {
- analyze_.addInfo(H2dResource.getS("Format attendu") + "NUM_ELEMENT NB_POINT P[1] ...P[NB_POINT]", in_
- .getLineNumber());
- analyze_.addError(H2dResource.getS("La d\xE9finition de l'\xE9l\xE9ment {0} n'est pas valide"), in_.getLineNumber());
- return null;
- }
- // le numero d'element
- int temp = in_.intField(0);
- if (temp != (i + 1)) {
- analyze_
- .addInfo(H2dResource.getS("L'index de l'\xE9l\xE9ment ne correspond pas \xE0 l'index r\xE9el"), in_.getLineNumber());
- }
- temp = in_.intField(1);
- if (temp <= 0) {
- analyze_.addError(H2dResource.getS("Le nombre de points est n\xE9gatif ou nul pour l'\xE9l\xE9ment d'indice {0}",
- CtuluLibString.getString(i + 1)), in_.getLineNumber());
- return null;
- }
- if (in_.getNumberOfFields() != (temp + 2)) {
- analyze_.addInfo(H2dResource.getS("Nombre indiqu\xE9") + ": " + temp + CtuluLibString.DOT + H2dResource.getS("Nombre lu") + ": "
- + (in_.getNumberOfFields() - 2), in_.getLineNumber());
- analyze_.addFatalError(H2dResource.getS("Le nombre d'\xE9l\xE9ments est incorrect"), in_.getLineNumber());
- return null;
- }
- index = new int[temp];
- for (int j = 0; j < temp; j++) {
- // on stocke les indexs en commencant a 0.
- index[j] = in_.intField(2 + j) - 1;
- }
- elems[i] = new EfElement(index);
- _up.majAvancement();
- }
- return elems;
- }
-
- private EfNode[] readNodes(final int _nbNoeuds, final ProgressionUpdater _up, final double[] _adaptatifs) throws IOException {
- final EfNode[] points = new EfNode[_nbNoeuds];
- _up.setValue(2, _nbNoeuds, 0, 50);
- _up.majProgessionStateOnly();
- int temp;
- // lecture des noeuds
- for (int i = 0; i < _nbNoeuds; i++) {
- in_.readFields();
- if (in_.getNumberOfFields() != 4) {
- analyze_.addInfo(H2dResource.getS("Format attendu") + ": NUM_POINT X Y Z", in_.getLineNumber());
- analyze_.addError(H2dResource.getS("La d\xE9finition du noeud {0} n'est pas valide", CtuluLibString
- .getString(i + 1)), in_.getLineNumber());
- return null;
- }
- temp = in_.intField(0);
- if (temp != (i + 1)) {
- analyze_.addInfo(H2dResource.getS("Le num\xE9ro du point ne correspond pas au num\xE9ro r\xE9el"), in_.getLineNumber());
- }
- points[i] = new EfNode(in_.doubleField(1), in_.doubleField(2), in_.doubleField(3));
- if (_adaptatifs != null) {
- in_.readFields();
- if (in_.getNumberOfFields() != 1) {
- analyze_.addWarn(H2dResource.getS("La ligne du coefficient adaptatif ne doit contenir qu'un champ"), in_
- .getLineNumber());
- }
- _adaptatifs[i] = in_.doubleField(0);
- }
- _up.majAvancement();
- }
- return points;
-
- }
-
- private DunesInterface readDunes() {
- DunesAdapter source = null;
- EfNode[] points = null;
- EfElement[] elems = null;
- double[] adaptatifs = null;
- in_.setJumpBlankLine(true);
- try {
- // lit jusqu'a la premiere ligne non vide.
- // Lecture de l'identifiant NOEUD
- in_.readFields();
- if ((in_.getNumberOfFields() != 1) || (!version_.getNoeudCode().equals(in_.stringField(0)))) {
- analyze_.addError(H2dResource.getS("L'identifiant {0} est attendu", version_.getNoeudCode()), in_
- .getLineNumber());
- return null;
-
- }
- in_.readFields();
- // Lecture du nombre de noeud et format du maillage (apaptatif ou non)
- // NOMBRE_DE_NOEUD TYPE_DE_MAILLAGE
-
- // verification que l'on a bien 2 champs
- if (in_.getNumberOfFields() != 2) {
- analyze_.addFatalError(H2dResource.getS("Nombre de noeuds non trouv\xE9"), in_.getLineNumber());
- return null;
- }
- // le nombre de noeud
- final int nbNoeuds = in_.intField(0);
- // le type de maillage.
- // Si 2, des infos sur le maillage adaptatif seront presentes
- final int typeMaillage = in_.intField(1);
- // Si adaptatif, on initialise le tableau stockant les valeurs.
- if (typeMaillage == version_.getAdaptatifCode()) {
- adaptatifs = new double[nbNoeuds];
- // on affecte a source le tableau.
- }
- final ProgressionUpdater up = new ProgressionUpdater(progress_);
- points = readNodes(nbNoeuds, up, adaptatifs);
- if (points == null) {
- return null;
- }
- // Lecture du mot cle ELEMENT
- in_.readFields();
- if ((in_.getNumberOfFields() != 1) && (!version_.getElementCode().equals(in_.stringField(0)))) {
- analyze_.addError(H2dResource.getS("L'identifiant {0} est attendu", version_.getElementCode()), in_
- .getLineNumber());
- return null;
- }
- // Lecture du nombre d'elements.
- in_.readFields();
- // Un seul champ attendu
- if (in_.getNumberOfFields() != 1) {
- analyze_.addFatalError(H2dResource.getS("Cette ligne est invalide"), in_.getLineNumber());
- return null;
- }
- elems = readElement(up);
- if (elems == null) {
- return null;
- }
- in_.readFields();
- if (!"0 0 0 0".equals(in_.getLine().trim())) {
- if (in_.getLine().trim().length() > 0) {
- analyze_.addWarn(H2dResource
- .getS("Cette ligne et les suivantes sont ignor\xE9es"), in_.getLineNumber());
- }
- }
- in_.readFields();
- if (in_.getLine().trim().length() > 0) {
- analyze_.addWarn(H2dResource
- .getS("Cette ligne et les suivantes sont ignor\xE9es"), in_.getLineNumber());
- }
- } catch (final EOFException e) {
- if (CtuluLibMessage.DEBUG) {
- CtuluLibMessage.debug("Dunes Read end");
- }
- } catch (final NumberFormatException fe) {
- analyze_.manageException(fe, in_.getLineNumber());
- } catch (final IOException _e) {
- analyze_.manageException(_e);
- }
- // Le mot clef noeud est trouve, on peut creer le maillage.
- final EfGrid maillage = new EfGrid(points, elems);
- EfLib.orienteGrid(maillage, progress_, true, analyze_);
- source = new DunesAdapter();
- source.setMaillage(maillage);
- source.setAdaptatif(adaptatifs);
- return source;
- }
-
- /**
- * @return le format
- */
- public FileFormat getFileFormat() {
- return getDunesFileFormat();
- }
-
- /**
- * @return le format utilise
- */
- public DunesFileFormat getDunesFileFormat() {
- return (DunesFileFormat) version_.getFileFormat();
- }
-
- /**
- * @return la version utilisee
- */
- public FileFormatVersionInterface getVersion() {
- return version_;
- }
-}
\ No newline at end of file
Deleted: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesWriter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesWriter.java 2008-07-17 11:36:00 UTC (rev 3694)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesWriter.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -1,197 +0,0 @@
-/*
- * @creation 2003-02-20
- * @modification $Date: 2006-10-16 07:55:47 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.dodico.dunes.io;
-
-import java.io.IOException;
-
-import org.fudaa.ctulu.CtuluIOOperationSynthese;
-import org.fudaa.ctulu.ProgressionUpdater;
-import org.fudaa.ctulu.fileformat.FileFormat;
-import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
-
-import org.fudaa.dodico.commun.DodicoLib;
-import org.fudaa.dodico.ef.EfElement;
-import org.fudaa.dodico.ef.EfGridInterface;
-import org.fudaa.dodico.fortran.FileOpWriterCharSimpleAbstract;
-import org.fudaa.dodico.h2d.resource.H2dResource;
-
-/**
- * @author deniger
- * @version $Id: DunesWriter.java,v 1.27 2006-10-16 07:55:47 deniger Exp $
- */
-public class DunesWriter extends FileOpWriterCharSimpleAbstract {
-
- DunesVersionInterface version_;
-
- /**
- * Construit avec une version par defaut.
- */
- public DunesWriter() {
- this(DunesFileFormat.getInstance());
- }
-
- /**
- * @param _f la version a utiliser
- */
- public DunesWriter(final DunesVersionInterface _f) {
- version_ = _f;
- }
-
- /**
- * @return le format utilise
- */
- public FileFormat getFileFormat() {
- return version_.getFileFormat();
- }
-
- /**
- * Ecrire les donnees de l'interface <code>DunesInterface</code> sur la sortie <code>Writer</code>. L'ecriture
- * n'est effectu\xE9e que si les points et elements du maillage sont non nuls. La m\xE9thode se termine par un flush mais ne
- * ferme pas le flux.
- */
- protected void writeDunes(final DunesInterface _d) {
- final DunesInterface dunes = _d;
- // Test sur les objets a ecrire
- if (dunes == null) {
- analyze_.addFatalError(H2dResource.getS("Les donn\xE9es sont nulles"));
- return;
- }
- if (out_ == null) {
- analyze_.addFatalError(DodicoLib.getS("Le flux de sortie est nul"));
- return;
- }
- final EfGridInterface maillage = dunes.getGrid();
- if (maillage == null) {
- analyze_.addFatalError("Le maillage est nul");
- return;
- }
- final int nPts = maillage.getPtsNb();
- if (nPts == 0) {
- analyze_.addFatalError(H2dResource.getS("Le maillage ne contient pas de points"));
- return;
- }
- // H2dElement[] elems= maillage.getElts();
- // if (elems == null)
- // {
- // analyze_.addFatalError("Le maillage ne contient pas d'\xE9l\xE9ments !");
- // return;
- // }
- final int nElems = maillage.getEltNb();
- if (nElems == 0) {
- analyze_.addFatalError(H2dResource.getS("Le maillage ne contient pas d'\xE9l\xE9ments"));
- return;
- }
- try {
- StringBuffer b = new StringBuffer(600);
- b.append(version_.getNoeudCode());
- b.append(' ');
- b.append(lineSep_);
- b.append(nPts);
- boolean printAdaptatifV = false;
- final double[] adValeur = dunes.getAdaptatifValeur();
- b.append(' ');
- if (adValeur == null) {
- b.append(version_.getNonAdaptatifCode());
- } else {
- b.append(version_.getAdaptatifCode());
- printAdaptatifV = true;
- }
- writelnToOut(b.toString());
- // Gestion de l'etat d'avancement
- // le pas pour afficher l'etat d'avancement
- final int pourc = 0;
- final boolean afficheAvance = (progress_ == null ? false : true);
- if (afficheAvance) {
- progress_.setProgression(pourc);
- progress_.setDesc(H2dResource.getS("Ecriture fichier") + " dunes");
- }
- final ProgressionUpdater up = new ProgressionUpdater(progress_);
- up.setValue(2, nPts);
-
- for (int i = 0; i < nPts; i++) {
- b = new StringBuffer();
- b.append((i + 1));
- b.append(' ');
- b.append(maillage.getPtX(i));
- b.append(' ');
- b.append(maillage.getPtY(i));
- b.append(' ');
- b.append(maillage.getPtZ(i));
- b.append(lineSep_);
- if (printAdaptatifV&&adValeur!=null) {
- b.append(adValeur[i]);
- b.append(lineSep_);
- }
- writeToOut(b.toString());
- up.majAvancement();
- }
- b = new StringBuffer();
- // Cette ligne blanche est-elle utile ?
- b.append(lineSep_);
- // L'identifiant element
- b.append(version_.getElementCode());
- b.append(lineSep_);
- // le nb d'\xE9l\xE9ments
- b.append(nElems);
- writelnToOut(b.toString());
- // pour afficher l'etat d'avancement
- up.setValue(2, nElems, 50, 50);
- up.majAvancement();
- // les points par elements
- EfElement ppel;
- // le nombre de points par elements.
- int nppel;
- for (int i = 0; i < nElems; i++) {
- b = new StringBuffer();
- ppel = maillage.getElement(i);
- nppel = ppel.getPtNb();
- // le num d'elements
- b.append((i + 1));
- b.append(' ');
- // le nombre de point pour l'\xE9l\xE9ment i
- b.append(nppel);
- // les indices des points pour l'element i
- for (int j = 0; j < nppel; j++) {
- b.append(' ');
- // Les indices sont stock\xE9s a partir de 0.
- b.append(ppel.getPtIndex(j) + 1);
- }
- writelnToOut(b.toString());
- // mis a jour de l'etat d'avancement au cas ou.
- up.majAvancement();
- }
- out_.flush();
- } catch (final IOException _ex) {
- analyze_.manageException(_ex);
- }
- }
-
- protected void internalWrite(final Object _o) {
- if (_o instanceof DunesInterface) {
- writeDunes((DunesInterface) _o);
- } else {
- analyze_.addFatalError(DodicoLib.getS("Donn\xE9es invalides"));
- }
- }
-
- /**
- * @param _o la source a ecrire
- * @return la synthese de l'operation
- */
- public final CtuluIOOperationSynthese write(final DunesInterface _o) {
- writeDunes(_o);
- return closeOperation(_o);
- }
-
- /**
- * @return la version utilisee
- */
- public FileFormatVersionInterface getVersion() {
- return version_;
- }
-}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/olb/OLBExec.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/olb/OLBExec.java 2008-07-17 11:36:00 UTC (rev 3694)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/olb/OLBExec.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -20,7 +20,7 @@
import org.fudaa.dodico.calcul.CalculExecBatch;
import org.fudaa.dodico.commun.DodicoLib;
import org.fudaa.dodico.dunes.io.DunesAdapter;
-import org.fudaa.dodico.dunes.io.DunesFileFormat;
+import org.fudaa.dodico.dunes.io.DunesMAIFileFormat;
import org.fudaa.dodico.dunes.io.DunesInterface;
import org.fudaa.dodico.ef.EfElement;
import org.fudaa.dodico.ef.EfElementType;
@@ -89,7 +89,7 @@
double offsetY = (_init.getMinY() + _init.getMaxY()) / 2;
final EfGridInterface init = new EfGridTranslate(_init, -offsetX, -offsetY);
interfaceDunes.setMaillage(init);
- CtuluIOOperationSynthese op = DunesFileFormat.getInstance().getLastVersionInstance(null).write(inFile,
+ CtuluIOOperationSynthese op = DunesMAIFileFormat.getInstance().getLastVersionInstance(null).write(inFile,
interfaceDunes, _prog);
if (stop_) {
deleteFiles(inFile, outFile);
@@ -112,7 +112,7 @@
deleteFiles(inFile, outFile);
return null;
}
- op = DunesFileFormat.getInstance().getLastVersionInstance(outFile).read(outFile, _prog);
+ op = DunesMAIFileFormat.getInstance().getLastVersionInstance(outFile).read(outFile, _prog);
if ((_ui != null) && (op.containsFatalError())) {
_ui.error("OLB", op.getAnalyze().getFatalError().getMessage(), false);
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/test/org/fudaa/dodico/reflux/TestJDunes.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/test/org/fudaa/dodico/reflux/TestJDunes.java 2008-07-17 11:36:00 UTC (rev 3694)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/test/org/fudaa/dodico/reflux/TestJDunes.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -18,7 +18,7 @@
import org.fudaa.ctulu.ProgressionBuAdapter;
import org.fudaa.dodico.all.TestIO;
-import org.fudaa.dodico.dunes.io.DunesFileFormat;
+import org.fudaa.dodico.dunes.io.DunesMAIFileFormat;
import org.fudaa.dodico.dunes.io.DunesInterface;
import org.fudaa.dodico.ef.EfElement;
import org.fudaa.dodico.ef.EfGridInterface;
@@ -88,7 +88,7 @@
final DunesInterface inter = getInter(fic_);
final File tmpFile = createTempFile();
final CtuluIOOperationSynthese syntheseR =
- DunesFileFormat.getInstance().write(
+ DunesMAIFileFormat.getInstance().write(
tmpFile,
inter,
null);
@@ -102,7 +102,7 @@
*/
public static DunesInterface getInter(final File _f) {
final CtuluIOOperationSynthese syntheseR =
- DunesFileFormat.getInstance().read(_f, null);
+ DunesMAIFileFormat.getInstance().read(_f, null);
final DunesInterface r = (DunesInterface) syntheseR.getSource();
if (syntheseR.containsMessages()) {
syntheseR.getAnalyze().printResume();
@@ -140,7 +140,7 @@
}
final ProgressionBuAdapter progress = new ProgressionBuAdapter(new BuTask());
final CtuluIOOperationSynthese op =
- DunesFileFormat.getInstance().read(f, progress);
+ DunesMAIFileFormat.getInstance().read(f, progress);
final DunesInterface inter = (DunesInterface) op.getSource();
if (op.containsMessages()) {
op.getAnalyze().printResume();
@@ -156,7 +156,7 @@
return;
}
final CtuluIOOperationSynthese opw =
- DunesFileFormat.getInstance().write(
+ DunesMAIFileFormat.getInstance().write(
out,
inter,
progress);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/export/MvExportFactory.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/export/MvExportFactory.java 2008-07-17 11:36:00 UTC (rev 3694)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/export/MvExportFactory.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -34,7 +34,7 @@
import org.fudaa.ctulu.gui.CtuluLibSwing;
import org.fudaa.ctulu.interpolation.InterpolationVectorContainer;
-import org.fudaa.dodico.dunes.io.DunesFileFormat;
+import org.fudaa.dodico.dunes.io.DunesMAIFileFormat;
import org.fudaa.dodico.ef.EfGridData;
import org.fudaa.dodico.ef.FileFormatGridVersion;
import org.fudaa.dodico.reflux.io.CorEleBthFileFormat;
@@ -66,7 +66,7 @@
public static FileFormat[] getT3Format() {
// serafin et rubar mai sont g\xE9r\xE9 differemment
- return new FileFormat[] { DunesFileFormat.getInstance(), TrigridFileFormat.getInstance(),
+ return new FileFormat[] { DunesMAIFileFormat.getInstance(), TrigridFileFormat.getInstance(),
CorEleBthFileFormat.getInstance() };
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/impl/MvActLoadDefault.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/impl/MvActLoadDefault.java 2008-07-17 11:36:00 UTC (rev 3694)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/impl/MvActLoadDefault.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -32,7 +32,7 @@
import org.fudaa.ctulu.gui.CtuluDialogPanel;
import org.fudaa.ctulu.gui.CtuluTaskOperationGUI;
-import org.fudaa.dodico.dunes.io.DunesFileFormat;
+import org.fudaa.dodico.dunes.io.DunesMAIFileFormat;
import org.fudaa.dodico.ef.EfGridSource;
import org.fudaa.dodico.ef.FileFormatGridVersion;
import org.fudaa.dodico.reflux.io.CorEleBthFileFormat;
@@ -93,7 +93,7 @@
*
*/
public final static CtuluPermanentList FT_LIST = new CtuluPermanentList(CtuluLibArray.sort(new FileFormat[] {
- INPFileFormat.getInstance(), DunesFileFormat.getInstance(), CorEleBthFileFormat.getInstance(),
+ INPFileFormat.getInstance(), DunesMAIFileFormat.getInstance(), CorEleBthFileFormat.getInstance(),
SerafinFileFormat.getInstance(), TrigridFileFormat.getInstance(), RubarDATFileFormat.getInstance(),
RubarMAIFileFormat.getInstance() }));
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardFileMng.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardFileMng.java 2008-07-17 11:36:00 UTC (rev 3694)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardFileMng.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -37,7 +37,7 @@
import org.fudaa.ctulu.gui.CtuluCellTextRenderer;
import org.fudaa.ctulu.gui.CtuluFileChooser;
-import org.fudaa.dodico.dunes.io.DunesFileFormat;
+import org.fudaa.dodico.dunes.io.DunesMAIFileFormat;
import org.fudaa.dodico.ef.FileFormatGridVersion;
import org.fudaa.dodico.reflux.io.CorEleBthFileFormat;
import org.fudaa.dodico.rubar.io.RubarDATFileFormat;
@@ -160,7 +160,7 @@
r.add(CorEleBthFileFormat.getInstance());
r.add(RubarMAIFileFormat.getInstance());
r.add(TrigridFileFormat.getInstance());
- r.add(DunesFileFormat.getInstance());
+ r.add(DunesMAIFileFormat.getInstance());
r.add(RubarDATFileFormat.getInstance());
return r;
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/common/TrFileFormatManager.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/common/TrFileFormatManager.java 2008-07-17 11:36:00 UTC (rev 3694)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/common/TrFileFormatManager.java 2008-07-17 12:46:28 UTC (rev 3695)
@@ -18,7 +18,7 @@
import org.fudaa.ctulu.fileformat.FileFormat;
-import org.fudaa.dodico.dunes.io.DunesFileFormat;
+import org.fudaa.dodico.dunes.io.DunesMAIFileFormat;
import org.fudaa.dodico.h2d.type.H2dFileFormatType;
import org.fudaa.dodico.reflux.io.CorEleBthFileFormat;
import org.fudaa.dodico.reflux.io.INPFileFormat;
@@ -73,7 +73,7 @@
} else if (_sofwareId == TrRefluxImplHelper.getID()) {
r.add(INPFileFormat.getInstance());
r.add(CorEleBthFileFormat.getInstance());
- r.add(DunesFileFormat.getInstance());
+ r.add(DunesMAIFileFormat.getInstance());
}
r.add(SerafinFileFormat.getInstance());
return getArray(r);
@@ -134,7 +134,7 @@
r.add(RubarDATFileFormat.getInstance());
r.add(SerafinFileFormat.getInstance());
r.add(INPFileFormat.getInstance());
- r.add(DunesFileFormat.getInstance());
+ r.add(DunesMAIFileFormat.getInstance());
return getArray(r);
}
@@ -151,7 +151,7 @@
} else if (_sofwareId == TrRefluxImplHelper.getID()) {
r.add(CorEleBthFileFormat.getInstance());
r.add(INPFileFormat.getInstance());
- r.add(DunesFileFormat.getInstance());
+ r.add(DunesMAIFileFormat.getInstance());
r.add(SerafinFileFormat.getInstance());
}
return getArray(r);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-08-12 09:58:09
|
Revision: 3773
http://fudaa.svn.sourceforge.net/fudaa/?rev=3773&view=rev
Author: bmarchan
Date: 2008-08-12 09:58:15 +0000 (Tue, 12 Aug 2008)
Log Message:
-----------
G?\195?\169n?\195?\169ralisation du visitor de calque CalqueFindPolyligneVisitor.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindCourbeTreeModel.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java
Removed Paths:
-------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPolyligneVisitor.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java 2008-08-12 07:45:50 UTC (rev 3772)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java 2008-08-12 09:58:15 UTC (rev 3773)
@@ -33,6 +33,19 @@
*/
public final class GISLib {
+ /** Un masque pour aucune g\xE9ometrie */
+ public static final int MASK_NONE = 0;
+ /** Un masque pour des polygones */
+ public static final int MASK_POLYGONE = 1<<0;
+ /** Un masque pour des polylignes */
+ public static final int MASK_POLYLINE = 1<<1;
+ /** Un masque pour des multipoints */
+ public static final int MASK_MULTIPOINT = 1<<2;
+ /** Un masque pour des points */
+ public static final int MASK_POINT = 1<<3;
+ /** Un masque pour toute geometrie */
+ public static final int MASK_ALL = MASK_POLYGONE|MASK_POLYLINE|MASK_MULTIPOINT|MASK_POINT;
+
public static double getDistance(final Envelope _e, final double _x, final double _y) {
if (_e == null || _e.isNull()) {
return Double.MAX_VALUE;
Copied: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java (from rev 3739, branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPolyligneVisitor.java)
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java 2008-08-12 09:58:15 UTC (rev 3773)
@@ -0,0 +1,88 @@
+/*
+ * @creation 21 nov. 06
+ * @modification $Date: 2006-12-05 10:14:38 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.calque;
+
+import org.fudaa.ctulu.gis.GISLib;
+
+/**
+ * Un visiteur qui permet de determiner si un calque contient des g\xE9ometries
+ * d'un type donn\xE9e.
+ * @author Bertrand Marchand
+ * @version $Id: CalqueFindPolyligneVisitor.java,v 1.1 2006-12-05 10:14:38 deniger Exp $
+ */
+public class CalqueGeometryVisitor implements BCalqueVisitor {
+ int mask_=GISLib.MASK_ALL;
+
+ boolean found_;
+
+ public CalqueGeometryVisitor() {
+ super();
+ }
+
+ public CalqueGeometryVisitor(final int _mask) {
+ super();
+ mask_=_mask;
+ }
+
+ public boolean visit(final BCalque _cq) {
+ // on arrete la visite
+ if (found_) {
+ return false;
+ }
+ if (_cq == null || _cq.isGroupeCalque()) {
+ return true;
+ }
+
+ found_ = isMatching(_cq);
+ if (found_) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Controle que le calque contient des objets du type donn\xE9.<p>
+ * Attention : Un polygone n'est pas consid\xE9r\xE9 comme une polyligne sp\xE9cialis\xE9e.
+ * @param _cq Le calque a tester.
+ * @return True si trouv\xE9.
+ */
+ public boolean isMatching(final BCalque _cq) {
+ if (_cq instanceof ZCalquePoint && (mask_&GISLib.MASK_POINT)!=0) {
+ return ((ZCalquePoint) _cq).modeleDonnees().getNombre() > 0;
+ }
+ else if (_cq instanceof ZCalqueMultiPoint && (mask_&GISLib.MASK_MULTIPOINT)!=0) {
+ return ((ZCalqueMultiPoint) _cq).modeleDonnees().getNombre() > 0;
+ }
+ else if (_cq instanceof ZCalqueLigneBrisee && (mask_&GISLib.MASK_POLYLINE)!=0) {
+ boolean bok=((ZCalqueLigneBrisee) _cq).modeleDonnees().getNombre() > 0;
+ return bok && (!((ZCalqueLigneBrisee) _cq).containsPolygone());
+ }
+ else if (_cq instanceof ZCalqueLigneBrisee && (mask_&GISLib.MASK_POLYGONE)!=0) {
+ boolean bok=((ZCalqueLigneBrisee) _cq).modeleDonnees().getNombre() > 0;
+ return bok && ((ZCalqueLigneBrisee) _cq).containsPolygone();
+ }
+ return false;
+ }
+
+ public void setMask(int _mask) {
+ mask_=_mask;
+ }
+
+ public int getMask() {
+ return mask_;
+ }
+
+ public boolean isFound() {
+ return found_;
+ }
+
+ public void resetFound() {
+ found_ = false;
+ }
+
+}
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java
___________________________________________________________________
Added: svn:mergeinfo
+
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindCourbeTreeModel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindCourbeTreeModel.java 2008-08-12 07:45:50 UTC (rev 3772)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindCourbeTreeModel.java 2008-08-12 09:58:15 UTC (rev 3773)
@@ -35,6 +35,7 @@
import org.fudaa.ctulu.gis.GISAttributeConstants;
import org.fudaa.ctulu.gis.GISAttributeModelObjectInterface;
import org.fudaa.ctulu.gis.GISGeometry;
+import org.fudaa.ctulu.gis.GISLib;
import org.fudaa.ctulu.gis.GISVisitorChooser;
import org.fudaa.ctulu.gis.GISVisitorLigneCollector;
import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
@@ -44,6 +45,7 @@
import org.fudaa.ebli.calque.BArbreCalqueModel;
import org.fudaa.ebli.calque.BCalque;
import org.fudaa.ebli.calque.BGroupeCalque;
+import org.fudaa.ebli.calque.CalqueGeometryVisitor;
import org.fudaa.ebli.calque.ZCalqueLigneBrisee;
import org.fudaa.ebli.commun.EbliLib;
import org.fudaa.ebli.ressource.EbliResource;
@@ -61,7 +63,7 @@
final BGroupeCalque rootLayer_;
LayerNode rootNode_;
boolean onlyLigneFerme_;
- final CalqueFindPolyligneVisitor finder_ = new CalqueFindPolyligneVisitor(false);
+ final CalqueGeometryVisitor finder_ = new CalqueGeometryVisitor(GISLib.MASK_POLYLINE|GISLib.MASK_POLYGONE);
public static class CellRenderer extends JLabel implements TreeCellRenderer {
final Color selectedBackground_ = UIManager.getColor("Tree.selectionBackground");
@@ -300,7 +302,9 @@
public void setOnlyLigneFerme(final boolean _onlyLigneFerme) {
onlyLigneFerme_ = _onlyLigneFerme;
- finder_.setOnlyPolygone(onlyLigneFerme_);
+ int mask=GISLib.MASK_POLYGONE;
+ if (!_onlyLigneFerme) mask|=GISLib.MASK_POLYLINE;
+ finder_.setMask(mask);
buildTree();
}
Deleted: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPolyligneVisitor.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPolyligneVisitor.java 2008-08-12 07:45:50 UTC (rev 3772)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPolyligneVisitor.java 2008-08-12 09:58:15 UTC (rev 3773)
@@ -1,77 +0,0 @@
-/*
- * @creation 21 nov. 06
- * @modification $Date: 2006-12-05 10:14:38 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.ebli.calque.find;
-
-import org.fudaa.ebli.calque.BCalque;
-import org.fudaa.ebli.calque.BCalqueVisitor;
-import org.fudaa.ebli.calque.ZCalqueLigneBrisee;
-
-/**
- * @author fred deniger
- * @version $Id: CalqueFindPolyligneVisitor.java,v 1.1 2006-12-05 10:14:38 deniger Exp $
- */
-public class CalqueFindPolyligneVisitor implements BCalqueVisitor {
-
- boolean onlyPolygone_;
-
- boolean found_;
-
- public CalqueFindPolyligneVisitor() {
- super();
- }
-
- public CalqueFindPolyligneVisitor(final boolean _onlyPolygone) {
- super();
- onlyPolygone_ = _onlyPolygone;
- }
-
- public boolean visit(final BCalque _cq) {
- // on arrete la visite
- if (found_) {
- return false;
- }
- if (_cq == null || _cq.isGroupeCalque()) {
- return true;
- }
-
- found_ = isMatching(_cq);
- if (found_) {
- return false;
- }
- return true;
- }
-
- public boolean isMatching(final BCalque _cq) {
- boolean ok = _cq instanceof ZCalqueLigneBrisee;
- if (ok) {
- ok = ((ZCalqueLigneBrisee) _cq).modeleDonnees().getNombre() > 0;
- }
- if (ok && onlyPolygone_) {
- ok = ((ZCalqueLigneBrisee) _cq).containsPolygone();
- }
- return ok;
-
- }
-
- public boolean isOnlyPolygone() {
- return onlyPolygone_;
- }
-
- public void setOnlyPolygone(final boolean _onlyPolygone) {
- onlyPolygone_ = _onlyPolygone;
- }
-
- public boolean isFound() {
- return found_;
- }
-
- public void resetFound() {
- found_ = false;
- }
-
-}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-08-12 10:45:21
|
Revision: 3776
http://fudaa.svn.sourceforge.net/fudaa/?rev=3776&view=rev
Author: bmarchan
Date: 2008-08-12 10:45:27 +0000 (Tue, 12 Aug 2008)
Log Message:
-----------
ZModeleLigneBrisee et ZModeleMultiPoint heritent de ZModeleGeometry
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleLigneBrisee.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleMultiPoint.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileLayerModelForCourbe.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2008-08-12 10:15:52 UTC (rev 3775)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2008-08-12 10:45:27 UTC (rev 3776)
@@ -149,7 +149,7 @@
}
protected void initTrace(final TraceLigneModel _ligne, final int _idxPoly) {
- final int idx = modele_.isLigneFermee(_idxPoly) ? 0 : 1;
+ final int idx = modele_.isGeometryFermee(_idxPoly) ? 0 : 1;
_ligne.updateData(getLineModel(idx));
if (isAttenue()) {
_ligne.setCouleur(EbliLib.getAlphaColor(attenueCouleur(_ligne.getCouleur()), alpha_));
@@ -160,7 +160,7 @@
}
protected void initTrace(final TraceIconModel _icon, final int _idxPoly) {
- final int idx = modele_.isLigneFermee(_idxPoly) ? 0 : 1;
+ final int idx = modele_.isGeometryFermee(_idxPoly) ? 0 : 1;
_icon.updateData(getIconModel(idx));
if (isAttenue()) {
_icon.setCouleur(EbliLib.getAlphaColor(attenueCouleur(_icon.getCouleur()), alpha_));
@@ -360,7 +360,7 @@
}
}
- nb += modele_.getNbPointForLigne(i);
+ nb += modele_.getNbPointForGeometry(i);
}
return list.toNativeArray();
@@ -434,10 +434,10 @@
CtuluListSelection s = selectionMulti_.get(i);
if (s == null) {
s = new CtuluListSelection();
- s.setSelectionInterval(0, modele_.getNbPointForLigne(i) - 1);
+ s.setSelectionInterval(0, modele_.getNbPointForGeometry(i) - 1);
selectionMulti_.set(i, s);
} else {
- s.inverse(modele_.getNbPointForLigne(i));
+ s.inverse(modele_.getNbPointForGeometry(i));
}
}
fireSelectionEvent();
@@ -454,7 +454,7 @@
for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) {
final CtuluListSelection s = selectionMulti_.get(i);
if (s != null) {
- s.inverse(modele_.getNbPointForLigne(i));
+ s.inverse(modele_.getNbPointForGeometry(i));
}
}
fireSelectionEvent();
@@ -530,16 +530,16 @@
// on part de la fin : comme ca la premiere ligne apparait au-dessus
for (int i = nombre - 1; i >= 0; i--) {
// il n'y a pas de points pour cette ligne
- if (modele_.getNbPointForLigne(i) <= 0) {
+ if (modele_.getNbPointForGeometry(i) <= 0) {
continue;
}
- modele_.getDomaineForLigne(i, bPoly);
+ modele_.getDomaineForGeometry(i, bPoly);
// Si la boite du polygone n'est pas dans la boite d'affichage on passe
if (bPoly.intersectionXY(clip) == null) {
continue;
}
- final int nbPoints = modele_.getNbPointForLigne(i);
+ final int nbPoints = modele_.getNbPointForGeometry(i);
if (nbPoints <= 0) {
continue;
}
@@ -557,7 +557,7 @@
tl.dessineTrait(_g, ptOri.x_, ptOri.y_, ptDest.x_, ptDest.y_);
ptOri.initialiseAvec(ptDest);
}
- if (modele_.isLigneFermee(i)) {
+ if (modele_.isGeometryFermee(i)) {
modele_.point(ptOri, i, nbPoints - 1);
ptOri.autoApplique(versEcran);
tl.dessineTrait(_g, ptOri.x_, ptOri.y_, ptDest.x_, ptDest.y_);
@@ -570,15 +570,15 @@
if (icone != null && !isRapide()) {
for (int i = nombre - 1; i >= 0; i--) {
// il n'y a pas de points pour cette ligne
- if (modele_.getNbPointForLigne(i) <= 0) {
+ if (modele_.getNbPointForGeometry(i) <= 0) {
continue;
}
- modele_.getDomaineForLigne(i, bPoly);
+ modele_.getDomaineForGeometry(i, bPoly);
// Si la boite du polygone n'est pas dans la boite d'affichage on passe
if (bPoly.intersectionXY(clip) == null) {
continue;
}
- final int nbPoints = modele_.getNbPointForLigne(i);
+ final int nbPoints = modele_.getNbPointForGeometry(i);
if (nbPoints <= 0) {
continue;
}
@@ -634,12 +634,12 @@
if (!_containers.isSelected(i)) {
continue;
}
- modele_.getDomaineForLigne(i, bPoly);
+ modele_.getDomaineForGeometry(i, bPoly);
// Si la boite du polygone n'est pas dans la boite d'affichage on passe
if (bPoly.intersectionXY(clip) == null) {
continue;
}
- final int nbPoints = modele_.getNbPointForLigne(i);
+ final int nbPoints = modele_.getNbPointForGeometry(i);
final GrPoint ptOri = new GrPoint();
modele_.point(ptOri, i, nbPoints - 1);
ptOri.autoApplique(versEcran);
@@ -653,7 +653,7 @@
tlSelection.dessineTrait((Graphics2D) _g, ptOri.x_, ptOri.y_, ptDest.x_, ptDest.y_);
ptOri.initialiseAvec(ptDest);
}
- if (modele_.isLigneFermee(i)) {
+ if (modele_.isGeometryFermee(i)) {
modele_.point(ptOri, i, nbPoints - 1);
ptOri.autoApplique(versEcran);
tlSelection.dessineTrait((Graphics2D) _g, ptOri.x_, ptOri.y_, ptDest.x_, ptDest.y_);
@@ -675,10 +675,10 @@
for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) {
CtuluListSelection s = selectionMulti_.get(i);
if (s == null) {
- s = new CtuluListSelection(modele_.getNbPointForLigne(i));
+ s = new CtuluListSelection(modele_.getNbPointForGeometry(i));
selectionMulti_.set(i, s);
}
- s.setSelectionInterval(0, modele_.getNbPointForLigne(i) - 1);
+ s.setSelectionInterval(0, modele_.getNbPointForGeometry(i) - 1);
}
fireSelectionEvent();
}
@@ -700,9 +700,9 @@
final GrSegment poly = new GrSegment(new GrPoint(), new GrPoint());
final GrBoite bPoly = new GrBoite(new GrPoint(), new GrPoint());
for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) {
- modele_.getDomaineForLigne(i, bPoly);
+ modele_.getDomaineForGeometry(i, bPoly);
if (bPoly.contientXY(_pt)||bPoly.distanceXY(_pt)<distanceReel) {
- for (int j=modele_.getNbPointForLigne(i)-1; j>0; j--) {
+ for (int j=modele_.getNbPointForGeometry(i)-1; j>0; j--) {
modele_.point(poly.e_, i, j);
modele_.point(poly.o_, i, j-1);
if (poly.distanceXY(_pt)<distanceReel) {
@@ -711,9 +711,9 @@
return r;
}
}
- if (modele_.isLigneFermee(i)) {
+ if (modele_.isGeometryFermee(i)) {
modele_.point(poly.e_, i, 0);
- modele_.point(poly.o_, i, modele_.getNbPointForLigne(i)-1);
+ modele_.point(poly.o_, i, modele_.getNbPointForGeometry(i)-1);
if (poly.distanceXY(_pt)<distanceReel) {
final CtuluListSelection r=new CtuluListSelection(1);
r.setSelectionInterval(i, i);
@@ -745,13 +745,13 @@
final GrPoint p = new GrPoint();
final GrBoite bPoly = new GrBoite(new GrPoint(), new GrPoint());
for (int i = getModele().getNombre() - 1; i >= 0; i--) {
- modele_.getDomaineForLigne(i, bPoly);
+ modele_.getDomaineForGeometry(i, bPoly);
// si le poly est dans dans le poly de selection
boolean selected = false;
if (_mode == EbliSelectionMode.MODE_ALL) {
if (polyEnv.contains(bPoly.e_.x_, bPoly.e_.y_) && polyEnv.contains(bPoly.o_.x_, bPoly.o_.y_)) {
selected = true;
- for (int j = modele_.getNbPointForLigne(i) - 1; (j >= 0) && selected; j--) {
+ for (int j = modele_.getNbPointForGeometry(i) - 1; (j >= 0) && selected; j--) {
modele_.point(p, i, j);
c.x = p.x_;
c.y = p.y_;
@@ -762,7 +762,7 @@
}
} else if (_mode == EbliSelectionMode.MODE_ONE) {
if (polyEnv.intersects(bPoly.getEnv())) {
- for (int j = modele_.getNbPointForLigne(i) - 1; (j >= 0) && !selected; j--) {
+ for (int j = modele_.getNbPointForGeometry(i) - 1; (j >= 0) && !selected; j--) {
modele_.point(p, i, j);
c.x = p.x_;
c.y = p.y_;
@@ -808,9 +808,9 @@
final GrPoint p = new GrPoint();
final GrBoite btLigne = new GrBoite();
for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) {
- modele_.getDomaineForLigne(i, btLigne);
+ modele_.getDomaineForGeometry(i, btLigne);
if (btLigne.contientXY(_pt) || btLigne.distanceXY(_pt) < distanceReel) {
- for (int j = modele_.getNbPointForLigne(i) - 1; j >= 0; j--) {
+ for (int j = modele_.getNbPointForGeometry(i) - 1; j >= 0; j--) {
modele_.point(p, i, j);
if (bClip.contientXY(p) && (p.distanceXY(_pt) < distanceReel)) {
final EbliListeSelectionMulti r = new EbliListeSelectionMulti(1);
@@ -842,7 +842,7 @@
final Coordinate c = new Coordinate();
for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) {
CtuluListSelection l = null;
- final int nbPt = modele_.getNbPointForLigne(i);
+ final int nbPt = modele_.getNbPointForGeometry(i);
for (int j = nbPt - 1; j >= 0; j--) {
modele_.point(p, i, j);
c.x = p.x_;
@@ -940,7 +940,7 @@
return createLineFromSelection(i, selection, nbSelected);
} else if (nbSelected >= 2) {
- final int nbPointForLigne = getModele().getNbPointForLigne(i);
+ final int nbPointForLigne = getModele().getNbPointForGeometry(i);
final int[] res = CtuluListSelection.isSelectionContiguous(select.getSelection(i), nbPointForLigne);
if (res == null) {
return null;
@@ -948,7 +948,7 @@
// selection normale
if (res[0] < res[1]) {
return createLineFromSelection(i, selection, nbSelected);
- } else if (getModele().isLigneFermee(i)) {
+ } else if (getModele().isGeometryFermee(i)) {
final Coordinate[] cs = new Coordinate[nbSelected];
int csi = 0;
final LineString string = (LineString) getModele().getGeomData().getGeometry(i);
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java 2008-08-12 10:45:27 UTC (rev 3776)
@@ -0,0 +1,62 @@
+/*
+ * @creation 31 mars 2005
+ * @modification $Date: 2008-03-26 16:46:43 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.calque;
+
+import org.fudaa.ebli.geometrie.GrBoite;
+import org.fudaa.ebli.geometrie.GrPoint;
+
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.LineString;
+
+/**
+ * Un mod\xE8le contenant toutes sortes de GIS g\xE9om\xE9tries (non sp\xE9cialis\xE9).
+ * @see org.fudaa.ebli.calque.ZCalqueGeometry
+ * @author Bertrand Marchand
+ * @version $Id: ZModeleMultiPoint.java,v 1.1.2.1 2008-03-26 16:46:43 bmarchan Exp $
+ */
+public interface ZModeleGeometry extends ZModeleGeom{
+
+ /**
+ * Retourne le nombre de points de la g\xE9om\xE9trie d'indice donn\xE9.
+ * @param _idxGeom l'indice de la g\xE9om\xE9trie
+ * @return le nombre de point pour cette frontiere
+ */
+ int getNbPointForGeometry(int _idxGeom);
+
+ /**
+ * Modifie la boite englobante _target pour correspondre \xE0 la boite englobante de la g\xE9om\xE9trie.
+ * @param _idxGeom l'indice de la g\xE9om\xE9trie
+ * @param _target la boite a modifier
+ */
+ void getDomaineForGeometry(int _idxGeom, GrBoite _target);
+
+ /**
+ * Modifie les coordonn\xE9es du sommet _pt pour correspondre au point d'indice _pointIdx de la
+ * g\xE9om\xE9trie.
+ *
+ * @param _pt le point a modifier
+ * @param _idxGeom l'indice de la g\xE9om\xE9trie
+ * @param _pointIdx l'indice du point dans la g\xE9om\xE9trie
+ * @return true si indices valides
+ */
+ boolean point(GrPoint _pt, int _idxGeom, int _pointIdx);
+
+ /**
+ * La g\xE9ometrie est-elle reli\xE9e.
+ * @param _idxGeom L'indice de la g\xE9om\xE9trie dans le mod\xE8le.
+ * @return True : Si la g\xE9om\xE9trie est reli\xE9e.
+ */
+ public boolean isGeometryReliee(int _idxGeom);
+
+ /**
+ * La g\xE9ometrie est-elle ferm\xE9e.
+ * @param _idxGeom L'indice de la g\xE9om\xE9trie dans le mod\xE8le.
+ * @return True : Si la g\xE9om\xE9trie est ferm\xE9e.
+ */
+ public boolean isGeometryFermee(int _idxGeom);
+}
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleLigneBrisee.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleLigneBrisee.java 2008-08-12 10:15:52 UTC (rev 3775)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleLigneBrisee.java 2008-08-12 10:45:27 UTC (rev 3776)
@@ -1,72 +1,40 @@
-/*
- * @creation 31 mars 2005
- * @modification $Date: 2008-03-26 16:46:43 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.ebli.calque;
-
-import org.fudaa.ebli.geometrie.GrBoite;
-import org.fudaa.ebli.geometrie.GrPoint;
-
-
-/**
- * Une interface mod\xE8le manipul\xE9e par un calque ZCalqueLigneBrisee.
- * @see org.fudaa.ebli.calque.ZCalqueLigneBrisee
- * @author Fred Deniger
- * @version $Id: ZModeleLigneBrisee.java,v 1.7.8.3 2008-03-26 16:46:43 bmarchan Exp $
- */
-public interface ZModeleLigneBrisee extends ZModeleGeom{
-
- /**
- * Retourne le nombre de lignes brisees contenues dans le mod\xE8le.
- * @return Le nombre de lignes bris\xE9es.
- */
- int getNbLigneBrisee();
-
-
- /**
- * Le mod\xE8le contient-il des polygones (ligne bris\xE9e ferm\xE9e) ?
- * @return <code>true</code> s'il existe au moins 1 polygone dans le mod\xE8le.
- */
- boolean containsPolygone();
-
- /**
- * Retourne le nombre de polygones (ligne bris\xE9e ferm\xE9e) contenus dans le mod\xE8le.
- * @return le nombre de polygone
- */
- int getNbPolygone();
-
- /**
- * Retourne le nombre de points de la polyligne d'indice donn\xE9.
- * @param _idxLigne l'indice de la ligne brise
- * @return le nombre de point pour cette frontiere
- */
- int getNbPointForLigne(int _idxLigne);
-
- /**
- * Modifie la boite englobante _target pour correspondre \xE0 la boite englobante de la polyligne.
- * @param _idxLigne l'indice de la ligne brisee
- * @param _target la boite a modifier
- */
- void getDomaineForLigne(int _idxLigne,GrBoite _target);
-
- /**
- * Modifie les coordonn\xE9es du point _pt pour correspondre au point d'indice _pointIdx de la
- * ligne bris\xE9e.
- *
- * @param _pt le point a modifier
- * @param _ligneIdx la ligne brisee
- * @param _pointIdx l'indice du point dans la ligne brisee
- * @return true si indices valides
- */
- boolean point(GrPoint _pt, int _ligneIdx, int _pointIdx);
-
- /**
- * La ligne d'indice _idxLigne est elle ferm\xE9e (polygone) ?
- * @param _idxLigne l'indice de la ligne brisee.
- * @return true si ligne fermee (polygone)
- */
- boolean isLigneFermee(int _idxLigne);
-}
+/*
+ * @creation 31 mars 2005
+ * @modification $Date: 2008-03-26 16:46:43 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.calque;
+
+import org.fudaa.ebli.geometrie.GrBoite;
+import org.fudaa.ebli.geometrie.GrPoint;
+
+
+/**
+ * Une interface mod\xE8le manipul\xE9e par un calque ZCalqueLigneBrisee.
+ * @see org.fudaa.ebli.calque.ZCalqueLigneBrisee
+ * @author Fred Deniger
+ * @version $Id: ZModeleLigneBrisee.java,v 1.7.8.3 2008-03-26 16:46:43 bmarchan Exp $
+ */
+public interface ZModeleLigneBrisee extends ZModeleGeometry {
+
+ /**
+ * Retourne le nombre de lignes brisees contenues dans le mod\xE8le.
+ * @return Le nombre de lignes bris\xE9es.
+ */
+ int getNbLigneBrisee();
+
+
+ /**
+ * Le mod\xE8le contient-il des polygones (ligne bris\xE9e ferm\xE9e) ?
+ * @return <code>true</code> s'il existe au moins 1 polygone dans le mod\xE8le.
+ */
+ boolean containsPolygone();
+
+ /**
+ * Retourne le nombre de polygones (ligne bris\xE9e ferm\xE9e) contenus dans le mod\xE8le.
+ * @return le nombre de polygone
+ */
+ int getNbPolygone();
+}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleMultiPoint.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleMultiPoint.java 2008-08-12 10:15:52 UTC (rev 3775)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleMultiPoint.java 2008-08-12 10:45:27 UTC (rev 3776)
@@ -17,30 +17,5 @@
* @author Bertrand Marchand
* @version $Id: ZModeleMultiPoint.java,v 1.1.2.1 2008-03-26 16:46:43 bmarchan Exp $
*/
-public interface ZModeleMultiPoint extends ZModeleGeom{
-
- /**
- * Retourne le nombre de points de la polyligne d'indice donn\xE9.
- * @param _idxLigne l'indice de la ligne brise
- * @return le nombre de point pour cette frontiere
- */
- int getNbPointForGeometry(int _idxLigne);
-
- /**
- * Modifie la boite englobante _target pour correspondre \xE0 la boite englobante de la polyligne.
- * @param _idxLigne l'indice de la ligne brisee
- * @param _target la boite a modifier
- */
- void getDomaineForGeometry(int _idxLigne,GrBoite _target);
-
- /**
- * Modifie les coordonn\xE9es du point _pt pour correspondre au point d'indice _pointIdx de la
- * ligne bris\xE9e.
- *
- * @param _pt le point a modifier
- * @param _ligneIdx la ligne brisee
- * @param _pointIdx l'indice du point dans la ligne brisee
- * @return true si indices valides
- */
- boolean point(GrPoint _pt, int _ligneIdx, int _pointIdx);
+public interface ZModeleMultiPoint extends ZModeleGeometry {
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-08-12 10:15:52 UTC (rev 3775)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-08-12 10:45:27 UTC (rev 3776)
@@ -130,8 +130,8 @@
_trace.paintIconCentre(this, _g, xPivot, yPivot);
// trace de la ligne j-1 ->j
int j0 = j - 1;
- if (j0 < 0 && modele_.isLigneFermee(idxPoly)) {
- j0 = modele_.getNbPointForLigne(idxPoly) - 1;
+ if (j0 < 0 && modele_.isGeometryFermee(idxPoly)) {
+ j0 = modele_.getNbPointForGeometry(idxPoly) - 1;
}
if (j0 >= 0) {
modele_.point(p, idxPoly, j0);
@@ -143,10 +143,10 @@
tl.dessineTrait(_g, xPivot, yPivot, p.x_, p.y_);
}
j0 = j + 1;
- if (j0 == modele_.getNbPointForLigne(idxPoly) && modele_.isLigneFermee(idxPoly)) {
+ if (j0 == modele_.getNbPointForGeometry(idxPoly) && modele_.isGeometryFermee(idxPoly)) {
j0 = 0;
}
- if (j0 < modele_.getNbPointForLigne(idxPoly)) {
+ if (j0 < modele_.getNbPointForGeometry(idxPoly)) {
modele_.point(p, idxPoly, j0);
p.autoApplique(versEcran);
if (s.isSelected(j0)) {
@@ -184,9 +184,9 @@
int i=selection_.getMinIndex();
// for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) {
- modele_.getDomaineForLigne(i, bPoly);
+ modele_.getDomaineForGeometry(i, bPoly);
if (bPoly.contientXY(ptToTest) || bPoly.distanceXY(ptToTest) < distanceReel) {
- for (int j = modele_.getNbPointForLigne(i) - 1; j > 0; j--) {
+ for (int j = modele_.getNbPointForGeometry(i) - 1; j > 0; j--) {
modele_.point(seg.e_, i, j);
modele_.point(seg.o_, i, j - 1);
if (seg.distanceXY(ptToTest) < distanceReel) {
@@ -194,11 +194,11 @@
return true;
}
}
- if (modele_.isLigneFermee(i)) {
+ if (modele_.isGeometryFermee(i)) {
modele_.point(seg.e_, i, 0);
- modele_.point(seg.o_, i, modele_.getNbPointForLigne(i) - 1);
+ modele_.point(seg.o_, i, modele_.getNbPointForGeometry(i) - 1);
if (seg.distanceXY(ptToTest) < distanceReel) {
- addPoint(i, modele_.getNbPointForLigne(i) - 1, ptToTest.x_, ptToTest.y_, _cmd);
+ addPoint(i, modele_.getNbPointForGeometry(i) - 1, ptToTest.x_, ptToTest.y_, _cmd);
return true;
}
}
@@ -321,12 +321,12 @@
if (!selection_.isSelected(i)) {
continue;
}
- modele_.getDomaineForLigne(i, bPoly);
+ modele_.getDomaineForGeometry(i, bPoly);
// Si la boite du polygone n'est pas dans la boite d'affichage on passe
if (bPoly.intersectionXY(clip) == null) {
continue;
}
- final int nbPoints = modele_.getNbPointForLigne(i);
+ final int nbPoints = modele_.getNbPointForGeometry(i);
final GrPoint ptOri = new GrPoint();
modele_.point(ptOri, i, nbPoints - 1);
ptOri.autoApplique(versEcran);
@@ -340,7 +340,7 @@
tlSelection.dessineTrait(_g2d, ptOri.x_ + _dx, ptOri.y_ + _dy, ptDest.x_ + _dx, ptDest.y_ + _dy);
ptOri.initialiseAvec(ptDest);
}
- if (modele_.isLigneFermee(i)) {
+ if (modele_.isGeometryFermee(i)) {
modele_.point(ptOri, i, nbPoints - 1);
ptOri.autoApplique(versEcran);
tlSelection.dessineTrait(_g2d, ptOri.x_ + _dx, ptOri.y_ + _dy, ptDest.x_ + _dx, ptDest.y_ + _dy);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java 2008-08-12 10:15:52 UTC (rev 3775)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java 2008-08-12 10:45:27 UTC (rev 3776)
@@ -309,7 +309,7 @@
if (nb == 1) {
final int idxPoly = layer.getLayerSelection().getMaxIndex();
_d.setTitle(EbliLib.getS("Ligne bris\xE9e {0}", CtuluLibString.getString(idxPoly + 1)));
- _d.put(CtuluLib.getS("Ferm\xE9"), isLigneFermee(idxPoly) ? CtuluLib.getS("vrai") : CtuluLib.getS("faux"));
+ _d.put(CtuluLib.getS("Ferm\xE9"), isGeometryFermee(idxPoly) ? CtuluLib.getS("vrai") : CtuluLib.getS("faux"));
_d.put(CtuluLib.getS("Valid"), getGeomData().getGeometry(idxPoly).isValid() ? CtuluLib.getS("vrai") : CtuluLib
.getS("faux"));
fillWithInfo(idxPoly, _d);
@@ -352,7 +352,7 @@
return new GrBoite(new GrPoint(e.getMinX(), e.getMinY(), 0), new GrPoint(e.getMaxX(), e.getMaxY(), 0));
}
- public final void getDomaineForLigne(final int _idxLigne, final GrBoite _target) {
+ public final void getDomaineForGeometry(final int _idxLigne, final GrBoite _target) {
if (geometries_ == null || geometries_.getNumGeometries() == 0) {
return;
}
@@ -380,7 +380,7 @@
return getNombre();
}
- public final int getNbPointForLigne(final int _idxLigne) {
+ public final int getNbPointForGeometry(final int _idxLigne) {
if (geometries_ == null) {
return 0;
}
@@ -415,10 +415,14 @@
return false;
}
- public final boolean isLigneFermee(final int _idxLigne) {
+ public final boolean isGeometryFermee(final int _idxLigne) {
return geometries_ == null ? false : ((LineString) geometries_.getGeometry(_idxLigne)).isClosed();
}
+ public final boolean isGeometryReliee(final int _idxLigne) {
+ return true;
+ }
+
public boolean isValuesTableAvailable() {
return true;
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-08-12 10:15:52 UTC (rev 3775)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-08-12 10:45:27 UTC (rev 3776)
@@ -510,7 +510,7 @@
FuLog.warning("EBL:Pb l'attribut pour Z n'est pas dans la liste des attributs du calque!");
}
- if (isLigneFermee(i)) {
+ if (isGeometryFermee(i)) {
final GISPolygone poly = (GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(newSeq);
geometries_.setValue(i, poly, cmp);
}
@@ -572,7 +572,7 @@
final double newY = newSeq.getY(j) + _dy;
newSeq.setOrdinate(j, 0, newX);
newSeq.setOrdinate(j, 1, newY);
- if (j == 0 && isLigneFermee(idx)) {
+ if (j == 0 && isGeometryFermee(idx)) {
newSeq.setOrdinate(newSeq.size() - 1, 0, newX);
newSeq.setOrdinate(newSeq.size() - 1, 1, newY);
}
@@ -582,7 +582,7 @@
}
}
- if (isLigneFermee(idx)) {
+ if (isGeometryFermee(idx)) {
final GISPolygone poly = (GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(newSeq);
if (!poly.isValid()) {
if (_ui != null) {
@@ -643,7 +643,7 @@
newSeq.setOrdinate(j, 0, dxnew+_xreel0);
newSeq.setOrdinate(j, 1, dynew+_yreel0);
}
- if (isLigneFermee(i)) {
+ if (isGeometryFermee(i)) {
final GISPolygone poly = (GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(newSeq);
geometries_.setValue(i, poly, cmp);
}
@@ -696,13 +696,13 @@
newSeq.setOrdinate(j, 0, dxnew+_xreel0);
newSeq.setOrdinate(j, 1, dynew+_yreel0);
- if (j == 0 && isLigneFermee(idx)) {
+ if (j == 0 && isGeometryFermee(idx)) {
newSeq.setOrdinate(newSeq.size() - 1, 0, dxnew+_xreel0);
newSeq.setOrdinate(newSeq.size() - 1, 1, dynew+_yreel0);
}
}
}
- if (isLigneFermee(idx)) {
+ if (isGeometryFermee(idx)) {
final GISPolygone poly = (GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(newSeq);
if (!poly.isValid()) {
if (_ui != null) {
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-08-12 10:15:52 UTC (rev 3775)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-08-12 10:45:27 UTC (rev 3776)
@@ -834,4 +834,12 @@
if (_cmd!=null) _cmd.addCmd(cmp.getSimplify());
return true;
}
+
+ public boolean isGeometryFermee(int _idxGeom) {
+ return false;
+ }
+
+ public boolean isGeometryReliee(int _idxGeom) {
+ return false;
+ }
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileLayerModelForCourbe.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileLayerModelForCourbe.java 2008-08-12 10:15:52 UTC (rev 3775)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileLayerModelForCourbe.java 2008-08-12 10:45:27 UTC (rev 3776)
@@ -38,7 +38,7 @@
return false;
}
- public void getDomaineForLigne(int _idxLigne, GrBoite _target) {
+ public void getDomaineForGeometry(int _idxLigne, GrBoite _target) {
_target.ajuste(domaine_);
}
@@ -46,7 +46,7 @@
return res_ == null ? 0 : 1;
}
- public int getNbPointForLigne(int _idxLigne) {
+ public int getNbPointForGeometry(int _idxLigne) {
return res_ == null ? 0 : res_.getNbIntersect();
}
@@ -54,10 +54,14 @@
return 0;
}
- public boolean isLigneFermee(int _idxLigne) {
+ public boolean isGeometryFermee(int _idxLigne) {
return false;
}
+ public boolean isGeometryReliee(int _idxGeom) {
+ return true;
+ }
+
public boolean point(GrPoint _pt, int _ligneIdx, int _pointIdx) {
if (res_ == null) return false;
_pt.x_ = res_.getIntersect(_pointIdx).getX();
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java 2008-08-12 10:15:52 UTC (rev 3775)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java 2008-08-12 10:45:27 UTC (rev 3776)
@@ -73,7 +73,7 @@
return false;
}
- public void getDomaineForLigne(final int _idxLigne, final GrBoite _target) {
+ public void getDomaineForGeometry(final int _idxLigne, final GrBoite _target) {
if (_target.o_ == null) {
_target.o_ = new GrPoint();
}
@@ -90,7 +90,7 @@
return isClosed_ ? 0 : 1;
}
- public int getNbPointForLigne(final int _idxLigne) {
+ public int getNbPointForGeometry(final int _idxLigne) {
return r_.getNumPoints();
}
@@ -98,7 +98,7 @@
return isClosed_ ? 1 : 0;
}
- public boolean isLigneFermee(final int _idxLigne) {
+ public boolean isGeometryFermee(final int _idxLigne) {
return isClosed_;
}
@@ -123,4 +123,8 @@
}
public void fillWithInfo(final InfoData _d, final ZCalqueAffichageDonneesInterface _layer) {}
+
+ public boolean isGeometryReliee(int geom) {
+ return true;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-08-12 15:48:55
|
Revision: 3787
http://fudaa.svn.sourceforge.net/fudaa/?rev=3787&view=rev
Author: bmarchan
Date: 2008-08-12 15:48:58 +0000 (Tue, 12 Aug 2008)
Log Message:
-----------
CalqueFindCourbeTreeModel g?\195?\169n?\195?\169ralis?\195?\169 et renomm?\195?\169 en CalqueGISTreeModel
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindComponentPolygone.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilderFromTree.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java
Removed Paths:
-------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindCourbeTreeModel.java
Copied: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java (from rev 3783, branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindCourbeTreeModel.java)
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java 2008-08-12 15:48:58 UTC (rev 3787)
@@ -0,0 +1,348 @@
+/*
+ * @creation 21 nov. 06
+ * @modification $Date: 2007-05-04 13:49:46 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.calque;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Observable;
+import java.util.Observer;
+
+import javax.swing.BorderFactory;
+import javax.swing.Icon;
+import javax.swing.JLabel;
+import javax.swing.JTree;
+import javax.swing.UIManager;
+import javax.swing.border.Border;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.DefaultTreeSelectionModel;
+import javax.swing.tree.TreeCellRenderer;
+import javax.swing.tree.TreePath;
+import javax.swing.tree.TreeSelectionModel;
+
+import org.fudaa.ctulu.CtuluLib;
+import org.fudaa.ctulu.CtuluLibArray;
+import org.fudaa.ctulu.CtuluLibString;
+import org.fudaa.ctulu.gis.GISAttributeConstants;
+import org.fudaa.ctulu.gis.GISAttributeModelObjectInterface;
+import org.fudaa.ctulu.gis.GISGeometry;
+import org.fudaa.ctulu.gis.GISLib;
+import org.fudaa.ctulu.gis.GISVisitorChooser;
+import org.fudaa.ctulu.gis.GISVisitorGeometryCollector;
+import org.fudaa.ctulu.gis.GISZoneCollection;
+import org.fudaa.ctulu.gui.CtuluCellRenderer;
+import org.fudaa.ctulu.image.CtuluLibImage;
+import org.fudaa.ebli.commun.EbliLib;
+import org.fudaa.ebli.ressource.EbliResource;
+
+import com.vividsolutions.jts.geom.Geometry;
+
+/**
+ * Un TreeModel repr\xE9sentant les calques contenant des g\xE9om\xE9tries. Ces g\xE9om\xE9tries peuvent \xEAtre filtr\xE9es par type.
+ * Ce mod\xE8le est automatiquement mis a jour si une instance de l'arbre des calque lui est fourni.
+ *
+ * @author Fred Deniger, Bertrand Marchand
+ * @version $Id: CalqueFindCourbeTreeModel.java,v 1.5 2007-05-04 13:49:46 deniger Exp $
+ */
+public class CalqueGISTreeModel extends DefaultTreeModel implements Observer {
+
+ final BGroupeCalque rootLayer_;
+ LayerNode rootNode_;
+ final CalqueGeometryVisitor finder_ = new CalqueGeometryVisitor();
+ GISVisitorChooser chooser_ = new GISVisitorChooser();
+
+ /**
+ * Le renderer pour l'arbre, gerant la non selection des calques si non autoris\xE9.
+ * @author Bertrand Marchand
+ */
+ public static class CellRenderer extends JLabel implements TreeCellRenderer {
+ final Color selectedBackground_ = UIManager.getColor("Tree.selectionBackground");
+ final Color selectedForground_ = UIManager.getColor("Tree.selectionForeground");
+ final Border focusBorderColor_ = BorderFactory.createLineBorder(UIManager.getColor("Tree.selectionBorderColor"), 1);
+ final boolean onlyLineSelectable_;
+
+ public CellRenderer(final boolean _onlyGeomSelectable) {
+ this.setOpaque(true);
+ setPreferredSize(new Dimension(120, 25));
+ onlyLineSelectable_ = _onlyGeomSelectable;
+ }
+
+ protected boolean isSelectable(final Object _value, final boolean _leaf) {
+ if (onlyLineSelectable_) {
+ if (!_leaf) {
+ return false;
+ }
+ final LayerNode node = (LayerNode) _value;
+ return node.idxGeom_ >= 0;
+ }
+ return true;
+
+ }
+
+ public Component getTreeCellRendererComponent(final JTree _tree, final Object _value, final boolean _selected,
+ final boolean _expanded, final boolean _leaf, final int _row, final boolean _hasFocus) {
+ this.setFont(_tree.getFont());
+ setIcon(((LayerNode) _value).getIcon());
+ setText(_value.toString());
+ final boolean selectable = isSelectable(_value, _leaf);
+ if (_selected && selectable) {
+ setBackground(selectedBackground_);
+ setForeground(selectedForground_);
+ } else {
+ setBackground(_tree.getBackground());
+ setForeground(_tree.getForeground());
+ }
+ if (selectable) {
+ setToolTipText(getText());
+ } else {
+ setToolTipText(getText() + ": " + CtuluLib.getS("Non s\xE9lectionnable"));
+ }
+ setBorder((selectable && _hasFocus) ? focusBorderColor_ : CtuluCellRenderer.BORDER_NO_FOCUS);
+ setEnabled(_tree.isEnabled());
+ return this;
+ }
+ }
+
+ /**
+ * Modele de selection de l'arbre, gerant la non selection des calques si non autoris\xE9.
+ * @author Bertrand Marchand
+ */
+ public static class OnlyGeomTreeSelectionModel extends DefaultTreeSelectionModel {
+
+ public void setSelectionPaths(final TreePath[] _paths) {
+ super.setSelectionPaths(getCorrectPaths(_paths));
+ }
+
+ public void addSelectionPaths(final TreePath[] _paths) {
+ super.addSelectionPaths(getCorrectPaths(_paths));
+ }
+
+ private TreePath[] getCorrectPaths(final TreePath[] _paths) {
+ TreePath[] paths = _paths;
+ if (!CtuluLibArray.isEmpty(_paths)) {
+ final List<TreePath> correctPath = new ArrayList<TreePath>(paths.length);
+ for (int i = 0; i < paths.length; i++) {
+ if (paths[i] != null && paths[i].getLastPathComponent() != null
+ && ((LayerNode) paths[i].getLastPathComponent()).idxGeom_ >= 0) {
+ correctPath.add(paths[i]);
+ }
+ }
+ if (correctPath.size() != paths.length) {
+ paths=correctPath.toArray(new TreePath[correctPath.size()]);
+ }
+ }
+ return paths;
+ }
+
+ }
+
+ /**
+ * Un noeud de l'arbre, customis\xE9 suivant le nom de la g\xE9om\xE9trie et son type.
+ * @author Bertrand Marchand
+ */
+ public static class LayerNode extends DefaultMutableTreeNode {
+
+ int idxGeom_ = -1;
+ String titre_;
+ final Icon icon_;
+
+ public LayerNode(final BCalque _userObject) {
+ super(_userObject, true);
+ icon_ = CtuluLibImage.resize(_userObject, 16, 16);
+ }
+
+ public LayerNode(final ZCalqueAffichageDonneesAbstract _userObject, final int _idx, final String _titre) {
+ super(_userObject, false);
+ idxGeom_ = _idx;
+ titre_ = _titre;
+
+ if (_userObject instanceof ZCalqueMultiPoint) {
+ icon_ = EbliResource.EBLI.getIcon("draw-multipoint");
+ }
+// else if (_userObject instanceof ZCalquePoint) {
+// icon_ = EbliResource.EBLI.getIcon("draw-add-pt");
+// }
+ else {
+ if (((ZCalqueLigneBrisee)_userObject).getModele().isGeometryFermee(_idx)) {
+ icon_=EbliResource.EBLI.getIcon("draw-polygon");
+ }
+ else {
+ icon_=EbliResource.EBLI.getIcon("draw-polyline");
+ }
+ }
+ }
+
+ public String toString() {
+ if (titre_ != null) {
+ return titre_;
+ }
+ return ((BCalque) userObject).getTitle();
+ }
+
+ public Icon getIcon() {
+ return icon_;
+ }
+
+ public int getIdxGeom() {
+ return idxGeom_;
+ }
+
+ }
+
+ /**
+ * Cr\xE9ation du modele a partir de la racine des calques.
+ */
+ public CalqueGISTreeModel(final BArbreCalqueModel _model, final BGroupeCalque _root) {
+ super(new LayerNode(_root));
+ rootNode_=(LayerNode)getRoot();
+ rootLayer_ = _root;
+ if (_model != null) {
+ _model.getObservable().addObserver(this);
+ }
+
+ buildTree();
+ }
+
+ public final void buildTree() {
+ rootNode_.removeAllChildren();
+ addLayer(rootNode_, rootLayer_);
+ }
+
+ protected boolean containsGeometries(final BCalque _cq) {
+ finder_.resetFound();
+ _cq.apply(finder_);
+ return finder_.isFound();
+ }
+
+ /**
+ * Remplit la liste avec les geometries du noeud.
+ * @param _nd Le noeud.
+ * @param _dest La liste de destination.
+ */
+ public void fillWithGeometries(LayerNode _nd, final List<Geometry> _dest) {
+ if (_nd.idxGeom_ >= 0) {
+ final ZModeleGeom md=(ZModeleGeom)((ZCalqueAffichageDonneesAbstract)_nd.getUserObject()).modeleDonnees();
+ _dest.add(md.getGeomData().getGeometry(_nd.idxGeom_));
+ } else if (((BCalque) _nd.getUserObject()).isGroupeCalque()) {
+ final BCalque[] cqs = ((BCalque) _nd.getUserObject()).getTousCalques();
+ if (cqs != null) {
+ for (int i = cqs.length - 1; i >= 0; i--) {
+ fillWithLayerGeometries(_dest, cqs[i]);
+ }
+ }
+
+ } else {
+ fillWithLayerGeometries(_dest, (BCalque) _nd.getUserObject());
+ }
+
+ }
+
+ private void fillWithLayerGeometries(final List<Geometry> _dest, final BCalque _cq) {
+ if (_cq instanceof ZCalqueAffichageDonneesAbstract) {
+ final GISZoneCollection collec = ((ZModeleGeom)((ZCalqueAffichageDonneesAbstract)_cq).modeleDonnees()).getGeomData();
+ final GISVisitorGeometryCollector visitor = new GISVisitorGeometryCollector(finder_.getMask());
+ collec.accept(visitor);
+ _dest.addAll(visitor.getGeometries());
+ }
+ }
+
+ void addLayer(final LayerNode _parent, final BGroupeCalque _gc) {
+ final BCalque[] cq = _gc.getCalques();
+ if (CtuluLibArray.isEmpty(cq)) {
+ return;
+ }
+ for (int i = 0; i < cq.length; i++) {
+ final LayerNode node = new LayerNode(cq[i]);
+ if (finder_.isMatching(cq[i])) {
+ _parent.add(node);
+ addGeometries(node, (ZCalqueAffichageDonneesAbstract) cq[i]);
+ }
+ else if (cq[i].isGroupeCalque() && containsGeometries(cq[i])) {
+ _parent.add(node);
+ addLayer(node, (BGroupeCalque) cq[i]);
+ }
+ }
+ }
+
+ void addGeometries(final LayerNode _parent, final ZCalqueAffichageDonneesAbstract _cq) {
+ final GISZoneCollection collec = ((ZModeleGeom)_cq.modeleDonnees()).getGeomData();
+ final GISAttributeModelObjectInterface nameAtt = (GISAttributeModelObjectInterface) collec.getModel(GISAttributeConstants.TITRE);
+ final int nb = collec.getNumGeometries();
+ for (int i = 0; i < nb; i++) {
+ chooser_.clear();
+ ((GISGeometry) collec.getGeometry(i)).accept(chooser_);
+
+ boolean badd=false;
+ String name=null;
+ if (chooser_.isMultiPoint() && (finder_.getMask()&GISLib.MASK_MULTIPOINT)!=0) {
+ badd=true;
+ name="Multipoint {0}";
+ }
+// else if (chooser_.isPt() && (finder_.getMask()&GISLib.MASK_POINT)!=0) {
+// badd=true;
+// name="Point {0}";
+// }
+ else if (chooser_.isPolyligne() && (finder_.getMask()&GISLib.MASK_POLYLINE)!=0) {
+ badd=true;
+ name="Ligne ouverte {0}";
+ }
+ else if (chooser_.isPolygone() && (finder_.getMask()&GISLib.MASK_POLYGONE)!=0) {
+ badd=true;
+ name="Ligne ferm\xE9e {0}";
+ }
+
+ if (badd) {
+ if (nameAtt!=null)
+ name=(String)nameAtt.getValue(i);
+ else
+ name=EbliLib.getS(name, CtuluLibString.getString(i+1));
+ _parent.add(new LayerNode(_cq, i, name));
+ }
+ }
+ }
+
+ public void update(final Observable _o, final Object _arg) {
+ buildTree();
+ }
+
+ /**
+ * Filtre sur les g\xE9om\xE9tries. Par defaut, toutes g\xE9om\xE9tries.
+ */
+ public void setMask(int _mask) {
+ finder_.setMask(_mask);
+ buildTree();
+ }
+
+ /**
+ * Creation d'une vue pour le modele.
+ */
+ public JTree createView(final boolean _onlyGeomSelected, final boolean _multiSelection) {
+ final JTree tree = new JTree(this);
+ tree.setEditable(false);
+ tree.setShowsRootHandles(true);
+ tree.setExpandsSelectedPaths(true);
+ tree.setCellRenderer(new CellRenderer(_onlyGeomSelected));
+ tree.setRootVisible(false);
+ tree.setFocusable(true);
+ if (_onlyGeomSelected) {
+ final TreeSelectionModel onlyGeomSelectionModel = new OnlyGeomTreeSelectionModel();
+ tree.setSelectionModel(onlyGeomSelectionModel);
+ }
+
+ if (_multiSelection)
+ tree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
+ else
+ tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
+
+ return tree;
+ }
+
+}
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java
___________________________________________________________________
Added: svn:mergeinfo
+
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java 2008-08-12 15:47:33 UTC (rev 3786)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java 2008-08-12 15:48:58 UTC (rev 3787)
@@ -52,19 +52,19 @@
* @return True si trouv\xE9.
*/
public boolean isMatching(final BCalque _cq) {
- if (_cq instanceof ZCalquePoint && (mask_&GISLib.MASK_POINT)!=0) {
- return ((ZCalquePoint) _cq).modeleDonnees().getNombre() > 0;
+ if (_cq instanceof ZCalqueMultiPoint && (mask_&GISLib.MASK_MULTIPOINT)!=0) {
+ return ((ZCalqueMultiPoint)_cq).modeleDonnees().getNombre() > 0;
}
- else if (_cq instanceof ZCalqueMultiPoint && (mask_&GISLib.MASK_MULTIPOINT)!=0) {
- return ((ZCalqueMultiPoint) _cq).modeleDonnees().getNombre() > 0;
- }
+// else if (_cq instanceof ZCalquePoint && (mask_&GISLib.MASK_POINT)!=0) {
+// return ((ZCalquePoint) _cq).modeleDonnees().getNombre() > 0;
+// }
else if (_cq instanceof ZCalqueLigneBrisee && (mask_&GISLib.MASK_POLYLINE)!=0) {
boolean bok=((ZCalqueLigneBrisee) _cq).modeleDonnees().getNombre() > 0;
- return bok && (!((ZCalqueLigneBrisee) _cq).containsPolygone());
+ return bok && ((ZCalqueLigneBrisee)_cq).getModele().getNbLigneBrisee()!=0;
}
else if (_cq instanceof ZCalqueLigneBrisee && (mask_&GISLib.MASK_POLYGONE)!=0) {
- boolean bok=((ZCalqueLigneBrisee) _cq).modeleDonnees().getNombre() > 0;
- return bok && ((ZCalqueLigneBrisee) _cq).containsPolygone();
+ boolean bok=((ZCalqueLigneBrisee)_cq).modeleDonnees().getNombre() > 0;
+ return bok && ((ZCalqueLigneBrisee)_cq).getModele().getNbPolygone()!=0;
}
return false;
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindComponentPolygone.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindComponentPolygone.java 2008-08-12 15:47:33 UTC (rev 3786)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindComponentPolygone.java 2008-08-12 15:48:58 UTC (rev 3787)
@@ -27,10 +27,12 @@
import com.memoire.bu.BuVerticalLayout;
import org.fudaa.ctulu.CtuluLibString;
+import org.fudaa.ctulu.gis.GISLib;
import org.fudaa.ebli.calque.BGroupeCalque;
+import org.fudaa.ebli.calque.CalqueGISTreeModel;
import org.fudaa.ebli.calque.ZEbliCalquesPanel;
-import org.fudaa.ebli.calque.find.CalqueFindCourbeTreeModel.LayerNode;
+import org.fudaa.ebli.calque.CalqueGISTreeModel.LayerNode;
import org.fudaa.ebli.commun.EbliLib;
import org.fudaa.ebli.find.EbliFindComponent;
@@ -39,7 +41,7 @@
* @version $Id: CalqueFindComponentPolygone.java,v 1.2 2007-05-04 13:49:46 deniger Exp $
*/
public class CalqueFindComponentPolygone implements EbliFindComponent {
- private final CalqueFindCourbeTreeModel model_;
+ private final CalqueGISTreeModel model_;
TreeSelectionModel selection_;
JPanel pn_;
BuComboBox cb_;
@@ -49,8 +51,8 @@
}
public CalqueFindComponentPolygone(final BGroupeCalque _cqRoot) {
- model_ = new CalqueFindCourbeTreeModel(null, _cqRoot);
- model_.setOnlyLigneFerme(true);
+ model_ = new CalqueGISTreeModel(null, _cqRoot);
+ model_.setMask(GISLib.MASK_POLYGONE);
cb_ = new BuComboBox(new String[] { EbliLib.getS("Tous les sommets sont s\xE9lectionn\xE9s"),
EbliLib.getS("Au moins un sommet est s\xE9lectionn\xE9"), EbliLib.getS("le barycentre est s\xE9lectionn\xE9"),
@@ -61,7 +63,7 @@
if (pn_ == null) {
pn_ = new BuPanel(new BuBorderLayout(0, 5));
pn_.setBorder(BuBorders.EMPTY3333);
- final JTree tree = CalqueFindCourbeTreeModel.createCalqueTree(model_, false);
+ final JTree tree = model_.createView(false, true);
selection_ = tree.getSelectionModel();
final BuScrollPane sc = new BuScrollPane(tree);
sc.setPreferredHeight(80);
@@ -86,7 +88,7 @@
final List res = new ArrayList(20);
final TreePath[] paths = selection_.getSelectionPaths();
for (int i = paths.length - 1; i >= 0; i--) {
- ((LayerNode) paths[i].getLastPathComponent()).fillWithPolygone(res);
+ model_.fillWithGeometries(((LayerNode) paths[i].getLastPathComponent()), res);
}
return res.toArray(new LinearRing[res.size()]);
}
Deleted: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindCourbeTreeModel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindCourbeTreeModel.java 2008-08-12 15:47:33 UTC (rev 3786)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindCourbeTreeModel.java 2008-08-12 15:48:58 UTC (rev 3787)
@@ -1,331 +0,0 @@
-/*
- * @creation 21 nov. 06
- * @modification $Date: 2007-05-04 13:49:46 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.ebli.calque.find;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Observable;
-import java.util.Observer;
-
-import javax.swing.BorderFactory;
-import javax.swing.Icon;
-import javax.swing.JLabel;
-import javax.swing.JTree;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.DefaultTreeSelectionModel;
-import javax.swing.tree.TreeCellRenderer;
-import javax.swing.tree.TreeModel;
-import javax.swing.tree.TreePath;
-import javax.swing.tree.TreeSelectionModel;
-
-import org.fudaa.ctulu.CtuluLib;
-import org.fudaa.ctulu.CtuluLibArray;
-import org.fudaa.ctulu.CtuluLibString;
-import org.fudaa.ctulu.gis.GISAttributeConstants;
-import org.fudaa.ctulu.gis.GISAttributeModelObjectInterface;
-import org.fudaa.ctulu.gis.GISGeometry;
-import org.fudaa.ctulu.gis.GISLib;
-import org.fudaa.ctulu.gis.GISVisitorChooser;
-import org.fudaa.ctulu.gis.GISVisitorLigneCollector;
-import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
-import org.fudaa.ctulu.gui.CtuluCellRenderer;
-import org.fudaa.ctulu.image.CtuluLibImage;
-
-import org.fudaa.ebli.calque.BArbreCalqueModel;
-import org.fudaa.ebli.calque.BCalque;
-import org.fudaa.ebli.calque.BGroupeCalque;
-import org.fudaa.ebli.calque.CalqueGeometryVisitor;
-import org.fudaa.ebli.calque.ZCalqueLigneBrisee;
-import org.fudaa.ebli.commun.EbliLib;
-import org.fudaa.ebli.ressource.EbliResource;
-
-/**
- * Une classe permettant d'avoir un TreeModel repr\xE9sentant les calques contentant des lignes bris\xE9es et les lignes
- * bris\xE9es Il est possible d'avoir que les calques contenant des lignes ferm\xE9es. Ce mod\xE8le est automatiquement mis a
- * jour si une instance de l'arbre des calque lui est fourni.
- *
- * @author fred deniger
- * @version $Id: CalqueFindCourbeTreeModel.java,v 1.5 2007-05-04 13:49:46 deniger Exp $
- */
-public class CalqueFindCourbeTreeModel implements Observer {
-
- final BGroupeCalque rootLayer_;
- LayerNode rootNode_;
- boolean onlyLigneFerme_;
- final CalqueGeometryVisitor finder_ = new CalqueGeometryVisitor(GISLib.MASK_POLYLINE|GISLib.MASK_POLYGONE);
-
- public static class CellRenderer extends JLabel implements TreeCellRenderer {
- final Color selectedBackground_ = UIManager.getColor("Tree.selectionBackground");
- final Color selectedForground_ = UIManager.getColor("Tree.selectionForeground");
- final Border focusBorderColor_ = BorderFactory.createLineBorder(UIManager.getColor("Tree.selectionBorderColor"), 1);
- final boolean onlyLineSelectable_;
-
- public CellRenderer(final boolean _onlyLineSelectable) {
- this.setOpaque(true);
- setPreferredSize(new Dimension(120, 25));
- onlyLineSelectable_ = _onlyLineSelectable;
- }
-
- protected boolean isSelectable(final Object _value, final boolean _leaf) {
- if (onlyLineSelectable_) {
- if (!_leaf) {
- return false;
- }
- final LayerNode node = (LayerNode) _value;
- return node.idxPoly_ >= 0;
- }
- return true;
-
- }
-
- public Component getTreeCellRendererComponent(final JTree _tree, final Object _value, final boolean _selected,
- final boolean _expanded, final boolean _leaf, final int _row, final boolean _hasFocus) {
- this.setFont(_tree.getFont());
- setIcon(((LayerNode) _value).getIcon());
- setText(_value.toString());
- final boolean selectable = isSelectable(_value, _leaf);
- if (_selected && selectable) {
- setBackground(selectedBackground_);
- setForeground(selectedForground_);
- } else {
- setBackground(_tree.getBackground());
- setForeground(_tree.getForeground());
- }
- if (selectable) {
- setToolTipText(getText());
- } else {
- setToolTipText(getText() + ": " + CtuluLib.getS("Non s\xE9lectionnable"));
- }
- setBorder((selectable && _hasFocus) ? focusBorderColor_ : CtuluCellRenderer.BORDER_NO_FOCUS);
- setEnabled(_tree.isEnabled());
- return this;
- }
- }
-
- public static CellRenderer createRenderer(final boolean _selectOnlyLeaf) {
- return new CellRenderer(_selectOnlyLeaf);
-
- }
-
- public static TreeSelectionModel getOnlyCourbeSelectionModel() {
- return new OnlyCourbeTreeSelectionModel();
- }
-
- public static class OnlyCourbeTreeSelectionModel extends DefaultTreeSelectionModel {
-
- public void setSelectionPaths(final TreePath[] _paths) {
- super.setSelectionPaths(getCorrectPaths(_paths));
- }
-
- public void addSelectionPaths(final TreePath[] _paths) {
- super.addSelectionPaths(getCorrectPaths(_paths));
- }
-
- private TreePath[] getCorrectPaths(final TreePath[] _paths) {
- TreePath[] paths = _paths;
- if (!CtuluLibArray.isEmpty(_paths)) {
- final List correctPath = new ArrayList(paths.length);
- for (int i = 0; i < paths.length; i++) {
- if (paths[i] != null && paths[i].getLastPathComponent() != null
- && ((LayerNode) paths[i].getLastPathComponent()).idxPoly_ >= 0) {
- correctPath.add(paths[i]);
- }
- }
- if (correctPath.size() != paths.length) {
- paths = (TreePath[]) correctPath.toArray(new TreePath[correctPath.size()]);
- }
- }
- return paths;
- }
-
- }
-
- public static class LayerNode extends DefaultMutableTreeNode {
-
- int idxPoly_ = -1;
- String titre_;
- final Icon icon_;
-
- public LayerNode(final BCalque _userObject) {
- super(_userObject, true);
- icon_ = CtuluLibImage.resize(_userObject, 16, 16);
- }
-
- public LayerNode(final ZCalqueLigneBrisee _userObject, final int _idx, final String _titre) {
- super(_userObject, false);
- idxPoly_ = _idx;
- titre_ = _titre;
- if (_userObject.getModele().isGeometryFermee(_idx)) {
- icon_ = EbliResource.EBLI.getIcon("draw-polygon");
- } else {
- icon_ = EbliResource.EBLI.getIcon("draw-polyline");
- }
- }
-
- public void fillWithPolygone(final List _dest) {
-
- if (idxPoly_ >= 0) {
- final ZCalqueLigneBrisee cq = (ZCalqueLigneBrisee) userObject;
- if (cq.getModele().isGeometryFermee(idxPoly_)) {
- _dest.add(cq.getModele().getGeomData().getGeometry(idxPoly_));
- }
- } else if (((BCalque) userObject).isGroupeCalque()) {
- final BCalque[] cqs = ((BCalque) userObject).getTousCalques();
- if (cqs != null) {
- for (int i = cqs.length - 1; i >= 0; i--) {
- addPolygones(_dest, cqs[i]);
- }
- }
-
- } else {
- addPolygones(_dest, (BCalque) userObject);
- }
-
- }
-
- private void addPolygones(final List _dest, final BCalque _cq) {
- if (_cq instanceof ZCalqueLigneBrisee) {
- final ZCalqueLigneBrisee cq = (ZCalqueLigneBrisee) _cq;
- final GISVisitorLigneCollector visitor = new GISVisitorLigneCollector(true);
- cq.getModele().getGeomData().accept(visitor);
- _dest.addAll(visitor.getPolygones());
- }
- }
-
- public String toString() {
- if (titre_ != null) {
- return titre_;
- }
- return ((BCalque) userObject).getTitle();
- }
-
- public Icon getIcon() {
- return icon_;
- }
-
- public int getIdxPoly() {
- return idxPoly_;
- }
-
- }
-
- DefaultTreeModel treeModel_;
-
- public CalqueFindCourbeTreeModel(final BArbreCalqueModel _model, final BGroupeCalque _root) {
- super();
- rootLayer_ = _root;
- if (_model != null) {
- _model.getObservable().addObserver(this);
- }
-
- rootNode_ = new LayerNode(rootLayer_);
- treeModel_ = new DefaultTreeModel(rootNode_);
- buildTree();
- }
-
- public final void buildTree() {
- rootNode_.removeAllChildren();
- addLayer(rootNode_, rootLayer_);
- treeModel_.setRoot(null);
- treeModel_.setRoot(rootNode_);
-
- }
-
- protected boolean containsLigne(final BCalque _cq) {
- finder_.resetFound();
- _cq.apply(finder_);
- return finder_.isFound();
- }
-
- void addLayer(final LayerNode _parent, final BGroupeCalque _gc) {
- final BCalque[] cq = _gc.getCalques();
- if (CtuluLibArray.isEmpty(cq)) {
- return;
- }
- for (int i = 0; i < cq.length; i++) {
- final LayerNode node = new LayerNode(cq[i]);
- if (finder_.isMatching(cq[i])) {
- _parent.add(node);
- addLigne(node, (ZCalqueLigneBrisee) cq[i]);
- } else if (cq[i].isGroupeCalque() && containsLigne(cq[i])) {
- _parent.add(node);
- addLayer(node, (BGroupeCalque) cq[i]);
- }
-
- }
-
- }
-
- GISVisitorChooser chooser_ = new GISVisitorChooser();
-
- void addLigne(final LayerNode _parent, final ZCalqueLigneBrisee _brisee) {
- final GISZoneCollectionLigneBrisee collec = (GISZoneCollectionLigneBrisee) _brisee.getModele().getGeomData();
- final GISAttributeModelObjectInterface str = (GISAttributeModelObjectInterface) collec
- .getModel(GISAttributeConstants.TITRE);
- final int nb = collec.getNumGeometries();
- for (int i = 0; i < nb; i++) {
- chooser_.clear();
- ((GISGeometry) collec.getGeometry(i)).accept(chooser_);
- if (chooser_.isPolygone() || (chooser_.isPolyligne() && !onlyLigneFerme_)) {
- String titre = null;
- if (str != null) {
- titre = (String) str.getValue(i);
- } else if (chooser_.isPolygone()) {
- titre = EbliLib.getS("Ligne ferm\xE9e {0}", CtuluLibString.getString(i + 1));
- } else {
- titre = EbliLib.getS("Ligne ouverte {0}", CtuluLibString.getString(i + 1));
- }
- _parent.add(new LayerNode(_brisee, i, titre));
- }
- }
-
- }
-
- public void update(final Observable _o, final Object _arg) {
- buildTree();
- }
-
- public boolean isOnlyLigneFerme() {
- return onlyLigneFerme_;
- }
-
- public void setOnlyLigneFerme(final boolean _onlyLigneFerme) {
- onlyLigneFerme_ = _onlyLigneFerme;
- int mask=GISLib.MASK_POLYGONE;
- if (!_onlyLigneFerme) mask|=GISLib.MASK_POLYLINE;
- finder_.setMask(mask);
- buildTree();
- }
-
- public TreeModel getTreeModel() {
- return treeModel_;
- }
-
- public static JTree createCalqueTree(final CalqueFindCourbeTreeModel _treeModel, final boolean _onlyCourbeSelected) {
- final JTree tree = new JTree(_treeModel.getTreeModel());
- tree.setEditable(false);
- tree.setShowsRootHandles(true);
- tree.setExpandsSelectedPaths(true);
- tree.setCellRenderer(createRenderer(_onlyCourbeSelected));
- tree.setRootVisible(false);
- tree.setFocusable(true);
- if (_onlyCourbeSelected) {
- final TreeSelectionModel onlyCourbeSelectionModel = getOnlyCourbeSelectionModel();
- onlyCourbeSelectionModel.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
- tree.setSelectionModel(onlyCourbeSelectionModel);
- }
- return tree;
- }
-
-}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilderFromTree.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilderFromTree.java 2008-08-12 15:47:33 UTC (rev 3786)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilderFromTree.java 2008-08-12 15:48:58 UTC (rev 3787)
@@ -36,15 +36,16 @@
import org.fudaa.ctulu.CtuluUI;
import org.fudaa.ctulu.CtuluVariable;
import org.fudaa.ctulu.ProgressionInterface;
+import org.fudaa.ctulu.gis.GISLib;
import org.fudaa.ctulu.gui.CtuluDialogPanel;
import org.fudaa.ctulu.gui.CtuluLibSwing;
import org.fudaa.dodico.ef.operation.EfLineIntersectionsCorrectionTester;
import org.fudaa.dodico.ef.operation.EfLineIntersectionsResultsI;
+import org.fudaa.ebli.calque.CalqueGISTreeModel;
import org.fudaa.ebli.calque.ZCalqueLigneBrisee;
import org.fudaa.ebli.calque.ZEbliCalquesPanel;
-import org.fudaa.ebli.calque.find.CalqueFindCourbeTreeModel;
import org.fudaa.ebli.commun.EbliLib;
import org.fudaa.fudaa.commun.FudaaLib;
@@ -53,12 +54,13 @@
public class MvProfileBuilderFromTree extends MvProfileBuilder {
final LineString initSelected_;
- final CalqueFindCourbeTreeModel lineTreeModel_;
+ final CalqueGISTreeModel lineTreeModel_;
public MvProfileBuilderFromTree(final MvProfileTarget _data, final CtuluUI _ui, final LineString _selected,
final ZEbliCalquesPanel _panel, EfLineIntersectionsCorrectionTester _tester) {
super(_data, _ui, _panel, _tester);
- lineTreeModel_ = new CalqueFindCourbeTreeModel(null, _panel.getDonneesCalque());
+ lineTreeModel_ = new CalqueGISTreeModel(null, _panel.getDonneesCalque());
+ lineTreeModel_.setMask(GISLib.MASK_POLYLINE|GISLib.MASK_POLYGONE);
initSelected_ = _selected;
}
@@ -66,23 +68,23 @@
if (_tree.isSelectionEmpty()) {
return null;
}
- final CalqueFindCourbeTreeModel.LayerNode node = (CalqueFindCourbeTreeModel.LayerNode) _tree.getSelectionPath()
+ final CalqueGISTreeModel.LayerNode node = (CalqueGISTreeModel.LayerNode) _tree.getSelectionPath()
.getLastPathComponent();
final ZCalqueLigneBrisee cq = (ZCalqueLigneBrisee) node.getUserObject();
- return (LineString) cq.getModele().getGeomData().getGeometry(node.getIdxPoly());
+ return (LineString) cq.getModele().getGeomData().getGeometry(node.getIdxGeom());
}
String getSelectedLineTitle(final JTree _tree) {
if (_tree.isSelectionEmpty()) {
return null;
}
- final CalqueFindCourbeTreeModel.LayerNode node = (CalqueFindCourbeTreeModel.LayerNode) _tree.getSelectionPath()
+ final CalqueGISTreeModel.LayerNode node = (CalqueGISTreeModel.LayerNode) _tree.getSelectionPath()
.getLastPathComponent();
return node.toString();
}
protected JTree buildTree() {
- return CalqueFindCourbeTreeModel.createCalqueTree(lineTreeModel_, true);
+ return lineTreeModel_.createView(true,false);
}
protected void intersectTest(final JDialog _d, final MvExportChooseVarAndTime _var, final ProgressionInterface _prog) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-08-14 10:00:19
|
Revision: 3800
http://fudaa.svn.sourceforge.net/fudaa/?rev=3800&view=rev
Author: bmarchan
Date: 2008-08-14 10:00:28 +0000 (Thu, 14 Aug 2008)
Log Message:
-----------
Un peu de doc
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/Interpolator.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-08-14 09:54:18 UTC (rev 3799)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-08-14 10:00:28 UTC (rev 3800)
@@ -404,14 +404,24 @@
}
/**
- * Permet de remettre a jour le model contenant les z et le z des geometrie.
+ * Initialise le mod\xE8le d'attribut utilis\xE9 pour Z avec les coordonn\xE9es Z des points des g\xE9om\xE9tries.
+ * Principalement utilis\xE9 \xE0 la suite d'un import.
*
- * @param _firstIdx l'indice de la premiere geometrie a modifier
+ * @param _firstIdx l'indice de la premiere geometrie utilis\xE9e pour l'initialisation.
+ * @see #setAttributeIsZ(GISAttributeDouble)
+ * @see {@link #prepareExport()} pour la m\xE9thode inverse
*/
public abstract void postImport(final int _firstIdx);
public void preload(final GISAttributeInterface[] _att, final ProgressionInterface _prog) {}
+ /**
+ * Pr\xE9pare l'export des g\xE9om\xE9tries, en affectant \xE0 la coordonn\xE9e Z de leurs points les valeurs contenues
+ * dans l'attribut utilis\xE9 pour Z.
+ *
+ * @see #setAttributeIsZ(GISAttributeDouble)
+ * @see {@link #postImport(int)} pour la m\xE9thode inverse
+ */
public void prepareExport() {
if (attributeIsZ_ != null) {
final GISAttributeModel model = getModel(attributeIsZ_);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/Interpolator.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/Interpolator.java 2008-08-14 09:54:18 UTC (rev 3799)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/Interpolator.java 2008-08-14 10:00:28 UTC (rev 3800)
@@ -10,13 +10,23 @@
import org.fudaa.ctulu.CtuluActivity;
/**
+ * Un interpolateur.
* @author fred deniger
* @version $Id: Interpolator.java,v 1.1 2007-06-05 08:57:43 deniger Exp $
*/
public abstract class Interpolator implements CtuluActivity {
+ /**
+ * @see #interpolate(InterpolationParameters)
+ */
protected abstract boolean doInterpolate(InterpolationParameters _params);
+ /**
+ * Interpole les valeurs pour les points de la cible.
+ * @param _params Les parametres d'interpolation, contenant la cible, le support, les resultats.
+ * @return True : Si l'interpolation s'est correctement d\xE9roul\xE9e. False en cas d'\xE9chec sur 1 ou
+ * plusieurs points.
+ */
public final boolean interpolate(InterpolationParameters _params) {
if (_params == null) return false;
return doInterpolate(_params.createParametersForVect());
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-08-14 09:54:18 UTC (rev 3799)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-08-14 10:00:28 UTC (rev 3800)
@@ -487,9 +487,9 @@
}
/**
- * Retourne le calque pour l'objet geom selectionn\xE9.
- * @param _id
- * @return
+ * Retourne le calque contenant la g\xE9om\xE9trie d'indice _idGeom.
+ * @param _idGeom L'indice de scene.
+ * @return Le calque.
*/
public ZCalqueAffichageDonneesInterface getLayerForId(int _idGeom) {
int idecal=0;
@@ -500,23 +500,34 @@
return null;
}
- public int sceneId2LayerId(int _idGeom) {
+ /**
+ * Converti un indice de scene (global) en un indice pour un calque.
+ * @param _idScene L'index dans la scene.
+ * @return L'index pour le calque.
+ * @see #getLayerForId(int)
+ */
+ public int sceneId2LayerId(int _idScene) {
int idecal=0;
for (ZCalqueAffichageDonneesInterface cq : getTargetLayers()) {
int nb=cq.modeleDonnees().getNombre();
- if (_idGeom < idecal+nb)
- return _idGeom-idecal;
+ if (_idScene < idecal+nb)
+ return _idScene-idecal;
idecal+=nb;
-// if (_idGeom < (idecal+=cq.modeleDonnees().getNombre()))
-// return _idGeom-idecal;
}
return -1;
}
- public int layerId2SceneId(ZCalqueAffichageDonneesInterface _cq, int _idGeom) {
+ /**
+ * Converti un indice de calque en un indice de scene (global).
+ * @param _cq Le calque.
+ * @param _idLayer L'index dans le calque.
+ * @return L'index global pour la scene.
+ * @see #getLayerForId(int)
+ */
+ public int layerId2SceneId(ZCalqueAffichageDonneesInterface _cq, int _idLayer) {
int idecal=0;
for (ZCalqueAffichageDonneesInterface cq : getTargetLayers()) {
- if (cq==_cq) return _idGeom+idecal;
+ if (cq==_cq) return _idLayer+idecal;
idecal+=cq.modeleDonnees().getNombre();
}
return -1;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-08-14 10:01:48
|
Revision: 3801
http://fudaa.svn.sourceforge.net/fudaa/?rev=3801&view=rev
Author: bmarchan
Date: 2008-08-14 10:01:56 +0000 (Thu, 14 Aug 2008)
Log Message:
-----------
Integration fonction d'interpolation
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportGISAdapter.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportGISAdapter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportGISAdapter.java 2008-08-14 10:00:28 UTC (rev 3800)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/interpolation/InterpolationSupportGISAdapter.java 2008-08-14 10:01:56 UTC (rev 3801)
@@ -9,22 +9,39 @@
import gnu.trove.TObjectIntHashMap;
-import com.vividsolutions.jts.geom.Point;
+import java.util.ArrayList;
import org.fudaa.ctulu.CtuluVariable;
+import org.fudaa.ctulu.collection.CtuluCollectionDouble;
+import org.fudaa.ctulu.gis.GISAttributeDouble;
+import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface;
import org.fudaa.ctulu.gis.GISDataModel;
+import com.vividsolutions.jts.geom.CoordinateSequence;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.Point;
+
/**
+ * Un adapteur pour un support d'interpolation a partir d'un modele contenant des
+ * g\xE9om\xE9tries.
+ *
* @author Fred Deniger
* @version $Id: InterpolationSupportGISAdapter.java,v 1.2 2007-06-11 13:03:29 deniger Exp $
*/
public class InterpolationSupportGISAdapter implements SupportLocationI, InterpolationSupportValuesI {
final GISDataModel model_;
+ /** Une table qui associe un attribut a un indice sur le modele */
final TObjectIntHashMap attInt_;
-
+ /** Si le modele ne contient que des points, optimisation du support */
+ final boolean onlyPoints_;
+ /** Si le modele continet autre chose que des points */
+ int[][] idx2geom_;
+
/**
- * @param _model un model ne contenant que des points
+ * Construction de l'adapteur a partir d'un modele g\xE9om\xE9trique. Si le modele n'est constitu\xE9 que
+ * de Point, le support est optimis\xE9.
+ * @param _model un model contenant des g\xE9om\xE9tries.
*/
public InterpolationSupportGISAdapter(final GISDataModel _model) {
model_ = _model;
@@ -33,21 +50,99 @@
for (int i = 0; i < nbAttributes; i++) {
attInt_.put(model_.getAttribute(i), i);
}
+
+ onlyPoints_=containsOnlyPoints();
+ if (!onlyPoints_) initIndexes();
}
+
+ /**
+ * Retourne vrai si le modele ne contient que des points.
+ * @return True : Si vide ou uniquement des points.
+ */
+ public boolean containsOnlyPoints() {
+ int nb=model_.getNumGeometries();
+ for (int i=0; i<nb; i++) {
+ if (!(model_.getGeometry(i) instanceof Point)) return false;
+ }
+ return true;
+ }
+
+ private void initIndexes() {
+ ArrayList<int[]> vidx2geom=new ArrayList<int[]>();
+ int nb=model_.getNumGeometries();
+ for (int i=0; i<nb; i++) {
+ Geometry g=model_.getGeometry(i);
+ int nbpts=g.getNumPoints();
+ for (int j=0; j<nbpts; j++) {
+ vidx2geom.add(new int[]{i,j});
+ }
+ }
+ idx2geom_=vidx2geom.toArray(new int[0][0]);
+ }
+
public int getPtsNb() {
- return model_.getNumGeometries();
+ int nb;
+
+ if (onlyPoints_)
+ nb=model_.getNumGeometries();
+ else
+ nb=idx2geom_.length;
+
+ return nb;
}
public double getPtX(final int _i) {
- return ((Point) model_.getGeometry(_i)).getX();
+ if (onlyPoints_) {
+ return ((Point)model_.getGeometry(_i)).getX();
+ }
+ else {
+ CoordinateSequence seq=
+ ((GISCoordinateSequenceContainerInterface)model_.getGeometry(idx2geom_[_i][0])).getCoordinateSequence();
+ return seq.getX(idx2geom_[_i][1]);
+ }
}
public double getPtY(final int _i) {
- return ((Point) model_.getGeometry(_i)).getY();
+ if (onlyPoints_) {
+ return ((Point)model_.getGeometry(_i)).getY();
+ }
+ else {
+ CoordinateSequence seq=
+ ((GISCoordinateSequenceContainerInterface)model_.getGeometry(idx2geom_[_i][0])).getCoordinateSequence();
+ return seq.getY(idx2geom_[_i][1]);
+ }
}
- public double getV(CtuluVariable _var, int _ptIdx) {
- return model_.getDoubleValue(attInt_.get(_var), _ptIdx);
+ /*
+ * _var Un attribut pour lequel trouver la valeur. L'attribut peut \xEAtre atomique ou
+ * global, mais doit \xEAtre de type GISAttributDouble.
+ */
+ public double getV(CtuluVariable _var, int _i) {
+ if (!(_var instanceof GISAttributeDouble))
+ throw new IllegalArgumentException("Bad argument _var");
+
+ double val;
+
+ if (onlyPoints_) {
+ val=model_.getDoubleValue(attInt_.get(_var), _i);
+ }
+ else {
+ GISAttributeDouble att=(GISAttributeDouble)_var;
+ if (att.isAtomicValue()) {
+ Object vals=model_.getValue(attInt_.get(_var),idx2geom_[_i][0]);
+ if (vals instanceof CtuluCollectionDouble) {
+ val=((CtuluCollectionDouble)vals).getValue(idx2geom_[_i][1]);
+ }
+ else {
+ val=0;
+ }
+ }
+ else {
+ val=model_.getDoubleValue(attInt_.get(_var),idx2geom_[_i][0]);
+ }
+ }
+
+ return val;
}
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-08-14 10:00:28 UTC (rev 3800)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-08-14 10:01:56 UTC (rev 3801)
@@ -41,6 +41,7 @@
import org.fudaa.fudaa.modeleur.action.SceneDecimationAction;
import org.fudaa.fudaa.modeleur.action.SceneInterpolationAction;
import org.fudaa.fudaa.modeleur.action.SceneMoveInLayerAction;
+import org.fudaa.fudaa.modeleur.action.SceneProjectionAction;
import org.fudaa.fudaa.modeleur.action.SceneRefinementAction;
import org.fudaa.fudaa.sig.layer.FSigEditor;
import org.fudaa.fudaa.sig.layer.FSigLayerExporter;
@@ -83,6 +84,7 @@
acts.add(new SceneMoveInLayerAction((MdlSceneEditor)sceneEditor_));
acts.add(new SceneDecimationAction((MdlSceneEditor)sceneEditor_));
acts.add(new SceneRefinementAction((MdlSceneEditor)sceneEditor_));
+ acts.add(new SceneProjectionAction((MdlSceneEditor)sceneEditor_));
getSceneEditor().getScene().setActions(acts.toArray(new EbliActionAbstract[0]));
}
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java 2008-08-14 10:01:56 UTC (rev 3801)
@@ -0,0 +1,194 @@
+/*
+ * @creation 8 sept. 06
+ * @modification $Date: 2008/05/13 12:10:21 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.fudaa.modeleur;
+
+import java.awt.Color;
+import java.awt.Dimension;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTree;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.TreePath;
+
+import org.fudaa.ctulu.gis.GISAttributeConstants;
+import org.fudaa.ctulu.gis.GISAttributeInterface;
+import org.fudaa.ctulu.gis.GISDataModel;
+import org.fudaa.ctulu.gis.GISLib;
+import org.fudaa.ctulu.gis.GISZoneCollection;
+import org.fudaa.ctulu.gis.GISZoneCollectionGeometry;
+import org.fudaa.ctulu.gui.CtuluDialogPanel;
+import org.fudaa.ebli.calque.BArbreCalqueModel;
+import org.fudaa.ebli.calque.CalqueGISTreeModel;
+import org.fudaa.ebli.calque.ZCalqueAffichageDonneesAbstract;
+import org.fudaa.ebli.calque.ZCalqueGeometry;
+import org.fudaa.ebli.calque.ZEbliCalquesPanel;
+import org.fudaa.ebli.calque.ZModeleGeom;
+import org.fudaa.ebli.geometrie.GrBoite;
+import org.fudaa.ebli.trace.TraceIcon;
+import org.fudaa.ebli.trace.TraceIconModel;
+import org.fudaa.ebli.trace.TraceLigne;
+import org.fudaa.ebli.trace.TraceLigneModel;
+import org.fudaa.fudaa.modeleur.layer.MdlModelGeometry;
+import org.fudaa.fudaa.sig.FSigLib;
+import org.fudaa.fudaa.tr.common.TrResource;
+
+import com.memoire.bu.BuLabel;
+import com.memoire.bu.BuVerticalLayout;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.Polygon;
+
+/**
+ * Un panneau de saisie des g\xE9om\xE9tries supports de projection suivant Z.
+ * @author Bertrand Marchand
+ * @version $Id: MdlProjectImportPanel.java,v 1.1.2.1 2008/05/13 12:10:21 bmarchan Exp $
+ */
+public class MdlProjectionPanel extends CtuluDialogPanel {
+
+ private ZEbliCalquesPanel pn_;
+ private GrBoite initZoom_;
+ private JTree trLayers_;
+ private ZCalqueGeometry cqTmp_;
+ private GISZoneCollection support_;
+
+ public MdlProjectionPanel(ZEbliCalquesPanel _pn) {
+ pn_=_pn;
+ setLayout(new BuVerticalLayout(5,true,true));
+
+ BuLabel lbTitle=new BuLabel(FSigLib.getS("S\xE9lectionnez les semis"));
+ add(lbTitle);
+
+ CalqueGISTreeModel md=new CalqueGISTreeModel(null,_pn.getDonneesCalque());
+ md.setMask(GISLib.MASK_MULTIPOINT);
+ trLayers_=md.createView(true,true);
+
+ trLayers_.addTreeSelectionListener(new TreeSelectionListener() {
+ public void valueChanged(TreeSelectionEvent e) {
+ treeSelectionChanged(getSelectedGeomInTree(),true);
+ }
+ });
+ JScrollPane sp=new JScrollPane(trLayers_);
+ sp.setPreferredSize(new Dimension(300,200));
+ add(sp);
+ }
+
+ /**
+ * Retourne les g\xE9ometries s\xE9lectionn\xE9es de l'arbre.
+ * @return Les g\xE9om\xE9tries, de taille = 0 si rien de selectionn\xE9.
+ */
+ private Geometry[] getSelectedGeomInTree() {
+ if (trLayers_.isSelectionEmpty()) {
+ return null;
+ }
+ TreePath[] selpaths=trLayers_.getSelectionPaths();
+ Geometry[] geoms=new Geometry[selpaths.length];
+ for (int i=0; i<selpaths.length; i++) {
+ final CalqueGISTreeModel.LayerNode node=(CalqueGISTreeModel.LayerNode)selpaths[i].getLastPathComponent();
+ final ZCalqueAffichageDonneesAbstract cq = (ZCalqueAffichageDonneesAbstract) node.getUserObject();
+ geoms[i]=((ZModeleGeom)cq.modeleDonnees()).getGeomData().getGeometry(node.getIdxGeom());
+ }
+
+ return geoms;
+ }
+
+ /**
+ * R\xE9affichage de la fenetre 2D en cas de selection d'un objet.
+ * @param _geoms Les g\xE9om\xE9tries s\xE9lectionn\xE9es.
+ * @param _zoom True si le zoom doit se faire sur les g\xE9ometries s\xE9lectionn\xE9es.
+ */
+ private void treeSelectionChanged(final Geometry[] _geoms, final boolean _zoom) {
+ if (pn_==null) {
+ return;
+ }
+ if (_geoms == null || _geoms.length==0) {
+ if (cqTmp_ != null) {
+ cqTmp_.setVisible(false);
+ }
+ return;
+ }
+
+ MdlModelGeometry mdl=new MdlModelGeometry();
+ support_=mdl.getGeomData();
+
+ for (int i=0; i<_geoms.length; i++) {
+ support_.addGeometry(_geoms[i], null, null);
+ }
+ // Ajout de l'enveloppe externe pour visualisation.
+ Geometry g=support_.convexHull();
+ if (g instanceof Polygon)
+ support_.addGeometry(((Polygon)g).getExteriorRing(), null, null);
+ else
+ support_.addGeometry(g, null, null);
+
+ if (cqTmp_ == null) {
+ initZoom_ = pn_.getVueCalque().getViewBoite();
+ cqTmp_ = new ZCalqueGeometry(mdl);
+ cqTmp_.setDestructible(true);
+ final TraceIconModel model = new TraceIconModel(TraceIcon.PLUS_DOUBLE, 4, Color.RED);
+ cqTmp_.setIconModel(0, model);
+ cqTmp_.setIconModel(1, model);
+ final TraceLigneModel ligne = new TraceLigneModel(TraceLigne.MIXTE, 2, Color.RED);
+ cqTmp_.setLineModel(0, ligne);
+ cqTmp_.setLineModel(1, ligne);
+ pn_.getVueCalque().getCalque().enPremier(cqTmp_);
+ pn_.getCqInfos().enPremier();
+ }
+ cqTmp_.modele(mdl);
+ cqTmp_.setVisible(true);
+
+ if (_zoom) {
+ BArbreCalqueModel.actionCenter(cqTmp_, pn_);
+ }
+ }
+
+ @Override
+ public boolean valide() {
+ if (trLayers_.getSelectionCount()==0) {
+ setErrorText(TrResource.getS("Vous devez s\xE9lectionner au moins 1 semis"));
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Retourne le modele des g\xE9om\xE9tries supports (les g\xE9om\xE9tries s\xE9l\xE9ectionn\xE9es dans l'arbre).
+ * @return Le mod\xE8le.
+ */
+ public GISDataModel getSupportCollection() {
+ support_.setAttributes(new GISAttributeInterface[]{GISAttributeConstants.BATHY}, null);
+ support_.setAttributeIsZ(GISAttributeConstants.BATHY);
+ support_.postImport(0);
+ return support_;
+ }
+
+ /**
+ * Fermeture du dialogue, et suppression du calque qui visualise les g\xE9om\xE9tries s\xE9lectionn\xE9es.
+ */
+ private void close() {
+ if (cqTmp_!=null) {
+ cqTmp_.detruire();
+ cqTmp_=null;
+ // Suppression de l'enveloppe externe.
+ support_.removeGeometries(new int[]{support_.getNbGeometries()-1}, null);
+ pn_.getVueCalque().getCalque().repaint();
+ }
+ pn_.getVueCalque().changeRepere(this, initZoom_);
+ }
+
+ @Override
+ public void cancel() {
+ close();
+ super.cancel();
+ }
+
+ @Override
+ public boolean ok() {
+ close();
+ return super.ok();
+ }
+}
\ No newline at end of file
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-08-14 10:00:28 UTC (rev 3800)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-08-14 10:01:56 UTC (rev 3801)
@@ -7,36 +7,37 @@
*/
package org.fudaa.fudaa.modeleur;
+import java.util.ArrayList;
+import java.util.List;
+
import org.fudaa.ctulu.CtuluCommandComposite;
-import org.fudaa.ctulu.CtuluCommandContainer;
+import org.fudaa.ctulu.gis.GISAttributeConstants;
+import org.fudaa.ctulu.gis.GISAttributeInterface;
+import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface;
+import org.fudaa.ctulu.gis.GISDataModel;
import org.fudaa.ctulu.gis.GISGeometryFactory;
import org.fudaa.ctulu.gis.GISMultiPoint;
-import org.fudaa.ctulu.gis.GISPolyligne;
import org.fudaa.ctulu.gis.GISZoneCollection;
-import org.fudaa.ctulu.gui.CtuluDialogPanel;
+import org.fudaa.ctulu.gis.GISZoneCollectionGeometry;
+import org.fudaa.ctulu.interpolation.InterpolationParameters;
+import org.fudaa.ctulu.interpolation.InterpolationResultsHolderI;
+import org.fudaa.ctulu.interpolation.InterpolationSupportGISAdapter;
+import org.fudaa.ctulu.interpolation.InterpolationTarget;
+import org.fudaa.ctulu.interpolation.InterpolationTargetGISAdapter;
+import org.fudaa.ctulu.interpolation.bilinear.InterpolatorBilinear;
import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface;
import org.fudaa.ebli.calque.ZModeleDonnees;
import org.fudaa.ebli.calque.ZModeleGeom;
import org.fudaa.ebli.calque.ZScene;
-import org.fudaa.ebli.calque.edition.ZCalqueEditable;
-import org.fudaa.ebli.calque.edition.ZCalqueMultiPointEditable;
-import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable;
-import org.fudaa.ebli.calque.edition.ZModeleMultiPointEditable;
import org.fudaa.ebli.calque.edition.ZSceneEditor;
-import org.fudaa.ebli.geometrie.GrPoint;
-import org.fudaa.ebli.geometrie.GrPolyligne;
import org.fudaa.fudaa.commun.FudaaLib;
-import org.fudaa.fudaa.commun.impl.Fudaa;
-import org.fudaa.fudaa.modeleur.layer.MdlLayer2dCloud;
-import org.fudaa.fudaa.modeleur.layer.MdlModel2dCloud;
import org.fudaa.fudaa.modeleur.layer.MdlModel2dLine;
import org.fudaa.fudaa.modeleur.layer.MdlModel2dMultiPoint;
-import org.fudaa.fudaa.modeleur.layer.MdlModel2dProfile;
import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.MultiPoint;
/**
* L'\xE9diteur effectuant les traitements sur la scene sp\xE9cifiques au modeleur.
@@ -242,4 +243,66 @@
super.getScene().clearSelection();
}
}
+
+ /**
+ * Projete une g\xE9om\xE9trie sur un ensemble de points d'un ou plusieurs semis.
+ */
+ public void projectSelectedObject() {
+ MdlProjectionPanel pnProjection=new MdlProjectionPanel(pn_);
+
+ if (pnProjection.afficheModaleOk(pn_.getFrame(), FudaaLib.getS("Projection sur des semis"))) {
+ GISDataModel mdl=pnProjection.getSupportCollection();
+ InterpolationSupportGISAdapter support=new InterpolationSupportGISAdapter(mdl);
+ List<GISAttributeInterface> vars=new ArrayList<GISAttributeInterface>();
+ vars.add(GISAttributeConstants.BATHY);
+
+ GISZoneCollectionGeometry targetGeoms=new GISZoneCollectionGeometry();
+ int[] idxGeom=getScene().getLayerSelection().getSelectedIndex();
+ for (int i : idxGeom)
+ targetGeoms.addGeometry((Geometry)getScene().getObject(i), null, null);
+
+ targetGeoms.setAttributes(new GISAttributeInterface[]{GISAttributeConstants.BATHY}, null);
+ targetGeoms.setAttributeIsZ(GISAttributeConstants.BATHY);
+// targetGeoms.postImport(0);
+
+ InterpolationTarget target=new InterpolationTargetGISAdapter(targetGeoms);
+ InterpolationParameters params=new InterpolationParameters(vars,target,support);
+ InterpolatorBilinear interp=new InterpolatorBilinear(support);
+ interp.interpolate(params);
+ InterpolationResultsHolderI res=params.getResults();
+
+ if (ui_.manageAnalyzeAndIsFatal(params.getAnalyze())) return;
+
+ final CtuluCommandComposite cmp = new CtuluCommandComposite();
+
+ // Transfert du Z sur les objets selectionn\xE9s.
+ int ipt=0;
+ for (int i=0; i<targetGeoms.getNbGeometries(); i++) {
+ CoordinateSequence seq=((GISCoordinateSequenceContainerInterface)targetGeoms.getGeometry(i)).getCoordinateSequence();
+ for (int idx=0; idx<seq.size(); idx++) {
+ seq.setOrdinate(idx, 2, res.getValuesForPt(ipt++)[0]);
+ }
+ }
+ targetGeoms.postImport(0);
+
+ GISZoneCollection col=null;
+ int zatt=0;
+
+ for (int i=0; i<idxGeom.length; i++) {
+ Object vals=targetGeoms.getValue(0,i);
+ GISZoneCollection colTmp=((ZModeleGeom)getScene().getLayerForId(idxGeom[i]).modeleDonnees()).getGeomData();
+ if (col!=colTmp) {
+ col=colTmp;
+ zatt=col.getIndiceOf(GISAttributeConstants.BATHY);
+ }
+ int idx=getScene().sceneId2LayerId(idxGeom[i]);
+ if (zatt!=-1)
+ col.setAttributValue(zatt, idx, vals, cmp);
+ }
+
+ if (mng_ != null) {
+ mng_.addCmd(cmp.getSimplify());
+ }
+ }
+ }
}
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java 2008-08-14 10:01:56 UTC (rev 3801)
@@ -0,0 +1,89 @@
+/*
+ * @creation 3 juil. 2008
+ * @modification $Date:$
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.modeleur.action;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.Action;
+
+import org.fudaa.ctulu.CtuluLib;
+import org.fudaa.ctulu.gis.GISMultiPoint;
+import org.fudaa.ctulu.gis.GISPolyligne;
+import org.fudaa.ebli.calque.ZScene;
+import org.fudaa.ebli.calque.ZSelectionEvent;
+import org.fudaa.ebli.calque.ZSelectionListener;
+import org.fudaa.ebli.calque.ZScene.SceneSelectionHelper;
+import org.fudaa.ebli.calque.edition.ZCalqueEditable;
+import org.fudaa.ebli.calque.edition.ZSceneEditor;
+import org.fudaa.ebli.commun.EbliActionSimple;
+import org.fudaa.fudaa.modeleur.MdlSceneEditor;
+
+import com.memoire.bu.BuResource;
+
+/**
+ * Une action pour projeter une g\xE9om\xE9trie sur un ou des semis de points.
+ * @author Bertrand Marchand
+ */
+public class SceneProjectionAction extends EbliActionSimple implements ZSelectionListener {
+ MdlSceneEditor sceneEditor_;
+
+ public SceneProjectionAction(MdlSceneEditor _sceneEditor) {
+ super(BuResource.BU.getString("Projeter sur un semis"), null, "GIS_PROJECT");
+ setDefaultToolTip(CtuluLib.getS("Projeter la g\xE9om\xE9trie sur un semis"));
+ setSceneEditor(_sceneEditor);
+ sceneEditor_.getScene().addSelectionListener(this);
+ }
+
+ public void actionPerformed(final ActionEvent _e) {
+ sceneEditor_.projectSelectedObject();
+ }
+
+ /**
+ * @param _editor l'editeur
+ */
+ private void setSceneEditor(final MdlSceneEditor _sceneEditor) {
+ sceneEditor_ = _sceneEditor;
+ }
+
+ public void updateForSelectionChanged() {
+ ZScene scn=sceneEditor_.getScene();
+ SceneSelectionHelper hlp=sceneEditor_.getScene().getSelectionHelper();
+ int idGeom=-1;
+
+ boolean b=true;
+ // Si la selection n'est pas null et atomique
+ b=b && !scn.isSelectionEmpty();
+ // Si la selection est sur le m\xEAme objet.
+// b=b && (idGeom=hlp.getUniqueSelectedIdx())!=-1;
+// // Si le nombre d'atomiques est de 2 cons\xE9cutifs sur une g\xE9om\xE9trie de type polyligne.
+// if (b && scn.getObject(idGeom) instanceof GISPolyligne) {
+// b=b && hlp.getNbAtomicSelected()==2;
+// b=b && Math.abs(hlp.getUniqueAtomicSelection().getMinIndex()-hlp.getUniqueAtomicSelection().getMaxIndex())==1;
+// if (b) putValue(Action.NAME, BuResource.BU.getString("Scinder la polyligne"));
+// }
+// // Si ou est sur un multipoint
+// else {
+// b=b && (scn.getObject(idGeom) instanceof GISMultiPoint);
+// if (b) putValue(Action.NAME, BuResource.BU.getString("Scinder le multipoint"));
+// }
+// if (!b) putValue(Action.NAME, BuResource.BU.getString("Scinder"));
+
+ setEnabled(b);
+ }
+
+ public String getEnableCondition() {
+ return CtuluLib.getS("S\xE9lectionner une g\xE9om\xE9trie ou des sommets");
+ }
+
+ /* (non-Javadoc)
+ * @see org.fudaa.ebli.calque.ZSelectionListener#selectionChanged(org.fudaa.ebli.calque.ZSelectionEvent)
+ */
+ public void selectionChanged(ZSelectionEvent _evt) {
+ updateForSelectionChanged();
+ }
+}
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java 2008-08-14 10:01:56 UTC (rev 3801)
@@ -0,0 +1,131 @@
+/*
+ * @creation 20 janv. 08
+ * @modification $Date: 2008/02/21 19:41:56 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.modeleur.layer;
+
+import org.fudaa.ctulu.CtuluCommandContainer;
+import org.fudaa.ctulu.gis.GISAttribute;
+import org.fudaa.ctulu.gis.GISAttributeConstants;
+import org.fudaa.ctulu.gis.GISAttributeDouble;
+import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface;
+import org.fudaa.ctulu.gis.GISMultiPoint;
+import org.fudaa.ctulu.gis.GISZoneCollection;
+import org.fudaa.ctulu.gis.GISZoneCollectionGeometry;
+import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
+import org.fudaa.ctulu.gis.GISZoneListener;
+import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface;
+import org.fudaa.ebli.calque.ZModeleGeometry;
+import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable;
+import org.fudaa.ebli.geometrie.GrBoite;
+import org.fudaa.ebli.geometrie.GrPoint;
+import org.fudaa.ebli.palette.BPaletteInfo.InfoData;
+import org.fudaa.fudaa.modeleur.MdlResource;
+import org.fudaa.fudaa.sig.FSigResource;
+
+import com.memoire.bu.BuTable;
+import com.vividsolutions.jts.geom.CoordinateSequence;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.LineString;
+
+/**
+ * Un mod\xE8le contenant des g\xE9om\xE9tries de tous types, pour repr\xE9sentation unique.
+ * @author Bertrand Marchand
+ * @version $Id: MdlModel2dLevel.java,v 1.1.2.6 2008/02/21 19:41:56 bmarchan Exp $
+ */
+public class MdlModelGeometry implements ZModeleGeometry {
+ GISZoneCollectionGeometry geometries_;
+
+ /**
+ * Constructeur
+ */
+ public MdlModelGeometry() {
+ geometries_=new GISZoneCollectionGeometry();
+ }
+
+ public void getDomaineForGeometry(int _idxGeom, GrBoite _target) {
+ if (geometries_ == null || geometries_.getNumGeometries() == 0) {
+ return;
+ }
+ final Geometry g = geometries_.getGeometry(_idxGeom);
+ final Envelope e = g.getEnvelopeInternal();
+ if (_target.o_ == null) {
+ _target.o_ = new GrPoint();
+ }
+ if (_target.e_ == null) {
+ _target.e_ = new GrPoint();
+ }
+ if (e != null && !e.isNull()) {
+ _target.o_.x_ = e.getMinX();
+ _target.o_.y_ = e.getMinY();
+ _target.e_.x_ = e.getMaxX();
+ _target.e_.y_ = e.getMaxY();
+ }
+ }
+
+ public int getNbPointForGeometry(int _idxGeom) {
+ if (geometries_ == null) {
+ return 0;
+ }
+ final Geometry gi = geometries_.getGeometry(_idxGeom);
+ return gi.getNumPoints();
+ }
+
+ public final boolean isGeometryReliee(final int _idxGeom) {
+ Geometry g=getGeomData().getGeometry(_idxGeom);
+ return (g instanceof LineString);
+ }
+
+ public final boolean isGeometryFermee(final int _idxGeom) {
+ Geometry g=getGeomData().getGeometry(_idxGeom);
+ return (g instanceof LineString && ((LineString)g).isClosed());
+ }
+
+ public boolean point(GrPoint _pt, int _idxGeom, int _pointIdx) {
+ final CoordinateSequence g=((GISCoordinateSequenceContainerInterface)geometries_.getGeometry(_idxGeom)).getCoordinateSequence();
+ _pt.x_ = g.getX(_pointIdx);
+ _pt.y_ = g.getY(_pointIdx);
+ return true;
+ }
+
+ public GISZoneCollection getGeomData() {
+ return geometries_;
+ }
+
+ public void prepareExport() {
+ geometries_.prepareExport();
+ }
+
+ public BuTable createValuesTable(ZCalqueAffichageDonneesInterface _layer) {
+ return null;
+ }
+
+ public void fillWithInfo(InfoData _d, ZCalqueAffichageDonneesInterface _layer) {}
+
+ public GrBoite getDomaine() {
+ if (geometries_ == null || geometries_.getNumGeometries() == 0) {
+ return null;
+ }
+ final Envelope e = geometries_.getEnvelopeInternal();
+ if (e == null) {
+ return null;
+ }
+ return new GrBoite(new GrPoint(e.getMinX(), e.getMinY(), 0), new GrPoint(e.getMaxX(), e.getMaxY(), 0));
+ }
+
+ public final int getNombre() {
+ return geometries_ == null ? 0 : geometries_.getNumGeometries();
+ }
+
+ public final Object getObject(final int _ind) {
+ return geometries_ == null ? null : geometries_.getGeometry(_ind);
+ }
+
+ public boolean isValuesTableAvailable() {
+ return false;
+ }
+}
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java
___________________________________________________________________
Added: svn:eol-style
+ native
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-08-29 08:54:27
|
Revision: 3850
http://fudaa.svn.sourceforge.net/fudaa/?rev=3850&view=rev
Author: bmarchan
Date: 2008-08-29 08:54:34 +0000 (Fri, 29 Aug 2008)
Log Message:
-----------
Fonctionnalit?\195?\169 de projection de g?\195?\169om?\195?\169tries sur un semis
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-08-29 08:53:27 UTC (rev 3849)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-08-29 08:54:34 UTC (rev 3850)
@@ -135,7 +135,7 @@
attr_ = new GISAttributeModelListener[_att.length];
for (int i = _att.length - 1; i >= 0; i--) {
attr_[i] = (GISAttributeModelListener) GISZoneAttributeFactory.createModel(this, _att[i]);
- // FIXME : B.M. : Je laisse, mais c'est douteux. Dans une collection, l'attribut Z n'est pas forcement
+ // FIXME BM : Je laisse, mais c'est douteux. Dans une collection, l'attribut Z n'est pas forcement
// la bathy.
if (_att[i] == GISAttributeConstants.BATHY) {
setAttributeIsZ(GISAttributeConstants.BATHY);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-08-29 08:53:27 UTC (rev 3849)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-08-29 08:54:34 UTC (rev 3850)
@@ -75,6 +75,35 @@
public int getNbAtomicSelected() {
return ZScene.this.isAtomicMode() ? ZScene.this.getLayerSelectionMulti().getNbSelectedItem():0;
}
+
+ /**
+ * @return Les indices des g\xE9om\xE9tries s\xE9lectionn\xE9es, que ce soit en atomique ou sommet.
+ */
+ public int[] getSelectedIndexes() {
+ int r[];
+ if (ZScene.this.isAtomicMode()) {
+ r=ZScene.this.getLayerSelectionMulti().getIdxSelected();
+ }
+ else {
+ r=ZScene.this.getLayerSelection().getSelectedIndex();
+ }
+ return r;
+ }
+
+ /**
+ * @return La liste des sommets selectionn\xE9s pour une g\xE9om\xE9trie. Si en mode global, tous les sommets
+ * le sont.
+ */
+// public CtuluListSelectionInterface getVerticesList(int _idGeom) {
+// CtuluListSelectionInterface r;
+// if (ZScene.this.isAtomicMode()) {
+// r=ZScene.this.getLayerSelectionMulti().getSelection(_idGeom);
+// }
+// else {
+// r=ZScene.this.getObject(_idGeom);
+// }
+// return r;
+// }
}
/** Liste des objets geometrique selectionn\xE9s de la scene */
@@ -142,6 +171,7 @@
/* (non-Javadoc)
* @see org.fudaa.ctulu.CtuluListSelectionInterface#getSelectedIndex()
+ * @return Tableau de longueur 0 si aucune selection.
*/
public int[] getSelectedIndex() {
int idecal=0;
@@ -222,6 +252,9 @@
public SceneListSelectionMulti() {}
+ /* (non-Javadoc)
+ * @return Talbeau de longueur 0 si aucune selection.
+ */
public int[] getIdxSelected() {
int idecal=0;
int ipt=0;
@@ -243,7 +276,7 @@
// return selection_.getSelectedIndex();
}
- public CtuluListSelectionInterface getIdxSelection() {
+ public CtuluListSelection getIdxSelection() {
return new CtuluListSelection(getIdxSelected());
}
@@ -305,8 +338,8 @@
protected BCalque cqActif_=null;
/** Le calque de selection interactif */
protected ZCalqueSelectionInteractionAbstract cqSelectionI_=null;
- protected CtuluListSelectionInterface selection_=null;
- protected EbliListeSelectionMultiInterface selectionMulti_=null;
+ protected SceneListSelection selection_=null;
+ protected SceneListSelectionMulti selectionMulti_=null;
protected SceneSelectionHelper selectionHelper_=null;
protected boolean atomicMode_=false;
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java 2008-08-29 08:53:27 UTC (rev 3849)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java 2008-08-29 08:54:34 UTC (rev 3850)
@@ -34,6 +34,8 @@
import org.fudaa.ebli.trace.TraceIconModel;
import org.fudaa.ebli.trace.TraceLigne;
import org.fudaa.ebli.trace.TraceLigneModel;
+import org.fudaa.ebli.trace.TraceSurface;
+import org.fudaa.ebli.trace.TraceSurfaceModel;
import org.fudaa.fudaa.modeleur.layer.MdlModelGeometry;
import org.fudaa.fudaa.sig.FSigLib;
import org.fudaa.fudaa.tr.common.TrResource;
@@ -135,9 +137,11 @@
final TraceIconModel model = new TraceIconModel(TraceIcon.PLUS_DOUBLE, 4, Color.RED);
cqTmp_.setIconModel(0, model);
cqTmp_.setIconModel(1, model);
- final TraceLigneModel ligne = new TraceLigneModel(TraceLigne.MIXTE, 2, Color.RED);
+ final TraceLigneModel ligne = new TraceLigneModel(TraceLigne.INVISIBLE, 2, Color.RED);
cqTmp_.setLineModel(0, ligne);
cqTmp_.setLineModel(1, ligne);
+ final TraceSurfaceModel surfMdl=new TraceSurfaceModel(TraceSurface.UNIFORME,new Color(255,50,0,40),null);
+ cqTmp_.setSurfaceModel(surfMdl);
pn_.getVueCalque().getCalque().enPremier(cqTmp_);
pn_.getCqInfos().enPremier();
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-08-29 08:53:27 UTC (rev 3849)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-08-29 08:54:34 UTC (rev 3850)
@@ -11,6 +11,8 @@
import java.util.List;
import org.fudaa.ctulu.CtuluCommandComposite;
+import org.fudaa.ctulu.CtuluListSelection;
+import org.fudaa.ctulu.CtuluListSelectionInterface;
import org.fudaa.ctulu.gis.GISAttributeConstants;
import org.fudaa.ctulu.gis.GISAttributeInterface;
import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface;
@@ -256,14 +258,19 @@
List<GISAttributeInterface> vars=new ArrayList<GISAttributeInterface>();
vars.add(GISAttributeConstants.BATHY);
+ // Cr\xE9ation d'une liste contenant les g\xE9om\xE9tries s\xE9lectionn\xE9es.
+ // FIXME BM: En cas de undo, les g\xE9om\xE9tries n'ont pas leur Z r\xE9initialis\xE9 a partir du Z attribut.
+ // Si nouvelle interpolation => Les valeurs ne sont pas les bonnes.
GISZoneCollectionGeometry targetGeoms=new GISZoneCollectionGeometry();
- int[] idxGeom=getScene().getLayerSelection().getSelectedIndex();
+ int[] idxGeom=getScene().getSelectionHelper().getSelectedIndexes();
for (int i : idxGeom)
targetGeoms.addGeometry((Geometry)getScene().getObject(i), null, null);
targetGeoms.setAttributes(new GISAttributeInterface[]{GISAttributeConstants.BATHY}, null);
targetGeoms.setAttributeIsZ(GISAttributeConstants.BATHY);
+ // L'interpolation se fait sur la totalit\xE9 des sommets des g\xE9om\xE9tries, m\xEAme si on est seulement en mode sommet.
+ // Lors du transfert vers les attributs, seuls les valeurs des sommets s\xE9lectionn\xE9s (tous si mode global) seront modifi\xE9es.
InterpolationTarget target=new InterpolationTargetGISAdapter(targetGeoms);
InterpolationParameters params=new InterpolationParameters(vars,target,support);
InterpolatorBilinear interp=new InterpolatorBilinear(support);
@@ -274,12 +281,23 @@
final CtuluCommandComposite cmp = new CtuluCommandComposite();
- // Transfert du Z sur les objets selectionn\xE9s.
+ // Transfert du Z sur les sommets concern\xE9s.
int ipt=0;
for (int i=0; i<targetGeoms.getNbGeometries(); i++) {
CoordinateSequence seq=((GISCoordinateSequenceContainerInterface)targetGeoms.getGeometry(i)).getCoordinateSequence();
+ CtuluListSelectionInterface idxsom;
+ if (getScene().isAtomicMode()) {
+ idxsom=getScene().getLayerSelectionMulti().getSelection(idxGeom[i]);
+ }
+ else {
+ CtuluListSelection tmp=new CtuluListSelection(seq.size());
+ tmp.inverse(seq.size());
+ idxsom=tmp;
+ }
for (int idx=0; idx<seq.size(); idx++) {
- seq.setOrdinate(idx, 2, res.getValuesForPt(ipt++)[0]);
+ if (idxsom.isSelected(idx))
+ seq.setOrdinate(idx, 2, res.getValuesForPt(ipt)[0]);
+ ipt++;
}
}
targetGeoms.postImport(0);
@@ -292,7 +310,7 @@
GISZoneCollection colTmp=((ZModeleGeom)getScene().getLayerForId(idxGeom[i]).modeleDonnees()).getGeomData();
if (col!=colTmp) {
col=colTmp;
- zatt=col.getIndiceOf(GISAttributeConstants.BATHY);
+ zatt=col.getIndiceOf(col.getAttributeIsZ());
}
int idx=getScene().sceneId2LayerId(idxGeom[i]);
if (zatt!=-1)
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java 2008-08-29 08:53:27 UTC (rev 3849)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneProjectionAction.java 2008-08-29 08:54:34 UTC (rev 3850)
@@ -34,7 +34,7 @@
public SceneProjectionAction(MdlSceneEditor _sceneEditor) {
super(BuResource.BU.getString("Projeter sur un semis"), null, "GIS_PROJECT");
- setDefaultToolTip(CtuluLib.getS("Projeter la g\xE9om\xE9trie sur un semis"));
+// setDefaultToolTip(CtuluLib.getS("Projeter la g\xE9om\xE9trie sur un semis"));
setSceneEditor(_sceneEditor);
sceneEditor_.getScene().addSelectionListener(this);
}
@@ -56,22 +56,11 @@
int idGeom=-1;
boolean b=true;
- // Si la selection n'est pas null et atomique
+ // Si la selection n'est pas nulle
b=b && !scn.isSelectionEmpty();
- // Si la selection est sur le m\xEAme objet.
-// b=b && (idGeom=hlp.getUniqueSelectedIdx())!=-1;
-// // Si le nombre d'atomiques est de 2 cons\xE9cutifs sur une g\xE9om\xE9trie de type polyligne.
-// if (b && scn.getObject(idGeom) instanceof GISPolyligne) {
-// b=b && hlp.getNbAtomicSelected()==2;
-// b=b && Math.abs(hlp.getUniqueAtomicSelection().getMinIndex()-hlp.getUniqueAtomicSelection().getMaxIndex())==1;
-// if (b) putValue(Action.NAME, BuResource.BU.getString("Scinder la polyligne"));
-// }
-// // Si ou est sur un multipoint
-// else {
-// b=b && (scn.getObject(idGeom) instanceof GISMultiPoint);
-// if (b) putValue(Action.NAME, BuResource.BU.getString("Scinder le multipoint"));
-// }
-// if (!b) putValue(Action.NAME, BuResource.BU.getString("Scinder"));
+ // Si atomique
+ String acname=b?(scn.isAtomicMode()?"Projeter les sommets sur un semis":"Projeter les g\xE9om\xE9tries sur un semis"):"Projeter sur un semis";
+ putValue(Action.NAME, BuResource.BU.getString(acname));
setEnabled(b);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|