// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_EXO_WAYLAND_ZCR_REMOTE_SHELL_EVENT_MAPPING_H_
#define COMPONENTS_EXO_WAYLAND_ZCR_REMOTE_SHELL_EVENT_MAPPING_H_
#include <stdint.h>
#include <wayland-server-core.h>
#include <wayland-server-protocol-core.h>
#include "base/functional/callback.h"
// These structs are populated with function pointers and values from the v1 and
// v2 remote shell protocol.
struct WaylandRemoteOutputEventMapping {
void (*send_identification_data)(struct wl_resource* resource_,
struct wl_array* identification_data);
void (*send_display_id)(struct wl_resource* resource_,
uint32_t display_id_hi,
uint32_t display_id_lo);
void (*send_port)(struct wl_resource* resource_, uint32_t port);
void (*send_insets)(struct wl_resource* resource_,
int32_t inset_left,
int32_t inset_top,
int32_t inset_right,
int32_t inset_bottom);
void (*send_stable_insets)(struct wl_resource* resource_,
int32_t stable_inset_left,
int32_t stable_inset_top,
int32_t stable_inset_right,
int32_t stable_inset_bottom);
void (*send_systemui_behavior)(struct wl_resource* resource_,
int32_t systemui_behavior);
int system_ui_behavior_since_version;
int stable_insets_since_version;
};
struct WaylandRemoteShellEventMapping {
void (*send_window_geometry_changed)(struct wl_resource* resource_,
int32_t x,
int32_t y,
int32_t width,
int32_t height);
void (*send_change_zoom_level)(struct wl_resource* resource_, int32_t change);
void (*send_state_type_changed)(struct wl_resource* resource_,
uint32_t state_type);
void (*send_bounds_changed_in_output)(struct wl_resource* resource_,
struct wl_resource* output,
int32_t x,
int32_t y,
int32_t width,
int32_t height,
uint32_t bounds_change_reason);
void (*send_bounds_changed)(struct wl_resource* resource_,
uint32_t display_id_hi,
uint32_t display_id_lo,
int32_t x,
int32_t y,
int32_t width,
int32_t height,
uint32_t bounds_change_reason);
void (*send_activated)(struct wl_resource* resource_,
struct wl_resource* gained_active,
struct wl_resource* lost_active);
void (*send_desktop_focus_state_changed)(struct wl_resource* resource_,
uint32_t focus_state);
void (*send_workspace_info)(struct wl_resource* resource_,
uint32_t display_id_hi,
uint32_t display_id_lo,
int32_t x,
int32_t y,
int32_t width,
int32_t height,
int32_t inset_left,
int32_t inset_top,
int32_t inset_right,
int32_t inset_bottom,
int32_t stable_inset_left,
int32_t stable_inset_top,
int32_t stable_inset_right,
int32_t stable_inset_bottom,
int32_t systemui_visibility,
int32_t transform,
uint32_t is_internal,
struct wl_array* identification_data);
void (*send_drag_finished)(struct wl_resource* resource_,
int32_t x,
int32_t y,
int32_t canceled);
void (*send_drag_started)(struct wl_resource* resource_, uint32_t direction);
void (*send_layout_mode)(struct wl_resource* resource_, uint32_t layout_mode);
void (*send_default_device_scale_factor)(struct wl_resource* resource_,
int32_t scale);
void (*send_configure)(struct wl_resource* resource_, uint32_t layout_mode);
int bounds_changed_in_output_since_version;
int desktop_focus_state_changed_since_version;
int layout_mode_since_version;
int default_device_scale_factor_since_version;
int change_zoom_level_since_version;
int send_workspace_info_since_version;
int set_use_default_scale_cancellation_since_version;
bool has_bounds_change_reason_float;
};
#endif // COMPONENTS_EXO_WAYLAND_ZCR_REMOTE_SHELL_EVENT_MAPPING_H_