Package org.fusesource.jansi
Class AnsiPrintStream
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FilterOutputStream
-
- java.io.PrintStream
-
- org.fusesource.jansi.FilterPrintStream
-
- org.fusesource.jansi.AnsiPrintStream
-
- All Implemented Interfaces:
java.io.Closeable,java.io.Flushable,java.lang.Appendable,java.lang.AutoCloseable
public class AnsiPrintStream extends FilterPrintStream
A ANSI print stream extracts ANSI escape codes written to a print stream and calls correspondingprocess*methods.For more information about ANSI escape codes, see Wikipedia article
This class just filters out the escape codes so that they are not sent out to the underlying OutputStream:
process*methods are empty. Subclasses should actually perform the ANSI escape behaviors by implementing active code inprocess*methods.- Since:
- 1.7
- See Also:
AnsiOutputStream
-
-
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_OFFprivate static intBELprotected static intBLACKprotected static intBLUEprivate byte[]bufferprotected 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_ENDprivate static intFIRST_ESC_CHARprotected static intGREENprivate static intLOOKING_FOR_CHARSETprivate static intLOOKING_FOR_FIRST_ESC_CHARprivate static intLOOKING_FOR_INT_ARG_ENDprivate static intLOOKING_FOR_NEXT_ARGprivate static intLOOKING_FOR_OSC_COMMANDprivate static intLOOKING_FOR_OSC_COMMAND_ENDprivate static intLOOKING_FOR_OSC_PARAMprivate static intLOOKING_FOR_SECOND_ESC_CHARprivate static intLOOKING_FOR_STprivate static intLOOKING_FOR_STR_ARG_ENDprotected static intMAGENTAprivate static intMAX_ESCAPE_SEQUENCE_LENGTHprivate java.util.ArrayList<java.lang.Object>optionsprivate intposprotected static intREDstatic java.lang.StringRESET_CODEprivate static intSECOND_CHARSET0_CHARprivate static intSECOND_CHARSET1_CHARprivate static intSECOND_ESC_CHARprivate static intSECOND_OSC_CHARprivate static intSECOND_ST_CHARprivate intstartOfValue(package private) intstateprotected static intWHITEprotected static intYELLOW-
Fields inherited from class org.fusesource.jansi.FilterPrintStream
ps
-
-
Constructor Summary
Constructors Constructor Description AnsiPrintStream(java.io.PrintStream ps)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()protected booleanfilter(int data)Filter the contentprivate intgetNextOptionInt(java.util.Iterator<java.lang.Object> optionsIterator)Helper for processEscapeCommand() to iterate over integer optionsprivate intoptionInt(java.util.ArrayList<java.lang.Object> options, int index)private intoptionInt(java.util.ArrayList<java.lang.Object> options, int index, int defaultValue)protected voidprocessAttributeRest()processSGR 0corresponding toReset / Normalprotected voidprocessChangeIconName(java.lang.String label)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 label)processOSC 2;text BELcorresponding toChange Window titleprotected voidprocessCharsetSelect(int set, char seq)private booleanprocessCharsetSelect(java.util.ArrayList<java.lang.Object> options)Process character set sequence.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 MANSI 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 Displayprivate booleanprocessEscapeCommand(java.util.ArrayList<java.lang.Object> options, int command)protected voidprocessInsertLine(int optionInt)ProcessCSI LANSI code, corresponding toIL – Insert Lineprivate booleanprocessOperatingSystemCommand(java.util.ArrayList<java.lang.Object> options)protected 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)Process Unknown Extensionprotected voidprocessUnknownOperatingSystemCommand(int command, java.lang.String param)Process unknownOSCcommand.private voidreset(boolean skipBuffer)Resets all state to continue with regular parsing-
Methods inherited from class org.fusesource.jansi.FilterPrintStream
checkError, flush, print, print, print, print, print, print, print, print, print, println, println, println, println, println, println, println, println, println, println, write, write
-
-
-
-
Field Detail
-
RESET_CODE
public static final java.lang.String RESET_CODE
- See Also:
- Constant Field Values
-
MAX_ESCAPE_SEQUENCE_LENGTH
private static final int MAX_ESCAPE_SEQUENCE_LENGTH
- See Also:
- Constant Field Values
-
buffer
private final byte[] buffer
-
pos
private int pos
-
startOfValue
private int startOfValue
-
options
private final java.util.ArrayList<java.lang.Object> options
-
LOOKING_FOR_FIRST_ESC_CHAR
private static final int LOOKING_FOR_FIRST_ESC_CHAR
- See Also:
- Constant Field Values
-
LOOKING_FOR_SECOND_ESC_CHAR
private static final int LOOKING_FOR_SECOND_ESC_CHAR
- See Also:
- Constant Field Values
-
LOOKING_FOR_NEXT_ARG
private static final int LOOKING_FOR_NEXT_ARG
- See Also:
- Constant Field Values
-
LOOKING_FOR_STR_ARG_END
private static final int LOOKING_FOR_STR_ARG_END
- See Also:
- Constant Field Values
-
LOOKING_FOR_INT_ARG_END
private static final int LOOKING_FOR_INT_ARG_END
- See Also:
- Constant Field Values
-
LOOKING_FOR_OSC_COMMAND
private static final int LOOKING_FOR_OSC_COMMAND
- See Also:
- Constant Field Values
-
LOOKING_FOR_OSC_COMMAND_END
private static final int LOOKING_FOR_OSC_COMMAND_END
- See Also:
- Constant Field Values
-
LOOKING_FOR_OSC_PARAM
private static final int LOOKING_FOR_OSC_PARAM
- See Also:
- Constant Field Values
-
LOOKING_FOR_ST
private static final int LOOKING_FOR_ST
- See Also:
- Constant Field Values
-
LOOKING_FOR_CHARSET
private static final int LOOKING_FOR_CHARSET
- See Also:
- Constant Field Values
-
state
int state
-
FIRST_ESC_CHAR
private static final int FIRST_ESC_CHAR
- See Also:
- Constant Field Values
-
SECOND_ESC_CHAR
private static final int SECOND_ESC_CHAR
- See Also:
- Constant Field Values
-
SECOND_OSC_CHAR
private static final int SECOND_OSC_CHAR
- See Also:
- Constant Field Values
-
BEL
private static final int BEL
- See Also:
- Constant Field Values
-
SECOND_ST_CHAR
private static final int SECOND_ST_CHAR
- See Also:
- Constant Field Values
-
SECOND_CHARSET0_CHAR
private static final int SECOND_CHARSET0_CHAR
- See Also:
- Constant Field Values
-
SECOND_CHARSET1_CHAR
private static final int SECOND_CHARSET1_CHAR
- See Also:
- Constant Field Values
-
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
-
filter
protected boolean filter(int data)
Description copied from class:FilterPrintStreamFilter the content- Overrides:
filterin classFilterPrintStream- Parameters:
data- character to filter- Returns:
trueif the data is not filtered then has to be printed to delegate PrintStream
-
reset
private void reset(boolean skipBuffer)
Resets all state to continue with regular parsing- Parameters:
skipBuffer- if current buffer should be skipped or written to out
-
getNextOptionInt
private int getNextOptionInt(java.util.Iterator<java.lang.Object> optionsIterator) throws java.io.IOExceptionHelper for processEscapeCommand() to iterate over integer options- Parameters:
optionsIterator- the underlying iterator- Throws:
java.io.IOException- if no more non-null values left
-
processEscapeCommand
private boolean processEscapeCommand(java.util.ArrayList<java.lang.Object> options, int command)- Parameters:
options-command-- Returns:
- true if the escape command was processed.
-
processOperatingSystemCommand
private boolean processOperatingSystemCommand(java.util.ArrayList<java.lang.Object> options)
- Parameters:
options-- Returns:
- true if the operating system command was processed.
-
processRestoreCursorPosition
protected void processRestoreCursorPosition() throws java.io.IOExceptionProcessCSI uANSI code, corresponding toRCP – Restore Cursor Position- Throws:
java.io.IOException- IOException
-
processSaveCursorPosition
protected void processSaveCursorPosition() throws java.io.IOExceptionProcessCSI sANSI code, corresponding toSCP – Save Cursor Position- Throws:
java.io.IOException- IOException
-
processInsertLine
protected void processInsertLine(int optionInt) throws java.io.IOExceptionProcessCSI LANSI code, corresponding toIL – Insert Line- Parameters:
optionInt- option- Throws:
java.io.IOException- IOException- Since:
- 1.16
-
processDeleteLine
protected void processDeleteLine(int optionInt) throws java.io.IOExceptionProcessCSI MANSI code, corresponding toDL – Delete Line- Parameters:
optionInt- option- Throws:
java.io.IOException- IOException- Since:
- 1.16
-
processScrollDown
protected void processScrollDown(int optionInt) throws java.io.IOExceptionProcessCSI n TANSI code, corresponding toSD – Scroll Down- Parameters:
optionInt- option- Throws:
java.io.IOException- IOException
-
processScrollUp
protected void processScrollUp(int optionInt) throws java.io.IOExceptionProcessCSI n UANSI code, corresponding toSU – Scroll Up- Parameters:
optionInt- option- Throws:
java.io.IOException- IOException
-
processEraseScreen
protected void processEraseScreen(int eraseOption) throws java.io.IOExceptionProcessCSI n JANSI code, corresponding toED – Erase in Display- Parameters:
eraseOption- eraseOption- Throws:
java.io.IOException- IOException
-
processEraseLine
protected void processEraseLine(int eraseOption) throws java.io.IOExceptionProcessCSI n KANSI code, corresponding toED – Erase in Line- Parameters:
eraseOption- eraseOption- Throws:
java.io.IOException- IOException
-
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- attribute- Throws:
java.io.IOException- IOException- 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- IOException
-
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- IOException
-
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- IOException
-
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- IOException
-
processSetBackgroundColor
protected void processSetBackgroundColor(int color) throws java.io.IOExceptionprocessSGR 40-47corresponding toSet background color.- Parameters:
color- the background color- Throws:
java.io.IOException- IOException
-
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- IOException
-
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- IOException
-
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- IOException
-
processDefaultTextColor
protected void processDefaultTextColor() throws java.io.IOExceptionprocessSGR 39corresponding toDefault text color (foreground)- Throws:
java.io.IOException- IOException
-
processDefaultBackgroundColor
protected void processDefaultBackgroundColor() throws java.io.IOExceptionprocessSGR 49corresponding toDefault background color- Throws:
java.io.IOException- IOException
-
processAttributeRest
protected void processAttributeRest() throws java.io.IOExceptionprocessSGR 0corresponding toReset / Normal- Throws:
java.io.IOException- IOException
-
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- rowcol- col- Throws:
java.io.IOException- IOException
-
processCursorToColumn
protected void processCursorToColumn(int x) throws java.io.IOExceptionprocessCSI n Gcorresponding toCHA – Cursor Horizontal Absolute- Parameters:
x- the column- Throws:
java.io.IOException- IOException
-
processCursorUpLine
protected void processCursorUpLine(int count) throws java.io.IOExceptionprocessCSI n Fcorresponding toCPL – Cursor Previous Line- Parameters:
count- line count- Throws:
java.io.IOException- IOException
-
processCursorDownLine
protected void processCursorDownLine(int count) throws java.io.IOExceptionprocessCSI n Ecorresponding toCNL – Cursor Next Line- Parameters:
count- line count- Throws:
java.io.IOException- IOException
-
processCursorLeft
protected void processCursorLeft(int count) throws java.io.IOExceptionprocessCSI n Dcorresponding toCUB – Cursor Back- Parameters:
count- count- Throws:
java.io.IOException- IOException
-
processCursorRight
protected void processCursorRight(int count) throws java.io.IOExceptionprocessCSI n Ccorresponding toCUF – Cursor Forward- Parameters:
count- count- Throws:
java.io.IOException- IOException
-
processCursorDown
protected void processCursorDown(int count) throws java.io.IOExceptionprocessCSI n Bcorresponding toCUD – Cursor Down- Parameters:
count- count- Throws:
java.io.IOException- IOException
-
processCursorUp
protected void processCursorUp(int count) throws java.io.IOExceptionprocessCSI n Acorresponding toCUU – Cursor Up- Parameters:
count- count- Throws:
java.io.IOException- IOException
-
processUnknownExtension
protected void processUnknownExtension(java.util.ArrayList<java.lang.Object> options, int command)Process Unknown Extension- Parameters:
options- optionscommand- command
-
processChangeIconNameAndWindowTitle
protected void processChangeIconNameAndWindowTitle(java.lang.String label)
processOSC 0;text BELcorresponding toChange Window and Icon label- Parameters:
label- window title name
-
processChangeIconName
protected void processChangeIconName(java.lang.String label)
processOSC 1;text BELcorresponding toChange Icon label- Parameters:
label- icon label
-
processChangeWindowTitle
protected void processChangeWindowTitle(java.lang.String label)
processOSC 2;text BELcorresponding toChange Window title- Parameters:
label- window title text
-
processUnknownOperatingSystemCommand
protected void processUnknownOperatingSystemCommand(int command, java.lang.String param)Process unknownOSCcommand.- Parameters:
command- commandparam- param
-
processCharsetSelect
private boolean processCharsetSelect(java.util.ArrayList<java.lang.Object> options)
Process character set sequence.- Parameters:
options- options- Returns:
- true if the charcter set select command was processed.
-
processCharsetSelect
protected void processCharsetSelect(int set, char seq)
-
optionInt
private int optionInt(java.util.ArrayList<java.lang.Object> options, int index)
-
optionInt
private int optionInt(java.util.ArrayList<java.lang.Object> options, int index, int defaultValue)
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classFilterPrintStream
-
-