1 /*
2 ** c_console.h
3 **
4 **---------------------------------------------------------------------------
5 ** Copyright 1998-2006 Randy Heit
6 ** All rights reserved.
7 **
8 ** Redistribution and use in source and binary forms, with or without
9 ** modification, are permitted provided that the following conditions
10 ** are met:
11 **
12 ** 1. Redistributions of source code must retain the above copyright
13 **    notice, this list of conditions and the following disclaimer.
14 ** 2. Redistributions in binary form must reproduce the above copyright
15 **    notice, this list of conditions and the following disclaimer in the
16 **    documentation and/or other materials provided with the distribution.
17 ** 3. The name of the author may not be used to endorse or promote products
18 **    derived from this software without specific prior written permission.
19 **
20 ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21 ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22 ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23 ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
24 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25 ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29 ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 **---------------------------------------------------------------------------
31 **
32 */
33 
34 #ifndef __C_CONSOLE__
35 #define __C_CONSOLE__
36 
37 #include <stdarg.h>
38 #include "basictypes.h"
39 
40 struct event_t;
41 
42 #define C_BLINKRATE			(TICRATE/2)
43 
44 typedef enum cstate_t
45 {
46 	c_up=0, c_down=1, c_falling=2, c_rising=3
47 }
48 constate_e;
49 
50 #define PRINTLEVELS 5
51 extern int PrintColors[PRINTLEVELS + 2];
52 
53 extern constate_e ConsoleState;
54 extern int ConBottom;
55 
56 // Initialize the console
57 void C_InitConsole (int width, int height, bool ingame);
58 void C_DeinitConsole ();
59 void C_InitConback();
60 
61 // Adjust the console for a new screen mode
62 void C_NewModeAdjust (void);
63 
64 void C_Ticker (void);
65 
66 void AddToConsole (int printlevel, const char *string);
67 int PrintString (int printlevel, const char *string);
68 int VPrintf (int printlevel, const char *format, va_list parms) GCCFORMAT(2);
69 
70 void C_DrawConsole (bool hw2d);
71 void C_ToggleConsole (void);
72 void C_FullConsole (void);
73 void C_HideConsole (void);
74 void C_AdjustBottom (void);
75 void C_FlushDisplay (void);
76 
77 void C_InitTicker (const char *label, unsigned int max, bool showpercent=true);
78 void C_SetTicker (unsigned int at, bool forceUpdate=false);
79 
80 class FFont;
81 void C_MidPrint (FFont *font, const char *message);
82 void C_MidPrintBold (FFont *font, const char *message);
83 
84 bool C_Responder (event_t *ev);
85 
86 void C_AddTabCommand (const char *name);
87 void C_RemoveTabCommand (const char *name);
88 void C_ClearTabCommands();		// Removes all tab commands
89 
90 #endif
91