acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
window.h
1//
2// Created by camilo on 31/01/2022 14:32 <3ThomasBorregaardSorensen!!
3// renamed interchange from interchange by camilo on
4// 2024-09-26 15:37 <3ThomasBorregaardSorensen!!
5//
6// // // Merged from (acme)windowing and (acme)windowing_system by
7// // camilo on 2024-10-05 11:07 <3ThomasBorregaardSorensen!!
8// // (acme)windowing_system::windowing_system
9// // ---->windowing::windowing_base
10// // // ---->micro::user
11// // (acme)windowing::window_base
12// // ---->micro::interchange
13
14//
15#pragma once
16
17
18//#include "acme/platform/conversation_message.h"
19//#include "acme/user/user/drag_client.h"
20//#include "acme/user/user/interaction_base.h"
21//#include "acme/prototype/geometry2d/rectangle.h"
22//#include "acme/user/user/item.h"
23//#include "acme/operating_system/window.h"
24
25#include "acme/user/user/element.h"
26#ifdef WINDOWS_DESKTOP
27#include "acme/operating_system/windows/_window_class.h"
28#endif
29
30namespace acme
31{
32
33
34 namespace windowing
35 {
36
37
39 virtual public particle
40 {
41 public:
42
43 virtual void on_gpu_context_render_frame(::i32 w, ::i32 h) = 0;
44
45 };
46
47 class CLASS_DECL_ACME window :
48 virtual public ::user::element
49 //virtual public ::conversation_message
50 {
51 public:
52
53
54 //::operating_system::window m_operatingsystemwindow;
55 ::pointer_array < ::exception > m_exceptiona;
56 ::pointer < ::acme::windowing::gpu_context_render_frame > m_pgpucontextrenderframe;
57 //::pointer < ::acme::windowing::window > m_pwindowOwner;
58
59 //::pointer<::micro::window_implementation> m_pnanouserwindowimplementation;
60
61 class ::time m_timeHoverNoiseSuppression;
62
63
64
65
66 i32_rectangle m_rectangle;
67 ::i32_rectangle m_rectanglePointingTo;
68
69 //bool m_bTopMost;
70 // bool m_bStartCentered;
71 //bool m_bArbitraryPositioning;
72
73
74
75
76 //pointer_array < ::micro::button > m_nanobuttona;
77
78 //map_base < const ::item *, ::user::item > m_useritemmap;
79
80 bool m_bPerformingEntireRepositionProcess;
81 bool m_bPerformingEntireResizingProcess;
82 bool m_bRepositioningWindowFromCenter;
83 bool m_bResizingWindowFromBottomRight;
84 //::i32_point m_pointDesignRequest;
85 //::i32_size m_sizeDesignRequest;
86 ::i32_point m_pointWindow;
87 ::i32_size m_sizeWindow;
88 ::i32_point m_pointCursor2;
89
90 ::pointer < ::operating_system::a_system_menu > m_psystemmenu;
91
92 ::pointer<::acme::user::interaction> m_pacmeuserinteraction;
93 ::pointer<::acme::user::interaction> m_pacmeuserinteractionKeyboardFocus;
94 ::pointer<::acme::user::interaction> m_pacmeuserinteractionHover;
95 ::pointer<::acme::user::interaction> m_pacmeuserinteractionMouseCapture;
96 //::pointer<::acme::user::interaction> m_pacmeuserinteractionOwner;
97
98
99 ::pointer < ::acme::windowing::display > m_pacmewindowingdisplayWindow;
100 class ::time m_timeLastPresentRequest;
101// long m_lX11NativeVisualId;
102// ::i32 m_lX11MapNotify = -1;
103
104
105
106//enum_bias m_ebias;
107
108
109 window();
110 ~window() override;
111
112
113 //virtual void do_interchange();
114 ::windowing::enum_bias windowing_bias() const;
115
116 //virtual ::pointer < item_container > item_form();
117
118 void on_initialize_particle() override;
119
120 virtual void initialize_window(::acme::user::interaction* pacmeuserinteraction);
121
122 //virtual void * __win32_HWND();
123
124 //virtual long __x11_Window();
125 //virtual void * __x11_Display();
126 //virtual void * __win32_HWND();
127 //virtual ::i64 __CGWindowID() const;
128
129 virtual bool should_avoid_default_swap_chain_present();
130
131 virtual ::operating_system::window operating_system_window() const;
132 virtual void set_user_interaction(::acme::user::interaction * pacmeuserinteraction);
133 virtual void set_user_thread(::user::thread * puserthread);
134 virtual void set_user_graphics_thread(::user::graphics_thread * pusergraphicsthread);
135
136
137 virtual void set_last_present_request_time();
138
139 //bool defer_perform_entire_reposition_process() override;
140
141 bool defer_perform_entire_reposition_process(::user::mouse * pmouse) override;
142
143 bool defer_perform_entire_resizing_process(const ::experience::e_frame & eframeSizing, ::user::mouse * pmouse) override;
144
145
146
147
148 virtual ::i32_point origin();
149
150 void set_position(const ::i32_point & point) override;
151
152 ::i32_rectangle get_window_rectangle() override;
153
154 //void on_create_window() override;
155
156 void destroy() override;
157
158 void redraw() override;
159
160
161 void set_interaction_rectangle(const ::i32_rectangle & rectangle) override;
162
163 ::i32_rectangle get_rectangle() override;
164
165
166 //void get_window_rectangle() override;
167
168 void set_mouse_capture() override;
169
170 bool has_mouse_capture() override;
171
172 void release_mouse_capture() override;
173
174 void set_cursor(enum_cursor ecursor) override;
175
176 virtual bool _is_window();
177
178
179 void set_foreground_window(::user::activation_token * puseractivationtoken) override;
180
181
182 virtual bool has_keyboard_focus();
183 virtual void set_keyboard_focus(::acme::user::interaction * pacmeuserinteractionFocus);
184 void set_keyboard_focus() override;
185 //virtual void erase_keyboard_focus(::acme::user::interaction * pacmeuserinteractionFocus);
186
187 virtual bool is_window();
188 //virtual ::i32_bool is_window( windowing_android_WINDOW_MEMBER );
189
190
191 void set_window_text(const ::scoped_string & scopedstrString) override;
192
193 ::pointer<::nano::graphics::context>create_device();
194
195
196 virtual bool on_window_mouse_move(const ::i32_point & point, const ::i32_point & pointAbsolute);
197
198 virtual void on_mouse_enter();
199 virtual void fore_on_mouse_move(::user::mouse * pmouse);
200 virtual void back_on_mouse_move(::user::mouse * pmouse);
201 virtual void on_mouse_leave();
202
203#ifdef WINDOWS_DESKTOP
204 virtual ::windows::window_class _get_window_class();
205#endif
206
207 virtual void on_window_paint(::nano::graphics::context * pgraphicscontext);
208 bool on_window_create(void * pCREATESTRUCT) override;
209 void on_window_position(const ::i32_point & point) override;
210 void on_window_size(const ::i32_size & size) override;
211 void on_window_set_focus() override;
212 bool on_window_activate(::i32 iActivate, bool bMinimized, const ::operating_system::window & operatingsystemwindow) override;
213 bool on_window_mouse_activate(::i32 & iResult, const ::operating_system::window & operatingsystemwindowTop,
214 ::i32 iHitTest, ::i32 iMessage) override;
215
216
217 bool is_window_iconic() override;
218 ::f32 get_window_scale() override;
219
220
221 void show_window(::i32 iShowFlags) override;
222 void set_window_style(::i32 iStyle) override;
223 ::i64 get_window_style() override;
224 void set_window_position(const ::operating_system::window & operatingsystemwindow, const ::i32_point & point, const ::i32_size & size, ::i32 iSetWindowPosFlags) override;
225 void window_invalidate_rect(const ::i32_rectangle * prectangle, bool bErase) override;
226 void update_window() override;
227 void redraw_window(const ::i32_rectangle * prectangle, void * pHRGN, ::i32 iRedrawFlags) override;
228 void window_set_focus() override;
229 ::i32_rectangle window_get_client_rect() override;
230 ::i32_rectangle get_window_rect() override;
231 void dump_operating_system_child_window_hierarchy() override;
232
233 virtual ::pointer < ::user::activation_token > get_initial_frame_display_activation_token();
234 //void run_modal_loop() override;
235
236
237 //::atom do_synchronously() override;
238
239
240 void handle(::topic * ptopic, ::handler_context * phandlercontext) override;
241
242
243 //::user::item & user_item(const ::item * pitem) override;
244
245
250
251
252 //interchange();
253 //~interchange() override;
254
255
257 ::acme::windowing::window * acme_windowing_window() override;
258
259
260
261 ::windowing::window * windowing_window() override;
262
263 //void on_initialize_particle() override;
264
265
266 //void destroy() override;
267
268 //virtual ::payload do_synchronously(const class time & timeWait);
269 //virtual void do_asynchronously();
270
271
272 virtual bool is_windowing_popup();
273 virtual ::i32_point windowing_popup_origin();
274 virtual ::i32_size windowing_popup_size();
275 virtual void _on_windowing_close_window();
276 virtual ::i32_boolean is_satellite_window();
277 ::acme::user::interaction * owner_interaction();
278 ::acme::windowing::window * owner_window();
279 ::string get_window_text() override;
280
281
282 virtual itask get_itask() const;
283
284 //virtual ::i32_rectangle get_window_rectangle();
285
287
288 //bool defer_perform_entire_reposition_process(::user::mouse * pmouse) override;
289
290 //bool defer_perform_entire_resizing_process(::experience::enum_frame eframeSizing, ::user::mouse * pmouse) override;
291
292
293 //virtual void on_char(::i32 iChar);
294 // //
295 // // Created by camilo on 31/01/2022 23:04 <3ThomasBorregaardSorensen!!
296 // //
297 // #pragma once
298 //
299 //
300 // #include "window_interface.h"
301 // #include "acme/user/user/element.h"
302 //
303 //
304 // namespace nano
305 // {
306 //
307 //
308 // namespace user
309 // {
310 //
311 //
312 // class CLASS_DECL_ACME window_implementation :
313 // virtual public ::user::element
314 // {
315 // public:
316 //
317
318 //
319 // window_implementation();
320 // ~window_implementation() override;
321
322
323 virtual ::acme::windowing::display * get_display();
324
325 virtual ::particle * get_acme_window_bridge();
326
327 //void draw(::nano::graphics::context * pnanodevice) override;
328
329 //static ::pointer_array < ::micro::window_implementation > & nanowindowimplementationa();
330
331
332
333 //bool get_dark_mode() override;
334 //bool is_active() override;
335
336 //virtual void nano_window_on_create();
337
338 void create_window() override;
339 void _create_window() override;
340
341 //void on_create_window() override;
342
343 virtual void nano_window_on_destroy();
344
345
346 void on_window_close() override;
347
348 //virtual void _console_create();
349
350 //virtual void _display_console();
351
352 virtual void on_position_window();
353 virtual void on_size_window();
354
355 virtual void _on_reposition(::i32 x, ::i32 y);
356 virtual void _on_size(::i32 cx, ::i32 cy);
357
358 //virtual void show_window();
359 //virtual void hide_window();
360
361 bool is_window_zoomed() override;
362 void window_minimize() override;
363 void window_maximize() override; // m_pwindow->m_puserinteraction->display(::e_display_zoomed);
364 void window_full_screen() override; // m_pwindow->m_puserinteraction->display(::e_display_full_screen);
365 void window_restore() override; // m_pwindow->m_puserinteraction->display(::e_display_normal);
366 void window_close() override;
367 //virtual void show_window();
368 //virtual void hide_window();
369
370 //virtual void message_loop();
371
372
373 void on_window_deiconified() override;
374 void on_window_activated() override;
375 void on_window_iconified() override;
376 void on_window_deactivated() override;
377 void on_window_shown() override;
378 void on_window_hidden() override;
379
380
381 void set_active_window() override;
382
383 virtual bool is_active_window();
384
385 //virtual ::i32_point try_absolute_mouse_position(const ::i32_point & point);
386
387
388 virtual void exit_iconify();
389
390 virtual void full_screen(const ::i32_rectangle & rect = {});
391
392 virtual void exit_full_screen();
393
394 virtual void exit_zoomed();
395
396
397 virtual void set_parent(::acme::windowing::window* pwindowNewParent);
398 //virtual ::e_status set_parent(::windowing::window * pwindowNewParent) override;
399 //virtual long get_state();
400 virtual bool is_iconic();
401 //virtual bool is_window_visible() override;
402// virtual bool _configure_window_unlocked(const class ::zorder & zorder, const ::user::e_activation & useractivation, bool bNoZorder, ::e_display edisplay);
403 //virtual iptr get_window_long_ptr(::i32 nIndex);
404 //virtual iptr set_window_long_ptr(::i32 nIndex, iptr l);
405 virtual bool client_to_screen(::i32_point* ppoint);
406
407 virtual bool screen_to_client(::i32_point* ppoint);
408
409
410 //virtual bool set_window_pos(class::zorder zorder, ::i32 x, ::i32 y, ::i32 cx, ::i32 cy,::u32 nFlags);
411 //virtual bool _set_window_pos(class::zorder zorder, ::i32 x, ::i32 y, ::i32 cx, ::i32 cy,::u32 nFlags);
412
413
414 virtual bool is_destroying();
415
416
417 //virtual bool bamf_set_icon();
418
419
420 //virtual bool set_icon(::image::image* pimage);
421
422 //virtual ::i32 x_change_property(Atom property, Atom type, ::i32 format, ::i32 mode, const ::u8 * data, ::i32 nelements);
423
424 virtual void set_mouse_cursor(::windowing::cursor* pcursor);
425
426
427 //void handle(::topic * ptopic, ::handler_context * phandlercontext) override;
428
429
430 //virtual ::i32_size get_main_screen_size();
431
432
433 void _on_window_simple_action(const_char_pointer pszActionName, ::user::activation_token * puseractivationtoken) override;
434
435
436 //virtual ::payload do_synchronously(const class time & timeWait = ::time::infinity()) override;
437 //virtual void do_asynchronously() override;
438
439
440 virtual void defer_show_system_menu(::user::mouse * pmouse);
441
442 virtual void window_message_loop_step();
443
444 virtual void window_message_loop();
445
446
447
448 virtual void set_interface_client_size(const ::i32_size & sizeWindow);
449
450
451 void set_rectangle(const i32_rectangle & rectangle) override;
452 //void set_position(const i32_point & point) override;
453 void set_size(const i32_size & size) override;
454
455
456 //::i32_rectangle get_window_rectangle() override;
457 virtual ::i32_rectangle get_window_rectangle_unlocked();
458
459
460 virtual void set_rectangle_unlocked(const i32_rectangle & rectangle);
461 virtual void set_position_unlocked(const i32_point & point);
462 virtual void set_size_unlocked(const i32_size & size);
463
464
465 virtual void on_a_system_menu_item(::operating_system::a_system_menu_item * psystemmenuitem, ::user::activation_token * puseractivationtoken);
466
467 virtual ::i32 control_box_right_when_at_left() const;
468
469 virtual bool should_use_desktop_ambient_like_control_box() const;
470
471 virtual void on_control_box_close();
472 virtual void on_control_box_minimize();
473 virtual void on_control_box_zoom();
474
475
476 virtual void get_os_window_handle(void *p, ::i32 iSize);
477
478 virtual void on_gpu_context_render_frame(::i32 w, ::i32 h);
479
480 virtual void _lock_window_gpu_context();
481 virtual void _unlock_window_gpu_context();
482
483 };
484
485
486 } // namespace windowing
487
488
489} // namespace acme
490
491
492
Definition interaction.h:50
Definition window.h:50
::acme::user::interaction * acme_user_interaction() override
Definition window.cpp:1468
virtual::acme::windowing::display * get_display()
pointer < operating_system::a_system_menu > create_system_menu(bool bContextual = true) override;
Definition window.cpp:1622
Definition types.h:93
Definition context.h:24
Definition a_system_menu.h:15
Definition topic.h:17
include "aura/graphics/image/context.h"
Definition aaaa__defer.h:32