1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
/* $Id: tixForm.h,v 1.1.1.1 2000/05/17 11:08:42 idiscovery Exp $ */
/*
* tixForm.h --
*
* Declares the internal functions and data types for the Tix Form
* geometry manager.
*
* Copyright (c) 1996, Expert Interface Technologies
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
*/
#ifndef _TIX_FORM_H
#define _TIX_FORM_H
#define SIDE0 0
#define SIDE1 1
#define NEXT_SIDE(x) (!x)
#define SIDEX 0
#define SIDEY 1
#define AXIS_X 0
#define AXIS_Y 1
#define OPPO_SIDE0 1
#define OPPO_SIDE1 2
#define OPPO_ALL 3
#define PINNED_SIDE0 4
#define PINNED_SIDE1 8
#define PINNED_ALL 12
#define ATT_NONE 0
#define ATT_GRID 1
#define ATT_OPPOSITE 2
#define ATT_PARALLEL 3
/*
* The following structures carry information about the client windows
*/
typedef union {
int grid;
struct _FormInfo * widget;
} Attachment;
typedef struct {
int pcnt; /* percentage anchor point */
int disp; /* displacement from the percentage anchor point*/
} Side;
typedef struct _FormInfo {
Tk_Window tkwin;
struct _MasterInfo* master; /* The master of this window */
struct _FormInfo * next;
int depend; /* used to detect circular dependency*/
/* These are specified by the user and set by the "tixForm" command
*/
Attachment att[2][2]; /* anchor of attachment */
int off[2][2]; /* offset of attachment */
char isDefault[2][2];/* Is this side a default attachment*/
char attType[2][2]; /* type of attachment
GRID or PIXEL*/
int pad[2][2]; /* value of padding */
/* These values are calculated by the PinnClient() functions
* and are used to calculated the required size of the master
* inside CalculateMasterGeometry(), as well as the positions
* of the clients inside ArrangeGeometry()
*/
Side side[2][2];
int sideFlags[2];
/* These values are used to place the clients into the clients
*/
int posn[2][2];
/* These things are for Spring'ing */
int spring[2][2];
struct _FormInfo * strWidget[2][2];
int springFail[2];
int fill[2];
} FormInfo;
/*
* The following structures carry information about the master windows
*/
typedef struct {
unsigned int isDeleted : 1;
unsigned int repackPending : 1;
} MasterFlags;
typedef struct _MasterInfo {
Tk_Window tkwin;
struct _FormInfo * client;
struct _FormInfo * client_tail;
int numClients;
int reqSize[2];
int numRequests; /* This is used to detect
* whether two geometry managers
* are used to manage the same
* master window
*/
int grids[2];
MasterFlags flags;
} MasterInfo;
/* tixFormMisc.c */
EXTERN int TixFm_Configure _ANSI_ARGS_((FormInfo *clientPtr,
Tk_Window topLevel,
Tcl_Interp* interp, int argc, Tcl_Obj *CONST *objv));
/* tixForm.c */
EXTERN FormInfo * TixFm_GetFormInfo _ANSI_ARGS_((Tk_Window tkwin,
int create));
EXTERN void TixFm_StructureProc _ANSI_ARGS_((ClientData clientData,
XEvent * eventPtr));
EXTERN void TixFm_AddToMaster _ANSI_ARGS_((MasterInfo *masterPtr,
FormInfo *clientPtr));
EXTERN void TixFm_DeleteMaster _ANSI_ARGS_((
MasterInfo *masterPtr));
EXTERN void TixFm_FreeMasterInfo _ANSI_ARGS_((
char *clientData));
EXTERN FormInfo * TixFm_FindClientPtrByName _ANSI_ARGS_((
Tcl_Interp * interp, char * name,
Tk_Window topLevel));
EXTERN void TixFm_ForgetOneClient _ANSI_ARGS_((
FormInfo *clientPtr));
EXTERN void TixFm_Unlink _ANSI_ARGS_((FormInfo *clientPtr));
EXTERN void TixFm_UnlinkFromMaster _ANSI_ARGS_((
FormInfo *clientPtr));
#endif /* _TIX_FORM_H */
|