void (double width, @NotNull Rectangle clip, @NotNull Graphics2D g, int visualLine, @NotNull DisplayedFoldingAnchor.Type type, boolean active) { double off = width / 4; double height = width + off; double baseHeight = height - width / 2; double y = getFoldAnchorY(visualLine, width); double centerX = LinePainter2D.getStrokeCenter(g, getFoldingMarkerCenterOffset2D(), StrokeType.CENTERED, getStrokeWidth()); double strokeOff = centerX - getFoldingMarkerCenterOffset2D(); // need to have the same sub-device-pixel offset as centerX for the square_with_plus rect to have equal dev width/height double centerY = PaintUtil.alignToInt(y + width / 2, g) + strokeOff; switch (type) { case COLLAPSED, COLLAPSED_SINGLE_LINE -> { if (y <= clip.y + clip.height && y + height >= clip.y) { drawSquareWithPlusOrMinus(g, centerX, centerY, width, true, active, visualLine); } } case EXPANDED_SINGLE_LINE -> { if (y <= clip.y + clip.height && y + height >= clip.y) { drawSquareWithPlusOrMinus(g, centerX, centerY, width, false, active, visualLine); } } case EXPANDED_TOP -> { if (y <= clip.y + clip.height && y + height >= clip.y) { drawDirectedBox(g, centerX, centerY, width, height, baseHeight, active, visualLine); } } case EXPANDED_BOTTOM -> { y += width; if (y - height <= clip.y + clip.height && y >= clip.y) { drawDirectedBox(g, centerX, centerY, width, -height, -baseHeight, active, visualLine); } } } }