void (@NotNull Graphics2D g, @NotNull Editor editor, @NotNull List<? extends ChangedLines<DefaultLineFlags>> block, @NotNull LineStatusMarkerColorScheme colorScheme, int framingBorder) { Color borderColor = LineStatusMarkerColorScheme.DEFAULT.getBorderColor(editor); EditorGutterComponentEx gutter = ((EditorEx)editor).getGutterComponentEx(); Color gutterBackgroundColor = gutter.getBackground(); IntPair area = getGutterArea(editor); final int x = area.first; final int endX = area.second; final int y = block.get(0).y1; final int endY = block.get(block.size() - 1).y2; if (framingBorder > 0) { if (y != endY) { g.setColor(gutterBackgroundColor); g.fillRect(x - framingBorder, y - framingBorder, endX - x + framingBorder, endY - y + framingBorder * 2); } } for (ChangedLines<DefaultLineFlags> change : block) { if (change.y1 != change.y2 && !change.flags.isIgnored) { int start = change.y1; int end = change.y2; Color gutterColor = colorScheme.getColor(editor, change.type); int line = gutter.getHoveredFreeMarkersLine(); if (isRangeHovered(editor, line, x, start, end)) { paintRect(g, gutterColor, null, x - 1, start, endX + 2, end); } else { paintRect(g, gutterColor, null, x, start, endX, end); } } } if (borderColor == null) { for (ChangedLines<DefaultLineFlags> change : block) { if (change.y1 != change.y2 && change.flags.isIgnored) { int start = change.y1; int end = change.y2; Color ignoredBorderColor = colorScheme.getIgnoredBorderColor(editor, change.type); paintRect(g, null, ignoredBorderColor, x, start, endX, end); } } } else if (y != endY) { paintRect(g, null, borderColor, x, y, endX, endY); } for (ChangedLines<DefaultLineFlags> change : block) { if (change.y1 == change.y2) { int start = change.y1; if (!change.flags.isIgnored) { Color gutterColor = colorScheme.getColor(editor, change.type); paintTriangle(g, editor, gutterColor, borderColor, x, endX, start); } else { Color ignoredBorderColor = borderColor != null ? borderColor : colorScheme.getIgnoredBorderColor(editor, change.type); paintTriangle(g, editor, null, ignoredBorderColor, x, endX, start); } } } }