mirror of
https://github.com/SuspiciousActivity/ByteEdit.git
synced 2026-08-13 17:56:17 +00:00
Fixes and updates
This commit is contained in:
1 parent
d1710ea6a5
commit
fb4da77359
211 files changed
+45363
-45571
No files matched your search
@@ -20,22 +20,22 @@ import javax.swing.text.TabExpander;
|
||||
* @version 1.0
|
||||
*/
|
||||
class DefaultTokenPainter implements TokenPainter {
|
||||
|
||||
|
||||
/**
|
||||
* Rectangle used for filling token backgrounds.
|
||||
*/
|
||||
private Rectangle2D.Float bgRect;
|
||||
/**
|
||||
* Micro-optimization; buffer used to compute tab width. If the width is
|
||||
* correct it's not re-allocated, to prevent lots of very small garbage.
|
||||
* Only used when painting tab lines.
|
||||
* Micro-optimization; buffer used to compute tab width. If the width is correct
|
||||
* it's not re-allocated, to prevent lots of very small garbage. Only used when
|
||||
* painting tab lines.
|
||||
*/
|
||||
private static char[] tabBuf;
|
||||
|
||||
|
||||
DefaultTokenPainter() {
|
||||
bgRect = new Rectangle2D.Float();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@@ -43,57 +43,51 @@ class DefaultTokenPainter implements TokenPainter {
|
||||
public final float paint(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e) {
|
||||
return paint(token, g, x, y, host, e, 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public float paint(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e, float clipStart) {
|
||||
public float paint(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e,
|
||||
float clipStart) {
|
||||
return paintImpl(token, g, x, y, host, e, clipStart, false, false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public float paint(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e, float clipStart, boolean paintBG) {
|
||||
public float paint(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e,
|
||||
float clipStart, boolean paintBG) {
|
||||
return paintImpl(token, g, x, y, host, e, clipStart, !paintBG, false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Paints the background of a token.
|
||||
*
|
||||
* @param x
|
||||
* The x-coordinate of the token.
|
||||
* @param y
|
||||
* The y-coordinate of the token.
|
||||
* @param width
|
||||
* The width of the token (actually, the width of the part of
|
||||
* the token to paint).
|
||||
* @param height
|
||||
* The height of the token.
|
||||
* @param g
|
||||
* The graphics context with which to paint.
|
||||
* @param fontAscent
|
||||
* The ascent of the token's font.
|
||||
* @param host
|
||||
* The text area.
|
||||
* @param color
|
||||
* The color with which to paint.
|
||||
* @param x The x-coordinate of the token.
|
||||
* @param y The y-coordinate of the token.
|
||||
* @param width The width of the token (actually, the width of the part of
|
||||
* the token to paint).
|
||||
* @param height The height of the token.
|
||||
* @param g The graphics context with which to paint.
|
||||
* @param fontAscent The ascent of the token's font.
|
||||
* @param host The text area.
|
||||
* @param color The color with which to paint.
|
||||
*/
|
||||
protected void paintBackground(float x, float y, float width, float height, Graphics2D g, int fontAscent, RSyntaxTextArea host,
|
||||
Color color) {
|
||||
protected void paintBackground(float x, float y, float width, float height, Graphics2D g, int fontAscent,
|
||||
RSyntaxTextArea host, Color color) {
|
||||
g.setColor(color);
|
||||
bgRect.setRect(x, y - fontAscent, width, height);
|
||||
// g.fill(bgRect);
|
||||
g.fillRect((int) x, (int) (y - fontAscent), (int) width, (int) height);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Does the dirty-work of actually painting the token.
|
||||
*/
|
||||
protected float paintImpl(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e, float clipStart,
|
||||
boolean selected, boolean useSTC) {
|
||||
protected float paintImpl(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e,
|
||||
float clipStart, boolean selected, boolean useSTC) {
|
||||
int origX = (int) x;
|
||||
int textOffs = token.getTextOffset();
|
||||
char[] text = token.getTextArray();
|
||||
@@ -107,22 +101,22 @@ class DefaultTokenPainter implements TokenPainter {
|
||||
FontMetrics fm = host.getFontMetricsForTokenType(token.getType());
|
||||
for (int i = textOffs; i < end; i++) {
|
||||
switch (text[i]) {
|
||||
case '\t':
|
||||
nextX = e.nextTabStop(x + fm.charsWidth(text, flushIndex, flushLen), 0);
|
||||
if (bg != null) {
|
||||
paintBackground(x, y, nextX - x, fm.getHeight(), g, fm.getAscent(), host, bg);
|
||||
}
|
||||
if (flushLen > 0) {
|
||||
g.setColor(fg);
|
||||
g.drawChars(text, flushIndex, flushLen, (int) x, (int) y);
|
||||
flushLen = 0;
|
||||
}
|
||||
flushIndex = i + 1;
|
||||
x = nextX;
|
||||
break;
|
||||
default:
|
||||
flushLen += 1;
|
||||
break;
|
||||
case '\t':
|
||||
nextX = e.nextTabStop(x + fm.charsWidth(text, flushIndex, flushLen), 0);
|
||||
if (bg != null) {
|
||||
paintBackground(x, y, nextX - x, fm.getHeight(), g, fm.getAscent(), host, bg);
|
||||
}
|
||||
if (flushLen > 0) {
|
||||
g.setColor(fg);
|
||||
g.drawChars(text, flushIndex, flushLen, (int) x, (int) y);
|
||||
flushLen = 0;
|
||||
}
|
||||
flushIndex = i + 1;
|
||||
x = nextX;
|
||||
break;
|
||||
default:
|
||||
flushLen += 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
nextX = x + fm.charsWidth(text, flushIndex, flushLen);
|
||||
@@ -152,48 +146,43 @@ class DefaultTokenPainter implements TokenPainter {
|
||||
}
|
||||
return nextX;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public float paintSelected(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e, boolean useSTC) {
|
||||
public float paintSelected(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e,
|
||||
boolean useSTC) {
|
||||
return paintSelected(token, g, x, y, host, e, 0, useSTC);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public float paintSelected(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e, float clipStart,
|
||||
boolean useSTC) {
|
||||
public float paintSelected(Token token, Graphics2D g, float x, float y, RSyntaxTextArea host, TabExpander e,
|
||||
float clipStart, boolean useSTC) {
|
||||
return paintImpl(token, g, x, y, host, e, clipStart, true, useSTC);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Paints dotted "tab" lines; that is, lines that show where your caret
|
||||
* would go to on the line if you hit "tab". This visual effect is usually
|
||||
* done in the leading whitespace token(s) of lines.
|
||||
* Paints dotted "tab" lines; that is, lines that show where your caret would go
|
||||
* to on the line if you hit "tab". This visual effect is usually done in the
|
||||
* leading whitespace token(s) of lines.
|
||||
*
|
||||
* @param token
|
||||
* The token to render.
|
||||
* @param x
|
||||
* The starting x-offset of this token. It is assumed that this
|
||||
* is the left margin of the text area (may be non-zero due to
|
||||
* insets), since tab lines are only painted for leading
|
||||
* whitespace.
|
||||
* @param y
|
||||
* The baseline where this token was painted.
|
||||
* @param endX
|
||||
* The ending x-offset of this token.
|
||||
* @param g
|
||||
* The graphics context.
|
||||
* @param e
|
||||
* Used to expand tabs.
|
||||
* @param host
|
||||
* The text area.
|
||||
* @param token The token to render.
|
||||
* @param x The starting x-offset of this token. It is assumed that this is
|
||||
* the left margin of the text area (may be non-zero due to
|
||||
* insets), since tab lines are only painted for leading
|
||||
* whitespace.
|
||||
* @param y The baseline where this token was painted.
|
||||
* @param endX The ending x-offset of this token.
|
||||
* @param g The graphics context.
|
||||
* @param e Used to expand tabs.
|
||||
* @param host The text area.
|
||||
*/
|
||||
protected void paintTabLines(Token token, int x, int y, int endX, Graphics2D g, TabExpander e, RSyntaxTextArea host) {
|
||||
protected void paintTabLines(Token token, int x, int y, int endX, Graphics2D g, TabExpander e,
|
||||
RSyntaxTextArea host) {
|
||||
// We allow tab lines to be painted in more than just Token.WHITESPACE,
|
||||
// i.e. for MLC's and Token.IDENTIFIERS (for TokenMakers that return
|
||||
// whitespace as identifiers for performance). But we only paint tab
|
||||
|
||||
Reference in new issue
Block a user