package com.baselet.element.sequence_aio.facet;
import java.util.Arrays;
public class LifelineHorizontalDrawingInfoImpl implements LifelineHorizontalDrawingInfo {
private final double[] leftPaddings;
private final double[] rightPaddings;
private final double startX;
private final double endX;
public LifelineHorizontalDrawingInfoImpl(double[] leftPaddings, double[] rightPaddings, double startX, double endX) {
super();
this.leftPaddings = Arrays.copyOf(leftPaddings, leftPaddings.length);
this.rightPaddings = Arrays.copyOf(rightPaddings, rightPaddings.length);
this.startX = startX;
this.endX = endX;
}
@Override
public double getHorizontalStart() {
return startX;
}
@Override
public double getHorizontalEnd() {
return endX;
}
@Override
public double getHorizontalStart(int tick) {
return getHorizontalStart() + leftPaddings[tick];
}
@Override
public double getHorizontalEnd(int tick) {
return getHorizontalEnd() - rightPaddings[tick];
}
@Override
public double getHorizontalCenter() {
return (startX + endX) / 2.0;
}
@Override
public double getWidth() {
return endX - startX;
}
@Override
public double getWidth(int tick) {
return getHorizontalEnd(tick) - getHorizontalStart(tick);
}
@Override
public double getSymmetricHorizontalStart(int tick) {
return getHorizontalStart() + Math.max(leftPaddings[tick], rightPaddings[tick]);
}
@Override
public double getSymmetricHorizontalEnd(int tick) {
return getHorizontalEnd() - Math.max(leftPaddings[tick], rightPaddings[tick]);
}
@Override
public double getSymmetricWidth(int tick) {
return getWidth() - Math.max(leftPaddings[tick], rightPaddings[tick]) * 2;
}
}