Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Jexer - Java Text User Interface
*
* The MIT License (MIT)
*
* 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"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
* @author Kevin Lamonte [[email protected]]
* @version 1
*/
package jexer.bits;
/**
* A text cell color.
*/
public final class Color {
// ------------------------------------------------------------------------
// Constants --------------------------------------------------------------
// ------------------------------------------------------------------------
/**
* SGR black value = 0.
*/
private static final int SGRBLACK = 0;
/**
* SGR red value = 1.
*/
private static final int SGRRED = 1;
/**
* SGR green value = 2.
*/
private static final int SGRGREEN = 2;
/**
* SGR yellow value = 3.
*/
private static final int SGRYELLOW = 3;
/**
* SGR blue value = 4.
*/
private static final int SGRBLUE = 4;
/**
* SGR magenta value = 5.
*/
private static final int SGRMAGENTA = 5;
/**
* SGR cyan value = 6.
*/
private static final int SGRCYAN = 6;
/**
* SGR white value = 7.
*/
private static final int SGRWHITE = 7;
/**
* Black. Bold + black = dark grey
*/
public static final Color BLACK = new Color(SGRBLACK);
/**
* Red.
*/
public static final Color RED = new Color(SGRRED);
/**
* Green.
*/
public static final Color GREEN = new Color(SGRGREEN);
/**
* Yellow. Sometimes not-bold yellow is brown.
*/
public static final Color YELLOW = new Color(SGRYELLOW);
/**
* Blue.
*/
public static final Color BLUE = new Color(SGRBLUE);
/**
* Magenta (purple).
*/
public static final Color MAGENTA = new Color(SGRMAGENTA);
/**
* Cyan (blue-green).
*/
public static final Color CYAN = new Color(SGRCYAN);
/**
* White.
*/
public static final Color WHITE = new Color(SGRWHITE);
// ------------------------------------------------------------------------
// Variables --------------------------------------------------------------
// ------------------------------------------------------------------------
/**
* The color value. Default is SGRWHITE.
*/
private int value = SGRWHITE;
// ------------------------------------------------------------------------
// Constructors -----------------------------------------------------------
// ------------------------------------------------------------------------
/**
* Private constructor used to make the static Color instances.
*
* @param value the integer Color value
*/
private Color(final int value) {
this.value = value;
}
// ------------------------------------------------------------------------
// Color ------------------------------------------------------------------
// ------------------------------------------------------------------------
/**
* Get color value. Note that these deliberately match the color values
* of the ECMA-48 / ANSI X3.64 / VT100-ish SGR function ("ANSI colors").
*
* @return the value
*/
public int getValue() {
return value;
}
/**
* Public constructor returns one of the static Color instances.
*
* @param colorName "red", "blue", etc.
* @return Color.RED, Color.BLUE, etc.
*/
static Color getColor(final String colorName) {
String str = colorName.toLowerCase();
if (str.equals("black")) {
return Color.BLACK;
} else if (str.equals("white")) {
return Color.WHITE;
} else if (str.equals("red")) {
return Color.RED;
} else if (str.equals("cyan")) {
return Color.CYAN;
} else if (str.equals("green")) {
return Color.GREEN;
} else if (str.equals("magenta")) {
return Color.MAGENTA;
} else if (str.equals("blue")) {
return Color.BLUE;
} else if (str.equals("yellow")) {
return Color.YELLOW;
} else if (str.equals("brown")) {
return Color.YELLOW;
} else {
// Let unknown strings become white
return Color.WHITE;
}
}
/**
* Invert a color in the same way as (CGA/VGA color XOR 0x7).
*
* @return the inverted color
*/
public Color invert() {
switch (value) {
case SGRBLACK:
return Color.WHITE;
case SGRWHITE:
return Color.BLACK;
case SGRRED:
return Color.CYAN;
case SGRCYAN:
return Color.RED;
case SGRGREEN:
return Color.MAGENTA;
case SGRMAGENTA:
return Color.GREEN;
case SGRBLUE:
return Color.YELLOW;
case SGRYELLOW:
return Color.BLUE;
default:
throw new IllegalArgumentException("Invalid Color value: " + value);
}
}
/**
* Comparison check. All fields must match to return true.
*
* @param rhs another Color instance
* @return true if all fields are equal
*/
@Override
public boolean equals(final Object rhs) {
if (!(rhs instanceof Color)) {
return false;
}
Color that = (Color) rhs;
return (value == that.value);
}
/**
* Hashcode uses all fields in equals().
*
* @return the hash
*/
@Override
public int hashCode() {
return value;
}
/**
* Make human-readable description of this Color.
*
* @return displayable String "red", "blue", etc.
*/
@Override
public String toString() {
switch (value) {
case SGRBLACK:
return "black";
case SGRWHITE:
return "white";
case SGRRED:
return "red";
case SGRCYAN:
return "cyan";
case SGRGREEN:
return "green";
case SGRMAGENTA:
return "magenta";
case SGRBLUE:
return "blue";
case SGRYELLOW:
return "yellow";
default:
throw new IllegalArgumentException("Invalid Color value: " + value);
}
}
}