acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
windowing.h
1// Split/separation of concerns from micro to
2// acme::windowing by camilo on 2024-10-05 18:03 <3ThomasBorregaardSorensen!!
3// Created by camilo on 2022-11-19 03:54 <3ThomasBorregaardSorensen!!
4//
5// // Merged from (acme)windowing and (acme)windowing_system by
6// // camilo on 2024-10-05 11:06 <3ThomasBorregaardSorensen!!
7// // (acme)windowing_system::windowing_system
8// // ---->windowing::windowing_base
9// // // ---->micro::user
10// // (acme)windowing::window_base
11// // ---->micro::interchange
12//
13// Created by camilo on 2024-05-26 21:50 <3ThomasBorregaardSorensen!!
14// Merged from windowing_system to
15// windowing by camilo on 2024-10-05 10:35 <3ThomasBorregaardSorensen!!
16#pragma once
17
18
19#include "acme/platform/department.h"
20#include "acme/prototype/collection/comparable_list.h"
21#include "_.h"
22#include "acme/handler/task_handler.h"
23#include "acme/operating_system/window.h"
24#include "acme/constant/lightui.h"
25
26#ifdef WINDOWS_DESKTOP
27#include "acme/operating_system/windows/_window_class.h"
28#endif
29
30
31namespace acme
32{
33
34
35 namespace windowing
36 {
37
38
39 class CLASS_DECL_ACME windowing :
40 virtual public ::platform::department,
41 virtual public ::task,
42 virtual public ::task_handler
43 {
44 public:
45
46
47 //::pointer_array < ::acme::windowing::window > m_windowa;
48
49 //::map < ::operating_system::window, ::pointer < ::acme::windowing::window > > m_windowmap;
50
51 ::pointer<::acme::windowing::display> m_pacmedisplay;
52 ::windowing::enum_windowing m_ewindowing;
53 ::pointer<::acme::windowing::window> m_pacmewindowingwindowMouseCapture;
54 class ::time m_timeDarkMode;
55
56 ::windowing::enum_bias m_ewindowingbias;
57
58
59 ::procedure m_callbackOnApplicationActivate;
60
61 bool m_bApplicationActivated;
62 bool m_bIsOperatingAmbientApplicationHeld;
63
64
65
66 windowing();
67 ~windowing() override;
68
69 virtual ::windowing::enum_bias calculate_windowing_bias();
70
71 inline ::windowing::enum_bias windowing_bias() { return m_ewindowingbias; }
72
73
74 virtual ::string get_version();
75 //inline static const_char_pointer represented_component_name() { return "nano_windowing"; }
76
77 //::acme::windowing::window * windowing_window() override;
78 //::micro::theme * nano_user_theme();
79 //::pointer < ::subparticle > nano()->message_box(const ::scoped_string & scopedstrMessage, const ::scoped_string & scopedstrTitle = nullptr, const ::user::e_message_box& emessagebox = ::user::e_message_box_ok, const ::scoped_string & scopedstrDetails = nullptr);
80 //virtual void update_nano_user_theme();
81
83
84 //::pointer < ::subparticle > nano()->message_console(const ::scoped_string & scopedstrMessage, const ::scoped_string & scopedstrTitle = nullptr, const ::user::e_message_box& emessagebox = ::user::e_message_box_ok, const ::scoped_string & scopedstrDetails = nullptr);
85
86
87 //::pointer < ::subparticle > message_box(const ::scoped_string & scopedstrMessage, const ::scoped_string & scopedstrTitle = nullptr, const ::user::e_message_box & emessagebox = ::user::e_message_box_ok, const ::scoped_string & scopedstrDetails = nullptr, ::nano::graphics::icon * picon = nullptr);
88
89 //::pointer < ::subparticle > exception_message_box(const ::exception & exception, const ::scoped_string & scopedstrMessage = nullptr, const ::scoped_string & scopedstrTitle = nullptr, const ::user::e_message_box & emessagebox = ::user::e_message_box_ok, const ::scoped_string & scopedstrDetails = nullptr, ::nano::graphics::icon * picon = nullptr);
90
91 //::pointer < ::subparticle > message_console(const ::scoped_string & scopedstrMessage = nullptr, const ::scoped_string & scopedstrTitle = nullptr, const ::user::e_message_box & emessagebox = ::user::e_message_box_ok, const ::scoped_string & scopedstrDetails = nullptr, ::nano::graphics::icon * picon = nullptr);
92
93 //::pointer < ::subparticle > exception_message_console(const ::exception & exception, const ::scoped_string & scopedstrMessage = nullptr, const ::scoped_string & scopedstrTitle = nullptr, const ::user::e_message_box & emessagebox = ::user::e_message_box_ok, const ::scoped_string & scopedstrDetails = nullptr, ::nano::graphics::icon * picon = nullptr);
94
95 virtual ::particle * defer_initialize_host_window(const ::i32_rectangle* lpcrect);
96
97 virtual void _will_finish_launching();
98
99 virtual void _did_finish_launching();
100
101 virtual void set_clipboard_text(const_char_pointer psz);
102
103 virtual ::acme::windowing::window* get_application_host_window();
104
105 virtual ::pointer < ::acme::windowing::window > get_new_window();
106
107 // ::windowing::window* new_window(::windowing::window* pimpl) override;
108 //
109 virtual void add_window(::acme::windowing::window *pwindow);
110 virtual void erase_window(::acme::windowing::window* pwindow);
111
112 //virtual ::acme::windowing::window* window_from_HWND(void * pHWND);
113
114 virtual void each_window(const ::function<void(::acme::windowing::window *)> &function);
115 //virtual void on_user_command(::uptr u, ::lightui::enum_notification enotification, ::uptr uControl);
116 virtual void _message_handler(void* p);
117
118 virtual ::acme::windowing::window * get_keyboard_focus(::thread* pthread);
119
120 virtual ::acme::windowing::window * get_mouse_capture(::thread* pthread);
121
122
123 virtual bool defer_release_mouse_capture(::thread * pthread, ::acme::windowing::window * pwindow);
124
125
126 // virtual void clear_keyboard_focus(::user::element * pelementGainingFocusIfAny = nullptr);
127
128 virtual void hide_application();
129
130
131 void handle(::topic * ptopic, ::handler_context * phandlercontext) override;
132
133
134 void main_send(const ::procedure & procedure) override;
135 void main_post(const ::procedure & procedure) override;
136
137 //void _main_send(::subparticle * p) override;
138 //void _main_post(::subparticle * p) override;
139
140 virtual void process_messages();
141
142 virtual bool init_threads();
143
144 void __task_suffix() override;
145
146
147 virtual void show(::particle_pointer pparticle);
148
150
151 virtual ::pointer < ::user::activation_token > get_user_activation_token();
152 //
153
154
155#ifdef WINDOWS_DESKTOP
156
157
158 virtual ::windows::window_class _custom_window_class(const ::scoped_string & scopedstrClassName, void * pHICON_Big, void * pHICON_Small);
159 virtual ::windows::window_class _default_window_class();
160 virtual ::windows::window_class _acme_nano_window_class();
161 virtual ::windows::window_class _com_host_window_class();
162
163#endif
164 //windowing_base();
165
166 //~windowing_base() override;
167
168
169 void on_initialize_particle() override;
170
171
172 void destroy() override;
173
174 virtual ::acme::windowing::display * acme_display();
175
176 virtual ::acme::windowing::window * acme_windowing_window(const ::operating_system::window & operatingsystemwindow);
177
178 virtual ::operating_system::window operating_system_window(const ::wparam & wparam);
179
180 virtual ::operating_system::window operating_system_window(const ::lparam & lparam);
181
182 virtual ::acme::windowing::window * acme_windowing_window(const ::lparam & lparam);
183
184 virtual ::windowing::windowing * windowing_windowing();
185
186 virtual void _do_tasks();
187
188 virtual void application_handle(::i64 l, void * p);
189
190 //virtual void defer_initialize_windowing();
191
192 virtual void initialize_windowing();
193
194 virtual void on_activate();
195
196 virtual void finalize_windowing();
197
198
199 virtual void on_create_window_object(::acme::user::interaction * puserinteraction);
200
201
202 //virtual void * get_display();
203
204 //void main_send(const ::procedure & procedure) override;
205
206 //void main_post(const ::procedure & procedure) override;
207
208 virtual void display_error_trap_push(::i32 i);
209
210 virtual void display_error_trap_pop_ignored(::i32 i);
211
212 //virtual void * fetch_windowing_display();
213
214 //virtual void process_messages();
215
216 //virtual void on_start_windowing_application();
217
218 virtual void windowing_application_on_system_start();
219
220 //virtual void windowing_application_on_start();
221
222 void run() override;
223
224 virtual void windowing_post_quit();
225
226 virtual ::color::color get_system_color(enum_system_color esystemcolor);
227
228 virtual ::color::color get_operating_system_background_color();
229
230
231 virtual void fetch_dark_mode();
232
233
234 virtual void on_system_dark_mode_change(bool bDarkMode,
235 const ::color::color & colorBackground = ::color::transparent);
236
237 virtual void set_dark_mode(bool bDarkMode);
238 virtual bool dark_mode();
239
240 virtual class ::time dark_mode_time() const;
241 virtual void set_dark_mode_time(const class ::time & time);
242
243
244 //virtual bool is_dark_mode_through_theming();
245
246 virtual void fetch_system_background_color();
247
248
249 ::color::color reinterpreted_background_color();
250
251
252 virtual ::pixmap get_pixmap_from_file(::memory & memoryHost, const void * psourceFile, memsize sizeSourceFile);
253
254
255 virtual ::windowing::enum_windowing calculate_ewindowing();
256 virtual ::windowing::enum_windowing get_ewindowing();
257
258
259 virtual bool shell_open(const ::file::path & path);
260
261 //virtual bool defer_realize( ::pointer < ::reified < ::message_box > > & preifiedMessageBox, ::message_box * p);
262
263 virtual bool has_resizing();
264
265
266 //virtual enum_bias calculate_bias();
267
268 //virtual void enable_wallpaper_change_notification();
269
270 //virtual bool set_wallpaper(::collection::index iScreen, const ::scoped_string & scopedstrLocalImagePath, ::acme::windowing::display * pwindowingdisplay);
271
272 //virtual string get_wallpaper(::collection::index iScreen, ::acme::windowing::display * pwindowingdisplay);
273 virtual ::f64 get_default_screen_dpi();
274 virtual ::f32 default_screen_points_to_pixels(::f32 fPoints);
275
276
277
278 virtual void hook_operating_ambient_theme_change_callbacks();
279
280
281 virtual void on_hold_operating_ambient_application();
282 virtual void on_unhold_operating_ambient_application();
283
284
285 virtual void on_application_activate();
286
287
288 void run_loop2(::task *ptask) override;
289
290
291 };
292
293
294 } // namespace user
295
296
297} // namespace acme
298
299
300
301CLASS_DECL_ACME void initialize_acme_user(::factory::factory * pfactory);
302CLASS_DECL_ACME::string as_string(::windowing::enum_toolkit etoolkit);
303
304namespace windowing
305{
306
307 CLASS_DECL_ACME::string get_user_toolkit_id();
308
309
310} // namespace windowing
311
312
313
Definition interaction.h:50
Definition window.h:50
Definition color.h:162
Definition factory.h:201
Definition _template_forward_declaration.h:297
Definition lparam.h:9
Definition memory.h:33
Definition department.h:13
Definition aaa_time.h:13
Definition topic.h:17
Definition wparam.h:10
include "aura/graphics/image/context.h"
Definition aaaa__defer.h:32