///////////////////////////////////////////////////////////////////////////////
/// @file deConsole.hpp
///
/// @brief "stdout" console
///
/// @author Assassin
///
/// This file is the intellectual property of Novus Delta, LLC.. Usage of the
/// contents of this file is subject to the Destiny3D Member License which
/// can be found at http://www.destiny3d.com.  Any other usage is prohibited.
///
/// This file is distributed "AS IS" without warranty of any kind.  Novus
/// Delta, LLC. does not guarantee the fitness of the contents of this file
/// for any particular purpose.
///
/// Copyright (C) 2001-2003 Novus Delta, LLC. All Rights Reserved.
///
/// <hr>
///                                 Change History
/// <hr>
///
/// @date July 2001
/// @author Assassin
/// @remarks Creation
///
///////////////////////////////////////////////////////////////////////////////

#ifndef DECONSOLE_HPP
#define DECONSOLE_HPP

#include "deGlobalTypes.hpp"

#if defined(DEUTIL_DLL_EXPORTS) || defined(DESTINY3D_EXPORT_ALL)
#	define DECONSOLE_API	extern "C" DEDLL_EXPORT
#elif defined(DESTINY3D_STATIC_LINK)
#	define DECONSOLE_API	extern "C"
#else
#	define DECONSOLE_API	extern "C" DEDLL_IMPORT
#endif

#ifdef USING_DESTINY3D
#ifdef _DEBUG
#	ifdef DESTINY3D_STATIC_LINK
#		pragma comment(lib, "deUtil_sd")
#	else
#		pragma comment(lib, "deUtild")
#	endif //DESTINY3D_STATIC_LINK
#else
#	ifdef DESTINY3D_STATIC_LINK
#		pragma comment(lib, "deUtil_s")
#	else
#		pragma comment(lib, "deUtil")
#	endif //DESTINY3D_STATIC_LINK
#endif //_DEBUG
#endif //USING_DESTINY3D

enum ConsoleColor_t
{
	Black,
	DarkRed,
	LightRed,
	DarkGreen,
	LightGreen,
	DarkBlue,
	LightBlue,
	Brown,
	Yellow,
	DarkCyan,
	LightCyan,
	Purple,
	Pink,
	Gray,
	White,
};

DECONSOLE_API void deConsole_MakeConsole();
DECONSOLE_API void deConsole_DestroyConsole();

/// set the current color for printing text on the output console
DECONSOLE_API bool deConsoleColor(ConsoleColor_t fore, ConsoleColor_t back = Black);
/// set the current position for printing text on the output console
DECONSOLE_API void deConsoleXY(int X, int Y);
/// print text on the output console
DECONSOLE_API bool deConsoleOut(const char * text, ...);

#endif
