void (Graphics2D g, double centerX, double centerY, double width, double height, double baseHeight, boolean active, int visualLine) { double sw = getStrokeWidth(); Rectangle2D rect = RectanglePainter2D.align(g, EnumSet.of(LinePainter2D.Align.CENTER_X, LinePainter2D.Align.CENTER_Y), centerX, centerY, width, width, StrokeType.CENTERED, sw); double x1 = rect.getX(); double x2 = x1 + rect.getWidth() - 1; double y = height > 0 ? rect.getY() : rect.getY() + rect.getHeight() - 1; double[] dxPoints = {x1, x1, x2, x2, centerX}; double[] dyPoints = {y + baseHeight, y, y, y + baseHeight, y + height + (height < 0 ? 1 : 0)}; if (ExperimentalUI.isNewUI()) { if (height <= 0 && !EditorSettingsExternalizable.getInstance().isFoldingEndingsShown()) { //do not paint folding endings in new UI by default return; } myAlphaContext.paintWithComposite(g, () -> { Icon icon = scaleIcon(height > 0 ? ExpUiIcons.Gutter.Fold : ExpUiIcons.Gutter.FoldBottom); icon.paintIcon(this, g, getFoldingAreaOffset(), getFoldingIconY(visualLine, icon)); }); return; } g.setColor(myEditor.getBackgroundColor()); LinePainter2D.fillPolygon(g, dxPoints, dyPoints, 5, StrokeType.CENTERED_CAPS_SQUARE, sw, RenderingHints.VALUE_ANTIALIAS_ON); g.setColor(getOutlineColor(active)); LinePainter2D.paintPolygon(g, dxPoints, dyPoints, 5, StrokeType.CENTERED_CAPS_SQUARE, sw, RenderingHints.VALUE_ANTIALIAS_ON); drawLine(g, false, centerX, centerY, width, sw); }