X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=src%2Fwindows.h;h=a98bbdb6708f8fc50c03d46be7cf4573be0b2f08;hb=3b2c82991c9ab169b33248c7be840a9bcd351e6d;hp=7e666acbca025631716521f41ec5de6f3045114b;hpb=619a5a1fd97d9fb458c6a93ff50c657c198aa113;p=plomrogue
diff --git a/src/windows.h b/src/windows.h
index 7e666ac..a98bbdb 100644
--- a/src/windows.h
+++ b/src/windows.h
@@ -9,7 +9,8 @@
*
* Windows can be almost any width (number has to fit into 16 bits); the virtual
* screen grows with them as needed -- but only horizontally and only up to 2^16
- * cells. Their height is limited by the height of the terminal screen.
+ * cells. Their height is limited by the height of the terminal screen, which
+ * must also fit into 2^16 cells.
*
* Positioning of windows can only indirectly be influenced: by resizing them,
* and by shifting their relative position inside the (currently invisible)
@@ -22,7 +23,9 @@
* Functions that return uint8_t return these error codes:
* 0 - success
* 1 - memory allocation error (of ncurses' pads/windows, or scroll hint texts)
- * 2 - activity forces virtual screen to grow beyond width of 2^16 cells
+ * 2 - would force virtual screen to grow beyond width or height of 2^16 cells
+ *
+ * TODO: Expose less internals to the API.
*
* TODO: Think up a more intuitive window positioning algorithm or at least make
* the chain that windows are positioned by visible.
@@ -100,16 +103,19 @@ extern uint8_t init_win_meta(WINDOW * screen, struct WinMeta * wmeta);
* and appointing "func"() to interpret and draw the content stored at "data"
* if the window is visible.
*
- * A value for "width" <1 will trigger a fallback to width=1. A "height" < 1 or
- * larger than the maximum window height possible within the virtual screen will
- * trigger a fallback to the maximum height possible (i.e. pass a "height" of 0
- * to initialize the window to its largest possible height).
+ * Pass 0 for "width" to make the window as wide as the terminal screen. Pass
+ * negative values for "width" to make the size so many cells smaller than the
+ * terminal screen. Pass 0 for "height" to give the window the maximum allowed
+ * height: one cell smaller than the terminal screen. Pass negative values to
+ * make the window so many smalls smaller than the terminal screen. The maximum
+ * allowed height is also applied for positive values that exceed it or negative
+ * values that would reduce the window height < 1 cell.
*
* Other members of the Win struct are initialized to 0. The window will stay
* invisible until appended to the chain of visible windows via append_win().
*/
extern struct Win init_win(struct WinMeta * wmeta, char * title,
- uint16_t height, uint16_t width,
+ int16_t height, int16_t width,
void * data, void * func);
@@ -151,7 +157,7 @@ extern void cycle_active_win(struct WinMeta * wmeta, char dir);
-/* Move active window forwards ("dir" == "f") or backwards ("dir" == "b").
+/* Move active window forwards ("dir" == "f") or backwards (any other "dir").
* Wrap around in the window chain if start / end of it is met. Does nothing if
* no window is active.
*/