1 package be
.nikiroo
.jvcard
.tui
;
3 import java
.awt
.Dimension
;
6 import be
.nikiroo
.jvcard
.launcher
.Main
;
7 import be
.nikiroo
.utils
.ImageText
;
8 import be
.nikiroo
.utils
.ImageText
.Mode
;
10 import com
.googlecode
.lanterna
.TerminalSize
;
11 import com
.googlecode
.lanterna
.gui2
.BorderLayout
;
12 import com
.googlecode
.lanterna
.gui2
.Panel
;
13 import com
.googlecode
.lanterna
.gui2
.TextBox
;
16 * A {@link Panel} containing an {@link ImageText} rendering.
21 public class ImageTextControl
extends Panel
{
22 private ImageText image
;
27 * Create a new {@link ImageTextControl} for the given {@link Image} and
28 * {@link TerminalSize}.
31 * the {@link Image} to render
33 * the target size of this control
35 public ImageTextControl(Image image
, TerminalSize size
) {
36 Mode mode
= Mode
.DOUBLE_DITHERING
;
37 if (!Main
.isUnicode()) {
41 Mode
[] modes
= Mode
.values();
42 for (int i
= 0; i
< modes
.length
; i
++) {
47 this.setLayoutManager(new BorderLayout());
49 setImage(new ImageText(image
, new Dimension(size
.getColumns(),
50 size
.getRows()), mode
, false));
54 * Cycle through the available rendering modes if possible.
56 * @return TRUE if it was possible to switch modes
58 public boolean switchMode() {
59 if (image
== null || !Main
.isUnicode())
62 Mode
[] modes
= Mode
.values();
64 if (mode
>= modes
.length
)
67 image
.setMode(modes
[mode
]);
76 public void invertColor() {
78 image
.setColorInvert(!image
.isColorInvert());
84 public synchronized Panel
setSize(TerminalSize size
) {
86 image
.setSize(new Dimension(size
.getColumns(), size
.getRows()));
96 * Set/reset the {@link ImageText} to render.
99 * the new {@link ImageText}
101 private void setImage(ImageText image
) {
103 removeAllComponents();
106 txt
= new TextBox(image
.getText());
107 this.addComponent(txt
, BorderLayout
.Location
.CENTER
);