1 #ifndef LIBDS_TIZEN_POLICY_H
2 #define LIBDS_TIZEN_POLICY_H
5 #include <wayland-server.h>
6 #include <libds/surface.h>
7 #include <libds/subsurface.h>
13 struct ds_tizen_policy;
14 struct ds_tizen_policy_surface;
15 struct ds_tizen_policy_visibility;
16 struct ds_tizen_policy_position;
17 struct ds_tizen_policy_subsurface_watcher;
19 enum ds_tizen_policy_window_type
21 DS_TIZEN_POLICY_WINDOW_TYPE_NONE,
22 DS_TIZEN_POLICY_WINDOW_TYPE_TOPLEVEL,
23 DS_TIZEN_POLICY_WINDOW_TYPE_FULLLSCREEN,
24 DS_TIZEN_POLICY_WINDOW_TYPE_MAXIMIZED,
25 DS_TIZEN_POLICY_WINDOW_TYPE_TRANSIENT,
26 DS_TIZEN_POLICY_WINDOW_TYPE_MENU,
27 DS_TIZEN_POLICY_WINDOW_TYPE_DND,
28 DS_TIZEN_POLICY_WINDOW_TYPE_CUSTOM,
29 DS_TIZEN_POLICY_WINDOW_TYPE_NOTIFICATION,
30 DS_TIZEN_POLICY_WINDOW_TYPE_UTILITY,
31 DS_TIZEN_POLICY_WINDOW_TYPE_DIALOG,
32 DS_TIZEN_POLICY_WINDOW_TYPE_DOCK,
33 DS_TIZEN_POLICY_WINDOW_TYPE_SPLASH,
34 DS_TIZEN_POLICY_WINDOW_TYPE_DESKTOP,
37 enum ds_tizen_policy_conformant_part
39 DS_TIZEN_POLICY_CONFORMANT_PART_UNKNOWN,
40 DS_TIZEN_POLICY_CONFORMANT_PART_INDICATOR,
41 DS_TIZEN_POLICY_CONFORMANT_PART_KEYBOARD,
42 DS_TIZEN_POLICY_CONFORMANT_PART_CLIPBOARD,
45 enum ds_tizen_policy_error_state
47 DS_TIZEN_POLICY_ERROR_STATE_NONE,
48 DS_TIZEN_POLICY_ERROR_STATE_PERMISSION_DENIED,
51 enum ds_tizen_policy_notification_level
53 DS_TIZEN_POLICY_NOTIFICATION_LEVEL_1,
54 DS_TIZEN_POLICY_NOTIFICATION_LEVEL_2,
55 DS_TIZEN_POLICY_NOTIFICATION_LEVEL_3,
56 DS_TIZEN_POLICY_NOTIFICATION_LEVEL_NONE,
57 DS_TIZEN_POLICY_NOTIFICATION_LEVEL_DEFAULT,
58 DS_TIZEN_POLICY_NOTIFICATION_LEVEL_MEDIUM,
59 DS_TIZEN_POLICY_NOTIFICATION_LEVEL_HIGH,
60 DS_TIZEN_POLICY_NOTIFICATION_LEVEL_TOP,
63 enum ds_tizen_policy_window_screen_mode
65 DS_TIZEN_POLICY_WINDOW_SCREEN_MODE_DEFAULT,
66 DS_TIZEN_POLICY_WINDOW_SCREEN_MODE_ALWAYS_ON,
69 enum ds_tizen_policy_stack_mode
71 DS_TIZEN_POLICY_STACK_MODE_NONE,
72 DS_TIZEN_POLICY_STACK_MODE_ABOVE,
73 DS_TIZEN_POLICY_STACK_MODE_BELOW,
76 enum ds_tizen_policy_visibility_type
78 DS_TIZEN_POLICY_VISIBILITY_TYPE_UNKNOWN,
79 DS_TIZEN_POLICY_VISIBILITY_TYPE_UNOBSCURED,
80 DS_TIZEN_POLICY_VISIBILITY_TYPE_PARTIALLY_OBSCURED,
81 DS_TIZEN_POLICY_VISIBILITY_TYPE_FULLY_OBSCURED,
82 DS_TIZEN_POLICY_VISIBILITY_TYPE_PRE_UNOBSCURED,
85 // policy event structures
86 struct ds_tizen_event_policy_new_surface
88 struct ds_tizen_policy *policy;
89 struct ds_tizen_policy_surface *policy_surface;
92 struct ds_tizen_event_policy_activate_below_by_univeral_id
94 struct ds_tizen_policy *policy;
95 uint32_t universal_id;
96 uint32_t below_universal_id;
99 struct ds_tizen_event_policy_lower_by_universal_id
101 struct ds_tizen_policy *policy;
102 uint32_t universal_id;
105 struct ds_tizen_event_policy_set_transient_for
107 struct ds_tizen_policy *policy;
108 uint32_t child_universal_id;
109 uint32_t parent_universal_id;
112 struct ds_tizen_event_policy_unset_transient_for
114 struct ds_tizen_policy *policy;
115 uint32_t child_universal_id;
118 struct ds_tizen_event_policy_place_subsurface_below_parent
120 struct ds_tizen_policy *policy;
121 struct ds_subsurface *subsurface;
124 struct ds_tizen_event_policy_set_subsurface_stand_alone
126 struct ds_tizen_policy *policy;
127 struct ds_subsurface *subsurface;
130 struct ds_tizen_event_policy_set_background_state
132 struct ds_tizen_policy *policy;
136 struct ds_tizen_event_policy_unset_background_state
138 struct ds_tizen_policy *policy;
142 struct ds_tizen_event_policy_activate_above_by_universal_id
144 struct ds_tizen_policy *policy;
145 uint32_t universal_id;
146 uint32_t above_universal_id;
149 struct ds_tizen_event_policy_set_appid
151 struct ds_tizen_policy *policy;
156 struct ds_tizen_event_policy_set_transient_for_below
158 struct ds_tizen_policy *policy;
159 uint32_t universal_id;
160 uint32_t parent_universal_id;
163 // policy policy_surface event structures
164 struct ds_tizen_event_policy_surface_new_visibility
166 struct ds_tizen_policy_surface *policy_surface;
167 struct ds_tizen_policy_visibility *visibility;
170 struct ds_tizen_event_policy_surface_get_position
172 struct ds_tizen_policy_surface *policy_surface;
173 struct ds_tizen_policy_position *position;
176 struct ds_tizen_event_policy_surface_activate
178 struct ds_tizen_policy_surface *policy_surface;
181 struct ds_tizen_event_policy_surface_raise
183 struct ds_tizen_policy_surface *policy_surface;
186 struct ds_tizen_event_policy_surface_lower
188 struct ds_tizen_policy_surface *policy_surface;
191 struct ds_tizen_event_policy_surface_set_focus_skip
193 struct ds_tizen_policy_surface *policy_surface;
196 struct ds_tizen_event_policy_surface_unset_focus_skip
198 struct ds_tizen_policy_surface *policy_surface;
201 struct ds_tizen_event_policy_surface_set_role
203 struct ds_tizen_policy_surface *policy_surface;
207 struct ds_tizen_event_policy_surface_set_window_type
209 struct ds_tizen_policy_surface *policy_surface;
210 enum ds_tizen_policy_window_type win_type;
213 struct ds_tizen_event_policy_surface_set_conformant
215 struct ds_tizen_policy_surface *policy_surface;
218 struct ds_tizen_event_policy_surface_unset_conformant
220 struct ds_tizen_policy_surface *policy_surface;
223 struct ds_tizen_event_policy_surface_get_conformant
225 struct ds_tizen_policy_surface *policy_surface;
228 struct ds_tizen_event_policy_surface_set_notification_level
230 struct ds_tizen_policy_surface *policy_surface;
231 enum ds_tizen_policy_notification_level level;
234 struct ds_tizen_event_policy_surface_set_window_screen_mode
236 struct ds_tizen_policy_surface *policy_surface;
237 enum ds_tizen_policy_window_screen_mode mode;
240 struct ds_tizen_event_policy_surface_get_subsurface
242 struct ds_tizen_policy_surface *policy_surface;
243 uint32_t parent_universal_id;
246 struct ds_tizen_event_policy_surface_iconify
248 struct ds_tizen_policy_surface *policy_surface;
251 struct ds_tizen_event_policy_surface_uniconify
253 struct ds_tizen_policy_surface *policy_surface;
256 struct ds_tizen_event_policy_surface_add_aux_hint
258 struct ds_tizen_policy_surface *policy_surface;
264 struct ds_tizen_event_policy_surface_change_aux_hint
266 struct ds_tizen_policy_surface *policy_surface;
271 struct ds_tizen_event_policy_surface_delete_aux_hint
273 struct ds_tizen_policy_surface *policy_surface;
277 struct ds_tizen_event_policy_surface_get_supported_aux_hints
279 struct ds_tizen_policy_surface *policy_surface;
282 struct ds_tizen_event_policy_surface_set_floating_mode
284 struct ds_tizen_policy_surface *policy_surface;
287 struct ds_tizen_event_policy_surface_unset_floating_mode
289 struct ds_tizen_policy_surface *policy_surface;
292 struct ds_tizen_event_policy_surface_set_stack_mode
294 struct ds_tizen_policy_surface *policy_surface;
295 enum ds_tizen_policy_stack_mode mode;
298 struct ds_tizen_event_policy_surface_get_subsurface_watcher
300 struct ds_tizen_policy_surface *policy_surface;
301 struct ds_tizen_policy_subsurface_watcher *subsurface_watcher;
304 struct ds_tizen_event_policy_surface_set_parent
306 struct ds_tizen_policy_surface *policy_surface;
307 struct ds_surface *parent_surface;
310 struct ds_tizen_event_policy_surface_ack_conformant_region
312 struct ds_tizen_policy_surface *policy_surface;
316 struct ds_tizen_event_policy_surface_set_video
318 struct ds_tizen_policy_surface *policy_surface;
322 struct ds_tizen_event_policy_surface_show
324 struct ds_tizen_policy_surface *policy_surface;
327 struct ds_tizen_event_policy_surface_hide
329 struct ds_tizen_policy_surface *policy_surface;
332 struct ds_tizen_event_policy_surface_set_parent_with_below
334 struct ds_tizen_policy_surface *policy_surface;
335 struct ds_surface *parent_surface;
338 // policy policy_surface event structures
339 struct ds_tizen_event_policy_position_set
341 struct ds_tizen_policy_position *position;
346 struct ds_tizen_policy *
347 ds_tizen_policy_create(struct wl_display *display);
349 // add listeners for ds_tizen_policy
351 ds_tizen_policy_add_destroy_listener(struct ds_tizen_policy *policy,
352 struct wl_listener *listener);
355 ds_tizen_policy_add_new_surface_listener(
356 struct ds_tizen_policy *policy,
357 struct wl_listener *listener);
360 ds_tizen_policy_add_activate_below_by_univeral_id_listener(
361 struct ds_tizen_policy *policy,
362 struct wl_listener *listener);
365 ds_tizen_policy_add_lower_by_universal_id_listener(
366 struct ds_tizen_policy *policy,
367 struct wl_listener *listener);
370 ds_tizen_policy_add_set_transient_for_listener(
371 struct ds_tizen_policy *policy,
372 struct wl_listener *listener);
375 ds_tizen_policy_add_unset_transient_for_listener(
376 struct ds_tizen_policy *policy,
377 struct wl_listener *listener);
380 ds_tizen_policy_add_place_subsurface_below_parent_listener(
381 struct ds_tizen_policy *policy,
382 struct wl_listener *listener);
385 ds_tizen_policy_add_set_subsurface_stand_alone_listener(
386 struct ds_tizen_policy *policy,
387 struct wl_listener *listener);
390 ds_tizen_policy_add_set_background_state_listener(
391 struct ds_tizen_policy *policy,
392 struct wl_listener *listener);
395 ds_tizen_policy_add_unset_background_state_listener(
396 struct ds_tizen_policy *policy,
397 struct wl_listener *listener);
400 ds_tizen_policy_add_activate_above_by_universal_id_listener(
401 struct ds_tizen_policy *policy,
402 struct wl_listener *listener);
405 ds_tizen_policy_add_set_appid_listener(
406 struct ds_tizen_policy *policy,
407 struct wl_listener *listener);
410 ds_tizen_policy_add_set_transient_for_below_listener(
411 struct ds_tizen_policy *policy,
412 struct wl_listener *listener);
414 // add listeners for ds_tizen_policy_surface
416 ds_tizen_policy_surface_add_destroy_listener(
417 struct ds_tizen_policy_surface *policy_surface,
418 struct wl_listener *listener);
421 ds_tizen_policy_surface_add_new_visibility_listener(
422 struct ds_tizen_policy_surface *policy_surface,
423 struct wl_listener *listener);
426 ds_tizen_policy_surface_add_get_position_listener(
427 struct ds_tizen_policy_surface *policy_surface,
428 struct wl_listener *listener);
431 ds_tizen_policy_surface_add_activate_listener(
432 struct ds_tizen_policy_surface *policy_surface,
433 struct wl_listener *listener);
436 ds_tizen_policy_surface_add_raise_listener(
437 struct ds_tizen_policy_surface *policy_surface,
438 struct wl_listener *listener);
441 ds_tizen_policy_surface_add_lower_listener(
442 struct ds_tizen_policy_surface *policy_surface,
443 struct wl_listener *listener);
446 ds_tizen_policy_surface_add_set_focus_skip_listener(
447 struct ds_tizen_policy_surface *policy_surface,
448 struct wl_listener *listener);
451 ds_tizen_policy_surface_add_unset_focus_skip_listener(
452 struct ds_tizen_policy_surface *policy_surface,
453 struct wl_listener *listener);
456 ds_tizen_policy_surface_add_set_role_listener(
457 struct ds_tizen_policy_surface *policy_surface,
458 struct wl_listener *listener);
461 ds_tizen_policy_surface_add_set_window_type_listener(
462 struct ds_tizen_policy_surface *policy_surface,
463 struct wl_listener *listener);
466 ds_tizen_policy_surface_add_set_conformant_listener(
467 struct ds_tizen_policy_surface *policy_surface,
468 struct wl_listener *listener);
471 ds_tizen_policy_surface_add_unset_conformant_listener(
472 struct ds_tizen_policy_surface *policy_surface,
473 struct wl_listener *listener);
476 ds_tizen_policy_surface_add_get_conformant_listener(
477 struct ds_tizen_policy_surface *policy_surface,
478 struct wl_listener *listener);
481 ds_tizen_policy_surface_add_set_notification_level_listener(
482 struct ds_tizen_policy_surface *policy_surface,
483 struct wl_listener *listener);
486 ds_tizen_policy_surface_add_set_window_screen_mode_listener(
487 struct ds_tizen_policy_surface *policy_surface,
488 struct wl_listener *listener);
491 ds_tizen_policy_surface_add_get_subsurface_listener(
492 struct ds_tizen_policy_surface *policy_surface,
493 struct wl_listener *listener);
496 ds_tizen_policy_surface_add_iconify_listener(
497 struct ds_tizen_policy_surface *policy_surface,
498 struct wl_listener *listener);
501 ds_tizen_policy_surface_add_uniconify_listener(
502 struct ds_tizen_policy_surface *policy_surface,
503 struct wl_listener *listener);
506 ds_tizen_policy_surface_add_add_aux_hint_listener(
507 struct ds_tizen_policy_surface *policy_surface,
508 struct wl_listener *listener);
511 ds_tizen_policy_surface_add_change_aux_hint_listener(
512 struct ds_tizen_policy_surface *policy_surface,
513 struct wl_listener *listener);
516 ds_tizen_policy_surface_add_delete_aux_hint_listener(
517 struct ds_tizen_policy_surface *policy_surface,
518 struct wl_listener *listener);
521 ds_tizen_policy_surface_add_get_supported_aux_hints_listener(
522 struct ds_tizen_policy_surface *policy_surface,
523 struct wl_listener *listener);
526 ds_tizen_policy_surface_add_set_floating_mode_listener(
527 struct ds_tizen_policy_surface *policy_surface,
528 struct wl_listener *listener);
531 ds_tizen_policy_surface_add_unset_floating_mode_listener(
532 struct ds_tizen_policy_surface *policy_surface,
533 struct wl_listener *listener);
536 ds_tizen_policy_surface_add_set_stack_mode_listener(
537 struct ds_tizen_policy_surface *policy_surface,
538 struct wl_listener *listener);
541 ds_tizen_policy_surface_add_get_subsurface_watcher_listener(
542 struct ds_tizen_policy_surface *policy_surface,
543 struct wl_listener *listener);
546 ds_tizen_policy_surface_add_set_parent_listener(
547 struct ds_tizen_policy_surface *policy_surface,
548 struct wl_listener *listener);
551 ds_tizen_policy_surface_add_ack_conformant_region_listener(
552 struct ds_tizen_policy_surface *policy_surface,
553 struct wl_listener *listener);
556 ds_tizen_policy_surface_add_set_video_listener(
557 struct ds_tizen_policy_surface *policy_surface,
558 struct wl_listener *listener);
561 ds_tizen_policy_surface_add_show_listener(
562 struct ds_tizen_policy_surface *policy_surface,
563 struct wl_listener *listener);
566 ds_tizen_policy_surface_add_hide_listener(
567 struct ds_tizen_policy_surface *policy_surface,
568 struct wl_listener *listener);
571 ds_tizen_policy_surface_add_set_parent_with_below_listener(
572 struct ds_tizen_policy_surface *policy_surface,
573 struct wl_listener *listener);
575 // add listeners for ds_tizen_policy_visibility
577 ds_tizen_policy_visibility_add_destroy_listener(
578 struct ds_tizen_policy_visibility *visibility,
579 struct wl_listener *listener);
581 // add listeners for ds_tizen_policy_position
583 ds_tizen_policy_position_add_destroy_listener(
584 struct ds_tizen_policy_position *position,
585 struct wl_listener *listener);
588 ds_tizen_policy_position_add_set_listener(
589 struct ds_tizen_policy_position *position,
590 struct wl_listener *listener);
592 // add listeners for ds_tizen_policy_subsurface_watcher
594 ds_tizen_policy_subsurface_watcher_add_destroy_listener(
595 struct ds_tizen_policy_subsurface_watcher *subsurface_watcher,
596 struct wl_listener *listener);
598 // policy_surface senders to client
600 ds_tizen_policy_surface_send_conformant(struct ds_tizen_policy_surface *policy_surface,
604 ds_tizen_policy_surface_send_conformant_area(struct ds_tizen_policy_surface *policy_surface,
605 enum ds_tizen_policy_conformant_part part, bool visible,
606 int32_t x, int32_t y, int32_t w, int32_t h);
609 ds_tizen_policy_surface_send_notification_done(struct ds_tizen_policy_surface *policy_surface,
610 enum ds_tizen_policy_notification_level level,
611 enum ds_tizen_policy_error_state state);
614 ds_tizen_policy_surface_send_window_screen_mode_done(struct ds_tizen_policy_surface *policy_surface,
615 enum ds_tizen_policy_window_screen_mode mode,
616 enum ds_tizen_policy_error_state state);
619 ds_tizen_policy_surface_send_iconify_state_changed(struct ds_tizen_policy_surface *policy_surface,
620 bool iconified, bool force);
623 ds_tizen_policy_surface_send_supported_aux_hints(struct ds_tizen_policy_surface *policy_surface,
624 struct wl_array *hints, uint32_t force);
627 ds_tizen_policy_surface_send_allowed_aux_hint(struct ds_tizen_policy_surface *policy_surface,
631 ds_tizen_policy_surface_send_aux_message(struct ds_tizen_policy_surface *policy_surface,
632 const char *key, const char *value, struct wl_array *options);
635 ds_tizen_policy_surface_send_conformant_region(struct ds_tizen_policy_surface *policy_surface,
636 enum ds_tizen_policy_conformant_part part, bool visible,
637 int32_t x, int32_t y, int32_t w, int32_t h, uint32_t serial);
640 ds_tizen_policy_surface_send_interactive_move_done(struct ds_tizen_policy_surface *policy_surface,
641 int32_t x, int32_t y, uint32_t w, uint32_t h);
644 ds_tizen_policy_surface_send_interactive_resize_done(struct ds_tizen_policy_surface *policy_surface,
645 int32_t x, int32_t y, uint32_t w, uint32_t h);
647 // visibility senders to client
649 ds_tizen_policy_visibility_send_notify(
650 struct ds_tizen_policy_visibility *visibility,
651 enum ds_tizen_policy_visibility_type type);
654 ds_tizen_policy_visibility_send_changed(
655 struct ds_tizen_policy_visibility *visibility,
656 enum ds_tizen_policy_visibility_type type, uint32_t option);
658 // position senders to client
660 ds_tizen_policy_position_send_changed(
661 struct ds_tizen_policy_position *position, int32_t x, int32_t y);
663 // getters for ds_tizen_policy_surface
665 ds_tizen_policy_surface_get_surface(struct ds_tizen_policy_surface *policy_surface);
668 ds_tizen_policy_surface_get_conformant(struct ds_tizen_policy_surface *policy_surface);
671 ds_tizen_policy_surface_get_opaque_state(struct ds_tizen_policy_surface *policy_surface);
674 ds_tizen_policy_surface_get_iconified(struct ds_tizen_policy_surface *policy_surface);
677 ds_tizen_policy_surface_get_floating_mode(struct ds_tizen_policy_surface *policy_surface);
679 enum ds_tizen_policy_stack_mode
680 ds_tizen_policy_surface_get_stack_mode(struct ds_tizen_policy_surface *policy_surface);