diff options
Diffstat (limited to 'src/layer.h')
-rw-r--r-- | src/layer.h | 64 |
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)); + |