X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Ftterminal%2FDisplayLine.java;h=7c76713a715cf021e3d882717f434484bc9b0334;hb=c88c4ced6e9392a53030a1c680fe114931a1a928;hp=75e2dfdd1f9a52e8444dde369cdd920a7b52b386;hpb=e16dda65585466c8987bd1efd718431450a96605;p=fanfix.git diff --git a/src/jexer/tterminal/DisplayLine.java b/src/jexer/tterminal/DisplayLine.java index 75e2dfd..7c76713 100644 --- a/src/jexer/tterminal/DisplayLine.java +++ b/src/jexer/tterminal/DisplayLine.java @@ -3,7 +3,7 @@ * * The MIT License (MIT) * - * Copyright (C) 2016 Kevin Lamonte + * Copyright (C) 2019 Kevin Lamonte * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -34,17 +34,69 @@ import jexer.bits.CellAttributes; /** * This represents a single line of the display buffer. */ -public final class DisplayLine { +public class DisplayLine { + + // ------------------------------------------------------------------------ + // Constants -------------------------------------------------------------- + // ------------------------------------------------------------------------ + /** * Maximum line length. */ private static final int MAX_LINE_LENGTH = 256; + // ------------------------------------------------------------------------ + // Variables -------------------------------------------------------------- + // ------------------------------------------------------------------------ + /** * The characters/attributes of the line. */ private Cell [] chars; + /** + * Double-width line flag. + */ + private boolean doubleWidth = false; + + /** + * Double height line flag. Valid values are: + * + *

+     *   0 = single height
+     *   1 = top half double height
+     *   2 = bottom half double height
+     * 
+ */ + private int doubleHeight = 0; + + /** + * DECSCNM - reverse video. We copy the flag to the line so that + * reverse-mode scrollback lines still show inverted colors correctly. + */ + private boolean reverseColor = false; + + // ------------------------------------------------------------------------ + // Constructors ----------------------------------------------------------- + // ------------------------------------------------------------------------ + + /** + * Public constructor sets everything to drawing attributes. + * + * @param attr current drawing attributes + */ + public DisplayLine(final CellAttributes attr) { + chars = new Cell[MAX_LINE_LENGTH]; + for (int i = 0; i < chars.length; i++) { + chars[i] = new Cell(); + chars[i].setTo(attr); + } + } + + // ------------------------------------------------------------------------ + // DisplayLine ------------------------------------------------------------ + // ------------------------------------------------------------------------ + /** * Get the Cell at a specific column. * @@ -64,11 +116,6 @@ public final class DisplayLine { return chars.length; } - /** - * Double-width line flag. - */ - private boolean doubleWidth = false; - /** * Get double width flag. * @@ -87,17 +134,6 @@ public final class DisplayLine { this.doubleWidth = doubleWidth; } - /** - * Double height line flag. Valid values are: - * - *

-     *   0 = single height
-     *   1 = top half double height
-     *   2 = bottom half double height
-     * 
- */ - private int doubleHeight = 0; - /** * Get double height flag. * @@ -116,12 +152,6 @@ public final class DisplayLine { this.doubleHeight = doubleHeight; } - /** - * DECSCNM - reverse video. We copy the flag to the line so that - * reverse-mode scrollback lines still show inverted colors correctly. - */ - private boolean reverseColor = false; - /** * Get reverse video flag. * @@ -140,19 +170,6 @@ public final class DisplayLine { this.reverseColor = reverseColor; } - /** - * Public constructor sets everything to drawing attributes. - * - * @param attr current drawing attributes - */ - public DisplayLine(final CellAttributes attr) { - chars = new Cell[MAX_LINE_LENGTH]; - for (int i = 0; i < chars.length; i++) { - chars[i] = new Cell(); - chars[i].setTo(attr); - } - } - /** * Insert a character at the specified position. * @@ -161,7 +178,8 @@ public final class DisplayLine { */ public void insert(final int idx, final Cell newCell) { System.arraycopy(chars, idx, chars, idx + 1, chars.length - idx - 1); - chars[idx] = newCell; + chars[idx] = new Cell(); + chars[idx].setTo(newCell); } /** @@ -214,7 +232,8 @@ public final class DisplayLine { */ public void delete(final int idx, final Cell newCell) { System.arraycopy(chars, idx + 1, chars, idx, chars.length - idx - 1); - chars[chars.length - 1] = newCell; + chars[chars.length - 1] = new Cell(); + chars[chars.length - 1].setTo(newCell); } }