> extends AbstractVisFactory {
/**
* Flag for half-transparent filling of bubbles.
*
*
* Key: {@code -index.fill}
*
*/
public static final OptionID FILL_ID = OptionID.getOrCreateOptionID("index.fill", "Partially transparent filling of index pages.");
/**
* Fill parameter.
*/
protected boolean fill = false;
/**
* Constructor.
*
* @param fill
*/
public Factory(boolean fill) {
super();
this.fill = fill;
}
@Override
public Visualization makeVisualization(VisualizationTask task) {
return new TreeMBRVisualization(task, fill);
}
@Override
public void processNewResult(HierarchicalResult baseResult, Result result) {
ArrayList> trees = ResultUtil.filterResults(result, AbstractRStarTree.class);
for(AbstractRStarTree tree : trees) {
if(tree instanceof Result) {
Iterator> ps = ResultUtil.filteredResults(baseResult, ScatterPlotProjector.class);
for(ScatterPlotProjector> p : IterableUtil.fromIterator(ps)) {
final VisualizationTask task = new VisualizationTask(NAME, (Result) tree, p.getRelation(), this);
task.put(VisualizationTask.META_LEVEL, VisualizationTask.LEVEL_BACKGROUND + 1);
baseResult.getHierarchy().add((Result) tree, task);
baseResult.getHierarchy().add(p, task);
}
}
}
}
/**
* Parameterization class.
*
* @author Erich Schubert
*
* @apiviz.exclude
*/
public static class Parameterizer> extends AbstractParameterizer {
protected boolean fill = false;
@Override
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
Flag fillF = new Flag(FILL_ID);
if(config.grab(fillF)) {
fill = fillF.getValue();
}
}
@Override
protected Factory makeInstance() {
return new Factory(fill);
}
}
}
}