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