summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@gmail.com>2013-10-22 16:53:47 +0200
committerDavid Herrmann <dh.herrmann@gmail.com>2013-10-22 17:40:46 +0200
commit918193b24451c087e1bef4039862ddb3c72eba31 (patch)
treeb1acdd47d5f781be75123494524f1bda9ef77bb0
parent4e71294543b309c12abddf9156a87f927eb51623 (diff)
screen: minor coding style fixes
Fix some coding-style issues and minor logical redudancy. Also improve the file-documentation to correctly describe what tsm_screen does today. Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
-rw-r--r--src/tsm_screen.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/tsm_screen.c b/src/tsm_screen.c
index 610172c..098b1f9 100644
--- a/src/tsm_screen.c
+++ b/src/tsm_screen.c
@@ -25,9 +25,23 @@
/*
* Screen Management
- * This provides the screen drawing and manipulation functions. It does not
- * provide the terminal emulation. It is just an abstraction layer to draw text
- * to a framebuffer as used by terminals and consoles.
+ * This provides the abstracted screen management. It does not do any
+ * terminal-emulation, instead it provides a resizable table of cells. You can
+ * insert, remove and modify the cells freely.
+ * A screen has always a fixed, but changeable, width and height. This defines
+ * the number of columns and rows. The screen doesn't care for pixels, glyphs or
+ * framebuffers. The screen only contains information about each cell.
+ *
+ * Screens are the logical model behind a real screen of a terminal emulator.
+ * Users usually allocate a screen for each terminal-emulator they run. All they
+ * have to do is render the screen onto their widget on each change and forward
+ * any widget-events to the screen.
+ *
+ * The screen object already includes scrollback-buffers, selection support and
+ * more. This simplifies terminal emulators a lot, but also prevents them from
+ * accessing the real screen data. However, terminal emulators should have no
+ * reason to access the data directly. The screen API should provide everything
+ * they need.
*/
#include <errno.h>
@@ -677,7 +691,7 @@ int tsm_screen_resize(struct tsm_screen *con, unsigned int x,
con->cursor_x = con->size_x - 1;
/* scroll buffer if screen height shrinks */
- if (con->size_y != 0 && y < con->size_y) {
+ if (y < con->size_y) {
diff = con->size_y - y;
screen_scroll_up(con, diff);
if (con->cursor_y > diff)
@@ -821,13 +835,10 @@ void tsm_screen_sb_down(struct tsm_screen *con, unsigned int num)
return;
while (num--) {
- if (con->sb_pos) {
+ if (con->sb_pos)
con->sb_pos = con->sb_pos->next;
- if (!con->sb_pos)
- return;
- } else {
+ else
return;
- }
}
}
@@ -1308,9 +1319,8 @@ void tsm_screen_insert_chars(struct tsm_screen *con, unsigned int num)
&cells[con->cursor_x],
mv * sizeof(*cells));
- for (i = 0; i < num; ++i) {
+ for (i = 0; i < num; ++i)
cell_init(con, &cells[con->cursor_x + i]);
- }
}
SHL_EXPORT
@@ -1338,9 +1348,8 @@ void tsm_screen_delete_chars(struct tsm_screen *con, unsigned int num)
&cells[con->cursor_x + num],
mv * sizeof(*cells));
- for (i = 0; i < num; ++i) {
+ for (i = 0; i < num; ++i)
cell_init(con, &cells[con->cursor_x + mv + i]);
- }
}
SHL_EXPORT