From 80b788aef2b67594ce9051f7a7d7099125b4d84f Mon Sep 17 00:00:00 2001 From: "guillaume.garbay" <guillaume.garbay> Date: Tue, 15 Sep 2015 08:50:55 +0000 Subject: [PATCH] --- .../Movement2DWithinShapeObserver.java | 92 +++++++++++++------ 1 file changed, 63 insertions(+), 29 deletions(-) diff --git a/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java b/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java index edc034e..c794cc4 100644 --- a/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java +++ b/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java @@ -49,13 +49,12 @@ import pikelake.pikes.PikesGroup; public class Movement2DWithinShapeObserver extends ObserverListener implements Configurable, Drawable { + private String title; + //private transient Grid grid; private transient JComponent display; - private transient GeneralPath generalPath; private transient List<PikesGroup> groups; - private String title; - // TODO supress transient when list will be supported by AutOUI @Description (name="Groups colors",tooltip="Colors af aquanisms groups") private transient List<Color> groupsColors; @@ -72,7 +71,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C private Color textColor; private int margin; -// private int sizeOfDisplayedIndividuals; + // private int sizeOfDisplayedIndividuals; // use for determine if generalPath must be rescaled private transient int displayWidthBak,displayHeightBak; // used for coordinates rescaling @@ -83,42 +82,75 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C @SuppressWarnings("unused") private transient double rescaleFactorWithOriginal; - public Movement2DWithinShapeObserver(int margin) { + + public Movement2DWithinShapeObserver (int margin) { this(margin,Color.BLACK,Color.BLUE); } - public Movement2DWithinShapeObserver() { + public Movement2DWithinShapeObserver () { this(Color.BLACK,Color.BLUE); } - public Movement2DWithinShapeObserver(Color bgColor,Color shapeColor) { + public Movement2DWithinShapeObserver (Color bgColor,Color shapeColor) { this(0,bgColor,shapeColor); } - public Movement2DWithinShapeObserver(int margin,Color bgColor,Color shapeColor) { + public Movement2DWithinShapeObserver (int margin,Color bgColor,Color shapeColor) { this.margin = margin; this.bgColor = bgColor; } - public String getTitle() { + public String getTitle () { return title; } - public JComponent getDisplay() { + public JComponent getDisplay () { return display; } + @Override + public void init() { + // TODO Auto-generated method stub + } + @TransientParameters.InitTransientParameters - public void init(Pilot pilot) { + public void init (Pilot pilot) { display = new DisplayComponent(); display.setVisible(false); display.setDoubleBuffered(true); +/* grid = (Grid)pilot.getAquaticWorld().getEnvironment(); + + System.out.println(grid); + // init display variables displayWidthBak = 0; displayHeightBak = 0; - - + // compute HabitatQuality colors + double cellsHabitatQualityMin = 0; + double cellsHabitatQualityMax = 0; + cellsAlpha = new int[grid.getCells().length]; + if (grid.getCells().length > 0) { + cellsHabitatQualityMin = grid.getCells()[0].getHabitatQuality(); + cellsHabitatQualityMax = grid.getCells()[0].getHabitatQuality(); + for (int i = 1; i < grid.getCells().length; i++) { + if (grid.getCells()[i].getHabitatQuality() < cellsHabitatQualityMin) + cellsHabitatQualityMin = grid.getCells()[i].getHabitatQuality(); + else if (grid.getCells()[i].getHabitatQuality() > cellsHabitatQualityMax) + cellsHabitatQualityMax = grid.getCells()[i].getHabitatQuality(); + } + } + if (Double.compare(cellsHabitatQualityMax,cellsHabitatQualityMin) == 0) { + for (int i = 0; i < grid.getCells().length; i++) { + cellsAlpha[i] = 255; + } + } else { + for (int i = 0; i < grid.getCells().length; i++) { + cellsAlpha[i] = (int)(155 + 100*(grid.getCells()[i].getHabitatQuality() - cellsHabitatQualityMin)/(cellsHabitatQualityMax - cellsHabitatQualityMin)); + } + } +*/ + /////////////////////////////////////////////////////////////////////////////////////////////////////////////// File file = new File("data/input/shape/513_5.shp"); FileDataStore store; @@ -154,7 +186,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C // vertical flip this.generalPath.transform(AffineTransform.getScaleInstance(1,-1)); this.generalPath.transform(AffineTransform.getTranslateInstance(0,shapeOriginalHeight)); - + this.groups = new ArrayList<PikesGroup>(); groupsColors = new ArrayList<Color>(); groupsColors.add(Color.RED); @@ -163,6 +195,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C groupsColors.add(Color.CYAN); groupsColors.add(Color.GRAY); display.setVisible(true); + // auto-repaint 20 times / second Timer timer = new Timer(50, new ActionListener() { @@ -176,16 +209,16 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C } - public void disable() { + public void disable () { display.setVisible(false); } @Override - public void addObservable(ObservablesHandler classObservable) { + public void addObservable (ObservablesHandler classObservable) { // nothing to do } - public void valueChanged(ObservablesHandler clObservable, Object instance, long t) { + public void valueChanged (ObservablesHandler clObservable, Object instance, long t) { if (groups.isEmpty() && instance != null) { groups.add((PikesGroup) instance); } @@ -196,18 +229,18 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C public Shape getShape(); } - public void configure() { + public void configure () { OhOUIDialog dialog = OhOUI.getDialog(null,this,new NoTransientField()); dialog.setSize(new Dimension(480, 200)); dialog.setVisible(true); display.repaint(); } - public void addObservable(ObserverListener classObservable) { + public void addObservable (ObserverListener classObservable) { // nothing to do } - public void close() { + public void close () { // nothing to do } @@ -238,15 +271,18 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C generalPath.transform (AffineTransform.getScaleInstance (rescaleFactor, rescaleFactor)); } Iterator<Color> colorsIterator = groupsColors.iterator(); + + // Draw aquanisms g.setColor(pikeColor); double widthMax = 0, heightMax = 0; double xPike = 0, yPike = 0, xPike2 = 0, yPike2 = 0; widthMax = generalPath.getBounds().getWidth(); heightMax = generalPath.getBounds().getHeight(); - + boolean oneShot = false; for (PikesGroup group : groups) { + final Grid grid = group.getEnvironment(); if (oneShot == false) { Cell[] cells; @@ -254,6 +290,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C synchronized (grid) { cells = Arrays.copyOf(grid.getCells(), grid.getCells().length); } + int xHSI = 0, yHSI = 0, xHSI2 = 0, yHSI2 = 0; int xx[] = new int [(grid.getGridHeight() * grid.getGridWidth())-1], yy[] = new int [(grid.getGridHeight() * grid.getGridWidth())-1]; g.setColor(hsiColor); @@ -265,9 +302,11 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C xHSI2 = (int) (xHSI * (widthMax / grid.getGridWidth())); yHSI2 = (int) (yHSI * (heightMax / grid.getGridHeight())); + g.setColor(new Color(0.43f, (float) (Math.max(0, Math.min(1,grid.getCell(cptCell).getHabitatQuality()/hsiMaxValueThreshold))), 0.13f)); g2d.fillRect((int) xHSI2, (int) yHSI2, 3, 3); xx[cptCell] = xHSI2; + yy[cptCell] = yHSI2; } } @@ -286,9 +325,9 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C yPike2 = yPike * (heightMax / grid.getGridHeight()); // Affichage de chaque individu g2d.drawRect((int) xPike2, (int) yPike2, 1, 1); - } + } } - + // Annotations DecimalFormat df = new DecimalFormat("00"); g.setColor(textColor); @@ -298,14 +337,9 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C // Nombre de pas line = "NbPas : " + Time.nbrIter; g2d.drawString(line, 5, 25); - // Marnage ou Cote + // Marnage (ou Cote) line = "Cote : " + Marnage.marnageNew; g2d.drawString(line, 5, 40); } } - - @Override - public void init() { - // TODO Auto-generated method stub - } } -- GitLab