summaryrefslogtreecommitdiff
path: root/ycurses/src/curses/window.cpp
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2010-11-21 17:01:59 +0000
committerPaul Buetow <paul@buetow.org>2010-11-21 17:01:59 +0000
commitb891420946d5269cc326d67555c6aab3db41a01a (patch)
treef6c5e7d6dbf18ec8c0ea9ec0b037251df46b4cbb /ycurses/src/curses/window.cpp
parenta537e8323d932125232c305f9573daef89aef0df (diff)
added yhttpd and ycurses trunk versions
Diffstat (limited to 'ycurses/src/curses/window.cpp')
-rw-r--r--ycurses/src/curses/window.cpp367
1 files changed, 367 insertions, 0 deletions
diff --git a/ycurses/src/curses/window.cpp b/ycurses/src/curses/window.cpp
new file mode 100644
index 0000000..d5ce37c
--- /dev/null
+++ b/ycurses/src/curses/window.cpp
@@ -0,0 +1,367 @@
+#ifndef WINDOW_CPP
+#define WINDOW_CPP
+
+#include "window.h"
+
+bool window::b_is_rootoot = false;
+
+window::window(window_type t)
+{
+ b_is_rootoot = true;
+ init();
+ p_window = stdscr;
+}
+
+window::window(int i_height, int i_width)
+{
+ init();
+
+ this->i_height = i_height;
+ this->i_width = i_width;
+ this->i_start_y = (LINES - i_height) / 2;
+ this->i_start_x = (COLS - i_width) / 2;
+
+ p_window = create_new_win(i_height, i_width, i_start_y, i_start_x);
+}
+
+window::window(int i_height, int i_width, coordinate& r_coord)
+{
+ init();
+
+ this->i_height = i_height;
+ this->i_width = i_width;
+ this->i_start_y = r_coord.y;
+ this->i_start_x = r_coord.x;
+
+ p_window = create_new_win(i_height, i_width, i_start_y, i_start_x);
+}
+
+window::window(int i_height, int i_width, int i_start_y, int i_start_x)
+{
+ init();
+
+ this->i_height = i_height;
+ this->i_width = i_width;
+ this->i_start_y = i_start_y;
+ this->i_start_x = i_start_x;
+
+ p_window = create_new_win(i_height, i_width, i_start_y, i_start_x);
+}
+
+window::~window()
+{
+ if (p_window)
+ {
+ if(!is_root_win())
+ destroy_win(p_window);
+
+ p_window = 0;
+ }
+}
+
+bool
+window::is_root_win()
+{
+ return b_is_rootoot;
+}
+
+void
+window::init()
+{
+}
+
+WINDOW*
+window::create_new_win(int i_height, int i_width, int i_start_y, int i_start_x)
+{
+ WINDOW *p_local_win = newwin(i_height, i_width, i_start_y, i_start_x);
+ box(p_local_win, 0 , 0); /* 0, 0 gives default characters
+ * for the vertical and horizontal
+ * lines */
+ wrefresh(p_local_win); /* Show that box */
+
+ return p_local_win;
+}
+
+void
+window::destroy_win(WINDOW *p_local_win)
+{
+ /* box(local_win, ' ', ' '); : This won't produce the desired
+ * result of erasing the window. It will leave it's four corners
+ * and so an ugly remnant of window.
+ */
+
+ wborder(p_local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
+ /* The parameters taken are
+ * 1. win: the window on which to operate
+ * 2. ls: character to be used for the left side of the window
+ * 3. rs: character to be used for the right side of the window
+ * 4. ts: character to be used for the top side of the window
+ * 5. bs: character to be used for the bottom side of the window
+ * 6. tl: character to be used for the top left corner of the window
+ * 7. tr: character to be used for the top right corner of the window
+ * 8. bl: character to be used for the bottom left corner of the window
+ * 9. br: character to be used for the bottom right corner of the window
+ */
+
+ wrefresh(p_local_win);
+ delwin(p_local_win);
+}
+
+void
+window::hide()
+{
+ hidden::hide();
+
+ if (p_window)
+ destroy_win(p_window);
+}
+
+void
+window::show()
+{
+ if (!is_hidden())
+ return;
+
+ hidden::show();
+
+ p_window = create_new_win(i_height, i_width, i_start_y, i_start_x);
+
+ refresh();
+}
+
+void
+window::refresh()
+{
+ wrefresh(p_window);
+}
+
+void
+window::set_attributes(attributes& r_attr)
+{
+ r_attr.use_wattron(p_window);
+}
+
+void
+window::unset_attributes(attributes& r_attr)
+{
+ r_attr.use_wattroff(p_window);
+}
+
+int
+window::save_attributes()
+{
+ return attr_get(&sr_attributes, &sr_pair, sr_options);
+}
+
+int
+window::restore_attributes()
+{
+ return attr_set(sr_attributes, sr_pair, sr_options);
+}
+
+void
+window::print(int i)
+{
+ print(tool::int2string(i));
+}
+
+void
+window::print(coordinate &r_coord, string s)
+{
+ print(r_coord.y, r_coord.x, s);
+}
+
+void
+window::print(int i_y, int i_x, int i)
+{
+ print(i_y, i_x, tool::int2string(i));
+}
+
+void
+window::print(coordinate &r_coord, int i)
+{
+ print(r_coord, tool::int2string(i));
+}
+
+void
+window::println(int i)
+{
+ println(tool::int2string(i));
+}
+
+void
+window::println(coordinate &r_coord, string s)
+{
+ println(r_coord.y, r_coord.x, s);
+}
+
+void
+window::println(int i_y, int i_x, int i)
+{
+ println(i_y, i_x, tool::int2string(i));
+}
+
+void
+window::println(coordinate &r_coord, int i)
+{
+ println(r_coord, tool::int2string(i));
+}
+
+void
+window::print(string s)
+{
+ wprintw(p_window, const_cast<char*>(s.c_str()));
+ refresh();
+}
+
+void
+window::print(int i_y, int i_x, string s)
+{
+ mvwprintw(p_window, i_y, i_x, const_cast<char*>(s.c_str()));
+ refresh();
+}
+
+void
+window::println(string s)
+{
+ wprintw(p_window, const_cast<char*>((s+"\n").c_str()));
+ refresh();
+}
+
+void
+window::println(int i_y, int i_x, string s)
+{
+ mvwprintw(p_window, i_y, i_x, const_cast<char*>((s+"\n").c_str()));
+ refresh();
+}
+
+void
+window::print(int i, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ print(tool::int2string(i));
+ restore_attributes();
+}
+
+void
+window::print(coordinate &r_coord, string s, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ print(r_coord.y, r_coord.x, s);
+ restore_attributes();
+}
+
+void
+window::print(int i_y, int i_x, int i, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ print(i_y, i_x, tool::int2string(i));
+ restore_attributes();
+}
+
+void
+window::print(coordinate &r_coord, int i, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ print(r_coord, tool::int2string(i));
+ restore_attributes();
+}
+
+void
+window::println(int i, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ println(tool::int2string(i));
+ restore_attributes();
+}
+
+void
+window::println(coordinate &r_coord, string s, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ println(r_coord.y, r_coord.x, s);
+ restore_attributes();
+}
+
+void
+window::println(int i_y, int i_x, int i, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ println(i_y, i_x, tool::int2string(i));
+ restore_attributes();
+}
+
+void
+window::println(coordinate &r_coord, int i, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ println(r_coord, tool::int2string(i));
+ restore_attributes();
+}
+
+void
+window::print(string s, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ wprintw(p_window, const_cast<char*>(s.c_str()));
+ refresh();
+ restore_attributes();
+}
+
+void
+window::print(int i_y, int i_x, string s, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ mvwprintw(p_window, i_y, i_x, const_cast<char*>(s.c_str()));
+ refresh();
+ restore_attributes();
+}
+
+void
+window::println(string s, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ wprintw(p_window, const_cast<char*>((s+"\n").c_str()));
+ refresh();
+ restore_attributes();
+}
+
+void
+window::println(int i_y, int i_x, string s, attributes& r_attr)
+{
+ save_attributes();
+ set_attributes(r_attr);
+ mvwprintw(p_window, i_y, i_x, const_cast<char*>((s+"\n").c_str()));
+ refresh();
+ restore_attributes();
+}
+
+void
+window::move_cursor(coordinate& r_coord)
+{
+ move_cursor(r_coord.y, r_coord.x);
+}
+
+void
+window::move_cursor(int i_y, int i_x)
+{
+ if (!p_window)
+ return;
+
+ wmove(p_window, i_y, i_x);
+ refresh();
+}
+
+
+#endif