*
* 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"),
/**
* This represents a single line of the display buffer.
*/
-public final class DisplayLine {
+public class DisplayLine {
// ------------------------------------------------------------------------
// Constants --------------------------------------------------------------
// 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.
*
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);
}
}
*/
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);
}
/**
* @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);
}
*/
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);
+ }
+
+ /**
+ * Determine if line contains image data.
+ *
+ * @return true if the line has image data
+ */
+ public boolean isImage() {
+ for (int i = 0; i < chars.length; i++) {
+ if (chars[i].isImage()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Clear image data from line.
+ */
+ public void clearImages() {
+ for (int i = 0; i < chars.length; i++) {
+ if (chars[i].isImage()) {
+ chars[i].reset();
+ }
+ }
}
}