diff options
author | Erich Schubert <erich@debian.org> | 2011-09-10 23:13:04 +0200 |
---|---|---|
committer | Andrej Shadura <andrewsh@debian.org> | 2019-03-09 22:30:30 +0000 |
commit | 31b594b746419717396c9daa8bf1863890739d82 (patch) | |
tree | 995a0a53ba8f00ce98f653a4f79f986b10b2b402 /src/de/lmu/ifi/dbs/elki/visualization/visualizers/vis2d/PolygonVisualization.java | |
parent | f229d1a7ad8b055647160621068188381be54521 (diff) | |
parent | 6160961591bfbfeab2ea5f7c249f58c78e893347 (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.java | 84 |
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 |