summaryrefslogtreecommitdiff
path: root/src/layer.h
diff options
context:
space:
mode:
authorSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2010-03-16 10:31:46 -0400
committerSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2010-03-16 10:31:46 -0400
commitad5e07310ad8474358334fcff8de86d0b9ab6cad (patch)
treef46a86bf622cdc7c711d3428a9a292fde584d2ba /src/layer.h
parentf823083eee6bb3bf4c52cc2b32b1617bf291b1c0 (diff)
parent8a6abbab0161e6df1cea2ae0033a4c7f4a47f8e9 (diff)
downloadscreen-cmd-alias.tar.gz
Merge branch 'master' into cmd-aliascmd-alias
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));
+