summaryrefslogtreecommitdiff
path: root/rhtvision/include/tv/qnxrtp/screen.h
diff options
context:
space:
mode:
Diffstat (limited to 'rhtvision/include/tv/qnxrtp/screen.h')
-rw-r--r--rhtvision/include/tv/qnxrtp/screen.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/rhtvision/include/tv/qnxrtp/screen.h b/rhtvision/include/tv/qnxrtp/screen.h
new file mode 100644
index 0000000..3ed0af7
--- /dev/null
+++ b/rhtvision/include/tv/qnxrtp/screen.h
@@ -0,0 +1,88 @@
+/* QNX RtP screen routines header.
+ Copyright (c) 2002-2003 by Mike Gorchak
+ Covered by the BSD license. */
+
+#if defined(TVOSf_QNXRtP) && !defined(QNXRTPSCR_HEADER_INCLUDED)
+#define QNXRTPSCR_HEADER_INCLUDED
+
+class TDisplayQNXRtP: virtual public TDisplay
+{
+ protected:
+ TDisplayQNXRtP() {};
+ virtual ~TDisplayQNXRtP();
+ static void Init();
+
+ static void SetCursorPos(unsigned x, unsigned y);
+ static void GetCursorPos(unsigned &x, unsigned &y);
+ static void GetCursorShape(unsigned &start, unsigned &end);
+ static void SetCursorShape(unsigned start, unsigned end);
+ static ushort GetRows();
+ static ushort GetCols();
+ static void SetCrtMode(ushort mode);
+ static void SetCrtModeExt(char* mode);
+ static int CheckForWindowSize(void);
+ static const char* GetWindowTitle(void);
+ static int SetWindowTitle(const char* name);
+
+ protected:
+ static inline void safeput(char* &p, char* cap);
+
+ protected:
+ static int cur_x;
+ static int cur_y;
+ static int tty_fd;
+ static int cursorStart;
+ static int cursorEnd;
+
+ static ushort mode;
+
+ static volatile sig_atomic_t windowSizeChanged;
+};
+
+class TScreenQNXRtP: public TDisplayQNXRtP, public TScreen
+{
+ public:
+ TScreenQNXRtP();
+ virtual ~TScreenQNXRtP();
+
+ friend class TGKeyQNXRtP;
+ friend class THWMouseQNXRtP;
+ friend class TDisplayQNXRtP;
+
+ protected:
+ static void Resume();
+ static void Suspend();
+ static ushort fixCrtMode(ushort mode);
+ static void setCrtData();
+ static void clearScreen();
+ static void setVideoMode(ushort mode);
+ static void setVideoModeExt(char* mode);
+ static void getCharacters(unsigned offset,ushort* buf, unsigned count);
+ static ushort getCharacter(unsigned dst);
+ static void setCharacter(unsigned offset, ushort value);
+ static void setCharacters(unsigned dst, ushort* src, unsigned len);
+ static int System(const char* command, pid_t* pidChild, int in, int out, int err);
+
+ protected:
+ static void SpecialKeysDisable(int fd);
+ static void SpecialKeysRestore(int fd);
+ static void StartNCurses();
+ static void SetGTables();
+ static void RestoreGTables();
+ static void sigWindowSizeChanged(int sig);
+ static void SendToTerminal(const char* const value);
+ static void RestoreScreen();
+ static void mapColor(char* &p, int col);
+ static void writeBlock(int dst, int len, ushort* old, ushort* src);
+
+ protected:
+ static struct termios old_term;
+ static struct termios new_term;
+ static cc_t oldKeys[5];
+ static int old_col;
+ static int old_fore;
+ static int old_back;
+ static int force_redraw;
+};
+
+#endif // QNXRTPSCR_HEADER_INCLUDED