summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/visualization/visualizers/vis2d/PolygonVisualization.java
diff options
context:
space:
mode:
authorErich Schubert <erich@debian.org>2011-09-10 23:13:04 +0200
committerAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:30 +0000
commit31b594b746419717396c9daa8bf1863890739d82 (patch)
tree995a0a53ba8f00ce98f653a4f79f986b10b2b402 /src/de/lmu/ifi/dbs/elki/visualization/visualizers/vis2d/PolygonVisualization.java
parentf229d1a7ad8b055647160621068188381be54521 (diff)
parent6160961591bfbfeab2ea5f7c249f58c78e893347 (diff)
Import Debian changes 0.4.0~beta2-1
elki (0.4.0~beta2-1) unstable; urgency=low * New upstream release. * Build with OpenJDK 7, which just entered unstable. * Move to main, since we can now build with free software only. * Drop Vcs-Browser used incorrectly (pointing to upstream VCS, not Debian packaging) (Closes: #638516)
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/visualizers/vis2d/PolygonVisualization.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/vis2d/PolygonVisualization.java84
1 files changed, 46 insertions, 38 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/vis2d/PolygonVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/vis2d/PolygonVisualization.java
index 026a7729..b0f18666 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/vis2d/PolygonVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/vis2d/PolygonVisualization.java
@@ -1,28 +1,30 @@
package de.lmu.ifi.dbs.elki.visualization.visualizers.vis2d;
-/*
-This file is part of ELKI:
-Environment for Developing KDD-Applications Supported by Index-Structures
-
-Copyright (C) 2011
-Ludwig-Maximilians-Universität München
-Lehr- und Forschungseinheit für Datenbanksysteme
-ELKI Development Team
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
+/*
+ This file is part of ELKI:
+ Environment for Developing KDD-Applications Supported by Index-Structures
+
+ Copyright (C) 2011
+ Ludwig-Maximilians-Universität München
+ Lehr- und Forschungseinheit für Datenbanksysteme
+ ELKI Development Team
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
import java.util.ArrayList;
+import java.util.Iterator;
import org.apache.batik.util.SVGConstants;
import org.w3c.dom.Element;
@@ -40,16 +42,18 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.Vector;
import de.lmu.ifi.dbs.elki.result.HierarchicalResult;
import de.lmu.ifi.dbs.elki.result.Result;
import de.lmu.ifi.dbs.elki.result.ResultUtil;
+import de.lmu.ifi.dbs.elki.utilities.DatabaseUtil;
import de.lmu.ifi.dbs.elki.utilities.exceptions.ObjectNotFoundException;
+import de.lmu.ifi.dbs.elki.utilities.iterator.IterableUtil;
+import de.lmu.ifi.dbs.elki.visualization.VisualizationTask;
import de.lmu.ifi.dbs.elki.visualization.css.CSSClass;
-import de.lmu.ifi.dbs.elki.visualization.projections.Projection;
import de.lmu.ifi.dbs.elki.visualization.projections.Projection2D;
+import de.lmu.ifi.dbs.elki.visualization.projector.ScatterPlotProjector;
import de.lmu.ifi.dbs.elki.visualization.style.StyleLibrary;
import de.lmu.ifi.dbs.elki.visualization.svg.SVGPath;
import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil;
import de.lmu.ifi.dbs.elki.visualization.visualizers.AbstractVisFactory;
import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization;
-import de.lmu.ifi.dbs.elki.visualization.visualizers.VisualizationTask;
/**
* Renders PolygonsObject in the data set.
@@ -67,7 +71,7 @@ public class PolygonVisualization<V extends NumberVector<?, ?>> extends P2DVisua
/**
* Generic tag to indicate the type of element. Used in IDs, CSS-Classes etc.
*/
- public static final String MARKER = "polys";
+ public static final String POLYS = "polys";
/**
* The current projection
@@ -87,7 +91,7 @@ public class PolygonVisualization<V extends NumberVector<?, ?>> extends P2DVisua
public PolygonVisualization(VisualizationTask task) {
super(task);
this.proj = task.getProj();
- this.rep = task.getRelation();
+ this.rep = task.getResult(); // Note: relation was used for projection
context.addDataStoreListener(this);
incrementalRedraw();
}
@@ -100,9 +104,11 @@ public class PolygonVisualization<V extends NumberVector<?, ?>> extends P2DVisua
@Override
public void redraw() {
- CSSClass css = new CSSClass(svgp, MARKER);
- css.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, context.getStyleLibrary().getLineWidth(StyleLibrary.PLOT));
- css.setStatement(SVGConstants.CSS_STROKE_PROPERTY, context.getStyleLibrary().getColor(StyleLibrary.PLOT));
+ CSSClass css = new CSSClass(svgp, POLYS);
+ // TODO: separate fill and line colors?
+ css.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, context.getStyleLibrary().getLineWidth(StyleLibrary.POLYGONS));
+ css.setStatement(SVGConstants.CSS_STROKE_PROPERTY, context.getStyleLibrary().getColor(StyleLibrary.POLYGONS));
+ css.setStatement(SVGConstants.CSS_FILL_PROPERTY, SVGConstants.CSS_NONE_VALUE);
svgp.addCSSClassOrLogError(css);
svgp.updateStyleElement();
@@ -129,7 +135,7 @@ public class PolygonVisualization<V extends NumberVector<?, ?>> extends P2DVisua
path.drawTo(f[0], f[1]);
}
Element e = path.makeElement(svgp);
- SVGUtil.addCSSClass(e, MARKER);
+ SVGUtil.addCSSClass(e, POLYS);
layer.appendChild(e);
}
catch(ObjectNotFoundException e) {
@@ -139,7 +145,7 @@ public class PolygonVisualization<V extends NumberVector<?, ?>> extends P2DVisua
}
@Override
- public void contentChanged(@SuppressWarnings("unused") DataStoreEvent e) {
+ public void contentChanged(DataStoreEvent e) {
synchronizedRedraw();
}
@@ -169,16 +175,18 @@ public class PolygonVisualization<V extends NumberVector<?, ?>> extends P2DVisua
ArrayList<Relation<?>> results = ResultUtil.filterResults(result, Relation.class);
for(Relation<?> rel : results) {
if(TypeUtil.POLYGON_TYPE.isAssignableFromType(rel.getDataTypeInformation())) {
- final VisualizationTask task = new VisualizationTask(NAME, rel, rel, this, P2DVisualization.class);
- task.put(VisualizationTask.META_LEVEL, VisualizationTask.LEVEL_DATA);
- baseResult.getHierarchy().add(rel, task);
+ // Assume that a 2d projector is using the same coordinates as the polygons.
+ Iterator<ScatterPlotProjector<?>> ps = ResultUtil.filteredResults(baseResult, ScatterPlotProjector.class);
+ for(ScatterPlotProjector<?> p : IterableUtil.fromIterator(ps)) {
+ if(DatabaseUtil.dimensionality(p.getRelation()) == 2) {
+ final VisualizationTask task = new VisualizationTask(NAME, rel, p.getRelation(), this);
+ task.put(VisualizationTask.META_LEVEL, VisualizationTask.LEVEL_DATA - 10);
+ baseResult.getHierarchy().add(rel, task);
+ baseResult.getHierarchy().add(p, task);
+ }
+ }
}
}
}
-
- @Override
- public Class<? extends Projection> getProjectionType() {
- return Projection2D.class;
- }
}
} \ No newline at end of file