diff options
Diffstat (limited to 'addons/batikvis/src/main')
173 files changed, 797 insertions, 81 deletions
diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/application/greedyensemble/VisualizePairwiseGainMatrix.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/application/greedyensemble/VisualizePairwiseGainMatrix.java index 28435915..dce3eef1 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/application/greedyensemble/VisualizePairwiseGainMatrix.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/application/greedyensemble/VisualizePairwiseGainMatrix.java @@ -86,6 +86,7 @@ import de.lmu.ifi.dbs.elki.workflow.InputStep; * </p> * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.composedOf VisualizerParameterizer * @apiviz.composedOf SimilarityMatrixVisualizer diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/ResultVisualizer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/result/AutomaticVisualization.java index 64ddfaa3..2c9ec8ef 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/ResultVisualizer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/result/AutomaticVisualization.java @@ -1,10 +1,10 @@ -package de.lmu.ifi.dbs.elki.visualization.gui; +package de.lmu.ifi.dbs.elki.result; /* This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2015 + Copyright (C) 2016 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -39,22 +39,24 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Flag; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.StringParameter; import de.lmu.ifi.dbs.elki.visualization.VisualizerContext; import de.lmu.ifi.dbs.elki.visualization.VisualizerParameterizer; +import de.lmu.ifi.dbs.elki.visualization.gui.ResultWindow; /** * Handler to process and visualize a Result. * * @author Erich Schubert * @author Remigius Wojdanowski + * @since 0.3 * * @apiviz.composedOf VisualizerParameterizer * @apiviz.uses ResultWindow oneway */ -@Alias({ "visualizer", "vis", "ResultVisualizer" }) -public class ResultVisualizer implements ResultHandler { +@Alias({ "visualizer", "vis", "ResultVisualizer", "de.lmu.ifi.dbs.elki.visualization.gui.ResultVisualizer" }) +public class AutomaticVisualization implements ResultHandler { /** * Get a logger for this class. */ - private static final Logging LOG = Logging.getLogger(ResultVisualizer.class); + private static final Logging LOG = Logging.getLogger(AutomaticVisualization.class); /** * Stores the set title. @@ -88,7 +90,7 @@ public class ResultVisualizer implements ResultHandler { * @param manager Parameterization manager for visualizers * @param single Flag to indicat single-view mode. */ - public ResultVisualizer(String title, VisualizerParameterizer manager, boolean single) { + public AutomaticVisualization(String title, VisualizerParameterizer manager, boolean single) { super(); this.title = title; this.manager = manager; @@ -183,8 +185,8 @@ public class ResultVisualizer implements ResultHandler { } @Override - protected ResultVisualizer makeInstance() { - return new ResultVisualizer(title, manager, single); + protected AutomaticVisualization makeInstance() { + return new AutomaticVisualization(title, manager, single); } } } diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/ExportVisualizations.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/result/ExportVisualizations.java index bf552880..150d384f 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/ExportVisualizations.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/result/ExportVisualizations.java @@ -1,4 +1,4 @@ -package de.lmu.ifi.dbs.elki.visualization; +package de.lmu.ifi.dbs.elki.result; /* This file is part of ELKI: @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.result.Result; import de.lmu.ifi.dbs.elki.result.ResultHandler; import de.lmu.ifi.dbs.elki.result.ResultHierarchy; +import de.lmu.ifi.dbs.elki.utilities.Alias; import de.lmu.ifi.dbs.elki.utilities.datastructures.hierarchy.Hierarchy; import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; @@ -44,6 +45,9 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameteriz import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.FileParameter; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.FileParameter.FileType; +import de.lmu.ifi.dbs.elki.visualization.VisualizationTask; +import de.lmu.ifi.dbs.elki.visualization.VisualizerContext; +import de.lmu.ifi.dbs.elki.visualization.VisualizerParameterizer; import de.lmu.ifi.dbs.elki.visualization.gui.VisualizationPlot; import de.lmu.ifi.dbs.elki.visualization.gui.overview.PlotItem; import de.lmu.ifi.dbs.elki.visualization.projector.Projector; @@ -56,9 +60,11 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * visualizers to run. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.composedOf VisualizerParameterizer */ +@Alias("de.lmu.ifi.dbs.elki.visualization.ExportVisualizations") public class ExportVisualizations implements ResultHandler { /** * Get a logger for this class. @@ -212,7 +218,7 @@ public class ExportVisualizations implements ResultHandler { String prefix = null; prefix = (prefix == null && item.proj != null) ? item.proj.getMenuName() : prefix; - prefix = (prefix == null && item.tasks.size() > 0) ? item.tasks.get(0).name : prefix; + prefix = (prefix == null && item.tasks.size() > 0) ? item.tasks.get(0).getMenuName() : prefix; prefix = (prefix != null ? prefix : "plot"); // TODO: generate names... Integer count = counter.get(prefix); diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationItem.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationItem.java index 3f6c6f19..d1606839 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationItem.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationItem.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.visualization; * of improving type safety. * * @author Erich Schubert + * @since 0.6.0 */ public interface VisualizationItem { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationListener.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationListener.java index 4a8b3f03..5dec07ad 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationListener.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationListener.java @@ -29,6 +29,7 @@ import java.util.EventListener; * Listener for visualization events. * * @author Erich Schubert + * @since 0.4.0 */ public interface VisualizationListener extends EventListener { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationMenuAction.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationMenuAction.java index f16a208e..b0f8b777 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationMenuAction.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationMenuAction.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.visualization; * Visualizer actions. * * @author Erich Schubert + * @since 0.6.0 */ public interface VisualizationMenuAction extends VisualizationItem { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationMenuToggle.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationMenuToggle.java index ad0ec9b3..ade01e26 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationMenuToggle.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationMenuToggle.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.visualization; * Toggle action. * * @author Erich Schubert + * @since 0.4.0 */ public interface VisualizationMenuToggle extends VisualizationItem { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationProcessor.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationProcessor.java index 70271c1a..e1f7a9bc 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationProcessor.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationProcessor.java @@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.visualization; * Visualization processor * * @author Erich Schubert + * @since 0.4.0 */ public interface VisualizationProcessor { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationTask.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationTask.java index 7be18864..a90a9765 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationTask.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationTask.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.VisFactory; * Container class, with ugly casts to reduce generics crazyness. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.has VisualizerContext diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationTree.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationTree.java index 8e76716c..ed45e397 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationTree.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationTree.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.hierarchy.StackedIter; * Tree - actually a forest - to manage visualizations. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has Handler1 * @apiviz.has Handler2 diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizerContext.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizerContext.java index 8d288ce6..98f77e89 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizerContext.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizerContext.java @@ -55,6 +55,7 @@ import de.lmu.ifi.dbs.elki.visualization.style.StylingPolicy; * that should to be shared among plots, such as line colors, styles etc. * * @author Erich Schubert + * @since 0.3 * * @apiviz.landmark * @apiviz.composedOf StyleLibrary diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java index df3d99de..f3242059 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java @@ -69,6 +69,7 @@ import de.lmu.ifi.dbs.elki.workflow.AlgorithmStep; * * @author Erich Schubert * @author Remigius Wojdanowski + * @since 0.3 * * @apiviz.landmark * @apiviz.has VisualizerContext oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/AddCSSClass.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/AddCSSClass.java index e32d84a3..b1d4c103 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/AddCSSClass.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/AddCSSClass.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * Add a CSS class to the event target. * * @author Erich Schubert + * @since 0.2 * */ public class AddCSSClass implements EventListener { diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/AttributeModifier.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/AttributeModifier.java index 21409018..30afdf7e 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/AttributeModifier.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/AttributeModifier.java @@ -29,6 +29,7 @@ import org.w3c.dom.Element; * Runnable wrapper for modifying XML-Attributes. * * @author Remigius Wojdanowski + * @since 0.3 * */ // FIXME: Unused? Remove? diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/BatikUtil.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/BatikUtil.java index 44eb38d6..de1857a2 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/BatikUtil.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/BatikUtil.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.batikutil; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2015 + Copyright (C) 2016 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -33,14 +33,15 @@ import org.w3c.dom.svg.SVGPoint; /** * Batik helper class with static methods. - * + * * @author Erich Schubert + * @since 0.3 */ public final class BatikUtil { /** * Get the relative coordinates of a point within the coordinate system of a * particular SVG Element. - * + * * @param evt Event, needs to be a DOMMouseEvent * @param reference SVG Element the coordinate system is used of * @return Array containing the X and Y values @@ -62,4 +63,21 @@ public final class BatikUtil { } return null; } + + /** + * Test whether FOP were installed (for PDF, PS and EPS output support). + * + * @return {@code true} when FOP is available. + */ + public static boolean hasFOPInstalled() { + try { + Class<?> c1 = Class.forName("org.apache.fop.svg.PDFTranscoder"); + Class<?> c2 = Class.forName("org.apache.fop.render.ps.PSTranscoder"); + Class<?> c3 = Class.forName("org.apache.fop.render.ps.EPSTranscoder"); + return (c1 != null) && (c2 != null) && (c3 != null); + } + catch(ClassNotFoundException e) { + return false; + } + } } diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/CSSHoverClass.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/CSSHoverClass.java index 7140b73f..bdf9bae9 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/CSSHoverClass.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/CSSHoverClass.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * Do a hover effect using a CSS class. * * @author Erich Schubert + * @since 0.2 * */ public class CSSHoverClass implements EventListener { diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/CloneInlineImages.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/CloneInlineImages.java index 93033f01..154713f9 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/CloneInlineImages.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/CloneInlineImages.java @@ -46,6 +46,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGCloneVisible; * Clone an SVG document, inlining temporary and in-memory linked images. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.has ThumbnailRegistryEntry */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/DragableArea.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/DragableArea.java index dc5dd388..b9bb1c4c 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/DragableArea.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/DragableArea.java @@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * A simple dragable area for Batik. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has DragListener * @apiviz.has Element diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/JSVGSynchronizedCanvas.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/JSVGSynchronizedCanvas.java index 2f9ac431..07a1d157 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/JSVGSynchronizedCanvas.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/JSVGSynchronizedCanvas.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot; * objects. * * @author Erich Schubert + * @since 0.3 * * @apiviz.composedOf JSVGUpdateSynchronizer * @apiviz.has SVGPlot oneway - - displays diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/JSVGUpdateSynchronizer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/JSVGUpdateSynchronizer.java index 6fe43df1..b043fddd 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/JSVGUpdateSynchronizer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/JSVGUpdateSynchronizer.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.UpdateSynchronizer; * This class is used to synchronize SVG updates with an JSVG canvas. * * @author Erich Schubert + * @since 0.3 * * @apiviz.uses UpdateRunner */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/LazyCanvasResizer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/LazyCanvasResizer.java index c180d329..98c7192c 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/LazyCanvasResizer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/LazyCanvasResizer.java @@ -31,6 +31,7 @@ import java.awt.event.ComponentEvent; * Class to lazily process canvas resize events by applying a threshold. * * @author Erich Schubert + * @since 0.2 */ public abstract class LazyCanvasResizer extends ComponentAdapter { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeAppendChild.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeAppendChild.java index 79bdab54..16fa54cf 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeAppendChild.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeAppendChild.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot; * Runnable wrapper for appending XML-Elements to existing Elements. * * @author Remigius Wojdanowski + * @since 0.3 */ public class NodeAppendChild implements Runnable { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeReplaceAllChildren.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeReplaceAllChildren.java index 45f2b25d..c69e7c66 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeReplaceAllChildren.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeReplaceAllChildren.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot; * Runnable wrapper to replace all children of a given node. * * @author Erich Schubert + * @since 0.3 */ public class NodeReplaceAllChildren extends NodeAppendChild { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeReplaceByID.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeReplaceByID.java index 27ac9672..40683760 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeReplaceByID.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeReplaceByID.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot; * be put on the update queue. * * @author Erich Schubert + * @since 0.2 */ public class NodeReplaceByID implements Runnable { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeSubstitute.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeSubstitute.java index bef276dc..3e3e652c 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeSubstitute.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeSubstitute.java @@ -30,6 +30,7 @@ import org.w3c.dom.Element; * be put on the update queue. * * @author Erich Schubert + * @since 0.2 */ public class NodeSubstitute implements Runnable { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/RemoveCSSClass.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/RemoveCSSClass.java index c7d48690..39a699f9 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/RemoveCSSClass.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/RemoveCSSClass.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * Remove a CSS class to the event target. * * @author Erich Schubert + * @since 0.2 * */ public class RemoveCSSClass implements EventListener { diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/ThumbnailRegistryEntry.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/ThumbnailRegistryEntry.java index 3f1c5cda..ebb464f4 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/ThumbnailRegistryEntry.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/ThumbnailRegistryEntry.java @@ -50,6 +50,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * Access images via an internal image registry. * * @author Erich Schubert + * @since 0.5.0 */ public class ThumbnailRegistryEntry extends AbstractRegistryEntry implements URLRegistryEntry, ParsedURLProtocolHandler { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/ThumbnailTranscoder.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/ThumbnailTranscoder.java index b0c16ef1..1ff84d03 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/ThumbnailTranscoder.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/ThumbnailTranscoder.java @@ -33,6 +33,7 @@ import org.apache.batik.transcoder.image.ImageTranscoder; * Transcode images to in-memory thumbnails. * * @author Erich Schubert + * @since 0.2 */ public class ThumbnailTranscoder extends ImageTranscoder { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/colors/ColorLibrary.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/colors/ColorLibrary.java index dc668924..fd7b5632 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/colors/ColorLibrary.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/colors/ColorLibrary.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.visualization.colors; * Color scheme interface * * @author Erich Schubert + * @since 0.2 */ public interface ColorLibrary { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/colors/ListBasedColorLibrary.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/colors/ListBasedColorLibrary.java index 60ae0a81..3892c72c 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/colors/ListBasedColorLibrary.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/colors/ListBasedColorLibrary.java @@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.visualization.colors; * Color library using the color names from a list. * * @author Erich Schubert + * @since 0.3 */ public class ListBasedColorLibrary implements ColorLibrary { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/css/CSSClass.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/css/CSSClass.java index 56d15810..2341bb10 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/css/CSSClass.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/css/CSSClass.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.pairs.Pair; * Class representing a single CSS class. * * @author Erich Schubert + * @since 0.2 */ public class CSSClass { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/css/CSSClassManager.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/css/CSSClassManager.java index 003f6f74..c799dea9 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/css/CSSClassManager.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/css/CSSClassManager.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * Manager class to track CSS classes used in a particular SVG document. * * @author Erich Schubert + * @since 0.2 * * @apiviz.has de.lmu.ifi.dbs.elki.visualization.css.CSSClass */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java index f82a21a0..9312d1f7 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java @@ -78,6 +78,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot; * * @author Erich Schubert * @author Remigius Wojdanowski + * @since 0.3 * * @apiviz.composedOf JSVGSynchronizedCanvas * @apiviz.composedOf OverviewPlot diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/SelectionTableWindow.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/SelectionTableWindow.java index 5e9af1ed..09c43617 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/SelectionTableWindow.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/SelectionTableWindow.java @@ -63,6 +63,7 @@ import de.lmu.ifi.dbs.elki.visualization.VisualizerContext; * * @author Heidi Kolb * @author Erich Schubert + * @since 0.4.0 */ // FIXME: INCOMPLETE TRANSITION TO MULTI-REPRESENTED DATA public class SelectionTableWindow extends JFrame implements DataStoreListener, ResultListener { diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/SimpleSVGViewer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/SimpleSVGViewer.java index cdd7758c..197014f6 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/SimpleSVGViewer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/SimpleSVGViewer.java @@ -46,6 +46,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot; * A minimalistic SVG viewer with export dialog. * * @author Erich Schubert + * @since 0.4.0 */ public class SimpleSVGViewer extends JFrame { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/VisualizationPlot.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/VisualizationPlot.java index 7360a0da..385a9b48 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/VisualizationPlot.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/VisualizationPlot.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * SVG plot that allows visualization to schedule updates. * * @author Erich Schubert + * @since 0.7.0 */ public class VisualizationPlot extends SVGPlot { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java index 64359463..b6d78368 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java @@ -54,6 +54,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Manages a detail view. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has Visualization * @apiviz.has PlotItem diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/DetailViewSelectedEvent.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/DetailViewSelectedEvent.java index 16c59fee..779fcdf6 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/DetailViewSelectedEvent.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/DetailViewSelectedEvent.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.visualization.gui.detail.DetailView; * by their coordinates on the screen. * * @author Erich Schubert + * @since 0.3 */ public class DetailViewSelectedEvent extends ActionEvent { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/LayerMap.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/LayerMap.java index 0cdbb29e..00e515f2 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/LayerMap.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/LayerMap.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Class to help keeping track of the materialized layers of the different visualizations. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.has PlotItem * @apiviz.has VisualizationTask diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/OverviewPlot.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/OverviewPlot.java index 23ab2c21..56fecfaf 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/OverviewPlot.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/OverviewPlot.java @@ -63,6 +63,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Erich Schubert * @author Remigius Wojdanowski + * @since 0.3 * * @apiviz.landmark * @apiviz.has VisualizerContext diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/PlotItem.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/PlotItem.java index b95ef7e2..c75a520e 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/PlotItem.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/PlotItem.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.visualization.projections.Projection; * Note: this is a {@code LinkedList<VisualizationTask>}! * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf Projection * @apiviz.composedOf VisualizationTask diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/RectangleArranger.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/RectangleArranger.java index ef05b6c0..29166573 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/RectangleArranger.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/RectangleArranger.java @@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike.DoubleArray; * a greedy placement strategy, extending the canvas as little as possible. * * @author Erich Schubert + * @since 0.4.0 * * @param <T> Key type */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/opticsplot/OPTICSCut.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/opticsplot/OPTICSCut.java index d85a9415..60f9ce1a 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/opticsplot/OPTICSCut.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/opticsplot/OPTICSCut.java @@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ModifiableDBIDs; * * @author Heidi Kolb * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses ClusterOrder */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/opticsplot/OPTICSPlot.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/opticsplot/OPTICSPlot.java index c25a7961..7114c1b6 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/opticsplot/OPTICSPlot.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/opticsplot/OPTICSPlot.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.visualization.style.StylingPolicy; * Class to produce an OPTICS plot image. * * @author Erich Schubert + * @since 0.3 * * @apiviz.composedOf LinearScale * @apiviz.has ClusterOrder oneway - - renders diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractFullProjection.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractFullProjection.java index 4c57a6f0..2893e7da 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractFullProjection.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractFullProjection.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.visualization.projector.Projector; * clear use case that cannot be done by the low level fast projections. * * @author Erich Schubert + * @since 0.4.0 */ public abstract class AbstractFullProjection extends AbstractProjection implements FullProjection { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractProjection.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractProjection.java index bbcd1bcd..c6d7616b 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractProjection.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractProjection.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.visualization.projector.Projector; * Abstract base projection class. * * @author Erich Schubert + * @since 0.4.0 */ public abstract class AbstractProjection implements Projection { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractSimpleProjection.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractSimpleProjection.java index 4b0715a9..6cbdf481 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractSimpleProjection.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractSimpleProjection.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.visualization.projector.Projector; * Simple projections use the given scaling and dimension selection only. * * @author Erich Schubert + * @since 0.4.0 */ public abstract class AbstractSimpleProjection extends AbstractFullProjection { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AffineProjection.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AffineProjection.java index a04c57fc..a3c5d846 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AffineProjection.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AffineProjection.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.visualization.projector.Projector; * However, this comes at the cost of a matrix multiplication. * * @author Erich Schubert + * @since 0.4.0 */ public class AffineProjection extends AbstractFullProjection implements Projection2D { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/CanvasSize.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/CanvasSize.java index b915ed07..a50fabfe 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/CanvasSize.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/CanvasSize.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.visualization.projections; * Size of a canvas. A 2D bounding rectangle. * * @author Erich Schubert + * @since 0.5.0 */ public class CanvasSize { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/FullProjection.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/FullProjection.java index 553d8faa..a8b7219d 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/FullProjection.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/FullProjection.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.data.NumberVector; * case for them as opposed to always using the low-level fast projections. * * @author Erich Schubert + * @since 0.4.0 */ public interface FullProjection extends Projection { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/OPTICSProjection.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/OPTICSProjection.java index b06d0a6d..de3eb42b 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/OPTICSProjection.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/OPTICSProjection.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.visualization.projector.Projector; * consistency in the visualizer API. * * @author Erich Schubert + * @since 0.4.0 */ public class OPTICSProjection implements Projection { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection.java index 1a501608..456e1ded 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.visualization.style.StyleLibrary; * projections in the required dimensions! * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection1D.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection1D.java index a5daf0d3..ceac1d41 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection1D.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection1D.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.data.NumberVector; * first component. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection2D.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection2D.java index 6f9f17b0..cd3d1c05 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection2D.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection2D.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.data.NumberVector; * dimensions of the projection. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/ProjectionParallel.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/ProjectionParallel.java index 435a2146..fdd88f89 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/ProjectionParallel.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/ProjectionParallel.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.math.scales.LinearScale; * * @author Robert Rödler * @author Erich Schubert + * @since 0.5.0 */ public interface ProjectionParallel extends Projection { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Simple1D.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Simple1D.java index b4560152..0df92ef3 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Simple1D.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Simple1D.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.visualization.projector.Projector; * Dimension-selecting 1D projection. * * @author Erich Schubert + * @since 0.4.0 */ public class Simple1D extends AbstractSimpleProjection implements Projection1D { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Simple2D.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Simple2D.java index 3dff7c3b..1e2b9159 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Simple2D.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Simple2D.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.visualization.projector.Projector; * Dimension-selecting 2D projection. * * @author Erich Schubert + * @since 0.4.0 */ public class Simple2D extends AbstractSimpleProjection implements Projection2D { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/SimpleParallel.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/SimpleParallel.java index e25d4088..a5e6b832 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/SimpleParallel.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/SimpleParallel.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.visualization.style.StyleLibrary; * * @author Robert Rödler * @author Erich Schubert + * @since 0.5.0 */ public class SimpleParallel implements ProjectionParallel { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java index c7843576..100a114e 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.visualization.VisualizerContext; * Produce one-dimensional projections. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has HistogramProjector */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/HistogramProjector.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/HistogramProjector.java index d46265e7..7ca7edd7 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/HistogramProjector.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/HistogramProjector.java @@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.LabelVisualizatio * visualizations. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses ScalesResult * @apiviz.uses Projection1D diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/OPTICSProjector.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/OPTICSProjector.java index 2e615c89..84b30de9 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/OPTICSProjector.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/OPTICSProjector.java @@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.visualization.projections.OPTICSProjection; * Projection for OPTICS plots. * * @author Erich Schubert + * @since 0.4.0 */ public class OPTICSProjector implements Projector { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/OPTICSProjectorFactory.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/OPTICSProjectorFactory.java index 32a0e540..c1c6df75 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/OPTICSProjectorFactory.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/OPTICSProjectorFactory.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.visualization.VisualizerContext; * Produce OPTICS plot projections * * @author Erich Schubert + * @since 0.2 * * @apiviz.has OPTICSProjector */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ParallelPlotFactory.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ParallelPlotFactory.java index 1bf12d79..a3f39ebb 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ParallelPlotFactory.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ParallelPlotFactory.java @@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.visualization.VisualizationTree; * Produce parallel axes projections. * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.has ParallelPlotProjector */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ParallelPlotProjector.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ParallelPlotProjector.java index 28069cc4..fce0dcec 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ParallelPlotProjector.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ParallelPlotProjector.java @@ -43,6 +43,7 @@ import de.lmu.ifi.dbs.elki.visualization.projections.SimpleParallel; * visualization. * * @author Robert Rödler + * @since 0.5.0 * * @param <V> Vector type */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/Projector.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/Projector.java index b726dfef..27bd7f5e 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/Projector.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/Projector.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.visualization.gui.overview.PlotItem; * A projector is responsible for adding projections to the visualization. * * @author Erich Schubert + * @since 0.4.0 */ public interface Projector extends VisualizationItem { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ProjectorFactory.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ProjectorFactory.java index 10ad8bd9..61792247 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ProjectorFactory.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ProjectorFactory.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.visualization.VisualizerContext; * detecting appropriate relations in the database. * * @author Erich Schubert + * @since 0.2 * * @apiviz.has Projector */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ScatterPlotFactory.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ScatterPlotFactory.java index 785ea672..9e69dd83 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ScatterPlotFactory.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ScatterPlotFactory.java @@ -43,6 +43,7 @@ import de.lmu.ifi.dbs.elki.visualization.VisualizerContext; * Produce scatterplot projections. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has ScatterPlotProjector */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ScatterPlotProjector.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ScatterPlotProjector.java index b8705a39..d3982f3d 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ScatterPlotProjector.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ScatterPlotProjector.java @@ -46,6 +46,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.LabelVisualizatio * visualizations. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses ScalesResult * @apiviz.uses Projection2D diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/savedialog/SVGSaveDialog.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/savedialog/SVGSaveDialog.java index 345e1b68..8dab2663 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/savedialog/SVGSaveDialog.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/savedialog/SVGSaveDialog.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.savedialog; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2015 + Copyright (C) 2016 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -26,33 +26,39 @@ package de.lmu.ifi.dbs.elki.visualization.savedialog; import java.awt.Component; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactoryConfigurationError; +import org.apache.batik.ext.awt.image.spi.ImageTagRegistry; +import org.apache.batik.ext.awt.image.spi.ImageWriterRegistry; import org.apache.batik.transcoder.TranscoderException; import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.utilities.FileUtil; +import de.lmu.ifi.dbs.elki.visualization.batikutil.BatikUtil; import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot; /** * A save dialog to save/export a SVG image to a file. - * + * * Supported formats: * <ul> - * <li>JPEG (broken) (with width and height options)</li> - * <li>PNG (with width and height options)</li> - * <li>PDF</li> - * <li>PS</li> - * <li>EPS</li> * <li>SVG</li> + * <li>PNG (with width and height options)</li> + * <li>JPEG (with width and height options, and if an ImageWrite is available) + * </li> + * <li>PDF (if FOP transcoders are available)</li> + * <li>PS (if FOP transcoders are available)</li> + * <li>EPS (if FOP transcoders are available)</li> * </ul> - * + * * @author Simon Mittermüller - * + * @since 0.2 + * * @apiviz.composedOf SaveOptionsPanel */ public class SVGSaveDialog { @@ -63,28 +69,47 @@ public class SVGSaveDialog { private static final Logging LOG = Logging.getLogger(SVGSaveDialog.class); /** Automagic file format */ - final static String automagic_format = "automatic"; + final static String AUTOMAGIC_FORMAT = "automatic"; /** Supported file format (extensions) */ - final static String[] formats; + final static String[] FORMATS; /** Visible file formats */ - final static String[] visibleformats; + final static String[] VISIBLE_FORMATS; static { + ArrayList<String> fmt = new ArrayList<>(); + fmt.add(AUTOMAGIC_FORMAT); + fmt.add("svg"); + + // Check that the image writers are available: + ImageWriterRegistry reg = ImageWriterRegistry.getInstance(); + // Detect broken Batik unable to use inlined base64 images: + ImageTagRegistry tagreg = ImageTagRegistry.getRegistry(); + // These will only work if we can decode pngs (thumbnails in overview)! + if(tagreg.getRegisteredMimeTypes().contains("image/png")) { + if(reg.getWriterFor("image/png") != null) { + fmt.add("png"); + } + if(reg.getWriterFor("image/jpeg") != null) { + fmt.add("jpeg"); + } + } + // FOP installed? - if (SVGPlot.hasFOPInstalled()) { - formats = new String[] { "svg", "png", "jpeg", "jpg", "pdf", "ps", "eps" }; - visibleformats = new String[] { automagic_format, "svg", "png", "jpeg", "pdf", "ps", "eps" }; - } else { - formats = new String[] { "svg", "png", "jpeg", "jpg" }; - visibleformats = new String[] { automagic_format, "svg", "png", "jpeg" }; + if(BatikUtil.hasFOPInstalled()) { + fmt.add("pdf"); + fmt.add("ps"); + fmt.add("eps"); } + FORMATS = fmt.toArray(new String[fmt.size()]); + fmt.remove(0); + VISIBLE_FORMATS = fmt.toArray(new String[fmt.size()]); } /** * Show a "Save as" dialog. - * + * * @param plot The plot to be exported. * @param width The width of the exported image (when export to JPEG/PNG). * @param height The height of the exported image (when export to JPEG/PNG). @@ -102,54 +127,70 @@ public class SVGSaveDialog { ret = fc.showSaveDialog(null); fc.setDialogTitle("Saving... Please wait."); - if (ret == JFileChooser.APPROVE_OPTION) { + if(ret == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); String format = optionsPanel.getSelectedFormat(); - if (format == null || automagic_format.equals(format)) { + if(format == null || AUTOMAGIC_FORMAT.equals(format)) { format = guessFormat(file.getName()); } try { - if (format == null) { + if(format == null) { showError(fc, "Error saving image.", "File format not recognized."); - } else if ("jpeg".equals(format) || "jpg".equals(format)) { + } + else if("jpeg".equals(format) || "jpg".equals(format)) { quality = optionsPanel.getJPEGQuality(); plot.saveAsJPEG(file, width, height, quality); - } else if ("png".equals(format)) { + } + else if("png".equals(format)) { plot.saveAsPNG(file, width, height); - } else if ("ps".equals(format)) { + } + else if("ps".equals(format)) { plot.saveAsPS(file); - } else if ("eps".equals(format)) { + } + else if("eps".equals(format)) { plot.saveAsEPS(file); - } else if ("pdf".equals(format)) { + } + else if("pdf".equals(format)) { plot.saveAsPDF(file); - } else if ("svg".equals(format)) { + } + else if("svg".equals(format)) { plot.saveAsSVG(file); - } else { + } + else { showError(fc, "Error saving image.", "Unsupported format: " + format); } - } catch (java.lang.IncompatibleClassChangeError e) { + } + catch(java.lang.IncompatibleClassChangeError e) { showError(fc, "Error saving image.", "It seems that your Java version is incompatible with this version of Batik and Jpeg writing. Sorry."); - } catch (ClassNotFoundException e) { + } + catch(ClassNotFoundException e) { showError(fc, "Error saving image.", "A class was not found when saving this image. Maybe installing Apache FOP will help (for PDF, PS and EPS output).\n" + e.toString()); - } catch (IOException e) { + } + catch(IOException e) { LOG.exception(e); showError(fc, "Error saving image.", e.toString()); - } catch (TranscoderException e) { + } + catch(TranscoderException e) { LOG.exception(e); showError(fc, "Error saving image.", e.toString()); - } catch (TransformerFactoryConfigurationError e) { + } + catch(TransformerFactoryConfigurationError e) { LOG.exception(e); showError(fc, "Error saving image.", e.toString()); - } catch (TransformerException e) { + } + catch(TransformerException e) { LOG.exception(e); showError(fc, "Error saving image.", e.toString()); - } catch (Exception e) { + } + catch(Exception e) { LOG.exception(e); showError(fc, "Error saving image.", e.toString()); } - } else if (ret == JFileChooser.ERROR_OPTION) { + } + else if(ret == JFileChooser.ERROR_OPTION) { showError(fc, "Error in file dialog.", "Unknown Error."); - } else if (ret == JFileChooser.CANCEL_OPTION) { + } + else if(ret == JFileChooser.CANCEL_OPTION) { // do nothing - except return result } return ret; @@ -157,14 +198,14 @@ public class SVGSaveDialog { /** * Guess a supported format from the file name. For "auto" format handling. - * + * * @param name File name * @return format or "null" */ public static String guessFormat(String name) { String ext = FileUtil.getFilenameExtension(name); - for (String format : formats) { - if (format.equals(ext)) { + for(String format : FORMATS) { + if(format.equals(ext)) { return ext; } } @@ -175,23 +216,23 @@ public class SVGSaveDialog { * @return the formats */ public static String[] getFormats() { - return formats; + return FORMATS; } /** * @return the visibleformats */ public static String[] getVisibleFormats() { - return visibleformats; + return VISIBLE_FORMATS; } /** * Helper method to show a error message as "popup". Calls * {@link JOptionPane#showMessageDialog(java.awt.Component, Object)}. - * + * * @param parent The parent component for the popup. * @param msg The message to be displayed. - * */ + */ private static void showError(Component parent, String title, String msg) { JOptionPane.showMessageDialog(parent, msg, title, JOptionPane.ERROR_MESSAGE); } diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/savedialog/SaveOptionsPanel.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/savedialog/SaveOptionsPanel.java index 6e45ac99..2ebf8523 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/savedialog/SaveOptionsPanel.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/savedialog/SaveOptionsPanel.java @@ -49,6 +49,7 @@ import javax.swing.event.ChangeListener; * additional options when saving as JPEG or PNG. * * @author Simon Mittermüller + * @since 0.2 */ public class SaveOptionsPanel extends JPanel { // TODO: externalize strings diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/ClassStylingPolicy.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/ClassStylingPolicy.java index 7bc50182..5279f2a0 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/ClassStylingPolicy.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/ClassStylingPolicy.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * is preferred when possible. * * @author Erich Schubert + * @since 0.4.0 */ public interface ClassStylingPolicy extends StylingPolicy { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/ClusterStylingPolicy.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/ClusterStylingPolicy.java index 643f4328..48b8ec06 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/ClusterStylingPolicy.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/ClusterStylingPolicy.java @@ -46,6 +46,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * Styling policy based on cluster membership. * * @author Erich Schubert + * @since 0.4.0 * */ // TODO: fast enough? Some other kind of mapping we can use? diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/PropertiesBasedStyleLibrary.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/PropertiesBasedStyleLibrary.java index c8440067..16c0a4c2 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/PropertiesBasedStyleLibrary.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/PropertiesBasedStyleLibrary.java @@ -45,6 +45,7 @@ import de.lmu.ifi.dbs.elki.visualization.style.marker.PrettyMarkers; * Style library loading the parameters from a properties file. * * @author Erich Schubert + * @since 0.3 */ // TODO: also use Caching for String values? public class PropertiesBasedStyleLibrary implements StyleLibrary { diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/SingleObjectsStylingPolicy.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/SingleObjectsStylingPolicy.java index 0e26bf80..f6c4d242 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/SingleObjectsStylingPolicy.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/SingleObjectsStylingPolicy.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.visualization.style; * Styling policy based on assigning objects individual colors. * * @author Erich Schubert + * @since 0.4.0 */ public interface SingleObjectsStylingPolicy extends StylingPolicy { // TODO: finish and use, e.g. for outliers and density visualization diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/StyleLibrary.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/StyleLibrary.java index 5ca93be6..3ddca759 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/StyleLibrary.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/StyleLibrary.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.visualization.style.marker.MarkerLibrary; * having to change program code. * * @author Erich Schubert + * @since 0.3 * * @apiviz.composedOf ColorLibrary * @apiviz.composedOf LineStyleLibrary diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/StylingPolicy.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/StylingPolicy.java index 406b6aff..29b2160b 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/StylingPolicy.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/StylingPolicy.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.visualization.VisualizationItem; * support these known interfaces. * * @author Erich Schubert + * @since 0.4.0 */ public interface StylingPolicy extends VisualizationItem { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/DashedLineStyleLibrary.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/DashedLineStyleLibrary.java index 49b8cc91..4b525f35 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/DashedLineStyleLibrary.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/DashedLineStyleLibrary.java @@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * patterns. * * @author Erich Schubert + * @since 0.3 * * @apiviz.composedOf ColorLibrary */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/LineStyleLibrary.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/LineStyleLibrary.java index 48212f16..e6264798 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/LineStyleLibrary.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/LineStyleLibrary.java @@ -43,6 +43,7 @@ import de.lmu.ifi.dbs.elki.visualization.css.CSSClass; * </dl> * * @author Erich Schubert + * @since 0.3 * * @apiviz.uses CSSClass oneway */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/SolidLineStyleLibrary.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/SolidLineStyleLibrary.java index 61765f1a..c94c500d 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/SolidLineStyleLibrary.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/SolidLineStyleLibrary.java @@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * {@link LineStyleLibrary#FLAG_INTERPOLATED} will result in dashed lines. * * @author Erich Schubert + * @since 0.3 * * @apiviz.composedOf ColorLibrary */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/CircleMarkers.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/CircleMarkers.java index c4078091..3e91d380 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/CircleMarkers.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/CircleMarkers.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * coordinates. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf ColorLibrary */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/MarkerLibrary.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/MarkerLibrary.java index 522097aa..6292c6fb 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/MarkerLibrary.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/MarkerLibrary.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot; * screen, thumbnail, print) * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses Element oneway - - «create» */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/MinimalMarkers.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/MinimalMarkers.java index a3390a6d..82ce6fb3 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/MinimalMarkers.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/MinimalMarkers.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * coordinates. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf ColorLibrary */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/PrettyMarkers.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/PrettyMarkers.java index be99c6b1..c386179c 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/PrettyMarkers.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/PrettyMarkers.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * shapes with different colors. Uses object ID management by SVGPlot. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf ColorLibrary */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGArrow.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGArrow.java index afa42afd..da7b0d5b 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGArrow.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGArrow.java @@ -30,6 +30,7 @@ import org.w3c.dom.Element; * * @author Erich Schubert * @author Robert Rödler + * @since 0.5.5 * * @apiviz.uses SVGPath */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGButton.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGButton.java index 6a542a7e..2912b88f 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGButton.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGButton.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.visualization.css.CSSClass; * Class to draw a button as SVG. * * @author Erich Schubert + * @since 0.5.0 */ public class SVGButton { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGCheckbox.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGCheckbox.java index 1cab95b9..e6bbe0d1 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGCheckbox.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGCheckbox.java @@ -37,6 +37,7 @@ import org.w3c.dom.events.EventTarget; * SVG checkbox. * * @author Sascha Goldhofer + * @since 0.5.0 */ public class SVGCheckbox { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGCloneVisible.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGCloneVisible.java index c09717f7..0f20cf73 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGCloneVisible.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGCloneVisible.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.xml.DOMCloner; * Clone visible parts of an SVG document. * * @author Erich Schubert + * @since 0.2 */ public class SVGCloneVisible extends DOMCloner { @Override diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGEffects.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGEffects.java index 4171ce51..eae1717a 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGEffects.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGEffects.java @@ -29,6 +29,7 @@ import org.w3c.dom.Element; * Class containing some popular SVG effects. * * @author Erich Schubert + * @since 0.5.0 */ public class SVGEffects { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGHyperCube.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGHyperCube.java index 9faad348..e17e97bc 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGHyperCube.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGHyperCube.java @@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.visualization.projections.Projection2D; * Utility class to draw hypercubes, wireframe and filled. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses SVGPath * @apiviz.uses Projection2D diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGHyperSphere.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGHyperSphere.java index e3fc9386..1ed7962d 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGHyperSphere.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGHyperSphere.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.visualization.projections.Projection2D; * Utility class to draw hypercubes, wireframe and filled. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses SVGPath * @apiviz.uses Projection2D diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGPath.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGPath.java index 948f09a7..fe71b50b 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGPath.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGPath.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.ArrayListIter; * Element used for building an SVG path using a string buffer. * * @author Erich Schubert + * @since 0.3 * * @apiviz.uses Element oneway - - «create» */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGPlot.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGPlot.java index 7eb51819..3c58ced7 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGPlot.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGPlot.java @@ -73,6 +73,7 @@ import de.lmu.ifi.dbs.elki.visualization.css.CSSClassManager.CSSNamingConflict; * creation, axis plotting, markers and number formatting for SVG. * * @author Erich Schubert + * @since 0.2 * * @apiviz.landmark * @apiviz.composedOf CSSClassManager @@ -488,23 +489,6 @@ public class SVGPlot { } /** - * Test whether FOP were installed (for PDF, PS and EPS output support). - * - * @return true when FOP is available. - */ - public static boolean hasFOPInstalled() { - try { - Class<?> c1 = Class.forName("org.apache.fop.svg.PDFTranscoder"); - Class<?> c2 = Class.forName("org.apache.fop.render.ps.PSTranscoder"); - Class<?> c3 = Class.forName("org.apache.fop.render.ps.EPSTranscoder"); - return (c1 != null) && (c2 != null) && (c3 != null); - } - catch(ClassNotFoundException e) { - return false; - } - } - - /** * Transcode file to PNG. * * @param file Output filename diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGScoreBar.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGScoreBar.java index dd16070d..cd1a5274 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGScoreBar.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGScoreBar.java @@ -33,6 +33,7 @@ import org.w3c.dom.Element; * a relative score. * * @author Sascha Goldhofer + * @since 0.5.0 */ // TODO: refactor to get a progress bar? public class SVGScoreBar { diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGSimpleLinearAxis.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGSimpleLinearAxis.java index 5559e602..f80f6128 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGSimpleLinearAxis.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGSimpleLinearAxis.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.visualization.style.StyleLibrary; * Class to draw a simple axis with tick marks on the plot. * * @author Erich Schubert + * @since 0.2 * * @apiviz.uses CSSClass * @apiviz.uses CSSClassManager diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGUtil.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGUtil.java index b85af07e..08fef1be 100755 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGUtil.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGUtil.java @@ -51,6 +51,7 @@ import gnu.trove.map.hash.TObjectIntHashMap; * string) and Namespace handling * * @author Erich Schubert + * @since 0.2 * * @apiviz.uses Element oneway - - «create» */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/UpdateRunner.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/UpdateRunner.java index 17033ef8..4e57ed09 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/UpdateRunner.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/UpdateRunner.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.logging.LoggingUtil; * Batik UI. * * @author Erich Schubert + * @since 0.3 * * @apiviz.has Runnable * @apiviz.uses UpdateSynchronizer diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/UpdateSynchronizer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/UpdateSynchronizer.java index 30eaa304..49a8c6bc 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/UpdateSynchronizer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/UpdateSynchronizer.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.visualization.svg; * API to synchronize updates * * @author Erich Schubert + * @since 0.3 * * @apiviz.has UpdateRunner */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/VoronoiDraw.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/VoronoiDraw.java index 434bf240..c816fbe0 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/VoronoiDraw.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/VoronoiDraw.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.visualization.projections.Projection2D; * * @author Robert Rödler * @author Erich Schubert + * @since 0.5.0 * * @apiviz.uses de.lmu.ifi.dbs.elki.math.geometry.SweepHullDelaunay2D.Triangle * @apiviz.uses Projection2D diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/AbstractVisFactory.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/AbstractVisFactory.java index 841ea83f..d8a9525d 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/AbstractVisFactory.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/AbstractVisFactory.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.thumbs.ThumbnailVisualizati * Abstract superclass for Visualizers (aka: Visualization Factories). * * @author Remigius Wojdanowski + * @since 0.4.0 * * @apiviz.uses ThumbnailVisualization oneway - - «create» * @apiviz.excludeSubtypes diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/AbstractVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/AbstractVisualization.java index 49e749c0..91cc9323 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/AbstractVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/AbstractVisualization.java @@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.visualization.style.StylingPolicy; * Abstract base class for visualizations. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.excludeSubtypes */ @@ -197,7 +198,7 @@ public abstract class AbstractVisualization implements Visualization, ResultList @Override public void visualizationChanged(VisualizationItem item) { - if(task.getResult() == item) { + if(task == item || task.getResult() == item) { svgp.requestRedraw(this.task, this); return; } diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/StaticVisualizationInstance.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/StaticVisualizationInstance.java index b89720fe..e3b2432b 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/StaticVisualizationInstance.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/StaticVisualizationInstance.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.visualization.gui.VisualizationPlot; * Static visualization * * @author Erich Schubert + * @since 0.4.0 */ public class StaticVisualizationInstance extends AbstractVisualization { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/VisFactory.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/VisFactory.java index bf30fe8f..aca34382 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/VisFactory.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/VisFactory.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.visualization.projections.Projection; * parameters (default constructor) to be used for parameterization. * * @author Remigius Wojdanowski + * @since 0.3 * * @apiviz.landmark * @apiviz.stereotype factory diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/Visualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/Visualization.java index ee355e4a..e7ea486c 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/Visualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/Visualization.java @@ -29,6 +29,7 @@ import org.w3c.dom.Element; * Base class for a materialized Visualization. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.has Element oneway diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/actions/ClusterStyleAction.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/actions/ClusterStyleAction.java index 7923509e..a86cc3dd 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/actions/ClusterStyleAction.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/actions/ClusterStyleAction.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Actions to use clusterings for styling. * * @author Erich Schubert + * @since 0.7.0 */ public class ClusterStyleAction extends AbstractVisFactory { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/AbstractHistogramVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/AbstractHistogramVisualization.java index 34c648ba..4f1b8b50 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/AbstractHistogramVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/AbstractHistogramVisualization.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.AbstractVisualization; * One-dimensional projected visualization. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.has Projection1D diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java index 80bbfeeb..27528059 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java @@ -93,6 +93,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Remigius Wojdanowski * @author Erich Schubert + * @since 0.3 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/AbstractOPTICSVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/AbstractOPTICSVisualization.java index 401e05e6..21f91a99 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/AbstractOPTICSVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/AbstractOPTICSVisualization.java @@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.AbstractVisualization; * Abstract base class for OPTICS visualizer * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses OPTICSProjection */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java index e1cd5c66..10eb8b79 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java @@ -53,6 +53,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Plot. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotCutVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotCutVisualization.java index 65e00430..a4f95e7d 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotCutVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotCutVisualization.java @@ -55,6 +55,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Heidi Kolb * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotSelectionVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotSelectionVisualization.java index 7abc5609..f723cfef 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotSelectionVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotSelectionVisualization.java @@ -54,6 +54,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Handle the marker in an OPTICS plot. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotVisualizer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotVisualizer.java index 65d8ecf3..4110e416 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotVisualizer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotVisualizer.java @@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Visualize an OPTICS result by constructing an OPTICS plot for it. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSSteepAreaVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSSteepAreaVisualization.java index ef8f6198..88ee710d 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSSteepAreaVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSSteepAreaVisualization.java @@ -51,6 +51,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Visualize the steep areas found in an OPTICS plot * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/pairsegments/CircleSegmentsVisualizer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/pairsegments/CircleSegmentsVisualizer.java index 72e9ccef..4a33c504 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/pairsegments/CircleSegmentsVisualizer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/pairsegments/CircleSegmentsVisualizer.java @@ -84,6 +84,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Sascha Goldhofer * @author Erich Schubert + * @since 0.5.0 * * @apiviz.landmark * diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/pairsegments/SegmentsStylingPolicy.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/pairsegments/SegmentsStylingPolicy.java index 7e38d951..3a95f33c 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/pairsegments/SegmentsStylingPolicy.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/pairsegments/SegmentsStylingPolicy.java @@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * * @author Sascha Goldhofer * @author Erich Schubert + * @since 0.5.0 */ public class SegmentsStylingPolicy implements ClassStylingPolicy { /** diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AbstractParallelVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AbstractParallelVisualization.java index 3ac02de2..b5398ccb 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AbstractParallelVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AbstractParallelVisualization.java @@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.AbstractVisualization; * * @author Robert Rödler * @author Erich Schubert + * @since 0.5.0 * * @param <NV> Data type in relation */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AxisReorderVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AxisReorderVisualization.java index ce24ad2a..e7ac7193 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AxisReorderVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AxisReorderVisualization.java @@ -50,6 +50,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Robert Rödler * @author Erich Schubert + * @since 0.5.5 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AxisVisibilityVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AxisVisibilityVisualization.java index 1e12f87c..3b57dd48 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AxisVisibilityVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AxisVisibilityVisualization.java @@ -50,6 +50,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Robert Rödler * @author Erich Schubert + * @since 0.5.5 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/BoundingBoxVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/BoundingBoxVisualization.java index 6b3671d1..3b0fb572 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/BoundingBoxVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/BoundingBoxVisualization.java @@ -57,6 +57,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Draw spatial objects (except vectors!) * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/LineVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/LineVisualization.java index a13bdb74..3bee4b2a 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/LineVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/LineVisualization.java @@ -57,6 +57,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Generates data lines. * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/ParallelAxisVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/ParallelAxisVisualization.java index 4f35faf6..70962a08 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/ParallelAxisVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/ParallelAxisVisualization.java @@ -52,6 +52,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Generates a SVG-Element containing axes, including labeling. * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/cluster/ClusterOutlineVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/cluster/ClusterOutlineVisualization.java index 1a660bf9..04777614 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/cluster/ClusterOutlineVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/cluster/ClusterOutlineVisualization.java @@ -67,6 +67,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.cluster.Cluster * Generates a SVG-Element that visualizes the area covered by a cluster. * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/cluster/ClusterParallelMeanVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/cluster/ClusterParallelMeanVisualization.java index 6e0dc167..bb842166 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/cluster/ClusterParallelMeanVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/cluster/ClusterParallelMeanVisualization.java @@ -60,6 +60,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.parallel.AbstractParallelVi * Generates a SVG-Element that visualizes cluster means. * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/index/RTreeParallelVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/index/RTreeParallelVisualization.java index 338729f4..d8a7a476 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/index/RTreeParallelVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/index/RTreeParallelVisualization.java @@ -58,6 +58,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.index.TreeMBRVi * Visualize the of an R-Tree based index. * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionAxisRangeVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionAxisRangeVisualization.java index 5f56e774..f9a3ada3 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionAxisRangeVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionAxisRangeVisualization.java @@ -51,6 +51,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.parallel.AbstractParallelVi * Visualizer for generating an SVG-Element representing the selected range. * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionLineVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionLineVisualization.java index b4107147..4f80bcae 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionLineVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionLineVisualization.java @@ -54,6 +54,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.parallel.AbstractParallelVi * Visualizer for generating SVG-Elements representing the selected objects * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionToolAxisRangeVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionToolAxisRangeVisualization.java index 3dd96007..cc6e1e2f 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionToolAxisRangeVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionToolAxisRangeVisualization.java @@ -58,6 +58,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.parallel.AbstractParallelVi * Tool-Visualization for the tool to select axis ranges * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionToolLineVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionToolLineVisualization.java index aa22a267..1a481548 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionToolLineVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionToolLineVisualization.java @@ -60,6 +60,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.parallel.AbstractParallelVi * Tool-Visualization for the tool to select objects * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractScatterplotVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractScatterplotVisualization.java index 13225426..08ca1eac 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractScatterplotVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractScatterplotVisualization.java @@ -45,6 +45,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.AbstractVisualization; * Default class to handle 2D projected visualizations. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.has Projection2D diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractTooltipVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractTooltipVisualization.java index 313b2dff..ff4f14e6 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractTooltipVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractTooltipVisualization.java @@ -45,6 +45,7 @@ import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil; * General base class for a tooltip visualizer. * * @author Erich Schubert + * @since 0.4.0 */ // TODO: can we improve performance by not adding as many hovers? public abstract class AbstractTooltipVisualization extends AbstractScatterplotVisualization implements DataStoreListener { diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AxisVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AxisVisualization.java index 9fa1bd96..64fcb381 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AxisVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AxisVisualization.java @@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Remigius Wojdanowski * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/MarkerVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/MarkerVisualization.java index 6508d9ce..07e8cd13 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/MarkerVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/MarkerVisualization.java @@ -52,6 +52,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * kind of result we have a style source for. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/PolygonVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/PolygonVisualization.java index 796d8f5f..032a319a 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/PolygonVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/PolygonVisualization.java @@ -53,6 +53,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Renders PolygonsObject in the data set. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/ReferencePointsVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/ReferencePointsVisualization.java index 1f0246e0..b75113cc 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/ReferencePointsVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/ReferencePointsVisualization.java @@ -50,6 +50,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Remigius Wojdanowski * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipScoreVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipScoreVisualization.java index 585b5405..656bac0b 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipScoreVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipScoreVisualization.java @@ -61,6 +61,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Remigius Wojdanowski * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipStringVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipStringVisualization.java index d367306d..4f694518 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipStringVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipStringVisualization.java @@ -52,6 +52,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Remigius Wojdanowski * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterHullVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterHullVisualization.java index fb4ed69c..b1f0a78d 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterHullVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterHullVisualization.java @@ -77,6 +77,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * * @author Robert Rödler * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterMeanVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterMeanVisualization.java index bd597111..768d0ab6 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterMeanVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterMeanVisualization.java @@ -58,6 +58,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * Visualize the mean of a KMeans-Clustering * * @author Heidi Kolb + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterOrderVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterOrderVisualization.java index 9a029c79..a11bc1c3 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterOrderVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterOrderVisualization.java @@ -50,6 +50,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * order represents. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterStarVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterStarVisualization.java index c0bedc4a..c848f6c1 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterStarVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterStarVisualization.java @@ -58,6 +58,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * Visualize the mean of a KMeans-Clustering using stars. * * @author Heidi Kolb + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/EMClusterVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/EMClusterVisualization.java index 04a2d241..deccbfb9 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/EMClusterVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/EMClusterVisualization.java @@ -70,6 +70,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * tries to approximate the cluster extends. * * @author Robert Rödler + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/VoronoiVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/VoronoiVisualization.java index f1d9051b..cd13dde9 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/VoronoiVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/VoronoiVisualization.java @@ -45,6 +45,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.EnumParameter; +import de.lmu.ifi.dbs.elki.visualization.VisualizationMenuAction; import de.lmu.ifi.dbs.elki.visualization.VisualizationTask; import de.lmu.ifi.dbs.elki.visualization.VisualizationTree; import de.lmu.ifi.dbs.elki.visualization.VisualizerContext; @@ -68,6 +69,9 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * * See also: {@link de.lmu.ifi.dbs.elki.algorithm.clustering.kmeans.KMeansLloyd * KMeans clustering} + * + * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» @@ -134,6 +138,62 @@ public class VoronoiVisualization extends AbstractVisFactory { task.level = VisualizationTask.LEVEL_DATA + 3; task.addUpdateFlags(VisualizationTask.ON_STYLEPOLICY); context.addVis(p, task); + context.addVis(p, new SwitchModeAction(task, context)); + } + } + + /** + * Menu item to change visualization styles. + * + * @author Erich Schubert + */ + public class SwitchModeAction implements VisualizationMenuAction { + /** + * Task we represent. + */ + private VisualizationTask task; + + /** + * Visualizer context. + */ + private VisualizerContext context; + + /** + * Constructor. + * + * @param task Task + * @param context Visualizer context + */ + public SwitchModeAction(VisualizationTask task, VisualizerContext context) { + super(); + this.task = task; + this.context = context; + } + + @Override + public String getMenuName() { + return "Switch Voronoi Mode"; + } + + @Override + public void activate() { + switch(mode){ + case VORONOI: + mode = Mode.DELAUNAY; + break; + case DELAUNAY: + mode = Mode.V_AND_D; + break; + case V_AND_D: + mode = Mode.VORONOI; + break; + } + context.visChanged(task); + } + + @Override + public boolean enabled() { + return true; } } diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/density/DensityEstimationOverlay.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/density/DensityEstimationOverlay.java index 95239509..31049ebf 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/density/DensityEstimationOverlay.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/density/DensityEstimationOverlay.java @@ -55,6 +55,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * <em>in the projection, not the actual data!</em> * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeMBRVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeMBRVisualization.java index 67fd97a7..8296c697 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeMBRVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeMBRVisualization.java @@ -59,6 +59,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * Visualize the bounding rectangles of an R-Tree based index. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeSphereVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeSphereVisualization.java index f4eb6a95..1cd93017 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeSphereVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeSphereVisualization.java @@ -65,6 +65,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * Visualize the bounding sphere of a metric index. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/BubbleVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/BubbleVisualization.java index f99b52f4..68e4e281 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/BubbleVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/BubbleVisualization.java @@ -67,6 +67,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * * @author Remigius Wojdanowski * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/COPVectorVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/COPVectorVisualization.java index b2abeb9f..762b2e0a 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/COPVectorVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/COPVectorVisualization.java @@ -56,6 +56,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * Visualize error vectors as produced by COP. * * @author Erich Schubert + * @since 0.5.5 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/DistanceFunctionVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/DistanceFunctionVisualization.java index 4751605f..7d73400a 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/DistanceFunctionVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/DistanceFunctionVisualization.java @@ -72,6 +72,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * * @author Erich Schubert * @author Robert Rödler + * @since 0.5.5 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/MoveObjectsToolVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/MoveObjectsToolVisualization.java index c594d500..b8082301 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/MoveObjectsToolVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/MoveObjectsToolVisualization.java @@ -58,6 +58,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * * @author Heidi Kolb * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionConvexHullVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionConvexHullVisualization.java index add2ab8d..5ad2a432 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionConvexHullVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionConvexHullVisualization.java @@ -57,6 +57,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * selected points * * @author Robert Rödler + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionCubeVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionCubeVisualization.java index 7ad7b32b..d060bdce 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionCubeVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionCubeVisualization.java @@ -57,6 +57,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * representing the selected range for each dimension * * @author Heidi Kolb + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionDotVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionDotVisualization.java index c9aed72f..478fbd5b 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionDotVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionDotVisualization.java @@ -51,6 +51,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * representing the selected Database's objects. * * @author Heidi Kolb + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolCubeVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolCubeVisualization.java index 0cc56e08..cd383865 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolCubeVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolCubeVisualization.java @@ -62,6 +62,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * TODO: support non-point spatial data * * @author Heidi Kolb + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolDotVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolDotVisualization.java index 04a092b5..3b0831ff 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolDotVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolDotVisualization.java @@ -56,6 +56,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * Tool-Visualization for the tool to select objects * * @author Heidi Kolb + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses Instance - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainBoundingBoxVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainBoundingBoxVisualization.java index 4e4cca3a..f7d27fc6 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainBoundingBoxVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainBoundingBoxVisualization.java @@ -58,6 +58,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * But it serves the purpose. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainInstancesVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainInstancesVisualization.java index c66d88e3..da2df885 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainInstancesVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainInstancesVisualization.java @@ -56,6 +56,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * But it serves the purpose. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainSamplesVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainSamplesVisualization.java index a186d881..80339e0a 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainSamplesVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainSamplesVisualization.java @@ -62,6 +62,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.scatterplot.AbstractScatter * But it serves the purpose. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/thumbs/ThumbnailThread.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/thumbs/ThumbnailThread.java index e43656cf..c594e3a3 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/thumbs/ThumbnailThread.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/thumbs/ThumbnailThread.java @@ -30,6 +30,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; * Thread to render thumbnails in the background. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses Listener oneway - - signals */ diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/thumbs/ThumbnailVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/thumbs/ThumbnailVisualization.java index 1c0dd760..e05481d2 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/thumbs/ThumbnailVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/thumbs/ThumbnailVisualization.java @@ -51,6 +51,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Thumbnail visualization. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses ThumbnailThread */ @@ -200,7 +201,7 @@ public class ThumbnailVisualization extends AbstractVisualization implements Thu @Override public void resultChanged(Result current) { // Default is to redraw when the result we are attached to changed. - if(task.getResult() == current) { + if(task == current || task.getResult() == current) { refreshThumbnail(); return; } @@ -216,7 +217,7 @@ public class ThumbnailVisualization extends AbstractVisualization implements Thu @Override public void visualizationChanged(VisualizationItem item) { - if(task.updateOnAny(VisualizationTask.ON_STYLEPOLICY) && item instanceof StylingPolicy) { + if(task == item || (task.updateOnAny(VisualizationTask.ON_STYLEPOLICY) && item instanceof StylingPolicy)) { refreshThumbnail(); return; } diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/DendrogramVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/DendrogramVisualization.java new file mode 100644 index 00000000..1536f1a5 --- /dev/null +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/DendrogramVisualization.java @@ -0,0 +1,438 @@ +package de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj; +/* + This file is part of ELKI: + Environment for Developing KDD-Applications Supported by Index-Structures + + Copyright (C) 2015 + 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 org.apache.batik.util.SVGConstants; +import org.w3c.dom.Element; + +import de.lmu.ifi.dbs.elki.algorithm.clustering.hierarchical.PointerHierarchyRepresentationResult; +import de.lmu.ifi.dbs.elki.database.datastore.DBIDDataStore; +import de.lmu.ifi.dbs.elki.database.datastore.DataStoreUtil; +import de.lmu.ifi.dbs.elki.database.datastore.DoubleDataStore; +import de.lmu.ifi.dbs.elki.database.datastore.IntegerDataStore; +import de.lmu.ifi.dbs.elki.database.ids.ArrayModifiableDBIDs; +import de.lmu.ifi.dbs.elki.database.ids.DBIDIter; +import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; +import de.lmu.ifi.dbs.elki.database.ids.DBIDVar; +import de.lmu.ifi.dbs.elki.database.ids.DBIDs; +import de.lmu.ifi.dbs.elki.logging.LoggingUtil; +import de.lmu.ifi.dbs.elki.math.scales.LinearScale; +import de.lmu.ifi.dbs.elki.utilities.datastructures.hierarchy.Hierarchy; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization; +import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.EnumParameter; +import de.lmu.ifi.dbs.elki.visualization.VisualizationMenuAction; +import de.lmu.ifi.dbs.elki.visualization.VisualizationTask; +import de.lmu.ifi.dbs.elki.visualization.VisualizationTree; +import de.lmu.ifi.dbs.elki.visualization.VisualizerContext; +import de.lmu.ifi.dbs.elki.visualization.colors.ColorLibrary; +import de.lmu.ifi.dbs.elki.visualization.css.CSSClass; +import de.lmu.ifi.dbs.elki.visualization.css.CSSClassManager.CSSNamingConflict; +import de.lmu.ifi.dbs.elki.visualization.gui.VisualizationPlot; +import de.lmu.ifi.dbs.elki.visualization.projections.Projection; +import de.lmu.ifi.dbs.elki.visualization.style.ClassStylingPolicy; +import de.lmu.ifi.dbs.elki.visualization.style.StyleLibrary; +import de.lmu.ifi.dbs.elki.visualization.style.StylingPolicy; +import de.lmu.ifi.dbs.elki.visualization.svg.SVGPath; +import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot; +import de.lmu.ifi.dbs.elki.visualization.svg.SVGSimpleLinearAxis; +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.AbstractVisualization; +import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; + +/** + * Dendrogram visualizer. + * + * @author Erich Schubert + * @since 0.7.1 + * + * @apiviz.stereotype factory + * @apiviz.uses Instance oneway - - «create» + */ +public class DendrogramVisualization extends AbstractVisFactory { + /** + * Visualizer name. + */ + private static final String NAME = "Dendrogram"; + + /** + * Styles for dendrograms. + * + * @author Erich Schubert + * + * @apiviz.exclude + */ + public static enum Style { + RECTANGULAR, // + TRIANGULAR, // + } + + /** + * Drawing style. + */ + private Style style = Style.RECTANGULAR; + + /** + * Constructor. + * + * @param style Visualization style. + */ + public DendrogramVisualization(Style style) { + super(); + this.style = style; + } + + @Override + public void processNewResult(VisualizerContext context, Object start) { + // Ensure there is a clustering result: + Hierarchy.Iter<PointerHierarchyRepresentationResult> it = VisualizationTree.filterResults(context, start, PointerHierarchyRepresentationResult.class); + for(; it.valid(); it.advance()) { + PointerHierarchyRepresentationResult pi = it.get(); + final VisualizationTask task = new VisualizationTask(NAME, context, pi, null, this); + task.level = VisualizationTask.LEVEL_STATIC; + task.addUpdateFlags(VisualizationTask.ON_STYLEPOLICY); + task.reqwidth = 1.; + task.reqheight = 1.; + context.addVis(context.getStylingPolicy(), task); + context.addVis(pi, new SwitchStyleAction(task, context)); + } + } + + @Override + public Visualization makeVisualization(VisualizationTask task, VisualizationPlot plot, double width, double height, Projection proj) { + return new Instance(task, plot, width, height); + } + + /** + * Menu item to change visualization styles. + * + * @author Erich Schubert + */ + public class SwitchStyleAction implements VisualizationMenuAction { + /** + * Task we represent. + */ + private VisualizationTask task; + + /** + * Visualizer context. + */ + private VisualizerContext context; + + /** + * Constructor. + * + * @param task Task + * @param context Visualizer context + */ + public SwitchStyleAction(VisualizationTask task, VisualizerContext context) { + super(); + this.task = task; + this.context = context; + } + + @Override + public String getMenuName() { + return "Switch Dendrogram Style"; + } + + @Override + public void activate() { + switch(style){ + case RECTANGULAR: + style = Style.TRIANGULAR; + break; + case TRIANGULAR: + style = Style.RECTANGULAR; + break; + } + context.visChanged(task); + } + + @Override + public boolean enabled() { + return true; + } + } + + /** + * Visualization instance. + * + * @author Erich Schubert + */ + public class Instance extends AbstractVisualization { + /** + * CSS class for key captions. + */ + private static final String KEY_CAPTION = "key-caption"; + + /** + * CSS class for hierarchy plot lines + */ + private static final String KEY_HIERLINE = "key-hierarchy"; + + /** + * Constructor. + * + * @param task Visualization task + * @param plot Plot to draw to + * @param width Embedding width + * @param height Embedding height + */ + public Instance(VisualizationTask task, VisualizationPlot plot, double width, double height) { + super(task, plot, width, height); + addListeners(); + } + + @Override + public void fullRedraw() { + layer = svgp.svgElement(SVGConstants.SVG_G_TAG); + + StyleLibrary style = context.getStyleLibrary(); + StylingPolicy spol = context.getStylingPolicy(); + + PointerHierarchyRepresentationResult p = task.getResult(); + + DBIDs ids = p.getDBIDs(); + DBIDDataStore par = p.getParentStore(); + DoubleDataStore pdi = p.getParentDistanceStore(); + IntegerDataStore pos = p.getPositions(); + DBIDVar pa = DBIDUtil.newVar(); + + final int size = ids.size(); + double linew = StyleLibrary.SCALE * .1 / Math.log1p(size); + double width = StyleLibrary.SCALE, + height = width / getWidth() * getHeight(); + double xscale = width / size, xoff = xscale * .5; + double maxh = Double.MIN_NORMAL; + for(DBIDIter it = ids.iter(); it.valid(); it.advance()) { + if(DBIDUtil.equal(it, par.assignVar(it, pa))) { + continue; // Root + } + double v = pdi.doubleValue(it); + if(v == Double.POSITIVE_INFINITY) { + continue; + } + maxh = v > maxh ? v : maxh; + } + LinearScale yscale = new LinearScale(0, maxh); + // add axes + try { + SVGSimpleLinearAxis.drawAxis(svgp, layer, yscale, 0, height, 0, 0, SVGSimpleLinearAxis.LabelStyle.LEFTHAND, style); + } + catch(CSSNamingConflict e) { + LoggingUtil.exception(e); + } + + // Initial positions: + double[] xy = new double[size << 1]; + for(DBIDIter it = ids.iter(); it.valid(); it.advance()) { + final int off = pos.intValue(it); + xy[off] = off * xscale + xoff; + xy[off + size] = height; + } + // Draw ascending by distance + ArrayModifiableDBIDs order = DBIDUtil.newArray(ids); + order.sort(new DataStoreUtil.AscendingByDoubleDataStoreAndId(pdi)); + + if(spol instanceof ClassStylingPolicy) { + ClassStylingPolicy cspol = (ClassStylingPolicy) spol; + setupCSS(svgp, cspol, linew); + int mins = cspol.getMinStyle() - 1, maxs = cspol.getMaxStyle(); + SVGPath[] paths = new SVGPath[maxs - mins + 1]; + for(int i = 0; i < paths.length; i++) { + paths[i] = new SVGPath(); + } + for(DBIDIter it = order.iter(); it.valid(); it.advance()) { + par.assignVar(it, pa); // Get parent. + double h = pdi.doubleValue(it); + final int o1 = pos.intValue(it); + final int p1 = cspol.getStyleForDBID(it); + double x1 = xy[o1], y1 = xy[o1 + size]; + if(DBIDUtil.equal(it, pa)) { + paths[p1 - mins + 1].moveTo(x1, y1).verticalLineTo(height * (1 - yscale.getScaled(h))); + continue; // Root + } + final int o2 = pos.intValue(pa); + final int p2 = cspol.getStyleForDBID(pa); + double x2 = xy[o2], y2 = xy[o2 + size]; + double x3 = (x1 + x2) * .5, y3 = height * (1 - yscale.getScaled(h)); + switch(DendrogramVisualization.this.style){ + case RECTANGULAR: + if(p1 == p2) { + paths[p1 - mins + 1].moveTo(x1, y1).verticalLineTo(y3).horizontalLineTo(x2).verticalLineTo(y2); + } + else { + paths[y1 == height ? p1 - mins + 1 : 0].moveTo(x1, y1).verticalLineTo(y3); + paths[y2 == height ? p2 - mins + 1 : 0].moveTo(x2, y2).verticalLineTo(y3); + paths[0].moveTo(x1, y3).horizontalLineTo(x2); + } + break; + case TRIANGULAR: + if(p1 == p2) { + paths[p1 - mins + 1].moveTo(x1, y1).drawTo(x3, y3).drawTo(x2, y2); + } + else { + paths[y1 == height ? p1 - mins + 1 : 0].moveTo(x1, y1).drawTo(x3, y3); + paths[y2 == height ? p2 - mins + 1 : 0].moveTo(x2, y2).drawTo(x3, y3); + } + break; + } + xy[o2] = x3; + xy[o2 + size] = y3; + } + for(int i = 0; i < paths.length; i++) { + SVGPath path = paths[i]; + if(!path.isStarted()) { + continue; + } + Element elem = path.makeElement(svgp); + SVGUtil.setCSSClass(elem, (i > 0 ? KEY_HIERLINE + "_" + (i + mins - 1) : KEY_HIERLINE)); + layer.appendChild(elem); + } + } + else { + setupCSS(svgp, linew); + SVGPath dendrogram = new SVGPath(); + + for(DBIDIter it = order.iter(); it.valid(); it.advance()) { + double h = pdi.doubleValue(it); + final int o1 = pos.intValue(it); + double x1 = xy[o1], y1 = xy[o1 + size]; + if(DBIDUtil.equal(it, par.assignVar(it, pa))) { + dendrogram.moveTo(x1, y1).verticalLineTo(height * (1 - yscale.getScaled(h))); + continue; // Root + } + final int o2 = pos.intValue(pa); + double x2 = xy[o2], y2 = xy[o2 + size]; + double x3 = (x1 + x2) * .5, y3 = height * (1 - yscale.getScaled(h)); + switch(DendrogramVisualization.this.style){ + case RECTANGULAR: + dendrogram.moveTo(x1, y1).verticalLineTo(y3).horizontalLineTo(x2).verticalLineTo(y2); + break; + case TRIANGULAR: + dendrogram.moveTo(x1, y1).drawTo(x3, y3).drawTo(x2, y2); + break; + } + xy[o2] = x3; + xy[o2 + size] = y3; + } + Element elem = dendrogram.makeElement(svgp); + SVGUtil.setCSSClass(elem, KEY_HIERLINE); + layer.appendChild(elem); + } + + final double margin = style.getSize(StyleLibrary.MARGIN); + final String transform = SVGUtil.makeMarginTransform(getWidth(), getHeight(), width, height, margin); + SVGUtil.setAtt(layer, SVGConstants.SVG_TRANSFORM_ATTRIBUTE, transform); + } + + /** + * Register the CSS classes. + * + * @param svgp the SVGPlot to register the CSS classes. + * @param linew Line width adjustment + */ + protected void setupCSS(SVGPlot svgp, double linew) { + final StyleLibrary style = context.getStyleLibrary(); + final double fontsize = style.getTextSize(StyleLibrary.KEY); + final String fontfamily = style.getFontFamily(StyleLibrary.KEY); + final String color = style.getColor(StyleLibrary.KEY); + + CSSClass keycaption = new CSSClass(svgp, KEY_CAPTION); + keycaption.setStatement(SVGConstants.CSS_FONT_SIZE_PROPERTY, fontsize); + keycaption.setStatement(SVGConstants.CSS_FONT_FAMILY_PROPERTY, fontfamily); + keycaption.setStatement(SVGConstants.CSS_FILL_PROPERTY, color); + keycaption.setStatement(SVGConstants.CSS_FONT_WEIGHT_PROPERTY, SVGConstants.CSS_BOLD_VALUE); + svgp.addCSSClassOrLogError(keycaption); + + CSSClass hierline = new CSSClass(svgp, KEY_HIERLINE); + hierline.setStatement(SVGConstants.CSS_STROKE_PROPERTY, color); + hierline.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, linew * style.getLineWidth("key.hierarchy") / StyleLibrary.SCALE); + hierline.setStatement(SVGConstants.CSS_STROKE_LINECAP_PROPERTY, SVGConstants.CSS_ROUND_VALUE); + hierline.setStatement(SVGConstants.CSS_FILL_PROPERTY, SVGConstants.CSS_NONE_VALUE); + svgp.addCSSClassOrLogError(hierline); + + svgp.updateStyleElement(); + } + + /** + * Register the CSS classes. + * + * @param svgp the SVGPlot to register the CSS classes. + * @param cspol Class styling policy + * @param linew Line width adjustment + */ + protected void setupCSS(SVGPlot svgp, ClassStylingPolicy cspol, double linew) { + setupCSS(svgp, linew); + StyleLibrary style = context.getStyleLibrary(); + ColorLibrary colors = style.getColorSet(StyleLibrary.PLOT); + + for(int i = cspol.getMinStyle(); i <= cspol.getMaxStyle(); i++) { + CSSClass hierline = new CSSClass(svgp, KEY_HIERLINE + "_" + i); + hierline.setStatement(SVGConstants.CSS_STROKE_PROPERTY, colors.getColor(i)); + hierline.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, linew * style.getLineWidth("key.hierarchy") / StyleLibrary.SCALE); + hierline.setStatement(SVGConstants.CSS_STROKE_LINECAP_PROPERTY, SVGConstants.CSS_ROUND_VALUE); + hierline.setStatement(SVGConstants.CSS_FILL_PROPERTY, SVGConstants.CSS_NONE_VALUE); + svgp.addCSSClassOrLogError(hierline); + } + + svgp.updateStyleElement(); + } + } + + /** + * Parameterization class. + * + * @author Erich Schubert + * + * @apiviz.exclude + */ + public static class Parameterizer extends AbstractParameterizer { + /** + * Dendrogram drawing style. + */ + public static final OptionID STYLE_ID = new OptionID("dendrogram.style", "Drawing style for dendrograms."); + + /** + * Drawing style. + */ + private Style style = Style.RECTANGULAR; + + @Override + protected void makeOptions(Parameterization config) { + super.makeOptions(config); + EnumParameter<Style> styleP = new EnumParameter<>(STYLE_ID, Style.class, Style.RECTANGULAR); + if(config.grab(styleP)) { + style = styleP.getValue(); + } + } + + @Override + protected DendrogramVisualization makeInstance() { + return new DendrogramVisualization(style); + } + } +}
\ No newline at end of file diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/EvaluationVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/EvaluationVisualization.java index b378c71a..12d16af2 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/EvaluationVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/EvaluationVisualization.java @@ -57,6 +57,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * * @author Erich Schubert * @author Sascha Goldhofer + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses StaticVisualizationInstance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/HistogramVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/HistogramVisualization.java index 1d3e8771..3051e365 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/HistogramVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/HistogramVisualization.java @@ -52,6 +52,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Visualizer to draw histograms. * * @author Erich Schubert + * @since 0.3 * * @apiviz.stereotype factory * @apiviz.uses StaticVisualizationInstance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/KeyVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/KeyVisualization.java index 7361bd4e..9676d943 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/KeyVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/KeyVisualization.java @@ -61,6 +61,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * TODO: also show in scatter plot detail view. * * @author Erich Schubert + * @since 0.3 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/LabelVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/LabelVisualization.java index c89d9c75..9727ace3 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/LabelVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/LabelVisualization.java @@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * be used for dimension labels in the overview. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses StaticVisualizationInstance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/PixmapVisualizer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/PixmapVisualizer.java index b6fcdd57..99d7cd18 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/PixmapVisualizer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/PixmapVisualizer.java @@ -45,6 +45,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Visualize an arbitrary pixmap result. * * @author Erich Schubert + * @since 0.3 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/SettingsVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/SettingsVisualization.java index 3efa04d1..d7786699 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/SettingsVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/SettingsVisualization.java @@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Pseudo-Visualizer, that lists the settings of the algorithm- * * @author Erich Schubert + * @since 0.3 * * @apiviz.stereotype factory * @apiviz.uses StaticVisualizationInstance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/SimilarityMatrixVisualizer.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/SimilarityMatrixVisualizer.java index 0b64d6c3..007db56b 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/SimilarityMatrixVisualizer.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/SimilarityMatrixVisualizer.java @@ -50,6 +50,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Visualize a similarity matrix with object labels * * @author Erich Schubert + * @since 0.3 * * @apiviz.stereotype factory * @apiviz.uses Instance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/XYCurveVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/XYCurveVisualization.java index 3c620a8f..0939a309 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/XYCurveVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/XYCurveVisualization.java @@ -54,6 +54,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Visualizer to render a simple 2D curve such as a ROC curve. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses StaticVisualizationInstance oneway - - «create» diff --git a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/XYPlotVisualization.java b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/XYPlotVisualization.java index 3b07860d..0158cd0f 100644 --- a/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/XYPlotVisualization.java +++ b/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/XYPlotVisualization.java @@ -51,6 +51,7 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization; * Visualizer to render a simple 2D curve such as a ROC curve. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.stereotype factory * @apiviz.uses StaticVisualizationInstance oneway - - «create» diff --git a/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.result.ResultHandler b/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.result.ResultHandler index 00032d8f..f2e962aa 100644 --- a/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.result.ResultHandler +++ b/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.result.ResultHandler @@ -1,2 +1,2 @@ -de.lmu.ifi.dbs.elki.visualization.gui.ResultVisualizer visualizer vis ResultVisualizer -de.lmu.ifi.dbs.elki.visualization.ExportVisualizations +de.lmu.ifi.dbs.elki.result.AutomaticVisualization de.lmu.ifi.dbs.elki.visualization.gui.ResultVisualizer visualizer vis ResultVisualizer +de.lmu.ifi.dbs.elki.result.ExportVisualizations de.lmu.ifi.dbs.elki.visualization.ExportVisualizations diff --git a/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.visualization.VisualizationProcessor b/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.visualization.VisualizationProcessor index 3ba543d8..10ead960 100644 --- a/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.visualization.VisualizationProcessor +++ b/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.visualization.VisualizationProcessor @@ -52,6 +52,7 @@ de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.LabelVisualization de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.PixmapVisualizer de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.SimilarityMatrixVisualizer de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.KeyVisualization +de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.DendrogramVisualization de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.SettingsVisualization de.lmu.ifi.dbs.elki.visualization.visualizers.optics.OPTICSClusterVisualization de.lmu.ifi.dbs.elki.visualization.visualizers.optics.OPTICSPlotCutVisualization diff --git a/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.visualization.visualizers.VisFactory b/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.visualization.visualizers.VisFactory index 19c05f02..975bda67 100644 --- a/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.visualization.visualizers.VisFactory +++ b/addons/batikvis/src/main/resources/META-INF/elki/de.lmu.ifi.dbs.elki.visualization.visualizers.VisFactory @@ -48,6 +48,7 @@ de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.LabelVisualization de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.PixmapVisualizer de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.SimilarityMatrixVisualizer de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.KeyVisualization +de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.DendrogramVisualization de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.SettingsVisualization de.lmu.ifi.dbs.elki.visualization.visualizers.optics.OPTICSClusterVisualization de.lmu.ifi.dbs.elki.visualization.visualizers.optics.OPTICSPlotCutVisualization diff --git a/addons/batikvis/src/main/resources/META-INF/services/org.apache.batik.ext.awt.image.spi.ImageWriter b/addons/batikvis/src/main/resources/META-INF/services/org.apache.batik.ext.awt.image.spi.ImageWriter new file mode 100644 index 00000000..1ed70164 --- /dev/null +++ b/addons/batikvis/src/main/resources/META-INF/services/org.apache.batik.ext.awt.image.spi.ImageWriter @@ -0,0 +1,2 @@ +# BUG FIX for Batik 1.8 +org.apache.batik.ext.awt.image.codec.png.PNGImageWriter
\ No newline at end of file diff --git a/addons/batikvis/src/main/resources/META-INF/services/org.apache.batik.ext.awt.image.spi.RegistryEntry b/addons/batikvis/src/main/resources/META-INF/services/org.apache.batik.ext.awt.image.spi.RegistryEntry index f1252025..3529e5ce 100644 --- a/addons/batikvis/src/main/resources/META-INF/services/org.apache.batik.ext.awt.image.spi.RegistryEntry +++ b/addons/batikvis/src/main/resources/META-INF/services/org.apache.batik.ext.awt.image.spi.RegistryEntry @@ -1 +1,3 @@ -de.lmu.ifi.dbs.elki.visualization.batikutil.ThumbnailRegistryEntry
\ No newline at end of file +de.lmu.ifi.dbs.elki.visualization.batikutil.ThumbnailRegistryEntry +# BUG FIX for Batik 1.8 +org.apache.batik.ext.awt.image.codec.png.PNGRegistryEntry
\ No newline at end of file |