@Override public void apply(Rule r) { for (RenderStyle style : r.styles) { if (modifyLine && style instanceof LineStyle) { LineStyle s = (LineStyle) style; s.set( lineBuilder .set(s) .color(saturate(s.color, saturation, relative)) .stippleColor(saturate(s.stippleColor, saturation, relative)) .build()); continue; } if (modifyArea && style instanceof AreaStyle) { AreaStyle s = (AreaStyle) style; s.set( areaBuilder .set(s) .color(saturate(s.color, saturation, relative)) .blendColor(saturate(s.blendColor, saturation, relative)) .build()); } } super.apply(r); }
static class SaturateLineStyles extends RuleVisitor { private final LineBuilder<?> lineBuilder = LineStyle.builder(); private final AreaBuilder<?> areaBuilder = AreaStyle.builder(); private final double saturation; private final boolean modifyArea; private final boolean modifyLine; private final boolean relative; public SaturateLineStyles( double saturation, boolean relative, boolean modArea, boolean modLine) { this.saturation = saturation; this.modifyArea = modArea; this.modifyLine = modLine; this.relative = relative; } @Override public void apply(Rule r) { for (RenderStyle style : r.styles) { if (modifyLine && style instanceof LineStyle) { LineStyle s = (LineStyle) style; s.set( lineBuilder .set(s) .color(saturate(s.color, saturation, relative)) .stippleColor(saturate(s.stippleColor, saturation, relative)) .build()); continue; } if (modifyArea && style instanceof AreaStyle) { AreaStyle s = (AreaStyle) style; s.set( areaBuilder .set(s) .color(saturate(s.color, saturation, relative)) .blendColor(saturate(s.blendColor, saturation, relative)) .build()); } } super.apply(r); } }