1 /*------------------------------------------------------------\
2 |                                                             |
3 | Tool    :                     RDS                           |
4 |                                                             |
5 | File    :                   rwi110.h                        |
6 |                                                             |
7 | Authors :                Jacomme Ludovic                    |
8 |                                                             |
9 | Date    :                   27.06.95                        |
10 |                                                             |
11 \------------------------------------------------------------*/
12 
13 # ifndef RWI_110_H
14 # define RWI_110_H
15 
16 #ifndef __P
17 # if defined(__STDC__) ||  defined(__GNUC__)
18 #  define __P(x) x
19 # else
20 #  define __P(x) ()
21 # endif
22 #endif
23 
24 /*------------------------------------------------------------\
25 |                                                             |
26 |                           Constants                         |
27 |                                                             |
28 \------------------------------------------------------------*/
29 
30 # define RWI_MAX_REC       8
31 # define RWI_MAX_LAYER     RDS_ABOX
32 
33 /*------------------------------------------------------------\
34 |                                                             |
35 |                        Flags for window                     |
36 |                                                             |
37 \------------------------------------------------------------*/
38 
39 # define RDS_ONE_WINDOW     (long)0x00010000
40 
41 /*------------------------------------------------------------\
42 |                                                             |
43 |                            Macros                           |
44 |                                                             |
45 \------------------------------------------------------------*/
46 
47 # define IsRdsOneWindow( Rectangle )                          \
48                                                               \
49    ( ( Rectangle )->FLAGS & RDS_ONE_WINDOW                    )
50 
51 # define SetRdsOneWindow( Rectangle )                         \
52                                                               \
53    ( ( Rectangle )->FLAGS |= RDS_ONE_WINDOW                   )
54 
55 # define ClearRdsOneWindow( Rectangle )                       \
56                                                               \
57    ( ( Rectangle )->FLAGS &= ~RDS_ONE_WINDOW                  )
58 
59 /*------------------------------------------------------------\
60 |                                                             |
61 |                            Types                            |
62 |                                                             |
63 \------------------------------------------------------------*/
64 /*------------------------------------------------------------\
65 |                                                             |
66 |                  Rds Window, Rectangle List                 |
67 |                                                             |
68 \------------------------------------------------------------*/
69 
70   typedef struct rdswinrec_list
71 
72   {
73     struct rdswinrec_list *NEXT;
74     rdsrec_list           *RECTAB[ RWI_MAX_REC ];
75 
76   } rdswinrec_list;
77 
78 /*------------------------------------------------------------\
79 |                                                             |
80 |                      Rds Window list                        |
81 |                                                             |
82 \------------------------------------------------------------*/
83 
84   typedef struct rdswin_list
85 
86   {
87     struct rdswinrec_list **LAYERTAB;
88 
89   } rdswin_list;
90 
91 /*------------------------------------------------------------\
92 |                                                             |
93 |                  Rds rectangle, Window List                 |
94 |                                                             |
95 \------------------------------------------------------------*/
96 
97   typedef struct rdsrecwin_list
98 
99   {
100     struct rdsrecwin_list *NEXT;
101     struct rdswin_list    *WINDOW;
102 
103   } rdsrecwin_list;
104 
105 /*------------------------------------------------------------\
106 |                                                             |
107 |                         Rds Window                          |
108 |                                                             |
109 \------------------------------------------------------------*/
110 
111   typedef struct rdswindow
112 
113   {
114     long          XMIN;
115     long          YMIN;
116     long          XMAX;
117     long          YMAX;
118     long          MASK;
119     long          DX;
120     long          DY;
121     long          SIDE;
122     long          SIZE;
123     rdswin_list  *WINTAB;
124 
125   } rdswindow;
126 
127 /*------------------------------------------------------------\
128 |                                                             |
129 |                          Variables                          |
130 |                                                             |
131 \------------------------------------------------------------*/
132 /*------------------------------------------------------------\
133 |                                                             |
134 |                          Functions                          |
135 |                                                             |
136 \------------------------------------------------------------*/
137 /*------------------------------------------------------------\
138 |                                                             |
139 |                       Alloc functions                       |
140 |                                                             |
141 \------------------------------------------------------------*/
142 
143   extern rdswinrec_list * allocrdswinrec __P(());
144   extern rdsrecwin_list * allocrdsrecwin __P(());
145   extern   rdswin_list * allocrdswin __P((unsigned long Number));
146   extern   rdswin_list * allocrdswinlayer __P((rdswin_list *RdsWin));
147   extern     rdswindow * allocrdswindow __P(());
148 
149 /*------------------------------------------------------------\
150 |                                                             |
151 |                        Free functions                       |
152 |                                                             |
153 \------------------------------------------------------------*/
154 
155   extern           void  freerdswinrec __P((rdswinrec_list *WinRec));
156   extern           void  freerdsrecwin __P((rdsrecwin_list *RecWin));
157   extern           void  freerdswin __P((rdswin_list *Win));
158   extern           void  freerdswinlayer __P((rdswin_list *Win));
159   extern           void  freerdswindow __P((rdswindow *RdsWindow));
160 
161 /*------------------------------------------------------------\
162 |                                                             |
163 |                     Get functions                           |
164 |                                                             |
165 \------------------------------------------------------------*/
166 
167   extern    chain_list * getrdswindow __P((long X, long Y, long Dx, long Dy, rdswindow *RdsWindow));
168 
169 /*------------------------------------------------------------\
170 |                                                             |
171 |                 Build & Destroy functions                   |
172 |                                                             |
173 \------------------------------------------------------------*/
174 
175   extern           void  addrdsrecwindow __P((rdsrec_list *Rectangle, rdswindow *RdsWindow));
176   extern           void  delrdsrecwindow __P((rdsrec_list *Rectangle, rdswindow *RdsWindow));
177   extern     rdswindow * buildrdswindow __P((rdsfig_list *Figure));
178   extern           void  destroyrdswindow __P((rdsfig_list *Figure, rdswindow *RdsWindow));
179   extern           void  viewrdswindow __P((rdswindow *RdsWindow));
180 
181 # endif
182