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
|
#ifndef NW4R_DB_CONSOLE_H
#define NW4R_DB_CONSOLE_H
#include "common.h"
#include "nw4r/ut/ut_TextWriterBase.h"
namespace nw4r {
namespace db {
namespace detail {
typedef struct ConsoleHead {
u8 *textBuf;
u16 width;
u16 height;
u16 priority;
u16 attr;
u16 printTop;
u16 printXPos;
u16 ringTop;
s32 ringTopLineCnt;
s32 viewTopLine;
s16 viewPosX;
s16 viewPosY;
u16 viewLines;
bool isVisible;
nw4r::ut::TextWriterBase<char> *writer;
ConsoleHead *next;
} ConsoleHead;
} // namespace detail
typedef detail::ConsoleHead *ConsoleHandle;
enum ConsoleOutputType {
CONSOLE_OUTPUT_NONE = 0,
CONSOLE_OUTPUT_DISPLAY = 1,
CONSOLE_OUTPUT_TERMINAL = 2,
CONSOLE_OUTPUT_ALL = CONSOLE_OUTPUT_DISPLAY | CONSOLE_OUTPUT_TERMINAL,
};
inline s16 Console_GetPositionX(ConsoleHandle console) {
return console->viewPosX;
}
inline s16 Console_GetPositionY(ConsoleHandle console) {
return console->viewPosY;
}
inline bool Console_SetVisible(ConsoleHandle handle, bool bVisible) {
bool old = handle->isVisible;
handle->isVisible = bVisible;
return old;
}
inline void Console_SetPosition(ConsoleHandle handle, s32 x, s32 y) {
handle->viewPosX = x;
handle->viewPosY = y;
}
inline s32 Console_GetViewBaseLine(ConsoleHandle console) {
return console->viewTopLine;
}
inline s32 Console_SetViewBaseLine(ConsoleHandle console, s32 line) {
s32 old = console->viewTopLine;
console->viewTopLine = line;
return old;
}
inline s32 Console_GetBufferHeadLine(ConsoleHandle console) {
return console->ringTopLineCnt;
}
ConsoleHandle Console_Create(void *arg, u16, u16, u16, u16, u16);
ConsoleHandle Console_Destroy(ConsoleHandle console);
void Console_DrawDirect(ConsoleHandle console);
void Console_VFPrintf(ConsoleOutputType type, ConsoleHandle console, const char *format, va_list vlist);
void Console_Printf(ConsoleHandle console, const char *format, ...);
s32 Console_GetTotalLines(ConsoleHandle console);
} // namespace db
} // namespace nw4r
#endif
|