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