termux-x11/app/src/main/jni/lorie/include/LorieImpls.hpp

181 lines
5.6 KiB
C++

#pragma once
#include <wayland.hpp>
#include "log.h"
class LorieClient;
#include <lorie-renderer.hpp>
class LorieUtils {
public:
static uint32_t timestamp();
};
class LorieCompositor;
class LorieDataOffer;
class LorieDataSource;
class LorieDataDevice;
class LorieDataDeviceManager;
class LorieShell;
class LorieShellSurface;
class LorieSurface;
class LorieSeat;
class LoriePointer;
class LorieKeyboard;
class LorieTouch;
class LorieOutput;
class LorieRegion;
class LorieRegion: public wl_region_t {
public:
void on_destroy() override {};
void on_create() override {};
void request_destroy() override {destroy();};
void request_add(int32_t x, int32_t y, int32_t width, int32_t height) override {};
void request_subtract(int32_t x, int32_t y, int32_t width, int32_t height) override {};
};
class LorieSurface: public wl_surface_t {
public:
void on_destroy() override {};
void on_create() override {};
uint32_t x = 0, y = 0;
LorieTexture texture;
struct wl_resource *buffer = NULL;
struct wl_resource *frame_callback = NULL;
void request_destroy() override {destroy();};
void request_attach(struct wl_resource *buffer, int32_t x, int32_t y) override;
void request_damage(int32_t x, int32_t y, int32_t width, int32_t height) override;
void request_frame(uint32_t callback) override;
void request_set_opaque_region(struct wl_resource *region) override {};
void request_set_input_region(struct wl_resource *region) override {};
void request_commit() override;
void request_set_buffer_transform(int32_t transform) override {};
void request_set_buffer_scale(int32_t scale) override {};
void request_damage_buffer(int32_t x, int32_t y, int32_t width, int32_t height) override {};
};
class LorieCompositor_: public wl_compositor_t {
public:
void request_create_region(uint32_t id) override {
wl_resource_t::create<LorieRegion>(client, id);
};
void request_create_surface(uint32_t id) override {
wl_resource_t::create<LorieSurface>(client, id);
};
void on_destroy() override {};
void on_create() override {};
};
class LorieDataSource: public wl_data_source_t {
void on_destroy() override {};
void on_create() override {};
void request_offer(const char*) override {};
void request_destroy() override {destroy();};
void request_set_actions(uint32_t) override {};
};
class LorieDataDevice: public wl_data_device_t {
public:
void on_destroy() override {};
void on_create() override {};
void request_start_drag(struct wl_resource *source, struct wl_resource *origin, struct wl_resource *icon, uint32_t serial) override {};
void request_set_selection(struct wl_resource *source, uint32_t serial) override {};
void request_release() override {destroy();};
};
class LorieDataDeviceManager: public wl_data_device_manager_t {
public:
void on_destroy() override {};
void on_create() override {};
static void bind(struct wl_client *client, void *data, uint32_t version, uint32_t id);
static void global_create(struct wl_display *display, void *data) {
wl_resource_t::global_create<LorieDataDeviceManager>(display, &bind, data);
};
void request_create_data_source(uint32_t id) override {
wl_resource_t::create<LorieDataSource>(client, id);
};
void request_get_data_device(uint32_t id, wl_resource*) override {
wl_resource_t::create<LorieDataDevice>(client, id);
};
};
class LorieSurface;
class LorieShellSurface: public wl_shell_surface_t {
public:
void on_destroy() override {};
void on_create() override {};
LorieSurface *surface = NULL;
void request_pong(uint32_t serial) override {};
void request_move(struct wl_resource *seat, uint32_t serial) override {};
void request_resize(struct wl_resource *seat, uint32_t serial, uint32_t edges) override {};
void request_set_toplevel() override;
void request_set_transient(struct wl_resource *parent, int32_t x, int32_t y, uint32_t flags) override {};
void request_set_fullscreen(uint32_t method, uint32_t framerate, struct wl_resource *output) override {};
void request_set_popup(struct wl_resource *seat, uint32_t serial, struct wl_resource *parent, int32_t x, int32_t y, uint32_t flags) override {};
void request_set_maximized(struct wl_resource *output) override {};
void request_set_title(const char *title) override {};
void request_set_class(const char *class_) override {};
};
class LorieShell: public wl_shell_t {
public:
void on_destroy() override {};
void on_create() override {};
void request_get_shell_surface(uint32_t id, struct wl_resource *surface) override {
LorieShellSurface* res = new LorieShellSurface;
res->create(client, id, true);
res->surface = LorieSurface::from_wl_resource<LorieSurface>(surface);
}
};
class LoriePointer: public wl_pointer_t {
public:
void on_destroy() override {};
void on_create() override;
void request_set_cursor(uint32_t, struct wl_resource*, int32_t, int32_t) override;
void request_release() override {destroy();};
void send_enter();
};
class LorieKeyboard: public wl_keyboard_t {
public:
void on_destroy() override {};
void on_create() override;
void request_release() override {destroy();};
void send_enter();
void keymap_changed();
};
class LorieTouch: public wl_touch_t {
public:
void on_destroy() override {};
void on_create() override {};
void request_release() override {destroy();};
};
class LorieSeat: public wl_seat_t {
public:
void on_destroy() override {};
void on_create() override;
void request_get_pointer(uint32_t id) override;
void request_get_keyboard(uint32_t id) override;
void request_get_touch(uint32_t id) override;
void request_release() override {destroy();};
};
class LorieOutput: public wl_output_t {
public:
void request_release() override {destroy();};
void report_mode();
void on_destroy() override;
void on_create() override;
};