net.sourceforge.plantuml.sequencediagram.teoz.TileParallel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plantuml-mit Show documentation
Show all versions of plantuml-mit Show documentation
PlantUML is a component that allows to quickly write diagrams from text.
// THIS FILE HAS BEEN GENERATED BY A PREPROCESSOR.
package net.sourceforge.plantuml.sequencediagram.teoz;
import java.util.AbstractCollection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.sourceforge.plantuml.klimt.UTranslate;
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
import net.sourceforge.plantuml.klimt.font.StringBounder;
import net.sourceforge.plantuml.klimt.shape.UDrawable;
import net.sourceforge.plantuml.real.Real;
import net.sourceforge.plantuml.real.RealUtils;
import net.sourceforge.plantuml.sequencediagram.Event;
public class TileParallel extends CommonTile {
public TileParallel(StringBounder stringBounder, Real currentY) {
super(stringBounder);
}
private final List tiles = new ArrayList<>();
@Override
public YGauge getYGauge() {
final List mins = new ArrayList<>();
final List maxs = new ArrayList<>();
for (Tile tile : tiles) {
final YGauge yGauge = tile.getYGauge();
mins.add(yGauge.getMin());
maxs.add(yGauge.getMax());
}
return new YGauge(RealUtils.min(mins), RealUtils.max(maxs));
}
@Override
final protected void callbackY_internal(TimeHook y) {
super.callbackY_internal(y);
for (Tile tile : tiles)
tile.callbackY(y);
}
public void add(Tile tile) {
this.tiles.add(tile);
}
public void drawU(UGraphic ug) {
final double yPointAll = getContactPointRelative();
for (Tile tile : tiles) {
final double yPoint = tile.getContactPointRelative();
((UDrawable) tile).drawU(ug.apply(UTranslate.dy(yPointAll - yPoint)));
}
}
public double getContactPointRelative() {
double result = 0;
for (Tile tile : tiles)
result = Math.max(result, tile.getContactPointRelative());
return result;
}
public double getZZZ() {
double result = 0;
for (Tile tile : tiles)
result = Math.max(result, tile.getZZZ());
return result;
}
public double getPreferredHeight() {
return getContactPointRelative() + getZZZ();
}
public void addConstraints() {
for (Tile tile : tiles)
tile.addConstraints();
}
public Real getMinX() {
return RealUtils.min(new AbstractCollection() {
public Iterator iterator() {
return new Iterator() {
private final Iterator source = tiles.iterator();
public boolean hasNext() {
return source.hasNext();
}
public Real next() {
return source.next().getMinX();
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
public int size() {
return tiles.size();
}
});
}
public Real getMaxX() {
return RealUtils.max(new AbstractCollection() {
public Iterator iterator() {
return new Iterator() {
private final Iterator source = tiles.iterator();
public boolean hasNext() {
return source.hasNext();
}
public Real next() {
return source.next().getMaxX();
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
public int size() {
return tiles.size();
}
});
}
public Event getEvent() {
return null;
}
public boolean matchAnchor(String anchor) {
for (Tile tile : tiles)
if (tile.matchAnchor(anchor))
return true;
return false;
}
}