1 package com
.googlecode
.lanterna
.graphics
;
3 import com
.googlecode
.lanterna
.*;
4 import com
.googlecode
.lanterna
.screen
.TabBehaviour
;
6 import java
.util
.Collection
;
7 import java
.util
.EnumSet
;
10 * Implementation of ThemedTextGraphics that wraps a TextGraphics that all calls are delegated to, except for the
11 * method from ThemedTextGraphics which are handled. The theme is set at construction time, but you can create a clone
12 * of this object with a different theme.
15 public class ImmutableThemedTextGraphics
implements ThemedTextGraphics
{
16 private final TextGraphics backend
;
17 private final Theme theme
;
20 * Creates a new {@code ImmutableThemedTextGraphics} with a specified backend for all drawing operations and a
22 * @param backend Backend to send all drawing operations to
23 * @param theme Theme to be associated with this object
25 public ImmutableThemedTextGraphics(TextGraphics backend
, Theme theme
) {
26 this.backend
= backend
;
31 * Returns a new {@code ImmutableThemedTextGraphics} that targets the same backend but with another theme
32 * @param theme Theme the new {@code ImmutableThemedTextGraphics} is using
33 * @return New {@code ImmutableThemedTextGraphics} object that uses the same backend as this object
35 public ImmutableThemedTextGraphics
withTheme(Theme theme
) {
36 return new ImmutableThemedTextGraphics(backend
, theme
);
40 * Returns the underlying {@code TextGraphics} that is handling all drawing operations
41 * @return Underlying {@code TextGraphics} that is handling all drawing operations
43 public TextGraphics
getUnderlyingTextGraphics() {
48 * Returns the theme associated with this {@code ImmutableThemedTextGraphics}
49 * @return The theme associated with this {@code ImmutableThemedTextGraphics}
51 public Theme
getTheme() {
56 public ThemeDefinition
getThemeDefinition(Class
<?
> clazz
) {
57 return theme
.getDefinition(clazz
);
61 public ImmutableThemedTextGraphics
applyThemeStyle(ThemeStyle themeStyle
) {
62 setForegroundColor(themeStyle
.getForeground());
63 setBackgroundColor(themeStyle
.getBackground());
64 setModifiers(themeStyle
.getSGRs());
69 public TerminalSize
getSize() {
70 return backend
.getSize();
74 public ImmutableThemedTextGraphics
newTextGraphics(TerminalPosition topLeftCorner
, TerminalSize size
) throws IllegalArgumentException
{
75 return new ImmutableThemedTextGraphics(backend
.newTextGraphics(topLeftCorner
, size
), theme
);
79 public TextColor
getBackgroundColor() {
80 return backend
.getBackgroundColor();
84 public ImmutableThemedTextGraphics
setBackgroundColor(TextColor backgroundColor
) {
85 backend
.setBackgroundColor(backgroundColor
);
90 public TextColor
getForegroundColor() {
91 return backend
.getForegroundColor();
95 public ImmutableThemedTextGraphics
setForegroundColor(TextColor foregroundColor
) {
96 backend
.setForegroundColor(foregroundColor
);
101 public ImmutableThemedTextGraphics
enableModifiers(SGR
... modifiers
) {
102 backend
.enableModifiers(modifiers
);
107 public ImmutableThemedTextGraphics
disableModifiers(SGR
... modifiers
) {
108 backend
.disableModifiers(modifiers
);
113 public ImmutableThemedTextGraphics
setModifiers(EnumSet
<SGR
> modifiers
) {
114 backend
.setModifiers(modifiers
);
119 public ImmutableThemedTextGraphics
clearModifiers() {
120 backend
.clearModifiers();
125 public EnumSet
<SGR
> getActiveModifiers() {
126 return backend
.getActiveModifiers();
130 public TabBehaviour
getTabBehaviour() {
131 return backend
.getTabBehaviour();
135 public ImmutableThemedTextGraphics
setTabBehaviour(TabBehaviour tabBehaviour
) {
136 backend
.setTabBehaviour(tabBehaviour
);
141 public ImmutableThemedTextGraphics
fill(char c
) {
147 public TextGraphics
fillRectangle(TerminalPosition topLeft
, TerminalSize size
, char character
) {
148 backend
.fillRectangle(topLeft
, size
, character
);
153 public TextGraphics
fillRectangle(TerminalPosition topLeft
, TerminalSize size
, TextCharacter character
) {
154 backend
.fillRectangle(topLeft
, size
, character
);
159 public TextGraphics
drawRectangle(TerminalPosition topLeft
, TerminalSize size
, char character
) {
160 backend
.drawRectangle(topLeft
, size
, character
);
165 public TextGraphics
drawRectangle(TerminalPosition topLeft
, TerminalSize size
, TextCharacter character
) {
166 backend
.drawRectangle(topLeft
, size
, character
);
171 public TextGraphics
fillTriangle(TerminalPosition p1
, TerminalPosition p2
, TerminalPosition p3
, char character
) {
172 backend
.fillTriangle(p1
, p2
, p3
, character
);
177 public TextGraphics
fillTriangle(TerminalPosition p1
, TerminalPosition p2
, TerminalPosition p3
, TextCharacter character
) {
178 backend
.fillTriangle(p1
, p2
, p3
, character
);
183 public TextGraphics
drawTriangle(TerminalPosition p1
, TerminalPosition p2
, TerminalPosition p3
, char character
) {
184 backend
.drawTriangle(p1
, p2
, p3
, character
);
189 public TextGraphics
drawTriangle(TerminalPosition p1
, TerminalPosition p2
, TerminalPosition p3
, TextCharacter character
) {
190 backend
.drawTriangle(p1
, p2
, p3
, character
);
195 public TextGraphics
drawLine(TerminalPosition fromPoint
, TerminalPosition toPoint
, char character
) {
196 backend
.drawLine(fromPoint
, toPoint
, character
);
201 public TextGraphics
drawLine(TerminalPosition fromPoint
, TerminalPosition toPoint
, TextCharacter character
) {
202 backend
.drawLine(fromPoint
, toPoint
, character
);
207 public TextGraphics
drawLine(int fromX
, int fromY
, int toX
, int toY
, char character
) {
208 backend
.drawLine(fromX
, fromY
, toX
, toY
, character
);
213 public TextGraphics
drawLine(int fromX
, int fromY
, int toX
, int toY
, TextCharacter character
) {
214 backend
.drawLine(fromX
, fromY
, toX
, toY
, character
);
219 public TextGraphics
drawImage(TerminalPosition topLeft
, TextImage image
) {
220 backend
.drawImage(topLeft
, image
);
225 public TextGraphics
drawImage(TerminalPosition topLeft
, TextImage image
, TerminalPosition sourceImageTopLeft
, TerminalSize sourceImageSize
) {
226 backend
.drawImage(topLeft
, image
, sourceImageTopLeft
, sourceImageSize
);
231 public TextGraphics
setCharacter(TerminalPosition position
, char character
) {
232 backend
.setCharacter(position
, character
);
237 public TextGraphics
setCharacter(TerminalPosition position
, TextCharacter character
) {
238 backend
.setCharacter(position
, character
);
243 public TextGraphics
setCharacter(int column
, int row
, char character
) {
244 backend
.setCharacter(column
, row
, character
);
249 public TextGraphics
setCharacter(int column
, int row
, TextCharacter character
) {
250 backend
.setCharacter(column
, row
, character
);
255 public ImmutableThemedTextGraphics
putString(int column
, int row
, String string
) {
256 backend
.putString(column
, row
, string
);
261 public ImmutableThemedTextGraphics
putString(TerminalPosition position
, String string
) {
262 backend
.putString(position
, string
);
267 public ImmutableThemedTextGraphics
putString(int column
, int row
, String string
, SGR extraModifier
, SGR
... optionalExtraModifiers
) {
268 backend
.putString(column
, row
, string
, extraModifier
, optionalExtraModifiers
);
273 public ImmutableThemedTextGraphics
putString(TerminalPosition position
, String string
, SGR extraModifier
, SGR
... optionalExtraModifiers
) {
274 backend
.putString(position
, string
, extraModifier
, optionalExtraModifiers
);
279 public TextGraphics
putString(int column
, int row
, String string
, Collection
<SGR
> extraModifiers
) {
280 backend
.putString(column
, row
, string
, extraModifiers
);
285 public TextCharacter
getCharacter(TerminalPosition position
) {
286 return backend
.getCharacter(position
);
290 public TextCharacter
getCharacter(int column
, int row
) {
291 return backend
.getCharacter(column
, row
);