XenevaOS
Loading...
Searching...
No Matches
window.h
Go to the documentation of this file.
1
33#ifndef __WINDOW_H__
34#define __WINDOW_H__
35
36#include <stdint.h>
37#include <widgets/list.h>
38#include "deodxr.h"
39
40#define WINDOW_FLAG_MOVABLE (1 << 0)
41#define WINDOW_FLAG_STATIC (1 << 1)
42#define WINDOW_FLAG_ALWAYS_ON_TOP (1 << 2)
43#define WINDOW_FLAG_NON_RESIZABLE (1 << 3)
44#define WINDOW_FLAG_BROADCAST_LISTENER (1 << 4)
45#define WINDOW_FLAG_ANIMATED (1 << 5)
46#define WINDOW_FLAG_BLOCKED (1 << 6)
47#define WINDOW_FLAG_MESSAGEBOX (1 << 7)
48#define WINDOW_FLAG_DIALOGBOX (1 << 8)
49#define WINDOW_FLAG_ANIMATION_FADE_IN (1 << 9)
50#define WINDOW_FLAG_ANIMATION_FADE_OUT (1 << 10)
51#define WINDOW_FLAG_POPUP (1 << 11)
52#define WINDOW_FLAG_GLASS (1 << 12)
53
54#ifdef SHADOW_ENABLED
55#define SHADOW_SIZE 20
56#define SHADOW_BLUR 8
57#define SHADOW_ALPHA 180
58#define SHADOW_OFFSET_X 4
59#define SHADOW_OFFSET_Y 6
60#else
61#define SHADOW_SIZE 0
62#define SHADOW_BLUR 0
63#define SHADOW_ALPHA 0
64#define SHADOW_OFFSET_X 0
65#define SHADOW_OFFSET_Y 0
66#endif
67
68//#pragma pack(push,1)
69typedef struct _win_info_ {
70 Rect rect[256];
72 bool dirty;
74 int x;
75 int y;
76 int width;
77 int height;
78 bool alpha;
79 bool hide;
80 double alphaValue;
81 bool windowReady;
82 bool zoomed;
84
85static inline bool WinSharedFlagLoad(const bool* flag) {
86 return __atomic_load_n(flag, __ATOMIC_ACQUIRE);
87}
88
89static inline void WinSharedFlagStore(bool* flag, bool value) {
90 __atomic_store_n(flag, value, __ATOMIC_RELEASE);
91}
92//#pragma pack(pop)
93
94typedef struct _win_ {
111 int dragX;
112 int dragY;
113 int resz_h;
114 int resz_b;
123 bool markForClose;
125 int animAlphaVal;
126 bool animdirection;
127 char* title;
128 struct _win_* firstPopupWin;
129 struct _win_* lastPopupWin;
130 struct _win_* parent;
131 _win_* next;
132 _win_* prev;
134
141
149
150#define WINDOW_TITLEBAR_HEIGHT 26
151#define WINDOW_GRAB_LEFT 10
152#define WINDOW_GRAB_RIGHT 74
153#define WINDOW_GRAB_KEEP 32
154#define WINDOW_TITLEBAR_KEEP 8
155#define WINDOW_CURSOR_SIZE 24
156#define WINDOW_DOCK_RESERVE 70
157
158static inline void WindowClampToScreen(int* x, int* y, int w, int h, int screen_w, int screen_h) {
159 (void)h;
160 int min_x = WINDOW_GRAB_RIGHT + WINDOW_GRAB_KEEP - w;
161 if (min_x > 0)
162 min_x = 0;
166
167 if (max_x < min_x)
168 max_x = min_x;
169 if (max_y < min_y)
170 max_y = min_y;
171 if (*x < min_x)
172 *x = min_x;
173 else if (*x > max_x)
174 *x = max_x;
175 if (*y < min_y)
176 *y = min_y;
177 else if (*y > max_y)
178 *y = max_y;
179}
180
181extern bool ResizeWindowBackBuffer(Window* win, int width, int height);
182extern void ReleaseWindowEffects(Window* win);
193extern Window*
194CreateWindow(int x, int y, int w, int h, uint16_t flags, uint16_t ownerId, char* title);
195#endif
uint8_t flags
Definition virtio.h:0
#define WINDOW_GRAB_LEFT
Definition window.h:151
#define WINDOW_CURSOR_SIZE
Definition window.h:155
#define WINDOW_GRAB_RIGHT
Definition window.h:152
#define WINDOW_TITLEBAR_HEIGHT
Definition window.h:150
#define WINDOW_GRAB_KEEP
Definition window.h:153
bool ResizeWindowBackBuffer(Window *win, int width, int height)
Definition window.cpp:106
#define WINDOW_TITLEBAR_KEEP
Definition window.h:154
void ReleaseWindowEffects(Window *win)
Definition window.cpp:87
#define WINDOW_DOCK_RESERVE
Definition window.h:156
uint32_t * CreateSharedWinSpace(uint16_t *shkey, uint16_t ownerId)
CreateSharedWinSpace – Create a shared window space.
Definition window.cpp:46
struct _win_info_ WinSharedInfo
void * CreateNewBackBuffer(uint16_t ownerId, uint32_t sz, uint16_t *key)
CreateNewBackBuffer –Create a back buffer window.
Definition window.cpp:61
struct _win_ Window
Window * CreateWindow(int x, int y, int w, int h, uint16_t flags, uint16_t ownerId, char *title)
CreateWindow – create a new window.
Definition window.cpp:91
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
unsigned short int uint16_t
Definition acefiex.h:162
flag
Definition bytecode.h:29
char title[128]
Definition d_main.c:877
int y
Definition layout.c:118
int h
Definition layout.c:118
int x
Definition layout.c:118
int w
Definition layout.c:118
int screen_w
Definition namdapha.cpp:63
ChWindow * win
Definition namdapha.cpp:60
int screen_h
Definition namdapha.cpp:64
Definition deodhai.h:66
Definition window.h:78
int originalH
Definition window.h:116
uint16_t ownerId
Definition window.h:80
uint32_t * sharedInfo
Definition window.h:82
int resizeY
Definition window.h:120
struct _win_ * firstPopupWin
Definition window.h:96
int resz_h
Definition window.h:89
bool glassBlurValid
Definition window.h:103
uint32_t * shadowBuffers
Definition window.h:83
uint32_t * glassTmp
Definition window.h:101
bool animdirection
Definition window.h:94
_win_ * next
Definition window.h:99
_win_ * prev
Definition window.h:100
int resizeH
Definition window.h:122
struct _win_ * lastPopupWin
Definition window.h:97
uint16_t flags
Definition window.h:79
bool resizePending
Definition window.h:117
uint16_t shWinKey
Definition window.h:84
int originalW
Definition window.h:115
uint32_t * shadowTmp
Definition window.h:100
int dragY
Definition window.h:88
int glassBlurW
Definition window.h:106
int glassBlurH
Definition window.h:107
int resz_b
Definition window.h:90
char * title
Definition window.h:95
int resizeX
Definition window.h:119
int glassBlurY
Definition window.h:105
int animAlphaVal
Definition window.h:93
int glassBlurX
Definition window.h:104
uint16_t backBufferKey
Definition window.h:85
uint32_t * backBuffer
Definition window.h:81
uint32_t handle
Definition window.h:86
bool markForClose
Definition window.h:91
int resizeW
Definition window.h:121
int dragX
Definition window.h:87
uint32_t * glassBlur
Definition window.h:102
uint64_t resizeDeadline
Definition window.h:118
uint8_t animFrameCount
Definition window.h:92
struct _win_ * parent
Definition window.h:98
Definition window.h:61
int height
Definition window.h:69
bool alpha
Definition window.h:70
uint32_t rect_count
Definition window.h:63
bool dirty
Definition window.h:64
int y
Definition window.h:67
bool updateEntireWindow
Definition window.h:65
bool zoomed
Definition window.h:74
int width
Definition window.h:68
double alphaValue
Definition window.h:72
bool hide
Definition window.h:71
int x
Definition window.h:66
Rect rect[256]
Definition window.h:62
bool windowReady
Definition window.h:73