int (Graphics g, CharSequence text, int x, int y, Color effectColor, EffectType effectType, int fontType, Color fontColor) { int xStart = x; int start = 0; for (int i = 0; i < text.length(); i++) { if (text.charAt(i) != '\t') continue; if (i > start) { drawCharsCached(g, text.subSequence(start, i), x, y, fontType, fontColor); for (int j = start; j < i; j++) { char c = text.charAt(j); x += charWidth(fontType, c); } } int x1 = nextTabStop(x); drawTabPlacer(g, y, x, x1); x = x1; start = i + 1; } if (start < text.length()) { drawCharsCached(g, text.subSequence(start, text.length()), x, y, fontType, fontColor); for (int j = start; j < text.length(); j++) x += charWidth(fontType, text.charAt(j)); } if (effectColor != null) { Color savedColor = g.getColor(); int w = getTextSegmentWidth(text, xStart, fontType); // myBorderEffect.flushIfCantProlong(g, this, effectType, effectColor); if (effectType == EffectType.LINE_UNDERSCORE) { g.setColor(effectColor); g.drawLine(xStart, y + 1, xStart + w, y + 1); g.setColor(savedColor); } else { if (effectType == EffectType.STRIKEOUT) { g.setColor(effectColor); int y1 = y - getCharHeight() / 2; g.drawLine(xStart, y1, xStart + w, y1); g.setColor(savedColor); } else { if (effectType == EffectType.WAVE_UNDERSCORE) { g.setColor(effectColor); drawWave(g, xStart, xStart + w, y + 1); g.setColor(savedColor); } /*else { if (effectType == EffectType.BOXED) { int yStart = y - getLineHeight() + getDescent(); if (!myBorderEffect.isDetached()) myBorderEffect.start(effectColor, start); myBorderEffect.setEndOffset(offset + length); } }*/ } } } /*else myBorderEffect.flushBorder(g, this);*/ return x; }