X-Git-Url: http://git.nikiroo.be/?p=jvcard.git;a=blobdiff_plain;f=src%2Fcom%2Fgooglecode%2Flanterna%2Fscreen%2FScreenBuffer.java;fp=src%2Fcom%2Fgooglecode%2Flanterna%2Fscreen%2FScreenBuffer.java;h=0000000000000000000000000000000000000000;hp=2900e5b4af598c1e2dab3fc481124c739e716b05;hb=f06c81000632cfb5f525ca458f719338f55f9f66;hpb=a73a906356c971b080c36368e71a15d87e8b8d31 diff --git a/src/com/googlecode/lanterna/screen/ScreenBuffer.java b/src/com/googlecode/lanterna/screen/ScreenBuffer.java deleted file mode 100644 index 2900e5b..0000000 --- a/src/com/googlecode/lanterna/screen/ScreenBuffer.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * This file is part of lanterna (http://code.google.com/p/lanterna/). - * - * lanterna is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - * - * Copyright (C) 2010-2015 Martin - */ -package com.googlecode.lanterna.screen; - -import com.googlecode.lanterna.TerminalPosition; -import com.googlecode.lanterna.TextCharacter; -import com.googlecode.lanterna.TerminalSize; -import com.googlecode.lanterna.graphics.BasicTextImage; -import com.googlecode.lanterna.graphics.TextGraphics; -import com.googlecode.lanterna.graphics.TextImage; - -/** - * Defines a buffer used by AbstractScreen and its subclasses to keep its state of what's currently displayed and what - * the edit buffer looks like. A ScreenBuffer is essentially a two-dimensional array of TextCharacter with some utility - * methods to inspect and manipulate it in a safe way. - * @author martin - */ -public class ScreenBuffer implements TextImage { - private final BasicTextImage backend; - - /** - * Creates a new ScreenBuffer with a given size and a TextCharacter to initially fill it with - * @param size Size of the buffer - * @param filler What character to set as the initial content of the buffer - */ - public ScreenBuffer(TerminalSize size, TextCharacter filler) { - this(new BasicTextImage(size, filler)); - } - - private ScreenBuffer(BasicTextImage backend) { - this.backend = backend; - } - - @Override - public ScreenBuffer resize(TerminalSize newSize, TextCharacter filler) { - BasicTextImage resizedBackend = backend.resize(newSize, filler); - return new ScreenBuffer(resizedBackend); - } - - boolean isVeryDifferent(ScreenBuffer other, int threshold) { - if(!getSize().equals(other.getSize())) { - throw new IllegalArgumentException("Can only call isVeryDifferent comparing two ScreenBuffers of the same size!" - + " This is probably a bug in Lanterna."); - } - int differences = 0; - for(int y = 0; y < getSize().getRows(); y++) { - for(int x = 0; x < getSize().getColumns(); x++) { - if(!getCharacterAt(x, y).equals(other.getCharacterAt(x, y))) { - if(++differences >= threshold) { - return true; - } - } - } - } - return false; - } - - /////////////////////////////////////////////////////////////////////////////// - // Delegate all TextImage calls (except resize) to the backend BasicTextImage - @Override - public TerminalSize getSize() { - return backend.getSize(); - } - - @Override - public TextCharacter getCharacterAt(TerminalPosition position) { - return backend.getCharacterAt(position); - } - - @Override - public TextCharacter getCharacterAt(int column, int row) { - return backend.getCharacterAt(column, row); - } - - @Override - public void setCharacterAt(TerminalPosition position, TextCharacter character) { - backend.setCharacterAt(position, character); - } - - @Override - public void setCharacterAt(int column, int row, TextCharacter character) { - backend.setCharacterAt(column, row, character); - } - - @Override - public void setAll(TextCharacter character) { - backend.setAll(character); - } - - @Override - public TextGraphics newTextGraphics() { - return backend.newTextGraphics(); - } - - @Override - public void copyTo(TextImage destination) { - if(destination instanceof ScreenBuffer) { - //This will allow the BasicTextImage's copy method to use System.arraycopy (micro-optimization?) - destination = ((ScreenBuffer)destination).backend; - } - backend.copyTo(destination); - } - - @Override - public void copyTo(TextImage destination, int startRowIndex, int rows, int startColumnIndex, int columns, int destinationRowOffset, int destinationColumnOffset) { - if(destination instanceof ScreenBuffer) { - //This will allow the BasicTextImage's copy method to use System.arraycopy (micro-optimization?) - destination = ((ScreenBuffer)destination).backend; - } - backend.copyTo(destination, startRowIndex, rows, startColumnIndex, columns, destinationRowOffset, destinationColumnOffset); - } - - /** - * Copies the content from a TextImage into this buffer. - * @param source Source to copy content from - * @param startRowIndex Which row in the source image to start copying from - * @param rows How many rows to copy - * @param startColumnIndex Which column in the source image to start copying from - * @param columns How many columns to copy - * @param destinationRowOffset The row offset in this buffer of where to place the copied content - * @param destinationColumnOffset The column offset in this buffer of where to place the copied content - */ - public void copyFrom(TextImage source, int startRowIndex, int rows, int startColumnIndex, int columns, int destinationRowOffset, int destinationColumnOffset) { - source.copyTo(backend, startRowIndex, rows, startColumnIndex, columns, destinationRowOffset, destinationColumnOffset); - } - - @Override - public void scrollLines(int firstLine, int lastLine, int distance) { - backend.scrollLines(firstLine, lastLine, distance); - } - - @Override - public String toString() { - return backend.toString(); - } -}