summaryrefslogtreecommitdiff
path: root/addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki
diff options
context:
space:
mode:
Diffstat (limited to 'addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki')
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/application/greedyensemble/VisualizePairwiseGainMatrix.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/result/AutomaticVisualization.java (renamed from addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/ResultVisualizer.java)18
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/result/ExportVisualizations.java (renamed from addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/ExportVisualizations.java)10
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationItem.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationListener.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationMenuAction.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationMenuToggle.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationProcessor.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationTask.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizationTree.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizerContext.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/VisualizerParameterizer.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/AddCSSClass.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/AttributeModifier.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/BatikUtil.java24
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/CSSHoverClass.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/CloneInlineImages.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/DragableArea.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/JSVGSynchronizedCanvas.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/JSVGUpdateSynchronizer.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/LazyCanvasResizer.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeAppendChild.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeReplaceAllChildren.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeReplaceByID.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/NodeSubstitute.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/RemoveCSSClass.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/ThumbnailRegistryEntry.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/batikutil/ThumbnailTranscoder.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/colors/ColorLibrary.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/colors/ListBasedColorLibrary.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/css/CSSClass.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/css/CSSClassManager.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/SelectionTableWindow.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/SimpleSVGViewer.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/VisualizationPlot.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/DetailViewSelectedEvent.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/LayerMap.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/OverviewPlot.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/PlotItem.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/gui/overview/RectangleArranger.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/opticsplot/OPTICSCut.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/opticsplot/OPTICSPlot.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractFullProjection.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractProjection.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AbstractSimpleProjection.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/AffineProjection.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/CanvasSize.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/FullProjection.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/OPTICSProjection.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection1D.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Projection2D.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/ProjectionParallel.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Simple1D.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/Simple2D.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projections/SimpleParallel.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/HistogramFactory.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/HistogramProjector.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/OPTICSProjector.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/OPTICSProjectorFactory.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ParallelPlotFactory.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ParallelPlotProjector.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/Projector.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ProjectorFactory.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ScatterPlotFactory.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/projector/ScatterPlotProjector.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/savedialog/SVGSaveDialog.java131
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/savedialog/SaveOptionsPanel.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/ClassStylingPolicy.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/ClusterStylingPolicy.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/PropertiesBasedStyleLibrary.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/SingleObjectsStylingPolicy.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/StyleLibrary.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/StylingPolicy.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/DashedLineStyleLibrary.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/LineStyleLibrary.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/lines/SolidLineStyleLibrary.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/CircleMarkers.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/MarkerLibrary.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/MinimalMarkers.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/style/marker/PrettyMarkers.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGArrow.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGButton.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGCheckbox.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGCloneVisible.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGEffects.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGHyperCube.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGHyperSphere.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGPath.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGPlot.java18
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGScoreBar.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGSimpleLinearAxis.java1
-rwxr-xr-xaddons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/SVGUtil.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/UpdateRunner.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/UpdateSynchronizer.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/svg/VoronoiDraw.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/AbstractVisFactory.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/AbstractVisualization.java3
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/StaticVisualizationInstance.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/VisFactory.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/Visualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/actions/ClusterStyleAction.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/AbstractHistogramVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/AbstractOPTICSVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotCutVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotSelectionVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSPlotVisualizer.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSSteepAreaVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/pairsegments/CircleSegmentsVisualizer.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/pairsegments/SegmentsStylingPolicy.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AbstractParallelVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AxisReorderVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/AxisVisibilityVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/BoundingBoxVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/LineVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/ParallelAxisVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/cluster/ClusterOutlineVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/cluster/ClusterParallelMeanVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/index/RTreeParallelVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionAxisRangeVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionLineVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionToolAxisRangeVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionToolLineVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractScatterplotVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AbstractTooltipVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/AxisVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/MarkerVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/PolygonVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/ReferencePointsVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipScoreVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/TooltipStringVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterHullVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterMeanVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterOrderVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/ClusterStarVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/EMClusterVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/cluster/VoronoiVisualization.java60
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/density/DensityEstimationOverlay.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeMBRVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/index/TreeSphereVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/BubbleVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/outlier/COPVectorVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/DistanceFunctionVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/MoveObjectsToolVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionConvexHullVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionCubeVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionDotVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolCubeVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/selection/SelectionToolDotVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainBoundingBoxVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainInstancesVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/scatterplot/uncertain/UncertainSamplesVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/thumbs/ThumbnailThread.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/thumbs/ThumbnailVisualization.java5
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/DendrogramVisualization.java438
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/EvaluationVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/HistogramVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/KeyVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/LabelVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/PixmapVisualizer.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/SettingsVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/SimilarityMatrixVisualizer.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/XYCurveVisualization.java1
-rw-r--r--addons/batikvis/src/main/java/de/lmu/ifi/dbs/elki/visualization/visualizers/visunproj/XYPlotVisualization.java1
168 files changed, 788 insertions, 78 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»