32
32
** are accounted for by the standard garbage collector.
33
33
**
34
34
***********************************************************************/
35
-
36
35
#ifndef REB_GOB_H
37
36
#define REB_GOB_H
38
37
38
+ #include "host-view.h"
39
+
39
40
enum GOB_FLAGS { // GOB attribute and option flags
40
41
GOBF_TOP = 0 , // Top level (window or output image)
41
42
GOBF_WINDOW , // Window (parent is OS window reference)
@@ -50,6 +51,11 @@ enum GOB_FLAGS { // GOB attribute and option flags
50
51
GOBF_POPUP , // Window is a popup (with owner window)
51
52
GOBF_MODAL , // Modal event filtering
52
53
GOBF_ON_TOP , // The window is always on top
54
+ GOBF_ACTIVE , // Window is active
55
+ GOBF_MINIMIZE , // Window is minimized
56
+ GOBF_MAXIMIZE , // Window is maximized
57
+ GOBF_RESTORE , // Window is restored
58
+ GOBF_FULLSCREEN , // Window is fullscreen
53
59
};
54
60
55
61
enum GOB_STATE { // GOB state flags
@@ -79,7 +85,6 @@ enum GOB_DTYPES { // Userdata types
79
85
GOBD_INTEGER
80
86
};
81
87
82
-
83
88
#pragma pack(4)
84
89
85
90
typedef struct rebol_gob REBGOB ;
@@ -110,16 +115,32 @@ struct rebol_gob { // size: 64 bytes!
110
115
};
111
116
#pragma pack()
112
117
118
+ typedef struct gob_window { // Maps gob to window
119
+ REBGOB * gob ;
120
+ void * win ;
121
+ void * compositor ;
122
+ } REBGOBWINDOWS ;
123
+
113
124
#define GOB_X (g ) ((g)->offset.x)
114
125
#define GOB_Y (g ) ((g)->offset.y)
115
126
#define GOB_W (g ) ((g)->size.x)
116
127
#define GOB_H (g ) ((g)->size.y)
117
128
129
+ #define GOB_LOG_X (g ) (LOG_COORD_X((g)->offset.x))
130
+ #define GOB_LOG_Y (g ) (LOG_COORD_Y((g)->offset.y))
131
+ #define GOB_LOG_W (g ) (LOG_COORD_X((g)->size.x))
132
+ #define GOB_LOG_H (g ) (LOG_COORD_Y((g)->size.y))
133
+
118
134
#define GOB_X_INT (g ) ROUND_TO_INT((g)->offset.x)
119
135
#define GOB_Y_INT (g ) ROUND_TO_INT((g)->offset.y)
120
136
#define GOB_W_INT (g ) ROUND_TO_INT((g)->size.x)
121
137
#define GOB_H_INT (g ) ROUND_TO_INT((g)->size.y)
122
138
139
+ #define GOB_LOG_X_INT (g ) ROUND_TO_INT(LOG_COORD_X((g)->offset.x))
140
+ #define GOB_LOG_Y_INT (g ) ROUND_TO_INT(LOG_COORD_Y((g)->offset.y))
141
+ #define GOB_LOG_W_INT (g ) ROUND_TO_INT(LOG_COORD_X((g)->size.x))
142
+ #define GOB_LOG_H_INT (g ) ROUND_TO_INT(LOG_COORD_Y((g)->size.y))
143
+
123
144
#define GOB_XO (g ) ((g)->old_offset.x)
124
145
#define GOB_YO (g ) ((g)->old_offset.y)
125
146
#define GOB_WO (g ) ((g)->old_size.x)
@@ -131,12 +152,14 @@ struct rebol_gob { // size: 64 bytes!
131
152
132
153
#define CLEAR_GOB_STATE (g ) ((g)->state = 0)
133
154
134
- #define SET_GOB_FLAG (g ,f ) SET_FLAG((g)->flags, f)
135
- #define GET_GOB_FLAG (g ,f ) GET_FLAG((g)->flags, f)
136
- #define CLR_GOB_FLAG (g ,f ) CLR_FLAG((g)->flags, f)
137
- #define SET_GOB_STATE (g ,f ) SET_FLAG((g)->state, f)
138
- #define GET_GOB_STATE (g ,f ) GET_FLAG((g)->state, f)
139
- #define CLR_GOB_STATE (g ,f ) CLR_FLAG((g)->state, f)
155
+ #define SET_GOB_FLAG (g ,f ) SET_FLAG((g)->flags, f)
156
+ #define GET_GOB_FLAG (g ,f ) GET_FLAG((g)->flags, f)
157
+ #define CLR_GOB_FLAG (g ,f ) CLR_FLAG((g)->flags, f)
158
+ #define CLR_GOB_FLAGS (g ,f ,h ) CLR_FLAGS((g)->flags, f, h)
159
+ #define SET_GOB_STATE (g ,f ) SET_FLAG((g)->state, f)
160
+ #define GET_GOB_STATE (g ,f ) GET_FLAG((g)->state, f)
161
+ #define CLR_GOB_STATE (g ,f ) CLR_FLAG((g)->state, f)
162
+ #define CLR_GOB_STATES (g ,f ,h ) CLR_FLAGS((g)->state, f, h)
140
163
141
164
#define GOB_ALPHA (g ) ((g)->alpha)
142
165
#define GOB_TYPE (g ) ((g)->ctype)
@@ -192,4 +215,4 @@ enum {
192
215
193
216
extern REBGOB * Gob_Root ; // Top level GOB (the screen)
194
217
195
- #endif
218
+ #endif
0 commit comments