summaryrefslogtreecommitdiff
path: root/src/common/showmsg.h
blob: 0624f1786ebaca1b0a84404af3cb0ecebcde62ce (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// Copyright (c) Hercules Dev Team, licensed under GNU GPL.
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams

#ifndef COMMON_SHOWMSG_H
#define COMMON_SHOWMSG_H

#include <stdarg.h>

#include "../common/cbasetypes.h"

#ifdef HERCULES_CORE
#	include "../../3rdparty/libconfig/libconfig.h"
#else
#	include "../common/HPMi.h"
#endif

// for help with the console colors look here:
// http://www.edoceo.com/liberum/?doc=printf-with-color
// some code explanation (used here):
// \033[2J : clear screen and go up/left (0, 0 position)
// \033[K  : clear line from actual position to end of the line
// \033[0m : reset color parameter
// \033[1m : use bold for font

#define CL_RESET      "\033[0m"
#define CL_CLS        "\033[2J"
#define CL_CLL        "\033[K"

// font settings
#define CL_BOLD       "\033[1m"
#define CL_NORM       CL_RESET
#define CL_NORMAL     CL_RESET
#define CL_NONE       CL_RESET

// background color
#define CL_BG_BLACK   "\033[40m"
#define CL_BG_RED     "\033[41m"
#define CL_BG_GREEN   "\033[42m"
#define CL_BG_YELLOW  "\033[43m"
#define CL_BG_BLUE    "\033[44m"
#define CL_BG_MAGENTA "\033[45m"
#define CL_BG_CYAN    "\033[46m"
#define CL_BG_WHITE   "\033[47m"
// foreground color and normal font (normal color on windows)
#define CL_LT_BLACK   "\033[0;30m"
#define CL_LT_RED     "\033[0;31m"
#define CL_LT_GREEN   "\033[0;32m"
#define CL_LT_YELLOW  "\033[0;33m"
#define CL_LT_BLUE    "\033[0;34m"
#define CL_LT_MAGENTA "\033[0;35m"
#define CL_LT_CYAN    "\033[0;36m"
#define CL_LT_WHITE   "\033[0;37m"
// foreground color and bold font (bright color on windows)
#define CL_BT_BLACK   "\033[1;30m"
#define CL_BT_RED     "\033[1;31m"
#define CL_BT_GREEN   "\033[1;32m"
#define CL_BT_YELLOW  "\033[1;33m"
#define CL_BT_BLUE    "\033[1;34m"
#define CL_BT_MAGENTA "\033[1;35m"
#define CL_BT_CYAN    "\033[1;36m"
#define CL_BT_WHITE   "\033[1;37m"

// foreground color and bold font (bright color on windows)
#define CL_WHITE   CL_BT_WHITE
#define CL_GRAY    CL_BT_BLACK
#define CL_RED     CL_BT_RED
#define CL_GREEN   CL_BT_GREEN
#define CL_YELLOW  CL_BT_YELLOW
#define CL_BLUE    CL_BT_BLUE
#define CL_MAGENTA CL_BT_MAGENTA
#define CL_CYAN    CL_BT_CYAN

#define CL_SPACE   "           "   // space aquivalent of the print messages

enum msg_type {
	MSG_NONE,
	MSG_STATUS,
	MSG_SQL,
	MSG_INFORMATION,
	MSG_NOTICE,
	MSG_WARNING,
	MSG_DEBUG,
	MSG_ERROR,
	MSG_FATALERROR
};

#ifdef HERCULES_CORE
extern int stdout_with_ansisequence; //If the color ANSI sequences are to be used. [flaviojs]
extern int msg_silent; //Specifies how silent the console is. [Skotlex]
extern int console_msg_log; //Specifies what error messages to log. [Ind]
extern char timestamp_format[20]; //For displaying Timestamps [Skotlex]

extern void ClearScreen(void);
extern int vShowMessage_(enum msg_type flag, const char *string, va_list ap);

	extern void ShowMessage(const char *, ...) __attribute__((format(printf, 1, 2)));
	extern void ShowStatus(const char *, ...) __attribute__((format(printf, 1, 2)));
	extern void ShowSQL(const char *, ...) __attribute__((format(printf, 1, 2)));
	extern void ShowInfo(const char *, ...) __attribute__((format(printf, 1, 2)));
	extern void ShowNotice(const char *, ...) __attribute__((format(printf, 1, 2)));
	extern void ShowWarning(const char *, ...) __attribute__((format(printf, 1, 2)));
	extern void ShowDebug(const char *, ...) __attribute__((format(printf, 1, 2)));
	extern void ShowError(const char *, ...) __attribute__((format(printf, 1, 2)));
	extern void ShowFatalError(const char *, ...) __attribute__((format(printf, 1, 2)));
	extern void ShowConfigWarning(config_setting_t *config, const char *string, ...) __attribute__((format(printf, 2, 3)));
#else
	HPExport void (*ShowMessage) (const char *, ...) __attribute__((format(printf, 1, 2)));
	HPExport void (*ShowStatus) (const char *, ...) __attribute__((format(printf, 1, 2)));
	HPExport void (*ShowSQL) (const char *, ...) __attribute__((format(printf, 1, 2)));
	HPExport void (*ShowInfo) (const char *, ...) __attribute__((format(printf, 1, 2)));
	HPExport void (*ShowNotice) (const char *, ...) __attribute__((format(printf, 1, 2)));
	HPExport void (*ShowWarning) (const char *, ...) __attribute__((format(printf, 1, 2)));
	HPExport void (*ShowDebug) (const char *, ...) __attribute__((format(printf, 1, 2)));
	HPExport void (*ShowError) (const char *, ...) __attribute__((format(printf, 1, 2)));
	HPExport void (*ShowFatalError) (const char *, ...) __attribute__((format(printf, 1, 2)));
#endif

#endif /* COMMON_SHOWMSG_H */