public override fun paintComponent()

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)
            }
        }
    }