}
@Override
protected void redraw() {
int projdim = proj.getVisibleDimensions2D().cardinality();
ColorLibrary colors = context.getStyleLibrary().getColorSet(StyleLibrary.PLOT);
p = getLPNormP(tree);
if(tree != null) {
if(ManhattanDistanceFunction.class.isInstance(tree.getDistanceQuery())) {
dist = Modus.MANHATTAN;
}
else if(EuclideanDistanceFunction.class.isInstance(tree.getDistanceQuery())) {
dist = Modus.EUCLIDEAN;
}
else {
dist = Modus.LPCROSS;
}
E root = tree.getRootEntry();
final int mtheight = tree.getHeight();
for(int i = 0; i < mtheight; i++) {
CSSClass cls = new CSSClass(this, INDEX + i);
// Relative depth of this level. 1.0 = toplevel
final double relDepth = 1. - (((double) i) / mtheight);
if(fill) {
cls.setStatement(SVGConstants.CSS_STROKE_PROPERTY, colors.getColor(i));
cls.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, relDepth * context.getStyleLibrary().getLineWidth(StyleLibrary.PLOT));
cls.setStatement(SVGConstants.CSS_FILL_PROPERTY, colors.getColor(i));
cls.setStatement(SVGConstants.CSS_FILL_OPACITY_PROPERTY, 0.1 / (projdim - 1));
cls.setStatement(SVGConstants.CSS_STROKE_LINECAP_PROPERTY, SVGConstants.CSS_ROUND_VALUE);
cls.setStatement(SVGConstants.CSS_STROKE_LINEJOIN_PROPERTY, SVGConstants.CSS_ROUND_VALUE);
}
else {
cls.setStatement(SVGConstants.CSS_STROKE_PROPERTY, colors.getColor(i));
cls.setStatement(SVGConstants.CSS_STROKE_WIDTH_PROPERTY, relDepth * context.getStyleLibrary().getLineWidth(StyleLibrary.PLOT));
cls.setStatement(SVGConstants.CSS_FILL_PROPERTY, SVGConstants.CSS_NONE_VALUE);
cls.setStatement(SVGConstants.CSS_STROKE_LINECAP_PROPERTY, SVGConstants.CSS_ROUND_VALUE);
cls.setStatement(SVGConstants.CSS_STROKE_LINEJOIN_PROPERTY, SVGConstants.CSS_ROUND_VALUE);
}