terminal.h
Go to the documentation of this file.
1 // Encapsulates terminal control (colors, cursor, ...)
2 // Author: Max Schwarz <max.schwarz@uni-bonn.de>
3 
4 #ifndef TERMINAL_H
5 #define TERMINAL_H
6 
7 #include <stdint.h>
8 #include <string>
9 #include <map>
10 #include <chrono>
11 
12 namespace rosbag_fancy
13 {
14 
21 class Terminal
22 {
23 public:
31  {
33  Red,
48 
50  Grayscale = 0xe8
51  };
52 
59  class Parser
60  {
61  public:
62  Parser();
63 
65  void parse(char c);
66 
68  void parse(const std::string& str);
69 
71  void apply(Terminal* term);
72  private:
73  void parseSetAttributes(const std::string& str);
74 
75  enum State
76  {
80  };
81 
83  std::string m_buf;
84 
85  int m_fgColor;
86  int m_bgColor;
87  bool m_bold;
88  };
89 
90  Terminal();
91 
98  void setForegroundColor(uint32_t color);
99 
106  void setBackgroundColor(uint32_t color);
107 
109  void setCursorInvisible();
110 
112  void setCursorVisible();
113 
117  void setEcho(bool on);
118 
119  void setBold(bool on);
120 
122 
123  void setSimpleBackground(SimpleColor color);
124  void setSimpleForeground(SimpleColor color);
127 
129  void setStandardColors();
130 
132  void clearToEndOfLine();
133 
135  void moveCursorUp(int numLines);
136 
139 
145  bool getSize(int* columns, int* rows);
146 
152  bool has256Colors() const;
153 
157  bool interactive() const
158  { return m_valid; }
159 
160  void setWindowTitle(const std::string& title);
161  void clearWindowTitle(const std::string& backup);
162 
163 
165  {
166  SK_F1 = 0x100, SK_F2, SK_F3, SK_F4,
170  };
171 
172  int readKey();
173 
174 private:
175  bool m_valid;
178 
179  std::string m_bgColorStr;
180  std::string m_fgColorStr;
181  std::string m_opStr;
182  std::string m_sgr0Str;
183  std::string m_elStr;
184  std::string m_upStr;
185  std::string m_boldStr;
186 
187  std::map<std::string, SpecialKey> m_specialKeys;
188 
189  std::string m_currentEscapeStr;
190  std::chrono::steady_clock::time_point m_escapeStartTime;
192  unsigned int m_currentEscapeAbortIdx = 0;
193 };
194 
195 }
196 
197 #endif
void setStandardColors()
Reset fg + bg to standard terminal colors.
Definition: terminal.cpp:368
std::string m_bgColorStr
Definition: terminal.h:179
bool getSize(int *columns, int *rows)
Get current window size.
Definition: terminal.cpp:398
void parseSetAttributes(const std::string &str)
Definition: terminal.cpp:34
void apply(Terminal *term)
Apply the current internal state (colors) on the terminal.
Definition: terminal.cpp:108
std::string m_boldStr
Definition: terminal.h:185
std::map< std::string, SpecialKey > m_specialKeys
Definition: terminal.h:187
24-step grayscale starts here
Definition: terminal.h:50
void setWindowTitle(const std::string &title)
Definition: terminal.cpp:411
void setEcho(bool on)
Definition: terminal.cpp:311
std::string m_sgr0Str
Definition: terminal.h:182
void setCursorVisible()
restore cursor
Definition: terminal.cpp:254
void setBold(bool on)
Definition: terminal.cpp:332
void setSimplePair(SimpleColor fg, SimpleColor bg)
Definition: terminal.cpp:359
void setBackgroundColor(uint32_t color)
Set 24-bit background color.
Definition: terminal.cpp:275
void moveCursorToStartOfLine()
Move cursor to start of the line.
Definition: terminal.cpp:393
void setSimpleForeground(SimpleColor color)
Definition: terminal.cpp:341
Terminal escape sequence parser.
Definition: terminal.h:59
void moveCursorUp(int numLines)
Move cursor up by numLines.
Definition: terminal.cpp:385
void clearWindowTitle(const std::string &backup)
Definition: terminal.cpp:424
void setSimpleBackground(SimpleColor color)
Definition: terminal.cpp:350
std::string m_opStr
Definition: terminal.h:181
unsigned int m_currentEscapeAbortIdx
Definition: terminal.h:192
bool interactive() const
Definition: terminal.h:157
void clearToEndOfLine()
Clear characters from cursor to end of line.
Definition: terminal.cpp:377
void setCursorInvisible()
hide cursor
Definition: terminal.cpp:246
std::chrono::steady_clock::time_point m_escapeStartTime
Definition: terminal.h:190
void setForegroundColor(uint32_t color)
Set 24-bit foreground color.
Definition: terminal.cpp:293
std::string m_upStr
Definition: terminal.h:184
std::string m_elStr
Definition: terminal.h:183
void parse(char c)
parse single character c
Definition: terminal.cpp:69
std::string m_currentEscapeStr
Definition: terminal.h:189
SimpleColor
Simple colors.
Definition: terminal.h:30
bool has256Colors() const
Definition: terminal.cpp:241
Encapsulates terminal control.
Definition: terminal.h:21
std::string m_fgColorStr
Definition: terminal.h:180


rosbag_fancy
Author(s):
autogenerated on Fri Dec 9 2022 04:00:10