in src/main/kotlin/com/jetbrains/interactiveRebase/visuals/GraphPanel.kt [254:310]
public override fun paintComponent(g: Graphics) {
super.paintComponent(g)
val g2d = g as Graphics2D
g2d.color = Palette.BLUE
g2d.stroke = BasicStroke(2f)
g2d.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON,
)
if (mainBranchPanel.branchPanel.circles.isEmpty()) return
// Coordinates of the last circle of the main branch
val (mainCircleCenterX, mainCircleCenterY) = centerCoordinatesOfLastMainCircle()
// Coordinates of the last circle of the added branch
if (addedBranchPanel != null) {
rebaseCircleInAddedBranch = addedBranchPanel!!.branchPanel.circles
.firstOrNull { c -> c.commit == graphInfo.addedBranch!!.baseCommit }
?: mainBranchPanel.branchPanel.circles[0]
var (addedCircleCenterX, addedCircleCenterY) =
centerCoordinatesOfBaseCircleInAddedBranch()
if (Point(mainCircleCenterX, mainCircleCenterY) ==
Point(addedCircleCenterX, addedCircleCenterY)
) {
addedCircleCenterX++
addedCircleCenterY++
}
gradientTransition(
g2d,
mainCircleCenterX,
mainCircleCenterY,
addedCircleCenterX,
addedCircleCenterY,
)
val curve =
CubicCurve2D.Float(
mainCircleCenterX.toFloat(),
mainCircleCenterY.toFloat(),
mainCircleCenterX.toFloat(),
mainCircleCenterY.toFloat() + lineOffset,
mainCircleCenterX.toFloat(),
mainCircleCenterY.toFloat() + lineOffset,
addedCircleCenterX.toFloat(),
addedCircleCenterY.toFloat(),
)
// If added branch is not rendered because the screen is too small
// coordinates appear to be 0
// Hence, we don't draw the line in this case
if (addedCircleCenterX != 0 && addedCircleCenterY != 0) {
g2d.draw(curve)
}
}
}