コード例 #1
0
 private void paintBorder(
     Graphics g, EditorImpl editor, int startOffset, int endOffset, EffectType effectType) {
   if (!myClipDetector.rangeCanBeVisible(startOffset, endOffset)) return;
   Point startPoint = offsetToXY(editor, startOffset);
   Point endPoint = offsetToXY(editor, endOffset);
   int height = endPoint.y - startPoint.y;
   int startX = startPoint.x;
   int startY = startPoint.y;
   int endX = endPoint.x;
   int lineHeight = editor.getLineHeight();
   if (height == 0) {
     int width = endX == startX ? 1 : endX - startX - 1;
     if (effectType == EffectType.ROUNDED_BOX) {
       UIUtil.drawRectPickedOut((Graphics2D) g, startX, startY, width, lineHeight - 1);
     } else {
       g.drawRect(startX, startY, width, lineHeight - 1);
     }
     return;
   }
   int startLine = editor.offsetToVisualLine(startOffset);
   int endLine = editor.offsetToVisualLine(endOffset);
   int maxWidth =
       Math.max(endX, editor.getMaxWidthInVisualLineRange(startLine, endLine - 1, false));
   BorderGraphics border = new BorderGraphics(g, startX, startY, effectType);
   border.horizontalTo(maxWidth);
   border.verticalRel(height - 1);
   border.horizontalTo(endX);
   if (endX > 0) {
     border.verticalRel(lineHeight);
     border.horizontalTo(0);
     border.verticalRel(-height + 1);
   } else if (height > lineHeight) {
     border.verticalRel(-height + lineHeight + 1);
   }
   border.horizontalTo(startX);
   border.verticalTo(startY);
 }