Package org.jline.utils
Class ColorPalette
java.lang.Object
org.jline.utils.ColorPalette
Color palette for terminal color management and conversion.
The ColorPalette class provides functionality for managing terminal colors, including color conversion between different formats (RGB, ANSI, indexed), color distance calculation, and color remapping. It helps bridge the gap between the different color capabilities of various terminals.
This class supports various terminal color modes:
- 8-color mode (standard ANSI colors)
- 16-color mode (standard ANSI colors + bright variants)
- 256-color mode (indexed colors)
- 24-bit true color mode (RGB colors)
The palette can be used to convert between these color modes, find the closest matching color in a more limited palette, and even modify the terminal's color palette on supported terminals.
This class is used internally by JLine components to handle color output across different terminal types with varying color support capabilities.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionColorPalette
(Terminal terminal) ColorPalette
(Terminal terminal, String distance) -
Method Summary
Modifier and TypeMethodDescriptionboolean
Check if the terminal has the capability to change colors.int
getColor
(int index) Get a specific color in the paletteint
Get the terminal's default background color.int
Get the terminal's default foreground color.protected org.jline.utils.Colors.Distance
getDist()
Get the name of the distance to use for rounding colors.int
Get the palette lengthboolean
isReal()
boolean
Load the palette from the terminal.protected void
loadPalette
(boolean doLoad) int
round
(int col) int
round
(int r, int g, int b) void
setColor
(int index, int color) Change the color of the palettevoid
setDistance
(String name) Set the name of the color distance to use when rounding RGB colors to the palette.toString()
-
Field Details
-
XTERM_INITC
- See Also:
-
DEFAULT
-
-
Constructor Details
-
ColorPalette
public ColorPalette() -
ColorPalette
- Throws:
IOException
-
ColorPalette
- Throws:
IOException
-
-
Method Details
-
getDistanceName
Get the name of the distance to use for rounding colors.- Returns:
- the name of the color distance
-
setDistance
Set the name of the color distance to use when rounding RGB colors to the palette.- Parameters:
name
- the name of the color distance
-
canChange
public boolean canChange()Check if the terminal has the capability to change colors.- Returns:
true
if the terminal can change colors
-
loadPalette
Load the palette from the terminal. If the palette has already been loaded, subsequent calls will simply returntrue
.- Returns:
true
if the palette has been successfully loaded.- Throws:
IOException
-
loadPalette
- Throws:
IOException
-
getLength
public int getLength()Get the palette length- Returns:
- the palette length
-
getColor
public int getColor(int index) Get a specific color in the palette- Parameters:
index
- the index of the color- Returns:
- the color at the given index
-
setColor
public void setColor(int index, int color) Change the color of the palette- Parameters:
index
- the index of the colorcolor
- the new color value
-
isReal
public boolean isReal() -
round
public int round(int r, int g, int b) -
round
public int round(int col) -
getDist
protected org.jline.utils.Colors.Distance getDist() -
getDefaultForeground
public int getDefaultForeground()Get the terminal's default foreground color.- Returns:
- the RGB value of the default foreground color, or -1 if not available
-
getDefaultBackground
public int getDefaultBackground()Get the terminal's default background color.- Returns:
- the RGB value of the default background color, or -1 if not available
-
toString
-