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.FilterWriterA 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 intATTRIBUTE_BLINK_FASTprotected static intATTRIBUTE_BLINK_OFFprotected static intATTRIBUTE_BLINK_SLOWprotected static intATTRIBUTE_CONCEAL_OFFprotected static intATTRIBUTE_CONCEAL_ONprotected static intATTRIBUTE_INTENSITY_BOLDprotected static intATTRIBUTE_INTENSITY_FAINTprotected static intATTRIBUTE_INTENSITY_NORMALprotected static intATTRIBUTE_ITALICprotected static intATTRIBUTE_NEGATIVE_OffDeprecated.protected static intATTRIBUTE_NEGATIVE_OFFprotected static intATTRIBUTE_NEGATIVE_ONprotected static intATTRIBUTE_UNDERLINEprotected static intATTRIBUTE_UNDERLINE_DOUBLEprotected static intATTRIBUTE_UNDERLINE_OFFprotected static intBLACKprotected static intBLUEprotected static intCYANprotected static intERASE_LINEprotected static intERASE_LINE_TO_BEGININGprotected static intERASE_LINE_TO_ENDprotected static intERASE_SCREENprotected static intERASE_SCREEN_TO_BEGININGprotected static intERASE_SCREEN_TO_ENDprotected static intGREENprotected static intMAGENTAprotected static intREDprotected static intWHITEprotected static intYELLOW
-
Constructor Summary
Constructors Constructor Description AnsiWriter(java.io.Writer out)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()protected voidprocessAttributeRest()processSGR 0corresponding toReset / Normalprotected voidprocessChangeIconName(java.lang.String name)processOSC 1;text BELcorresponding toChange Icon labelprotected voidprocessChangeIconNameAndWindowTitle(java.lang.String label)processOSC 0;text BELcorresponding toChange Window and Icon labelprotected voidprocessChangeWindowTitle(java.lang.String title)processOSC 2;text BELcorresponding toChange Window titleprotected voidprocessCharsetSelect(int set, char seq)protected voidprocessCursorDown(int count)processCSI n Bcorresponding toCUD ? Cursor Downprotected voidprocessCursorDownLine(int count)processCSI n Ecorresponding toCNL ? Cursor Next Lineprotected voidprocessCursorLeft(int count)processCSI n Dcorresponding toCUB ? Cursor Backprotected voidprocessCursorRight(int count)processCSI n Ccorresponding toCUF ? Cursor Forwardprotected voidprocessCursorTo(int row, int col)processCSI n ; m Hcorresponding toCUP ? Cursor PositionorCSI n ; m fcorresponding toHVP ? Horizontal and Vertical Positionprotected voidprocessCursorToColumn(int x)processCSI n Gcorresponding toCHA ? Cursor Horizontal Absoluteprotected voidprocessCursorUp(int count)processCSI n Acorresponding toCUU ? Cursor Upprotected voidprocessCursorUpLine(int count)processCSI n Fcorresponding toCPL ? Cursor Previous Lineprotected voidprocessDefaultBackgroundColor()processSGR 49corresponding toDefault background colorprotected voidprocessDefaultTextColor()processSGR 39corresponding toDefault text color (foreground)protected voidprocessDeleteLine(int optionInt)ProcessCSI sANSI code, corresponding toDL ? Delete Lineprotected voidprocessEraseLine(int eraseOption)ProcessCSI n KANSI code, corresponding toED ? Erase in Lineprotected voidprocessEraseScreen(int eraseOption)ProcessCSI n JANSI code, corresponding toED ? Erase in Displayprotected voidprocessInsertLine(int optionInt)ProcessCSI sANSI code, corresponding toIL ? Insert Lineprotected voidprocessRestoreCursorPosition()ProcessCSI uANSI code, corresponding toRCP ? Restore Cursor Positionprotected voidprocessSaveCursorPosition()ProcessCSI sANSI code, corresponding toSCP ? Save Cursor Positionprotected voidprocessScrollDown(int optionInt)ProcessCSI n TANSI code, corresponding toSD ? Scroll Downprotected voidprocessScrollUp(int optionInt)ProcessCSI n UANSI code, corresponding toSU ? Scroll Upprotected voidprocessSetAttribute(int attribute)processSGRother than0(reset),30-39(foreground),40-49(background),90-97(foreground high intensity) or100-107(background high intensity)protected voidprocessSetBackgroundColor(int color)processSGR 40-47corresponding toSet background color.protected voidprocessSetBackgroundColor(int color, boolean bright)processSGR 40-47orSGR 100-107corresponding toSet background coloreither in normal mode or high intensity.protected voidprocessSetBackgroundColorExt(int paletteIndex)processSGR 48corresponding toextended set background colorwith a palette of 255 colors.protected voidprocessSetBackgroundColorExt(int r, int g, int b)processSGR 48corresponding toextended set background colorwith a 24 bits RGB definition of the color.protected voidprocessSetForegroundColor(int color)processSGR 30-37corresponding toSet text color (foreground).protected voidprocessSetForegroundColor(int color, boolean bright)processSGR 30-37orSGR 90-97corresponding toSet text color (foreground)either in normal mode or high intensity.protected voidprocessSetForegroundColorExt(int paletteIndex)processSGR 38corresponding toextended set text color (foreground)with a palette of 255 colors.protected voidprocessSetForegroundColorExt(int r, int g, int b)processSGR 38corresponding toextended set text color (foreground)with a 24 bits RGB definition of the color.protected voidprocessUnknownExtension(java.util.ArrayList<java.lang.Object> options, int command)protected voidprocessUnknownOperatingSystemCommand(int command, java.lang.String param)Process unknownOSCcommand.voidwrite(char[] cbuf, int off, int len)voidwrite(int data)voidwrite(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:
writein classjava.io.FilterWriter- Throws:
java.io.IOException
-
processRestoreCursorPosition
protected void processRestoreCursorPosition() throws java.io.IOExceptionProcessCSI uANSI code, corresponding toRCP ? Restore Cursor Position- Throws:
java.io.IOException- if an error occurs
-
processSaveCursorPosition
protected void processSaveCursorPosition() throws java.io.IOExceptionProcessCSI sANSI code, corresponding toSCP ? Save Cursor Position- Throws:
java.io.IOException- if an error occurs
-
processInsertLine
protected void processInsertLine(int optionInt) throws java.io.IOExceptionProcessCSI sANSI 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.IOExceptionProcessCSI sANSI 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.IOExceptionProcessCSI n TANSI 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.IOExceptionProcessCSI n UANSI 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.IOExceptionProcessCSI n JANSI 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.IOExceptionProcessCSI n KANSI 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.IOExceptionprocessSGRother 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.IOExceptionprocessSGR 30-37corresponding 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.IOExceptionprocessSGR 30-37orSGR 90-97corresponding 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.IOExceptionprocessSGR 38corresponding 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.IOExceptionprocessSGR 38corresponding 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.IOExceptionprocessSGR 40-47corresponding 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.IOExceptionprocessSGR 40-47orSGR 100-107corresponding toSet background coloreither 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.IOExceptionprocessSGR 48corresponding toextended set background colorwith 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.IOExceptionprocessSGR 48corresponding toextended set background colorwith 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.IOExceptionprocessSGR 39corresponding toDefault text color (foreground)- Throws:
java.io.IOException- if an error occurs
-
processDefaultBackgroundColor
protected void processDefaultBackgroundColor() throws java.io.IOExceptionprocessSGR 49corresponding toDefault background color- Throws:
java.io.IOException- if an error occurs
-
processAttributeRest
protected void processAttributeRest() throws java.io.IOExceptionprocessSGR 0corresponding toReset / Normal- Throws:
java.io.IOException- if an error occurs
-
processCursorTo
protected void processCursorTo(int row, int col) throws java.io.IOExceptionprocessCSI n ; m Hcorresponding toCUP ? Cursor PositionorCSI n ; m fcorresponding 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.IOExceptionprocessCSI n Gcorresponding 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.IOExceptionprocessCSI n Fcorresponding 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.IOExceptionprocessCSI n Ecorresponding 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.IOExceptionprocessCSI n Dcorresponding toCUB ? Cursor Back- Parameters:
count- the count- Throws:
java.io.IOException- if an error occurs
-
processCursorRight
protected void processCursorRight(int count) throws java.io.IOExceptionprocessCSI n Ccorresponding toCUF ? Cursor Forward- Parameters:
count- the count- Throws:
java.io.IOException- if an error occurs
-
processCursorDown
protected void processCursorDown(int count) throws java.io.IOExceptionprocessCSI n Bcorresponding toCUD ? Cursor Down- Parameters:
count- the count- Throws:
java.io.IOException- if an error occurs
-
processCursorUp
protected void processCursorUp(int count) throws java.io.IOExceptionprocessCSI n Acorresponding 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 BELcorresponding toChange Window and Icon label- Parameters:
label- the label
-
processChangeIconName
protected void processChangeIconName(java.lang.String name)
processOSC 1;text BELcorresponding toChange Icon label- Parameters:
name- the icon name
-
processChangeWindowTitle
protected void processChangeWindowTitle(java.lang.String title)
processOSC 2;text BELcorresponding toChange Window title- Parameters:
title- the title
-
processUnknownOperatingSystemCommand
protected void processUnknownOperatingSystemCommand(int command, java.lang.String param)Process unknownOSCcommand.- 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:
writein classjava.io.FilterWriter- Throws:
java.io.IOException
-
write
public void write(java.lang.String str, int off, int len) throws java.io.IOException- Overrides:
writein classjava.io.FilterWriter- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.FilterWriter- Throws:
java.io.IOException
-
-