diff options
author | Torbjörn Andersson | 2015-08-29 18:08:52 +0200 |
---|---|---|
committer | Torbjörn Andersson | 2015-08-29 18:08:52 +0200 |
commit | 7f4268dc3dcf2cc6a34c605a7ddbd69d8740526e (patch) | |
tree | 6225bdd5f4d097fb377828c55ea3495c439acc06 /gui/debugger.cpp | |
parent | 2ab0b71fd04d817740826c28ce29b9945176b684 (diff) | |
download | scummvm-rg350-7f4268dc3dcf2cc6a34c605a7ddbd69d8740526e.tar.gz scummvm-rg350-7f4268dc3dcf2cc6a34c605a7ddbd69d8740526e.tar.bz2 scummvm-rg350-7f4268dc3dcf2cc6a34c605a7ddbd69d8740526e.zip |
DEBUGGER: Add function for printing a StringArray in columns
Diffstat (limited to 'gui/debugger.cpp')
-rw-r--r-- | gui/debugger.cpp | 53 |
1 files changed, 44 insertions, 9 deletions
diff --git a/gui/debugger.cpp b/gui/debugger.cpp index 466681e89d..209a787be8 100644 --- a/gui/debugger.cpp +++ b/gui/debugger.cpp @@ -87,6 +87,19 @@ Debugger::~Debugger() { // Initialisation Functions +int Debugger::getCharsPerLine() { +#ifndef USE_TEXT_CONSOLE_FOR_DEBUGGER + const int charsPerLine = _debuggerDialog->getCharsPerLine(); +#elif defined(USE_READLINE) + int charsPerLine, rows; + rl_get_screen_size(&rows, &charsPerLine); +#else + // Can we do better? + const int charsPerLine = 80; +#endif + return charsPerLine; +} + int Debugger::debugPrintf(const char *format, ...) { va_list argptr; @@ -101,6 +114,36 @@ int Debugger::debugPrintf(const char *format, ...) { return count; } +void Debugger::debugPrintColumns(const Common::StringArray &list) { + uint maxLength = 0; + uint i, j; + + for (i = 0; i < list.size(); i++) { + if (list[i].size() > maxLength) + maxLength = list[i].size(); + } + + uint charsPerLine = getCharsPerLine(); + uint columnWidth = maxLength + 2; + uint columns = charsPerLine / columnWidth; + + uint lines = list.size() / columns; + + if (list.size() % columns) + lines++; + + + for (i = 0; i < lines; i++) { + for (j = 0; j < columns; j++) { + uint pos = i + j * lines; + if (pos < list.size()) { + debugPrintf("%*s", -columnWidth, list[pos].c_str()); + } + } + debugPrintf("\n"); + } +} + void Debugger::preEnter() { g_engine->pauseEngine(true); } @@ -447,15 +490,7 @@ bool Debugger::cmdExit(int argc, const char **argv) { // Print a list of all registered commands (and variables, if any), // nicely word-wrapped. bool Debugger::cmdHelp(int argc, const char **argv) { -#ifndef USE_TEXT_CONSOLE_FOR_DEBUGGER - const int charsPerLine = _debuggerDialog->getCharsPerLine(); -#elif defined(USE_READLINE) - int charsPerLine, rows; - rl_get_screen_size(&rows, &charsPerLine); -#else - // Can we do better? - const int charsPerLine = 80; -#endif + const int charsPerLine = getCharsPerLine(); int width, size; uint i; |