acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
elemental.h
1//
2// // Created from micro::interchange by
3// // camilo on 2024-10-05 16:52 <3ThomasBorregaardSorensen!!
4// Created by camilo on 31/01/2022 14:32 <3ThomasBorregaardSorensen!!
5// renamed interchange from interchange by camilo on
6// 2024-09-26 15:37 <3ThomasBorregaardSorensen!!
7//
8// // // Merged from (acme)windowing and (acme)windowing_system by
9// // camilo on 2024-10-05 11:07 <3ThomasBorregaardSorensen!!
10// // (acme)windowing_system::windowing_system
11// // ---->windowing::windowing_base
12// // // ---->micro::user
13// // (acme)windowing::window_base
14// // ---->micro::interchange
15//
16// Child merged into interaction on 2024-10-05 05:15 <3ThomasBorregaardSorensen!!
17// Created by camilo on 2022-01-21 05:10 PM <3ThomasBorregaardSorensen
18//
19
20#pragma once
21
22
23#include "acme/user/user/interaction.h"
24
25
26
27#include "acme/prototype/geometry2d/shift.h"
28//#include "acme/user/user/element.h"
29#include "acme/user/user/drag_client.h"
30
31
32namespace micro
33{
34
35
36 class CLASS_DECL_ACME elemental :
37 virtual public ::acme::user::interaction
38 {
39 public:
40
41
42
43 bool m_bBorder = true;
45 //pointer_array < ::micro::elemental > m_elementalaChildren;
46
47 //::pointer < ::acme::windowing::window > m_pnanowindowingwindow;
48 //::pointer < ::acme::user::interaction > m_pacmeuserinteractionParent;
49 //pointer_array < ::acme::user::interaction > m_nanouserinteractionaChildren;
50
52
53 string m_strText;
54 //::atom id();
55 i32_rectangle m_rectangle;
56 enum_font m_efont;
57
58
59 //bool m_bMinimizeBox;
60 //bool m_bMaximizeBox;
61 //bool m_bResizeable;
62 //bool m_bTopMost;
63 //bool m_bStartCentered;
64 //bool m_bArbitraryPositioning;
65
66 //::atom m_atomLeftButtonDown;
67 //::atom m_atomLeftButtonUp;
68 //::atom m_atomRightButtonDown;
69 //::atom m_atomRightButtonUp;
70
71
72
73
74
75 elemental();
76 ~elemental();
77
78
79
80 //void create_window() override;
81 //::payload do_synchronously(const class time & timeWait = ::time::infinity()) override;
82 //void do_asynchronously() override;
83
84
85 virtual ::micro::theme * micro_theme();
86
87 virtual enum_font micro_font();
88
89
90 virtual ::micro::main_window * micro_main_window();
91
92 //void create() override;
93
94 //void show_window() override;
95
96 //void hide_window() override;
97
98 //void message_loop() override;
99
100 //void draw(::micro::graphics::device * pgraphicscontext) override;
101
102 //void on_draw(::micro::graphics::device * pgraphicscontext) override;
103
104 void _on_draw(::nano::graphics::context * pnanodevice) override;
105
106 void on_window_paint(::nano::graphics::context *pgraphicscontext) override;
107
108 virtual void on_draw(::nano::graphics::context * pnanodevice);
109
110 virtual void draw_background(::nano::graphics::context * pnanodevice);
111 virtual void draw_foreground(::nano::graphics::context * pnanodevice);
112
113 virtual void draw_children(::nano::graphics::context * pnanodevice);
114 virtual void draw_child(::nano::graphics::context* pgraphicscontext, ::micro::elemental * pelemental);
115
116
117
118 virtual void on_char(::i32 iChar);
119
120 //bool is_active() override;
121 //void set_active() override;
122
123 //void delete_drawing_objects() override;
124 //bool get_dark_mode() override;
125
126 //void create_drawing_objects() override;
127 //void update_drawing_objects() override;
128
129 //::i32_point try_absolute_mouse_position(const ::i32_point & point) override;
130
131
132 ::i32_point origin() override;
133
134 //virtual ::payload get_result();
135
136 //void on_mouse_move(::user::mouse * pmouse) override;
137 //void on_left_button_down(::user::mouse * pmouse) override;
138 //void on_left_button_up(::user::mouse * pmouse) override;
139 //void on_click(const ::payload & payload, ::user::mouse * pmouse) override;
140 //void on_right_button_down(::user::mouse * pmouse) override;
141 //void on_right_button_up(::user::mouse * pmouse) override;
142 //void on_right_click(const ::payload & payload, ::user::mouse * pmouse) override;
143
144 //::micro::child * hit_test(::user::mouse * pmouse, ::user::e_zorder ezorder) override;
145 virtual void add_child(::micro::elemental * pchild);
146 virtual ::micro::elemental * get_child_by_id(const ::atom & atom);
147
148 ::i32_rectangle get_client_rectangle() override;
149 void set_rectangle(const ::i32_rectangle & rectangle) override;
150
151 //virtual void on_char(::i32 iChar);
152 void set_keyboard_focus() override;
153 bool is_keyboard_focusable() override;
154 //virtual void on_mouse_move(::user::mouse * pmouse);
155 //void set_mouse_capture() override;
156 //bool has_mouse_capture() override;
157 //void release_mouse_capture() override;
158
159 void set_mouse_capture() override;
160 bool is_mouse_captured() override;
161 bool has_mouse_capture() override;
162 void release_mouse_capture() override;
163
164
165 virtual void resize_to_fit();
166
167
168 //virtual void display_temporary_file_with_text(const ::scoped_string & scopedstr);
169
170 //
171// Created by camilo on 2024-09-26 18:50 Odense Time <3ThomasBorregaardSorensen!!
172//
173// micro::window_interface Created by camilo on 31/01/2022 22:37 <3ThomasBorregaardSorensen!!
174// From micro::window_interface merged at ::acme::user::interaction by
175// camilo on 2024-0926 15:01 <3ThomasBorregaardSorensen!!
176//
177//#pragma once
178
179
180 //namespace operating_system
181 //{
182
183
184 // class a_system_menu_item;
185 // class a_system_menu;
186
187
188 //} // namespace operating_system
189
190
191
192 //namespace user
193 //{
194
195
196 // class CLASS_DECL_ACME interaction_base :
197 // /* virtual public ::user::element,
198 // virtual public ::user::drag_client,
199 // virtual public ::conversation_message,
200 // virtual public ::source,
201 // virtual public ::user::check,
202 // virtual public ::user::text*/
203 // {
204
205 // public:
206
207 /* bool m_bMinimizeBox;
208 bool m_bMaximizeBox;
209 bool m_bResizeable;
210 bool m_bTopMost;
211 bool m_bStartCentered;
212 bool m_bArbitraryPositioning;
213
214
215 ::pointer < ::acme::windowing::window > m_pnanowindowingwindow;
216 ::pointer < ::acme::user::interaction > m_pacmeuserinteractionParent;
217*/
218
219// interaction_base();
220/* ~interaction_base() override;*/
221
222
223 //virtual ::pointer < ::operating_system::a_system_menu > create_system_menu(bool bContextual = true);
224
225
226 void handle(::topic * ptopic, ::handler_context * phandlercontext) override;
227
228
230 //void do_asynchronously() override;
231 //::payload do_synchronously(const class time & timeWait) override;
232
233
234
235 //::acme::user::interaction * acme_user_interaction() override;
236 //::acme::windowing::window * acme_windowing_window() override;
237
238 //virtual ::acme::user::interaction * micro_parent();
239 ::micro::elemental * micro_parent();
240
241 virtual ::collection::count micro_button_count();
242 virtual ::micro::button * micro_button_at(::collection::index i);
243 //
244 // //
245 // // Created by camilo on 31/01/2022 22:37 <3ThomasBorregaardSorensen!!
246 // //
247 // #pragma once
248 //
249 //
250 // //#include "acme/prototype/geometry2d/_geometry2d.h"
251 // ////#include "acme/prototype/prototype/object.h"
252 // ///
253 // #include "acme/prototype/geometry2d/shift.h"
254 // #include "acme/user/user/element.h"
255 // #include "user/user/interaction_base.h"
256 //
257 //
258 // namespace micro
259 // {
260 //
261 //
262 // namespace user
263 // {
264 //
265 //
266 // class CLASS_DECL_ACME window_interface :
267 // virtual public ::acme::user::interaction
268 // {
269 // public:
270
271
272 void on_initialize_particle() override;
273
274 //virtual void create_window();
275
276 virtual void show_interaction();
277
278 virtual void hide_interaction();
279
280 //virtual void message_loop();
281
282 void implementation_message_loop_step() override;
283
284 //virtual void draw(::nano::graphics::context * pnanodevice);
285
286 //virtual void on_draw(::nano::graphics::context * pnanodevice);
287
288 //virtual void on_char(::i32 iChar);
289
290 //virtual bool is_active();
291 //virtual void set_active();
292
293 //virtual void draw_children(::nano::graphics::context * pnanodevice);
294
295 //virtual void delete_drawing_objects();
296 //virtual bool get_dark_mode();
297
298 //virtual void create_drawing_objects();
299 //virtual void update_drawing_objects();
300
301 //virtual ::i32_point origin();
302
303 //virtual bool defer_perform_entire_reposition_process();
304
305
306 // virtual ::pointer < ::operating_system::a_system_menu > create_system_menu();
307 //
308 // //bool defer_perform_entire_reposition_process(::user::mouse * pmouse) override;
309 //
310 // //bool defer_perform_entire_resizing_process(::experience::enum_frame eframeSizing, ::user::mouse * pmouse) override;
311 //
312 // virtual bool defer_perform_entire_reposition_process(::user::mouse * pmouse);
313 //
314 // virtual bool defer_perform_entire_resizing_process(::experience::enum_frame eframeSizing, ::user::mouse * pmouse);
315
316
317 ::shift_int host_to_client() override;
318 ::shift_int client_to_host() override;
319
320 ::shift_int absolute_to_client() override;
321 ::shift_int client_to_absolute() override;
322
323 //virtual ::i32_point try_absolute_mouse_position(const ::i32_point & point);
324
325 // drag_client
326 //void drag_set_mouse_capture() override;
327 //bool on_drag_start(::i32_point & point, ::item * pitem) override;
328 //::i32_point drag_mouse_cursor_position(::item * pitem, const ::i32_point & point) override;
329 //bool drag_shift(::item * pitem, ::user::mouse * pmouse) override;
330 //bool drag_hover(::item * pitem) override;
331 //void drag_release_mouse_capture() override;
332 //void drag_set_cursor(::item * pitem) override;
333
334
335 // virtual ::micro::child * nano_user_hit_test(::user::mouse * pmouse, ::user::e_zorder ezorder);
336 // virtual ::micro::child * nano_user_on_hit_test(const ::i32_point & point, ::user::e_zorder ezorder);
337 // virtual void nano_user_add_child(::micro::child * pchild);
338
339 //virtual ::payload get_result();
340 virtual void add_button(const ::scoped_string & scopedstrText, enum_dialog_result edialogresult, ::i8 chLetter);
341
342
343 void display_temporary_file_with_text(const ::scoped_string & scopedstr) override;
344
345
346 bool on_window_mouse_move(const i32_point &point, const i32_point &pointAbsolute) override;
347
348 void back_on_mouse_move(::user::mouse * pmouse) override;
349 void fore_on_mouse_move(::user::mouse * pmouse) override;
350 virtual void back_on_left_button_down(::user::mouse * pmouse);
351 virtual void back_on_left_button_up(::user::mouse * pmouse);
352 virtual void fore_on_left_button_down(::user::mouse * pmouse);
353 virtual void fore_on_left_button_up(::user::mouse * pmouse);
354 virtual void on_click(const ::payload & payload, ::user::mouse * pmouse);
355 virtual void back_on_right_button_down(::user::mouse * pmouse);
356 virtual void back_on_right_button_up(::user::mouse * pmouse);
357 virtual void fore_on_right_button_down(::user::mouse * pmouse);
358 virtual void fore_on_right_button_up(::user::mouse * pmouse);
359 virtual void on_right_click(const ::payload & payload, ::user::mouse * pmouse);
360 virtual void on_context_menu(::user::mouse * pmouse);
361 virtual void on_character(::user::key * pkey);
362 virtual void on_key_down(::user::key * pkey);
363 virtual void on_key_up(::user::key * pkey);
364 virtual void on_create();
365
366 //virtual LRESULT window_procedure(UINT message, WPARAM wparam, LPARAM lparam);
367
368 void set_position(const ::i32_point & point) override;
369
370 void destroy() override;
371
372 void redraw() override;
373
374 //virtual void get_client_rectangle(::i32_rectangle & rectangle);
375 ::i32_rectangle get_rectangle() override;
376
377
378 bool on_window_create(void * pCREATESTRUCT) override;
379 void on_window_position(const ::i32_point & point) override;
380 void on_window_size(const ::i32_size & size) override;
381
382
383 virtual void on_elemental_layout();
384
385
386
387 //void set_mouse_capture() override;
388
389 //bool has_mouse_capture() override;
390
391 //void release_mouse_capture() override;
392
393 void set_cursor(enum_cursor ecursor) override;
394
395 virtual void synchronize_composited_micro_window();
396
397 //void run_modal_loop() override;
398
399 virtual bool is_popup_window() const override;
400
401
403 //void get_text_selection(character_count & iBeg, character_count & iEnd) const override;
404 //virtual void get_text_selection(character_count & iBeg, character_count & iEnd, character_count & iComposingStart, character_count & iComposingEnd) const;
405 //virtual ::collection::index plain_edit_sel_to_column(::draw2d::graphics_pointer & pgraphics, character_count iSel);
406 //virtual ::collection::index plain_edit_sel_to_column_x(::draw2d::graphics_pointer & pgraphics, character_count iSel, ::i32 & x);
407 //virtual ::collection::index plain_edit_sel_to_line(::draw2d::graphics_pointer & pgraphics, character_count iSel);
408 //virtual ::collection::index plain_edit_sel_to_line_x(::draw2d::graphics_pointer & pgraphics, character_count iSel, ::i32 & x);
409 //virtual character_count plain_edit_line_column_to_sel(::draw2d::graphics_pointer & pgraphics, ::collection::index iLine, ::collection::index iColumn);
410 //virtual character_count plain_edit_line_x_to_sel(::draw2d::graphics_pointer & pgraphics, ::collection::index iLine, ::i32 x);
411 //virtual ::collection::index plain_edit_char_to_line(::draw2d::graphics_pointer & pgraphics, character_count iSel);
412
413
414 ::trace_statement & raw_trace_statement_prefix(::trace_statement & statement) const override;
415
416 //virtual void create_interaction(::user::interaction * puserinteractionParent, const ::atom & atom = nullptr);
417
418
419 //virtual void create_control(::user::interaction * puserinteractionParent, const ::atom & atom);
420
421
422 //virtual void on_position_window();
423 //virtual void on_size_window();
424
425 //bool is_window_zoomed() override;
426 //void window_minimize() override;
427 //void window_maximize() override; // m_pwindow->m_puserinteraction->display(::e_display_zoomed);
428 //void window_full_screen() override; // m_pwindow->m_puserinteraction->display(::e_display_full_screen);
429 //void window_restore() override; // m_pwindow->m_puserinteraction->display(::e_display_normal);
430 //void window_close() override;
431
432
433
434 //void _on_window_simple_action(const_char_pointer pszActionName) override;
435
436
437 //
438 // };
439 //
440 //
441 //
442 //
443 // } // namespace user
444 //
445 //
446 // } // namespace nano
447 //
448 //
449 //
450
451// };
452
453
454//} // user
455
456
457
458
459 };
460
461
462
463} // namespace micro
464
465
466
Definition interaction.h:50
Definition atom.h:237
Definition handler_context.h:9
Definition elemental.h:38
void set_keyboard_focus() override
Child.
Definition elemental.cpp:111
bool m_bMouseOn
pointer < micro::elemental > m_pelementalParent;
Definition elemental.h:51
Definition context.h:24
Definition payload.h:54
Definition topic.h:17