X-Git-Url: http://git.nikiroo.be/?p=jvcard.git;a=blobdiff_plain;f=src%2Fcom%2Fgooglecode%2Flanterna%2FTextCharacter.java;fp=src%2Fcom%2Fgooglecode%2Flanterna%2FTextCharacter.java;h=0000000000000000000000000000000000000000;hp=b3762d797f0b977f9627a6fe28325b6c4f3d141c;hb=f06c81000632cfb5f525ca458f719338f55f9f66;hpb=a73a906356c971b080c36368e71a15d87e8b8d31
diff --git a/src/com/googlecode/lanterna/TextCharacter.java b/src/com/googlecode/lanterna/TextCharacter.java
deleted file mode 100644
index b3762d7..0000000
--- a/src/com/googlecode/lanterna/TextCharacter.java
+++ /dev/null
@@ -1,310 +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;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.EnumSet;
-
-/**
- * Represents a single character with additional metadata such as colors and modifiers. This class is immutable and
- * cannot be modified after creation.
- * @author Martin
- */
-public class TextCharacter {
- private static EnumSet toEnumSet(SGR... modifiers) {
- if(modifiers.length == 0) {
- return EnumSet.noneOf(SGR.class);
- }
- else {
- return EnumSet.copyOf(Arrays.asList(modifiers));
- }
- }
-
- public static final TextCharacter DEFAULT_CHARACTER = new TextCharacter(' ', TextColor.ANSI.DEFAULT, TextColor.ANSI.DEFAULT);
-
- private final char character;
- private final TextColor foregroundColor;
- private final TextColor backgroundColor;
- private final EnumSet modifiers; //This isn't immutable, but we should treat it as such and not expose it!
-
- /**
- * Creates a {@code ScreenCharacter} based on a supplied character, with default colors and no extra modifiers.
- * @param character Physical character to use
- */
- public TextCharacter(char character) {
- this(character, TextColor.ANSI.DEFAULT, TextColor.ANSI.DEFAULT);
- }
-
- /**
- * Copies another {@code ScreenCharacter}
- * @param character screenCharacter to copy from
- */
- public TextCharacter(TextCharacter character) {
- this(character.getCharacter(),
- character.getForegroundColor(),
- character.getBackgroundColor(),
- character.getModifiers().toArray(new SGR[character.getModifiers().size()]));
- }
-
- /**
- * Creates a new {@code ScreenCharacter} based on a physical character, color information and optional modifiers.
- * @param character Physical character to refer to
- * @param foregroundColor Foreground color the character has
- * @param backgroundColor Background color the character has
- * @param styles Optional list of modifiers to apply when drawing the character
- */
- @SuppressWarnings("WeakerAccess")
- public TextCharacter(
- char character,
- TextColor foregroundColor,
- TextColor backgroundColor,
- SGR... styles) {
-
- this(character,
- foregroundColor,
- backgroundColor,
- toEnumSet(styles));
- }
-
- /**
- * Creates a new {@code ScreenCharacter} based on a physical character, color information and a set of modifiers.
- * @param character Physical character to refer to
- * @param foregroundColor Foreground color the character has
- * @param backgroundColor Background color the character has
- * @param modifiers Set of modifiers to apply when drawing the character
- */
- public TextCharacter(
- char character,
- TextColor foregroundColor,
- TextColor backgroundColor,
- EnumSet modifiers) {
-
- if(foregroundColor == null) {
- foregroundColor = TextColor.ANSI.DEFAULT;
- }
- if(backgroundColor == null) {
- backgroundColor = TextColor.ANSI.DEFAULT;
- }
-
- this.character = character;
- this.foregroundColor = foregroundColor;
- this.backgroundColor = backgroundColor;
- this.modifiers = EnumSet.copyOf(modifiers);
- }
-
- /**
- * The actual character this TextCharacter represents
- * @return character of the TextCharacter
- */
- public char getCharacter() {
- return character;
- }
-
- /**
- * Foreground color specified for this TextCharacter
- * @return Foreground color of this TextCharacter
- */
- public TextColor getForegroundColor() {
- return foregroundColor;
- }
-
- /**
- * Background color specified for this TextCharacter
- * @return Background color of this TextCharacter
- */
- public TextColor getBackgroundColor() {
- return backgroundColor;
- }
-
- /**
- * Returns a set of all active modifiers on this TextCharacter
- * @return Set of active SGR codes
- */
- public EnumSet getModifiers() {
- return EnumSet.copyOf(modifiers);
- }
-
- /**
- * Returns true if this TextCharacter has the bold modifier active
- * @return {@code true} if this TextCharacter has the bold modifier active
- */
- public boolean isBold() {
- return modifiers.contains(SGR.BOLD);
- }
-
- /**
- * Returns true if this TextCharacter has the reverse modifier active
- * @return {@code true} if this TextCharacter has the reverse modifier active
- */
- public boolean isReversed() {
- return modifiers.contains(SGR.REVERSE);
- }
-
- /**
- * Returns true if this TextCharacter has the underline modifier active
- * @return {@code true} if this TextCharacter has the underline modifier active
- */
- public boolean isUnderlined() {
- return modifiers.contains(SGR.UNDERLINE);
- }
-
- /**
- * Returns true if this TextCharacter has the blink modifier active
- * @return {@code true} if this TextCharacter has the blink modifier active
- */
- public boolean isBlinking() {
- return modifiers.contains(SGR.BLINK);
- }
-
- /**
- * Returns true if this TextCharacter has the bordered modifier active
- * @return {@code true} if this TextCharacter has the bordered modifier active
- */
- public boolean isBordered() {
- return modifiers.contains(SGR.BORDERED);
- }
-
- /**
- * Returns true if this TextCharacter has the crossed-out modifier active
- * @return {@code true} if this TextCharacter has the crossed-out modifier active
- */
- public boolean isCrossedOut() {
- return modifiers.contains(SGR.CROSSED_OUT);
- }
-
- /**
- * Returns a new TextCharacter with the same colors and modifiers but a different underlying character
- * @param character Character the copy should have
- * @return Copy of this TextCharacter with different underlying character
- */
- @SuppressWarnings("SameParameterValue")
- public TextCharacter withCharacter(char character) {
- if(this.character == character) {
- return this;
- }
- return new TextCharacter(character, foregroundColor, backgroundColor, modifiers);
- }
-
- /**
- * Returns a copy of this TextCharacter with a specified foreground color
- * @param foregroundColor Foreground color the copy should have
- * @return Copy of the TextCharacter with a different foreground color
- */
- public TextCharacter withForegroundColor(TextColor foregroundColor) {
- if(this.foregroundColor == foregroundColor || this.foregroundColor.equals(foregroundColor)) {
- return this;
- }
- return new TextCharacter(character, foregroundColor, backgroundColor, modifiers);
- }
-
- /**
- * Returns a copy of this TextCharacter with a specified background color
- * @param backgroundColor Background color the copy should have
- * @return Copy of the TextCharacter with a different background color
- */
- public TextCharacter withBackgroundColor(TextColor backgroundColor) {
- if(this.backgroundColor == backgroundColor || this.backgroundColor.equals(backgroundColor)) {
- return this;
- }
- return new TextCharacter(character, foregroundColor, backgroundColor, modifiers);
- }
-
- /**
- * Returns a copy of this TextCharacter with specified list of SGR modifiers. None of the currently active SGR codes
- * will be carried over to the copy, only those in the passed in value.
- * @param modifiers SGR modifiers the copy should have
- * @return Copy of the TextCharacter with a different set of SGR modifiers
- */
- public TextCharacter withModifiers(Collection modifiers) {
- EnumSet newSet = EnumSet.copyOf(modifiers);
- if(modifiers.equals(newSet)) {
- return this;
- }
- return new TextCharacter(character, foregroundColor, backgroundColor, newSet);
- }
-
- /**
- * Returns a copy of this TextCharacter with an additional SGR modifier. All of the currently active SGR codes
- * will be carried over to the copy, in addition to the one specified.
- * @param modifier SGR modifiers the copy should have in additional to all currently present
- * @return Copy of the TextCharacter with a new SGR modifier
- */
- public TextCharacter withModifier(SGR modifier) {
- if(modifiers.contains(modifier)) {
- return this;
- }
- EnumSet newSet = EnumSet.copyOf(this.modifiers);
- newSet.add(modifier);
- return new TextCharacter(character, foregroundColor, backgroundColor, newSet);
- }
-
- /**
- * Returns a copy of this TextCharacter with an SGR modifier removed. All of the currently active SGR codes
- * will be carried over to the copy, except for the one specified. If the current TextCharacter doesn't have the
- * SGR specified, it will return itself.
- * @param modifier SGR modifiers the copy should not have
- * @return Copy of the TextCharacter without the SGR modifier
- */
- public TextCharacter withoutModifier(SGR modifier) {
- if(!modifiers.contains(modifier)) {
- return this;
- }
- EnumSet newSet = EnumSet.copyOf(this.modifiers);
- newSet.remove(modifier);
- return new TextCharacter(character, foregroundColor, backgroundColor, newSet);
- }
-
- @SuppressWarnings("SimplifiableIfStatement")
- @Override
- public boolean equals(Object obj) {
- if(obj == null) {
- return false;
- }
- if(getClass() != obj.getClass()) {
- return false;
- }
- final TextCharacter other = (TextCharacter) obj;
- if(this.character != other.character) {
- return false;
- }
- if(this.foregroundColor != other.foregroundColor && (this.foregroundColor == null || !this.foregroundColor.equals(other.foregroundColor))) {
- return false;
- }
- if(this.backgroundColor != other.backgroundColor && (this.backgroundColor == null || !this.backgroundColor.equals(other.backgroundColor))) {
- return false;
- }
- return !(this.modifiers != other.modifiers && (this.modifiers == null || !this.modifiers.equals(other.modifiers)));
- }
-
- @Override
- public int hashCode() {
- int hash = 7;
- hash = 37 * hash + this.character;
- hash = 37 * hash + (this.foregroundColor != null ? this.foregroundColor.hashCode() : 0);
- hash = 37 * hash + (this.backgroundColor != null ? this.backgroundColor.hashCode() : 0);
- hash = 37 * hash + (this.modifiers != null ? this.modifiers.hashCode() : 0);
- return hash;
- }
-
- @Override
- public String toString() {
- return "TextCharacter{" + "character=" + character + ", foregroundColor=" + foregroundColor + ", backgroundColor=" + backgroundColor + ", modifiers=" + modifiers + '}';
- }
-}