/*============================================================================
  KWSys - Kitware System Library
  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium

  Distributed under the OSI-approved BSD License (the "License");
  see accompanying file Copyright.txt for details.

  This software is distributed WITHOUT ANY WARRANTY; without even the
  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  See the License for more information.
============================================================================*/
#ifndef @KWSYS_NAMESPACE@_Terminal_h
#define @KWSYS_NAMESPACE@_Terminal_h

#include <@KWSYS_NAMESPACE@/Configure.h>

#include <stdio.h> /* For file stream type FILE. */

/* Redefine all public interface symbol names to be in the proper
   namespace.  These macros are used internally to kwsys only, and are
   not visible to user code.  Use kwsysHeaderDump.pl to reproduce
   these macros after making changes to the interface.  */
#if !defined(KWSYS_NAMESPACE)
# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
#endif
#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
# define kwsysTerminal_cfprintf                kwsys_ns(Terminal_cfprintf)
# define kwsysTerminal_Color_e                 kwsys_ns(Terminal_Color_e)
# define kwsysTerminal_Color_Normal            kwsys_ns(Terminal_Color_Normal)
# define kwsysTerminal_Color_ForegroundBlack   kwsys_ns(Terminal_Color_ForegroundBlack)
# define kwsysTerminal_Color_ForegroundRed     kwsys_ns(Terminal_Color_ForegroundRed)
# define kwsysTerminal_Color_ForegroundGreen   kwsys_ns(Terminal_Color_ForegroundGreen)
# define kwsysTerminal_Color_ForegroundYellow  kwsys_ns(Terminal_Color_ForegroundYellow)
# define kwsysTerminal_Color_ForegroundBlue    kwsys_ns(Terminal_Color_ForegroundBlue)
# define kwsysTerminal_Color_ForegroundMagenta kwsys_ns(Terminal_Color_ForegroundMagenta)
# define kwsysTerminal_Color_ForegroundCyan    kwsys_ns(Terminal_Color_ForegroundCyan)
# define kwsysTerminal_Color_ForegroundWhite   kwsys_ns(Terminal_Color_ForegroundWhite)
# define kwsysTerminal_Color_ForegroundMask    kwsys_ns(Terminal_Color_ForegroundMask)
# define kwsysTerminal_Color_BackgroundBlack   kwsys_ns(Terminal_Color_BackgroundBlack)
# define kwsysTerminal_Color_BackgroundRed     kwsys_ns(Terminal_Color_BackgroundRed)
# define kwsysTerminal_Color_BackgroundGreen   kwsys_ns(Terminal_Color_BackgroundGreen)
# define kwsysTerminal_Color_BackgroundYellow  kwsys_ns(Terminal_Color_BackgroundYellow)
# define kwsysTerminal_Color_BackgroundBlue    kwsys_ns(Terminal_Color_BackgroundBlue)
# define kwsysTerminal_Color_BackgroundMagenta kwsys_ns(Terminal_Color_BackgroundMagenta)
# define kwsysTerminal_Color_BackgroundCyan    kwsys_ns(Terminal_Color_BackgroundCyan)
# define kwsysTerminal_Color_BackgroundWhite   kwsys_ns(Terminal_Color_BackgroundWhite)
# define kwsysTerminal_Color_BackgroundMask    kwsys_ns(Terminal_Color_BackgroundMask)
# define kwsysTerminal_Color_ForegroundBold    kwsys_ns(Terminal_Color_ForegroundBold)
# define kwsysTerminal_Color_BackgroundBold    kwsys_ns(Terminal_Color_BackgroundBold)
# define kwsysTerminal_Color_AssumeTTY         kwsys_ns(Terminal_Color_AssumeTTY)
# define kwsysTerminal_Color_AssumeVT100       kwsys_ns(Terminal_Color_AssumeVT100)
# define kwsysTerminal_Color_AttributeMask     kwsys_ns(Terminal_Color_AttributeMask)
#endif

