Class AnsiWriter
- java.lang.Object
-
- java.io.Writer
-
- java.io.FilterWriter
-
- org.jline.utils.AnsiWriter
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.Flushable
,java.lang.Appendable
,java.lang.AutoCloseable
public class AnsiWriter extends java.io.FilterWriter
A writer that processes ANSI escape sequences.The AnsiWriter class extends FilterWriter to intercept and process ANSI escape sequences written to the underlying writer. It extracts ANSI escape codes and calls corresponding
process*
methods for each recognized sequence.This class just filters out the escape codes so that they are not sent out to the underlying
Writer
:process*
methods are empty. Subclasses should actually perform the ANSI escape behaviors by implementing active code inprocess*
methods.This class is useful for implementing terminal emulation, where ANSI escape sequences need to be interpreted to control cursor movement, text attributes, colors, and other terminal features.
The class handles various ANSI escape sequences, including:
- Cursor movement (up, down, left, right)
- Cursor positioning (absolute and relative)
- Text attributes (bold, underline, blink, etc.)
- Colors (foreground and background)
- Screen clearing and line manipulation
For more information about ANSI escape codes, see: Wikipedia: ANSI escape code
- Since:
- 1.0
-
-
Field Summary
Fields Modifier and Type Field Description protected static int
ATTRIBUTE_BLINK_FAST
protected static int
ATTRIBUTE_BLINK_OFF
protected static int
ATTRIBUTE_BLINK_SLOW
protected static int
ATTRIBUTE_CONCEAL_OFF
protected static int
ATTRIBUTE_CONCEAL_ON
protected static int
ATTRIBUTE_INTENSITY_BOLD
protected static int
ATTRIBUTE_INTENSITY_FAINT
protected static int
ATTRIBUTE_INTENSITY_NORMAL
protected static int
ATTRIBUTE_ITALIC
protected static int
ATTRIBUTE_NEGATIVE_Off
Deprecated.protected static int
ATTRIBUTE_NEGATIVE_OFF
protected static int
ATTRIBUTE_NEGATIVE_ON
protected static int
ATTRIBUTE_UNDERLINE
protected static int
ATTRIBUTE_UNDERLINE_DOUBLE
protected static int
ATTRIBUTE_UNDERLINE_OFF
protected static int
BLACK
protected static int
BLUE
protected static int
CYAN
protected static int
ERASE_LINE
protected static int
ERASE_LINE_TO_BEGINING
protected static int
ERASE_LINE_TO_END
protected static int
ERASE_SCREEN
protected static int
ERASE_SCREEN_TO_BEGINING
protected static int
ERASE_SCREEN_TO_END
protected static int
GREEN
protected static int
MAGENTA
protected static int
RED
protected static int
WHITE
protected static int
YELLOW
-
Constructor Summary
Constructors Constructor Description AnsiWriter(java.io.Writer out)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
protected void
processAttributeRest()
processSGR 0
corresponding toReset / Normal
protected void
processChangeIconName(java.lang.String name)
processOSC 1;text BEL
corresponding toChange Icon label
protected void
processChangeIconNameAndWindowTitle(java.lang.String label)
processOSC 0;text BEL
corresponding toChange Window and Icon label
protected void
processChangeWindowTitle(java.lang.String title)
processOSC 2;text BEL
corresponding toChange Window title
protected void
processCharsetSelect(int set, char seq)
protected void
processCursorDown(int count)
processCSI n B
corresponding toCUD ? Cursor Down
protected void
processCursorDownLine(int count)
processCSI n E
corresponding toCNL ? Cursor Next Line
protected void
processCursorLeft(int count)
processCSI n D
corresponding toCUB ? Cursor Back
protected void
processCursorRight(int count)
processCSI n C
corresponding toCUF ? Cursor Forward
protected void
processCursorTo(int row, int col)
processCSI n ; m H
corresponding toCUP ? Cursor Position
orCSI n ; m f
corresponding toHVP ? Horizontal and Vertical Position
protected void
processCursorToColumn(int x)
processCSI n G
corresponding toCHA ? Cursor Horizontal Absolute
protected void
processCursorUp(int count)
processCSI n A
corresponding toCUU ? Cursor Up
protected void
processCursorUpLine(int count)
processCSI n F
corresponding toCPL ? Cursor Previous Line
protected void
processDefaultBackgroundColor()
processSGR 49
corresponding toDefault background color
protected void
processDefaultTextColor()
processSGR 39
corresponding toDefault text color (foreground)
protected void
processDeleteLine(int optionInt)
ProcessCSI s
ANSI code, corresponding toDL ? Delete Line
protected void
processEraseLine(int eraseOption)
ProcessCSI n K
ANSI code, corresponding toED ? Erase in Line
protected void
processEraseScreen(int eraseOption)
ProcessCSI n J
ANSI code, corresponding toED ? Erase in Display
protected void
processInsertLine(int optionInt)
ProcessCSI s
ANSI code, corresponding toIL ? Insert Line
protected void
processRestoreCursorPosition()
ProcessCSI u
ANSI code, corresponding toRCP ? Restore Cursor Position
protected void
processSaveCursorPosition()
ProcessCSI s
ANSI code, corresponding toSCP ? Save Cursor Position
protected void
processScrollDown(int optionInt)
ProcessCSI n T
ANSI code, corresponding toSD ? Scroll Down
protected void
processScrollUp(int optionInt)
ProcessCSI n U
ANSI code, corresponding toSU ? Scroll Up
protected void
processSetAttribute(int attribute)
processSGR
other than0
(reset),30-39
(foreground),40-49
(background),90-97
(foreground high intensity) or100-107
(background high intensity)protected void
processSetBackgroundColor(int color)
processSGR 40-47
corresponding toSet background color
.protected void
processSetBackgroundColor(int color, boolean bright)
processSGR 40-47
orSGR 100-107
corresponding toSet background color
either in normal mode or high intensity.protected void
processSetBackgroundColorExt(int paletteIndex)
processSGR 48
corresponding toextended set background color
with a palette of 255 colors.protected void
processSetBackgroundColorExt(int r, int g, int b)
processSGR 48
corresponding toextended set background color
with a 24 bits RGB definition of the color.protected void
processSetForegroundColor(int color)
processSGR 30-37
corresponding toSet text color (foreground)
.protected void
processSetForegroundColor(int color, boolean bright)
processSGR 30-37
orSGR 90-97
corresponding toSet text color (foreground)
either in normal mode or high intensity.protected void
processSetForegroundColorExt(int paletteIndex)
processSGR 38
corresponding toextended set text color (foreground)
with a palette of 255 colors.protected void
processSetForegroundColorExt(int r, int g, int b)
processSGR 38
corresponding toextended set text color (foreground)
with a 24 bits RGB definition of the color.protected void
processUnknownExtension(java.util.ArrayList<java.lang.Object> options, int command)
protected void
processUnknownOperatingSystemCommand(int command, java.lang.String param)
Process unknownOSC
command.void
write(char[] cbuf, int off, int len)
void
write(int data)
void
write(java.lang.String str, int off, int len)
-
-
-
Field Detail
-
ERASE_SCREEN_TO_END
protected static final int ERASE_SCREEN_TO_END
- See Also:
- Constant Field Values
-
ERASE_SCREEN_TO_BEGINING
protected static final int ERASE_SCREEN_TO_BEGINING
- See Also:
- Constant Field Values
-
ERASE_SCREEN
protected static final int ERASE_SCREEN
- See Also:
- Constant Field Values
-
ERASE_LINE_TO_END
protected static final int ERASE_LINE_TO_END
- See Also:
- Constant Field Values
-
ERASE_LINE_TO_BEGINING
protected static final int ERASE_LINE_TO_BEGINING
- See Also:
- Constant Field Values
-
ERASE_LINE
protected static final int ERASE_LINE
- See Also:
- Constant Field Values
-
ATTRIBUTE_INTENSITY_BOLD
protected static final int ATTRIBUTE_INTENSITY_BOLD
- See Also:
- Constant Field Values
-
ATTRIBUTE_INTENSITY_FAINT
protected static final int ATTRIBUTE_INTENSITY_FAINT
- See Also:
- Constant Field Values
-
ATTRIBUTE_ITALIC
protected static final int ATTRIBUTE_ITALIC
- See Also:
- Constant Field Values
-
ATTRIBUTE_UNDERLINE
protected static final int ATTRIBUTE_UNDERLINE
- See Also:
- Constant Field Values
-
ATTRIBUTE_BLINK_SLOW
protected static final int ATTRIBUTE_BLINK_SLOW
- See Also:
- Constant Field Values
-
ATTRIBUTE_BLINK_FAST
protected static final int ATTRIBUTE_BLINK_FAST
- See Also:
- Constant Field Values
-
ATTRIBUTE_NEGATIVE_ON
protected static final int ATTRIBUTE_NEGATIVE_ON
- See Also:
- Constant Field Values
-
ATTRIBUTE_CONCEAL_ON
protected static final int ATTRIBUTE_CONCEAL_ON
- See Also:
- Constant Field Values
-
ATTRIBUTE_UNDERLINE_DOUBLE
protected static final int ATTRIBUTE_UNDERLINE_DOUBLE
- See Also:
- Constant Field Values
-
ATTRIBUTE_INTENSITY_NORMAL
protected static final int ATTRIBUTE_INTENSITY_NORMAL
- See Also:
- Constant Field Values
-
ATTRIBUTE_UNDERLINE_OFF
protected static final int ATTRIBUTE_UNDERLINE_OFF
- See Also:
- Constant Field Values
-
ATTRIBUTE_BLINK_OFF
protected static final int ATTRIBUTE_BLINK_OFF
- See Also:
- Constant Field Values
-
ATTRIBUTE_NEGATIVE_Off
@Deprecated protected static final int ATTRIBUTE_NEGATIVE_Off
Deprecated.- See Also:
- Constant Field Values
-
ATTRIBUTE_NEGATIVE_OFF
protected static final int ATTRIBUTE_NEGATIVE_OFF
- See Also:
- Constant Field Values
-
ATTRIBUTE_CONCEAL_OFF
protected static final int ATTRIBUTE_CONCEAL_OFF
- See Also:
- Constant Field Values
-
BLACK
protected static final int BLACK
- See Also:
- Constant Field Values
-
RED
protected static final int RED
- See Also:
- Constant Field Values
-
GREEN
protected static final int GREEN
- See Also:
- Constant Field Values
-
YELLOW
protected static final int YELLOW
- See Also:
- Constant Field Values
-
BLUE
protected static final int BLUE
- See Also:
- Constant Field Values
-
MAGENTA
protected static final int MAGENTA
- See Also:
- Constant Field Values
-
CYAN
protected static final int CYAN
- See Also:
- Constant Field Values
-
WHITE
protected static final int WHITE
- See Also:
- Constant Field Values
-
-
Method Detail
-
write
public void write(int data) throws java.io.IOException
- Overrides:
write
in classjava.io.FilterWriter
- Throws:
java.io.IOException
-
processRestoreCursorPosition
protected void processRestoreCursorPosition() throws java.io.IOException
ProcessCSI u
ANSI code, corresponding toRCP ? Restore Cursor Position
- Throws:
java.io.IOException
- if an error occurs
-
processSaveCursorPosition
protected void processSaveCursorPosition() throws java.io.IOException
ProcessCSI s
ANSI code, corresponding toSCP ? Save Cursor Position
- Throws:
java.io.IOException
- if an error occurs
-
processInsertLine
protected void processInsertLine(int optionInt) throws java.io.IOException
ProcessCSI s
ANSI code, corresponding toIL ? Insert Line
- Parameters:
optionInt
- the option- Throws:
java.io.IOException
- if an error occurs
-
processDeleteLine
protected void processDeleteLine(int optionInt) throws java.io.IOException
ProcessCSI s
ANSI code, corresponding toDL ? Delete Line
- Parameters:
optionInt
- the option- Throws:
java.io.IOException
- if an error occurs
-
processScrollDown
protected void processScrollDown(int optionInt) throws java.io.IOException
ProcessCSI n T
ANSI code, corresponding toSD ? Scroll Down
- Parameters:
optionInt
- the option- Throws:
java.io.IOException
- if an error occurs
-
processScrollUp
protected void processScrollUp(int optionInt) throws java.io.IOException
ProcessCSI n U
ANSI code, corresponding toSU ? Scroll Up
- Parameters:
optionInt
- the option- Throws:
java.io.IOException
- if an error occurs
-
processEraseScreen
protected void processEraseScreen(int eraseOption) throws java.io.IOException
ProcessCSI n J
ANSI code, corresponding toED ? Erase in Display
- Parameters:
eraseOption
- the erase option- Throws:
java.io.IOException
- if an error occurs
-
processEraseLine
protected void processEraseLine(int eraseOption) throws java.io.IOException
ProcessCSI n K
ANSI code, corresponding toED ? Erase in Line
- Parameters:
eraseOption
- the erase option- Throws:
java.io.IOException
- if an error occurs
-
processSetAttribute
protected void processSetAttribute(int attribute) throws java.io.IOException
processSGR
other than0
(reset),30-39
(foreground),40-49
(background),90-97
(foreground high intensity) or100-107
(background high intensity)- Parameters:
attribute
- the attribute to set- Throws:
java.io.IOException
- if an error occurs- See Also:
processAttributeRest()
,processSetForegroundColor(int)
,processSetForegroundColor(int, boolean)
,processSetForegroundColorExt(int)
,processSetForegroundColorExt(int, int, int)
,processDefaultTextColor()
,processDefaultBackgroundColor()
-
processSetForegroundColor
protected void processSetForegroundColor(int color) throws java.io.IOException
processSGR 30-37
corresponding toSet text color (foreground)
.- Parameters:
color
- the text color- Throws:
java.io.IOException
- if an error occurs
-
processSetForegroundColor
protected void processSetForegroundColor(int color, boolean bright) throws java.io.IOException
processSGR 30-37
orSGR 90-97
corresponding toSet text color (foreground)
either in normal mode or high intensity.- Parameters:
color
- the text colorbright
- is high intensity?- Throws:
java.io.IOException
- if an error occurs
-
processSetForegroundColorExt
protected void processSetForegroundColorExt(int paletteIndex) throws java.io.IOException
processSGR 38
corresponding toextended set text color (foreground)
with a palette of 255 colors.- Parameters:
paletteIndex
- the text color in the palette- Throws:
java.io.IOException
- if an error occurs
-
processSetForegroundColorExt
protected void processSetForegroundColorExt(int r, int g, int b) throws java.io.IOException
processSGR 38
corresponding toextended set text color (foreground)
with a 24 bits RGB definition of the color.- Parameters:
r
- redg
- greenb
- blue- Throws:
java.io.IOException
- if an error occurs
-
processSetBackgroundColor
protected void processSetBackgroundColor(int color) throws java.io.IOException
processSGR 40-47
corresponding toSet background color
.- Parameters:
color
- the background color- Throws:
java.io.IOException
- if an error occurs
-
processSetBackgroundColor
protected void processSetBackgroundColor(int color, boolean bright) throws java.io.IOException
processSGR 40-47
orSGR 100-107
corresponding toSet background color
either in normal mode or high intensity.- Parameters:
color
- the background colorbright
- is high intensity?- Throws:
java.io.IOException
- if an error occurs
-
processSetBackgroundColorExt
protected void processSetBackgroundColorExt(int paletteIndex) throws java.io.IOException
processSGR 48
corresponding toextended set background color
with a palette of 255 colors.- Parameters:
paletteIndex
- the background color in the palette- Throws:
java.io.IOException
- if an error occurs
-
processSetBackgroundColorExt
protected void processSetBackgroundColorExt(int r, int g, int b) throws java.io.IOException
processSGR 48
corresponding toextended set background color
with a 24 bits RGB definition of the color.- Parameters:
r
- redg
- greenb
- blue- Throws:
java.io.IOException
- if an error occurs
-
processDefaultTextColor
protected void processDefaultTextColor() throws java.io.IOException
processSGR 39
corresponding toDefault text color (foreground)
- Throws:
java.io.IOException
- if an error occurs
-
processDefaultBackgroundColor
protected void processDefaultBackgroundColor() throws java.io.IOException
processSGR 49
corresponding toDefault background color
- Throws:
java.io.IOException
- if an error occurs
-
processAttributeRest
protected void processAttributeRest() throws java.io.IOException
processSGR 0
corresponding toReset / Normal
- Throws:
java.io.IOException
- if an error occurs
-
processCursorTo
protected void processCursorTo(int row, int col) throws java.io.IOException
processCSI n ; m H
corresponding toCUP ? Cursor Position
orCSI n ; m f
corresponding toHVP ? Horizontal and Vertical Position
- Parameters:
row
- the rowcol
- the column- Throws:
java.io.IOException
- if an error occurs
-
processCursorToColumn
protected void processCursorToColumn(int x) throws java.io.IOException
processCSI n G
corresponding toCHA ? Cursor Horizontal Absolute
- Parameters:
x
- the column- Throws:
java.io.IOException
- if an error occurs
-
processCursorUpLine
protected void processCursorUpLine(int count) throws java.io.IOException
processCSI n F
corresponding toCPL ? Cursor Previous Line
- Parameters:
count
- line count- Throws:
java.io.IOException
- if an error occurs
-
processCursorDownLine
protected void processCursorDownLine(int count) throws java.io.IOException
processCSI n E
corresponding toCNL ? Cursor Next Line
- Parameters:
count
- line count- Throws:
java.io.IOException
- if an error occurs
-
processCursorLeft
protected void processCursorLeft(int count) throws java.io.IOException
processCSI n D
corresponding toCUB ? Cursor Back
- Parameters:
count
- the count- Throws:
java.io.IOException
- if an error occurs
-
processCursorRight
protected void processCursorRight(int count) throws java.io.IOException
processCSI n C
corresponding toCUF ? Cursor Forward
- Parameters:
count
- the count- Throws:
java.io.IOException
- if an error occurs
-
processCursorDown
protected void processCursorDown(int count) throws java.io.IOException
processCSI n B
corresponding toCUD ? Cursor Down
- Parameters:
count
- the count- Throws:
java.io.IOException
- if an error occurs
-
processCursorUp
protected void processCursorUp(int count) throws java.io.IOException
processCSI n A
corresponding toCUU ? Cursor Up
- Parameters:
count
- the count- Throws:
java.io.IOException
- if an error occurs
-
processUnknownExtension
protected void processUnknownExtension(java.util.ArrayList<java.lang.Object> options, int command)
-
processChangeIconNameAndWindowTitle
protected void processChangeIconNameAndWindowTitle(java.lang.String label)
processOSC 0;text BEL
corresponding toChange Window and Icon label
- Parameters:
label
- the label
-
processChangeIconName
protected void processChangeIconName(java.lang.String name)
processOSC 1;text BEL
corresponding toChange Icon label
- Parameters:
name
- the icon name
-
processChangeWindowTitle
protected void processChangeWindowTitle(java.lang.String title)
processOSC 2;text BEL
corresponding toChange Window title
- Parameters:
title
- the title
-
processUnknownOperatingSystemCommand
protected void processUnknownOperatingSystemCommand(int command, java.lang.String param)
Process unknownOSC
command.- Parameters:
command
- the commandparam
- the param
-
processCharsetSelect
protected void processCharsetSelect(int set, char seq)
-
write
public void write(char[] cbuf, int off, int len) throws java.io.IOException
- Overrides:
write
in classjava.io.FilterWriter
- Throws:
java.io.IOException
-
write
public void write(java.lang.String str, int off, int len) throws java.io.IOException
- Overrides:
write
in classjava.io.FilterWriter
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.FilterWriter
- Throws:
java.io.IOException
-
-