All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.grinder.util.TerminalColour Maven / Gradle / Ivy

The newest version!
// Copyright (C) 2000 - 2011 Philip Aston
// All rights reserved.
//
// This file is part of The Grinder software distribution. Refer to
// the file LICENSE which is part of The Grinder distribution for
// licensing details. The Grinder distribution is available on the
// Internet at http://grinder.sourceforge.net/
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGE.

package net.grinder.util;

/**
 * Creates ANSI colour control strings.
 *
 * @author Philip Aston
 */
public enum TerminalColour {

  /**
   * Constant control string for colour.
   */
  BLACK("30"),

  /**
   * Constant control string for colour.
   */
  RED("31"),

  /**
   * Constant control string for colour.
   */
  GREEN("32"),

  /**
   * Constant control string for colour.
   */
  YELLOW("33"),

  /**
   * Constant control string for colour.
   */
  BLUE("34"),

  /**
   * Constant control string for colour.
   */
  MAGENTA("35"),

  /**
   * Constant control string for colour.
   */
  CYAN("36"),

  /**
   * Constant control string for colour.
   */
  WHITE("37"),

  /**
   * Constant control string for colour.
   */
  BLACK_BACKGROUND("40"),

  /**
   * Constant control string for colour.
   */
  RED_BACKGROUND("41"),

  /**
   * Constant control string for colour.
   */
  GREEN_BACKGROUND("42"),

  /**
   * Constant control string for colour.
   */
  YELLOW_BACKGROUND("43"),

  /**
   * Constant control string for colour.
   */
  BLUE_BACKGROUND("44"),

  /**
   * Constant control string for colour.
   */
  MAGENTA_BACKGROUND("45"),

  /**
   * Constant control string for colour.
   */
  CYAN_BACKGROUND("46"),

  /**
   * Constant control string for colour.
   */
  WHITE_BACKGROUND("47"),

  /**
   * Constant control string for colour.
   */
  NONE();

  private final String m_preString;
  private final String m_postString;

  private TerminalColour(String body) {
    m_preString = controlString(body);

    // Quoting from Thomas E. Dickey's vttest: "Some terminals will reset
    // colors with SGR-0; I've added the 39, 49 codes for those that are ISO
    // compliant. (The black/white codes are for emulators written by people
    // who don't bother reading standards)."
    m_postString = controlString("0;40;37;39;49");
  }

  private TerminalColour() {
    m_preString = "";
    m_postString = "";
  }

  private static String controlString(String body) {
    return (char)0033 + "[" + body + 'm';
  }

  /**
   * Control string which enables colour.
   *
   * @return The control string.
   */
  public String pre() {
    return m_preString;
  }

  /**
   * Control string which resets colour.
   *
   * @return The control string.
   */
  public String post() {
    return m_postString;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy