summaryrefslogtreecommitdiff
path: root/src/layer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/layer.h')
-rw-r--r--src/layer.h64
1 files changed, 61 insertions, 3 deletions
diff --git a/src/layer.h b/src/layer.h
index d45a5c3..8c42d2b 100644
--- a/src/layer.h
+++ b/src/layer.h
@@ -1,4 +1,9 @@
-/* Copyright (c) 1995-2002
+/* Copyright (c) 2008, 2009
+ * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
+ * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
+ * Micah Cowan (micah@cowan.name)
+ * Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
+ * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
* Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
* Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
* Copyright (c) 1987 Oliver Laumann
@@ -19,9 +24,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*
****************************************************************
- * $Id$ FAU
+ * $Id$ GNU
*/
+#ifndef SCREEN_LAYER_H
+#define SCREEN_LAYER_H
+
/*
* This is the overlay structure. It is used to create a seperate
* layer over the current windows.
@@ -38,6 +46,8 @@ struct LayFuncs
int (*lf_LayRewrite) __P((int, int, int, struct mchar *, int));
int (*lf_LayResize) __P((int, int));
void (*lf_LayRestore) __P((void));
+ void (*lf_LayFree) __P((void *)); /* Should only free any data kept in
+ flayer->l_data (but not flayer->l_data itself). */
};
struct layer
@@ -49,11 +59,30 @@ struct layer
int l_y;
int l_encoding;
struct LayFuncs *l_layfn;
- char *l_data;
+ void *l_data;
struct layer *l_next; /* layer stack, should be in data? */
struct layer *l_bottom; /* bottom element of layer stack */
int l_blocking;
+ int l_mode; /* non-zero == edit mode */
+
+ struct {
+ unsigned char buffer[3]; /* [0]: the button
+ [1]: x
+ [2]: y
+ */
+ int len;
+ int start;
+ } l_mouseevent;
+
+ struct {
+ int d : 1; /* Is the output for the layer blocked? */
+
+ /* After unpausing, what region should we refresh? */
+ int *left, *right;
+ int top, bottom;
+ int lines;
+ } l_pause;
};
#define LayProcess (*flayer->l_layfn->lf_LayProcess)
@@ -63,6 +92,7 @@ struct layer
#define LayRewrite (*flayer->l_layfn->lf_LayRewrite)
#define LayResize (*flayer->l_layfn->lf_LayResize)
#define LayRestore (*flayer->l_layfn->lf_LayRestore)
+#define LayFree (*flayer->l_layfn->lf_LayFree)
#define LaySetCursor() LGotoPos(flayer, flayer->l_x, flayer->l_y)
#define LayCanResize(l) (l->l_layfn->LayResize != DefResize)
@@ -103,3 +133,31 @@ struct layer
display = olddisplay; \
} while(0)
+#endif /* SCREEN_LAYER_H */
+
+/**
+ * (Un)Pauses a layer.
+ *
+ * @param layer The layer that should be (un)paused.
+ * @param pause Should we pause the layer?
+ */
+void LayPause __P((struct layer *layer, int pause));
+
+/**
+ * Update the region to refresh after a layer is unpaused.
+ *
+ * @param layer The layer.
+ * @param xs The left-end of the region.
+ * @param xe The right-end of the region.
+ * @param ys The top-end of the region.
+ * @param ye The bottom-end of the region.
+ */
+void LayPauseUpdateRegion __P((struct layer *layer, int xs, int xe, int ys, int ye));
+
+/**
+ * Free any internal memory for the layer.
+ *
+ * @param layer The layer.
+ */
+void LayerCleanupMemory __P((struct layer *layer));
+