package com.googlecode.lanterna.graphics;

import java.util.Arrays;
import java.util.EnumSet;

import com.googlecode.lanterna.SGR;
import com.googlecode.lanterna.TextColor;

public interface StyleSet<T extends StyleSet<T>> {

    
Returns the current background color
Returns:Current background color
/** * Returns the current background color * @return Current background color */
TextColor getBackgroundColor();
Updates the current background color
Params:
  • backgroundColor – New background color
Returns:Itself
/** * Updates the current background color * @param backgroundColor New background color * @return Itself */
T setBackgroundColor(TextColor backgroundColor);
Returns the current foreground color
Returns:Current foreground color
/** * Returns the current foreground color * @return Current foreground color */
TextColor getForegroundColor();
Updates the current foreground color
Params:
  • foregroundColor – New foreground color
Returns:Itself
/** * Updates the current foreground color * @param foregroundColor New foreground color * @return Itself */
T setForegroundColor(TextColor foregroundColor);
Adds zero or more modifiers to the set of currently active modifiers
Params:
  • modifiers – Modifiers to add to the set of currently active modifiers
Returns:Itself
/** * Adds zero or more modifiers to the set of currently active modifiers * @param modifiers Modifiers to add to the set of currently active modifiers * @return Itself */
T enableModifiers(SGR... modifiers);
Removes zero or more modifiers from the set of currently active modifiers
Params:
  • modifiers – Modifiers to remove from the set of currently active modifiers
Returns:Itself
/** * Removes zero or more modifiers from the set of currently active modifiers * @param modifiers Modifiers to remove from the set of currently active modifiers * @return Itself */
T disableModifiers(SGR... modifiers);
Sets the active modifiers to exactly the set passed in to this method. Any previous state of which modifiers are enabled doesn't matter.
Params:
  • modifiers – Modifiers to set as active
Returns:Itself
/** * Sets the active modifiers to exactly the set passed in to this method. Any previous state of which modifiers are * enabled doesn't matter. * @param modifiers Modifiers to set as active * @return Itself */
T setModifiers(EnumSet<SGR> modifiers);
Removes all active modifiers
Returns:Itself
/** * Removes all active modifiers * @return Itself */
T clearModifiers();
Returns all the SGR codes that are currently active
Returns:Currently active SGR modifiers
/** * Returns all the SGR codes that are currently active * @return Currently active SGR modifiers */
EnumSet<SGR> getActiveModifiers();
copy colors and set of SGR codes
Params:
  • source – Modifiers to set as active
Returns:Itself
/** * copy colors and set of SGR codes * @param source Modifiers to set as active * @return Itself */
T setStyleFrom(StyleSet<?> source); class Set implements StyleSet<Set> { TextColor foregroundColor, backgroundColor; EnumSet<SGR> style = EnumSet.noneOf(SGR.class); public Set() {} public Set(StyleSet<?> source) { setStyleFrom(source); } @Override public TextColor getBackgroundColor() { return backgroundColor; } @Override public Set setBackgroundColor(TextColor backgroundColor) { this.backgroundColor = backgroundColor; return this; } @Override public TextColor getForegroundColor() { return foregroundColor; } @Override public Set setForegroundColor(TextColor foregroundColor) { this.foregroundColor = foregroundColor; return this; } @Override public Set enableModifiers(SGR... modifiers) { style.addAll(Arrays.asList(modifiers)); return this; } @Override public Set disableModifiers(SGR... modifiers) { style.removeAll(Arrays.asList(modifiers)); return this; } @Override public Set setModifiers(EnumSet<SGR> modifiers) { style.clear(); style.addAll(modifiers); return this; } @Override public Set clearModifiers() { style.clear(); return this; } @Override public EnumSet<SGR> getActiveModifiers() { return EnumSet.copyOf(style); } @Override public Set setStyleFrom(StyleSet<?> source) { setBackgroundColor(source.getBackgroundColor()); setForegroundColor(source.getForegroundColor()); setModifiers(source.getActiveModifiers()); return this; } } }