X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Ftterminal%2FDisplayLine.java;h=06a05a330ddccb50cc3ecf142cea0c4c87c38df9;hb=12b90437b5f22c2ae6e9b9b14c3b62b60f6143e5;hp=8eff2de1b641fbb61ee4aea910e52459ae8b29d9;hpb=d36057dfab8def933a64be042b039d76708ac5ba;p=nikiroo-utils.git diff --git a/src/jexer/tterminal/DisplayLine.java b/src/jexer/tterminal/DisplayLine.java index 8eff2de..06a05a3 100644 --- a/src/jexer/tterminal/DisplayLine.java +++ b/src/jexer/tterminal/DisplayLine.java @@ -3,7 +3,7 @@ * * The MIT License (MIT) * - * Copyright (C) 2017 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,7 +34,7 @@ import jexer.bits.CellAttributes; /** * This represents a single line of the display buffer. */ -public final class DisplayLine { +public class DisplayLine { // ------------------------------------------------------------------------ // Constants -------------------------------------------------------------- @@ -80,6 +80,21 @@ public final class DisplayLine { // Constructors ----------------------------------------------------------- // ------------------------------------------------------------------------ + /** + * Public constructor makes a duplicate (deep copy). + * + * @param line the line to duplicate + */ + public DisplayLine(final DisplayLine line) { + chars = new Cell[MAX_LINE_LENGTH]; + for (int i = 0; i < chars.length; i++) { + chars[i] = new Cell(line.chars[i]); + } + doubleWidth = line.doubleWidth; + doubleHeight = line.doubleHeight; + reverseColor = line.reverseColor; + } + /** * Public constructor sets everything to drawing attributes. * @@ -88,8 +103,7 @@ public final class DisplayLine { 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); + chars[i] = new Cell(attr); } } @@ -178,8 +192,7 @@ 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] = new Cell(); - chars[idx].setTo(newCell); + chars[idx] = new Cell(newCell); } /** @@ -208,7 +221,7 @@ public final class DisplayLine { * @param idx the character index * @param ch the new char */ - public void setChar(final int idx, final char ch) { + public void setChar(final int idx, final int ch) { chars[idx].setChar(ch); } @@ -232,8 +245,7 @@ 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] = new Cell(); - chars[chars.length - 1].setTo(newCell); + chars[chars.length - 1] = new Cell(newCell); } }