/*******************************************************************************
 *
 * File:     terminal_colors.h
 *
 * Contents: Facility for printing colorized text to terminals supporting it.
 *
 * Copyright 2017
 *
 * Author: David Juhasz (david.juhasz@tuwien.ac.at)
 *
 ******************************************************************************/

#ifndef ROSA_SUPPORT_TERMINAL_COLORS_H
#define ROSA_SUPPORT_TERMINAL_COLORS_H

#include <ostream>

namespace rosa {
namespace terminal {

// Text colors for colorizable terminals.
enum class Color {
  Default,
  Black,
  Red,
  Green,
  Yellow,
  Blue,
  Magenta,
  Cyan,
  Lightgrey,
  Darkgrey,
  Lightred,
  Lightgreen,
  Lightyellow,
  Lightblue,
  LightMagenta,
  Lightcyan,
  White,
  // Number of Color values:
  NumColors
};

// Operator handling Color commands sent to output streams.
// PRE: color != Color::NumColors
std::ostream &operator<<(std::ostream &os, const Color color);

} // End namespace terminal
} // End namespace rosa

#endif // ROSA_SUPPORT_TERMINAL_COLORS_H