#if defined(__cplusplus)
extern "C"
{
#endif

/**
 * Write colored and formatted text to a stream.  Color is used only
 * for streams supporting it.  The color specification is constructed
 * by bitwise-OR-ing enumeration values.  At most one foreground and
 * one background value may be given.
 *
 * Whether the a stream supports color is usually automatically
 * detected, but with two exceptions:
 *
 *   - When the stream is displayed in a terminal supporting VT100
 *   color but using an intermediate pipe for communication the
 *   detection of a tty fails.  (This typically occurs for a shell
 *   running in an rxvt terminal in MSYS.)  If the caller knows this
 *   to be the case, the attribute Color_AssumeTTY may be included in
 *   the color specification.
 *
 *   - When the stream is displayed in a terminal whose TERM
 *   environment variable is not set or is set to a value that is not
 *   known to support VT100 colors.  If the caller knows this to be
 *   the case, the attribute Color_AssumeVT100 may be included in the
 *   color specification.
 */
kwsysEXPORT void kwsysTerminal_cfprintf(int color, FILE* stream,
                                        const char* format, ...);
enum kwsysTerminal_Color_e
{
  /* Normal Text */
  kwsysTerminal_Color_Normal = 0,

  /* Foreground Color */
  kwsysTerminal_Color_ForegroundBlack   = 0x1,
  kwsysTerminal_Color_ForegroundRed     = 0x2,
  kwsysTerminal_Color_ForegroundGreen   = 0x3,
  kwsysTerminal_Color_ForegroundYellow  = 0x4,
  kwsysTerminal_Color_ForegroundBlue    = 0x5,
  kwsysTerminal_Color_ForegroundMagenta = 0x6,
  kwsysTerminal_Color_ForegroundCyan    = 0x7,
  kwsysTerminal_Color_ForegroundWhite   = 0x8,
  kwsysTerminal_Color_ForegroundMask    = 0xF,

  /* Background Color */
  kwsysTerminal_Color_BackgroundBlack   = 0x10,
  kwsysTerminal_Color_BackgroundRed     = 0x20,
  kwsysTerminal_Color_BackgroundGreen   = 0x30,
  kwsysTerminal_Color_BackgroundYellow  = 0x40,
  kwsysTerminal_Color_BackgroundBlue    = 0x50,
  kwsysTerminal_Color_BackgroundMagenta = 0x60,
  kwsysTerminal_Color_BackgroundCyan    = 0x70,
  kwsysTerminal_Color_BackgroundWhite   = 0x80,
  kwsysTerminal_Color_BackgroundMask    = 0xF0,

  /* Attributes */
  kwsysTerminal_Color_ForegroundBold = 0x100,
  kwsysTerminal_Color_BackgroundBold = 0x200,
  kwsysTerminal_Color_AssumeTTY      = 0x400,
  kwsysTerminal_Color_AssumeVT100    = 0x800,
  kwsysTerminal_Color_AttributeMask  = 0xF00
};

#if defined(__cplusplus)
} /* extern "C" */
#endif

/* If we are building a kwsys .c or .cxx file, let it use these macros.
   Otherwise, undefine them to keep the namespace clean.  */
#if !defined(KWSYS_NAMESPACE)
# undef kwsys_ns
# undef kwsysEXPORT
# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
#  undef kwsysTerminal_cfprintf
#  undef kwsysTerminal_Color_e
#  undef kwsysTerminal_Color_Normal
#  undef kwsysTerminal_Color_ForegroundBlack
#  undef kwsysTerminal_Color_ForegroundRed
#  undef kwsysTerminal_Color_ForegroundGreen
#  undef kwsysTerminal_Color_ForegroundYellow
#  undef kwsysTerminal_Color_ForegroundBlue
#  undef kwsysTerminal_Color_ForegroundMagenta
#  undef kwsysTerminal_Color_ForegroundCyan
#  undef kwsysTerminal_Color_ForegroundWhite
#  undef kwsysTerminal_Color_ForegroundMask
#  undef kwsysTerminal_Color_BackgroundBlack
#  undef kwsysTerminal_Color_BackgroundRed
#  undef kwsysTerminal_Color_BackgroundGreen
#  undef kwsysTerminal_Color_BackgroundYellow
#  undef kwsysTerminal_Color_BackgroundBlue
#  undef kwsysTerminal_Color_BackgroundMagenta
#  undef kwsysTerminal_Color_BackgroundCyan
#  undef kwsysTerminal_Color_BackgroundWhite
#  undef kwsysTerminal_Color_BackgroundMask
#  undef kwsysTerminal_Color_ForegroundBold
#  undef kwsysTerminal_Color_BackgroundBold
#  undef kwsysTerminal_Color_AssumeTTY
#  undef kwsysTerminal_Color_AssumeVT100
#  undef kwsysTerminal_Color_AttributeMask
# endif
#endif

#endif
