fixes bounding box calculation of arrow painter

This commit is contained in:
2026-08-16 11:39:08 +02:00
parent 33c58983e3
commit 51115ff55c
@@ -90,6 +90,16 @@ public class ArrowPainter implements IPainter {
return 0; return 0;
} }
private Rectangle getBoundingBox(IWaveformPainter painter, ITx itx) {
int laneHeight = painter.getHeight() / itx.getStream().getRowCount();
int laneOffset = laneHeight * getConcurrencyIndex(itx);
int rulerHeight = waveCanvas.rulerHeight;
Rectangle bb = new Rectangle((int) (itx.getBeginTime() / scaleFactor),
rulerHeight + painter.getVerticalOffset() + laneOffset,
(int) ((itx.getEndTime() - itx.getBeginTime()) / scaleFactor), laneHeight);
return bb;
}
protected boolean calculateGeometries() { protected boolean calculateGeometries() {
iRect.clear(); iRect.clear();
oRect.clear(); oRect.clear();
@@ -100,12 +110,8 @@ public class ArrowPainter implements IPainter {
// created // created
return true; return true;
} }
int laneHeight = painter.getHeight() / tx.getStream().getRowCount(); Rectangle bb = getBoundingBox(painter, tx);
int laneOffset = laneHeight * getConcurrencyIndex(tx); txRectangle = bb;
int rulerHeight = waveCanvas.rulerHeight;
txRectangle = new Rectangle((int) (tx.getBeginTime() / scaleFactor),
rulerHeight + painter.getVerticalOffset() + laneOffset,
(int) ((tx.getEndTime() - tx.getBeginTime()) / scaleFactor), laneHeight);
deriveGeom(tx.getIncomingRelations(), iRect, false); deriveGeom(tx.getIncomingRelations(), iRect, false);
deriveGeom(tx.getOutgoingRelations(), oRect, true); deriveGeom(tx.getOutgoingRelations(), oRect, true);
return false; return false;
@@ -119,13 +125,7 @@ public class ArrowPainter implements IPainter {
if (waveCanvas.wave2painterMap.containsKey(iWaveform)) { if (waveCanvas.wave2painterMap.containsKey(iWaveform)) {
IWaveformPainter painter = waveCanvas.wave2painterMap.get(iWaveform); IWaveformPainter painter = waveCanvas.wave2painterMap.get(iWaveform);
if(painter!=null) { if(painter!=null) {
int laneHeight = waveCanvas.styleProvider.getTrackHeight(); Rectangle bb = getBoundingBox(painter, otherTx);
int laneOffset = laneHeight * getConcurrencyIndex(tx);
Rectangle bb = new Rectangle(
(int) (otherTx.getBeginTime() / scaleFactor),
waveCanvas.rulerHeight + painter.getVerticalOffset() + laneOffset,
(int) ((otherTx.getEndTime() - otherTx.getBeginTime()) / scaleFactor),
laneHeight);
res.add(new LinkEntry(bb, iTxRelation.getRelationType())); res.add(new LinkEntry(bb, iTxRelation.getRelationType()));
} }
} }