]> git.decadent.org.uk Git - ion3.git/blob - ioncore/framedpholder.h
fc25ee3893d975dc49ca5098e3154fc5af0e1b09
[ion3.git] / ioncore / framedpholder.h
1 /*
2  * ion/ioncore/framedpholder.h
3  *
4  * Copyright (c) Tuomo Valkonen 2005-2008. 
5  *
6  * See the included file LICENSE for details.
7  */
8
9 #ifndef ION_IONCORE_FRAMEDPHOLDER_H
10 #define ION_IONCORE_FRAMEDPHOLDER_H
11
12 #include "common.h"
13 #include "pholder.h"
14 #include "attach.h"
15 #include "frame.h"
16
17
18 #define FRAMEDPARAM_INIT {0, 0, {0, 0, 0, 0}, FRAME_MODE_FLOATING /*, NULL*/}
19
20 INTRSTRUCT(WFramedParam);
21
22 DECLSTRUCT(WFramedParam){
23     uint inner_geom_gravity_set:1;
24     int gravity;
25     WRectangle inner_geom;
26     WFrameMode mode;
27     /*WRegionSimpleCreateFn *mkframe;*/
28 };
29
30
31 DECLCLASS(WFramedPHolder){
32     WPHolder ph;
33     WPHolder *cont;
34     WFramedParam param;
35     Watch frame_watch;
36 };
37
38
39 extern WFramedPHolder *create_framedpholder(WPHolder *cont,
40                                             const WFramedParam *param);
41
42 extern bool framedpholder_init(WFramedPHolder *ph, WPHolder *cont,
43                                const WFramedParam *param);
44
45 extern void framedpholder_deinit(WFramedPHolder *ph);
46
47 extern bool framedpholder_do_goto(WFramedPHolder *ph);
48
49 extern bool framedpholder_stale(WFramedPHolder *ph);
50
51 extern WRegion *framedpholder_do_target(WFramedPHolder *ph);
52
53 extern WRegion *framedpholder_do_attach(WFramedPHolder *ph, int flags,
54                                         WRegionAttachData *data);
55
56 extern WRegion *region_attach_framed(WRegion *reg, WFramedParam *param,
57                                      WRegionAttachFn *fn, void *fn_param,
58                                      WRegionAttachData *data);
59
60 extern void frame_adjust_to_initial(WFrame *frame, const WFitParams *fp, 
61                                     const WFramedParam *param, WRegion *reg);
62
63 #endif /* ION_IONCORE_FRAMEDPHOLDER_H */