|
From: <de...@us...> - 2013-01-16 21:27:11
|
Revision: 8214
http://fudaa.svn.sourceforge.net/fudaa/?rev=8214&view=rev
Author: deniger
Date: 2013-01-16 21:27:04 +0000 (Wed, 16 Jan 2013)
Log Message:
-----------
optimisation maillage important
Modified Paths:
--------------
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlImplementation.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/CalqueCreateGridAction.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/CalqueGridSemisSynchronizeProcess.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/LayerGridController.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/MdlCalqueMultiPointEditable.java
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlImplementation.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlImplementation.java 2013-01-16 21:26:35 UTC (rev 8213)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlImplementation.java 2013-01-16 21:27:04 UTC (rev 8214)
@@ -81,6 +81,7 @@
import com.memoire.bu.BuUserPreferencesPanel;
import com.memoire.fu.FuLog;
import org.fudaa.ebli.commun.BJava3DVersionTest;
+import org.fudaa.fudaa.commun.trace2d.FudaaPerformancePreferencesPanel;
/**
* La classe principale de mise en place de l'application, de gestion des actions, des \xE9tats de l'interface, etc.
@@ -732,6 +733,8 @@
*/
@Override
protected void buildPreferences(final List<BuAbstractPreferencesPanel> _frAddTab) {
+
+ _frAddTab.add(new FudaaPerformancePreferencesPanel(this));
_frAddTab.add(new BuUserPreferencesPanel(this));
_frAddTab.add(new BuLanguagePreferencesPanel(this));
_frAddTab.add(new BuDesktopPreferencesPanel(this));
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/CalqueCreateGridAction.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/CalqueCreateGridAction.java 2013-01-16 21:26:35 UTC (rev 8213)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/action/CalqueCreateGridAction.java 2013-01-16 21:27:04 UTC (rev 8214)
@@ -73,7 +73,7 @@
@Override
public void actionPerformed(ActionEvent _e) {
-
+
stop = false;
setEnabled(false);
running = true;
@@ -182,9 +182,7 @@
* @param model
*/
private void installGridLayer(MdlElementModel model) {
- running = false;
- setEnabled(true);
- stopAction.setRunning(running);
+ stopRunning();
if (!stop) {
if (layer.isTraceIsoLine() || layer.isTraceIsoSurface()) {
if (layer.getPaletteCouleur() == null) {
@@ -239,6 +237,7 @@
}
});
} else {
+ stopRunning();
getUI().warn(MdlResource.getS("Construction de la triangulation"), getLongHelp(), false);
}
@@ -250,5 +249,11 @@
+ "<br>Si vous utiliser le triangulateur interne, il est pr\xE9f\xE9rable de d\xE9finir une enveloppe externe"
+ "<br>Utiliser le triangulateur externe (Triangle) de pr\xE9f\xE9rence: plus stable et plus rapide");
}
+
+ public void stopRunning() {
+ running = false;
+ setEnabled(true);
+ stopAction.setRunning(running);
+ }
}
}
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/CalqueGridSemisSynchronizeProcess.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/CalqueGridSemisSynchronizeProcess.java 2013-01-16 21:26:35 UTC (rev 8213)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/CalqueGridSemisSynchronizeProcess.java 2013-01-16 21:27:04 UTC (rev 8214)
@@ -15,10 +15,8 @@
import org.fudaa.ctulu.gis.comparator.CoordinateComparator;
import org.fudaa.ctulu.interpolation.bilinear.InterpolationBilinearSupportSorted;
import org.fudaa.dodico.ef.AllFrontierIteratorInterface;
-import org.fudaa.dodico.ef.EfFrontierInterface;
import org.fudaa.dodico.ef.EfGridInterface;
import org.fudaa.dodico.ef.EfLib;
-import org.fudaa.dodico.ef.EfNeighborMesh;
import org.fudaa.fudaa.modeleur.resource.MdlResource;
/**
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/LayerGridController.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/LayerGridController.java 2013-01-16 21:26:35 UTC (rev 8213)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/LayerGridController.java 2013-01-16 21:27:04 UTC (rev 8214)
@@ -32,22 +32,22 @@
* @author Frederic Deniger
*/
public class LayerGridController implements ZModelGeometryListener {
-
+
private final MdlCalqueMultiPointEditable parentLayer;
private MdlElementModel elementModel;
private MdlIsoModelDefault isoModel;
private MdlGridData gridData;
private MvIsoLayerQuickPainter painter;
-
+
public LayerGridController(MdlCalqueMultiPointEditable parentLayer) {
this.parentLayer = parentLayer;
parentLayer.modeleDonnees().addModelListener(this);
}
-
+
public CtuluUI getUI() {
return ((FSigEditor) parentLayer.getEditor()).getUi();
}
-
+
@Override
public void geometryAction(Object _source, int _indexGeom, Geometry _geom, int _action) {
if (elementModel != null) {
@@ -58,7 +58,7 @@
}
/**
- * Dessine les isosurfaces/lignes.
+ * Dessine les isosurfaces/lignes. Si rapide dessine des isolignes.
*
* @param width
* @param height
@@ -82,26 +82,27 @@
painter = new MvIsoLayerQuickPainter(isoModel);
}
painter.setModel(isoModel);
- painter.setTraceIsoLine(parentLayer.isTraceIsoLine());
+ //si bcp de donn\xE9es on trace des iso lignes.
+ painter.setTraceIsoLine(parentLayer.isRapideForBigData() ? true : parentLayer.isTraceIsoLine());
painter.setPaletteCouleur(parentLayer.getPaletteCouleur());
painter.setIsAntaliasing(parentLayer.isAntialiasing());
painter.setAlpha(parentLayer.getAlpha());
painter.setLigneModel(parentLayer.getLineModel(0));
painter.setRapide(parentLayer.isRapide());
painter.paintDonnees(width, height, _g, _versEcran, _versReel, _clipReel);
-
+
}
-
+
@Override
public void attributeAction(Object _source, int _indexAtt, GISAttributeInterface _att, int _action) {
}
-
+
@Override
public void attributeValueChangeAction(Object _source, int _indexAtt, GISAttributeInterface _att, int _indexGeom, Object _newValue) {
}
-
+
public MdlElementLayer getGridLayer() {
- return (MdlElementLayer) parentLayer.getCalqueParNom("cqGrid");
+ return eltLayer;
}
/**
@@ -111,44 +112,45 @@
public boolean isGridCreated() {
return elementModel != null;
}
-
+
public ZCalqueMultiPointEditable getParentLayer() {
return parentLayer;
}
-
+
public MdlGridData getExportGridData() {
return gridData;
}
-
+
public void clearGrid() {
elementModel = null;
gridData = null;
isoModel = null;
- MdlElementLayer eltLayer = getGridLayer();
if (eltLayer != null) {
parentLayer.remove(eltLayer);
parentLayer.clearCacheAndRepaint();
+ eltLayer = null;
}
}
-
+
public void setGridLayer(MdlElementModel grid) {
this.elementModel = grid;
gridData = null;
isoModel = null;
- MdlElementLayer eltLayer = getGridLayer();
- if (grid == null) {
- if (eltLayer != null) {
- parentLayer.remove(eltLayer);
- }
- } else {
- installGridLayer(eltLayer, grid);
+
+ if (eltLayer != null) {
+ parentLayer.remove(eltLayer);
+ eltLayer = null;
}
+ if (grid != null) {
+ installGridLayer(grid);
+ }
parentLayer.clearCacheAndRepaint();
((FSigEditor) parentLayer.getEditor()).getPanel().getVueCalque().repaint(0);
((FSigEditor) parentLayer.getEditor()).getPanel().getVueCalque().revalidate();
}
-
- public void installGridLayer(MdlElementLayer eltLayer, MdlElementModel grid) {
+ MdlElementLayer eltLayer;
+
+ public void installGridLayer(MdlElementModel grid) {
if (eltLayer == null) {
eltLayer = new MdlElementLayer();
eltLayer.setTitle(MdlResource.getS("Maillage"));
@@ -170,7 +172,7 @@
eltLayer.setModele(grid);
eltLayer.repaint();
}
-
+
public void setEltPainted(int[] selectedElementIdx, boolean b) {
getGridLayer().modele().setPainted(selectedElementIdx, b);
getGridLayer().clearCacheAndRepaint();
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/MdlCalqueMultiPointEditable.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/MdlCalqueMultiPointEditable.java 2013-01-16 21:26:35 UTC (rev 8213)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/grid/MdlCalqueMultiPointEditable.java 2013-01-16 21:27:04 UTC (rev 8214)
@@ -6,7 +6,6 @@
import java.awt.Color;
import java.awt.Graphics2D;
import java.util.ArrayList;
-import org.fudaa.ctulu.CtuluListSelection;
import org.fudaa.ctulu.gis.GISAttributeModelDoubleInterface;
import org.fudaa.ctulu.gis.GISAttributeModelObjectInterface;
import org.fudaa.ebli.calque.BCalqueCacheManager;
@@ -26,7 +25,6 @@
import org.fudaa.ebli.controle.BConfigurableInterface;
import org.fudaa.ebli.geometrie.GrBoite;
import org.fudaa.ebli.geometrie.GrMorphisme;
-import org.fudaa.ebli.geometrie.GrPoint;
import org.fudaa.ebli.palette.BPalettePlage;
import org.fudaa.ebli.trace.TraceIcon;
import org.fudaa.ebli.trace.TraceIconModel;
@@ -147,24 +145,36 @@
updatePositionDataBathy();
}
+ public boolean isRapideForBigData() {
+ return isRapide() && layerGridDelegate.isGridCreated() && layerGridDelegate.getGridLayer().modele().getNbPoint() > 100000;
+ }
+
@Override
public void paintDonnees(Graphics2D _g, GrMorphisme _versEcran, GrMorphisme _versReel, GrBoite _clipReel) {
if ((modele_ == null) || (modele_.getNombre() <= 0)) {
return;
}
- // Trac\xE9 des surfaces
-// paintSurfaces(_g, _versEcran, _versReel, _clipReel);//pas la peine ici
-// paintLines(_clipReel, _versEcran, _g);//pas la peine ici
- // Les icones sur les atomiques
- //faudrait voir pour ne redesinner inutilement des points ...
+ //si rapide, le delegate trace des isoligne.
+ //dans ce cas on s'assure de tracer les icones sur les points
+ if (isRapideForBigData() && isTraceIsoSurface() && (iconModel_.getType() == TraceIcon.RIEN || iconModel_.getTaille() <= 0)) {
+ iconModel_.setTaille(1);
+ iconModel_.setType(TraceIcon.CARRE);
+ }
paintIconsOnAtomics(_g, _versEcran, _versReel, _clipReel);
+
layerGridDelegate.paintDonnees(getWidth(), getHeight(), _g, _versEcran, _versReel, _clipReel);
+ TraceIconModel saved = iconModel_.cloneData();
+
paintLabelsOnAtomics(_g, _versEcran, _versReel, _clipReel);
+ iconModel_.updateData(saved);
}
@Override
protected boolean isIconOnAtomicsPainted(int idxGeometry, int idxPoint) {
if (getLayerGridDelegate().isGridCreated() && isTraceIsoSurface()) {
+ if (isRapide()) {
+ return true;//optimisation
+ }
MdlElementModel modele = getLayerGridDelegate().getGridLayer().modele();
int idx = modele.getPointsAdapter().getIdx(idxGeometry, idxPoint);
if (modele.isNodePaintedByIso(idx)) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|