1 /* Copyright (c) 2008, 2009
2 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
3 * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
4 * Micah Cowan (micah@cowan.name)
5 * Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
6 * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
7 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
8 * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
9 * Copyright (c) 1987 Oliver Laumann
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 3, or (at your option)
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program (see the file COPYING); if not, see
23 * http://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
24 * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
26 ****************************************************************
30 #ifndef SCREEN_CANVAS_H
31 #define SCREEN_CANVAS_H
34 #define SLICE_VERT (1 << 0)
35 #define SLICE_HORI (1 << 1)
37 #define SLICE_THIS (1 << 2) /* used in equal test */
38 #define SLICE_GLOBAL (1 << 3)
42 struct canvas
*c_next
; /* next canvas on display */
43 struct display
*c_display
; /* back pointer to display */
45 struct canvas
*c_slnext
; /* next canvas in display slice */
46 struct canvas
*c_slprev
; /* prev canvas in display slice */
47 struct canvas
*c_slperp
; /* perpendicular slice */
48 struct canvas
*c_slback
; /* perpendicular slice back pointer */
49 int c_slorient
; /* our slice orientation */
50 int c_slweight
; /* size ratio */
52 struct viewport
*c_vplist
;
53 struct layer
*c_layer
; /* layer on this canvas */
54 struct canvas
*c_lnext
; /* next canvas that displays layer */
55 struct layer c_blank
; /* bottom layer, always blank */
56 int c_xoff
; /* canvas x offset on display */
57 int c_yoff
; /* canvas y offset on display */
62 struct event c_captev
; /* caption changed event */
65 struct win
; /* forward declaration */
67 extern void SetCanvasWindow
__P((struct canvas
*, struct win
*));
68 extern void SetForeCanvas
__P((struct display
*, struct canvas
*));
69 extern struct canvas
*FindCanvas
__P((int, int));
70 extern int MakeDefaultCanvas
__P((void));
71 extern int AddCanvas
__P((int));
72 extern void RemCanvas
__P((void));
73 extern void OneCanvas
__P((void));
74 extern void FreeCanvas
__P((struct canvas
*));
75 extern void ResizeCanvas
__P((struct canvas
*));
76 extern void RecreateCanvasChain
__P((void));
77 extern void RethinkViewportOffsets
__P((struct canvas
*));
78 extern int CountCanvasPerp
__P((struct canvas
*));
79 extern void EqualizeCanvas
__P((struct canvas
*, int));
80 extern void DupLayoutCv
__P((struct canvas
*, struct canvas
*, int));
81 extern void PutWindowCv
__P((struct canvas
*));
83 #define CV_CALL(cv, cmd) \
85 struct display *olddisplay = display; \
86 struct layer *oldflayer = flayer; \
87 struct layer *l = cv->c_layer; \
88 struct canvas *cvlist = l->l_cvlist; \
89 struct canvas *cvlnext = cv->c_lnext; \
95 l->l_cvlist = cvlist; \
96 cv->c_lnext = cvlnext; \
97 display = olddisplay; \
100 #endif /* SCREEN_CANVAS_H */