summaryrefslogtreecommitdiff
path: root/modules/window/xcb.h
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-01-18 12:05:13 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-01-18 12:05:13 +0100
commitfec96c85a4d71f20d3de9791163a9a1f932c8e48 (patch)
tree4ed269f4e0079e3f21f83ea3f8cd8aebbf60ebe0 /modules/window/xcb.h
parent9022768d0d9a869d90767c079ce7d76a07e2f5ff (diff)
window: Moving around directories
Diffstat (limited to 'modules/window/xcb.h')
-rw-r--r--modules/window/xcb.h105
1 files changed, 0 insertions, 105 deletions
diff --git a/modules/window/xcb.h b/modules/window/xcb.h
deleted file mode 100644
index a2a9b0b..0000000
--- a/modules/window/xcb.h
+++ /dev/null
@@ -1,105 +0,0 @@
-#pragma once
-
-#ifndef SAW_UNIX_XCB
-#error "XCB is not supported"
-#endif
-
-#include "backends.h"
-#include "device.h"
-#include "window.h"
-
-#include <map>
-
-#include <X11/Xlib-xcb.h>
-#include <X11/Xlib.h>
-
-namespace saw {
-namespace gfx {
-template<typename T>
-class window;
-
-template<typename T>
-class device;
-
-template<>
-class device<backend::linux_xcb> final {
-private:
- ::Display *display_;
- int screen_;
-
- xcb_connection_t *xcb_connection_;
- xcb_screen_t *xcb_screen_;
-
- own<input_stream> async_notifier_;
- conveyor_sink async_conveyor_;
-
- std::map<xcb_window_t, window<backend::linux_xcb> *> windows_;
-
- std::vector<xcb_generic_event_t *> pending_events_;
-
- friend class window<backend::linux_xcb>;
-public:
- own<window<backend::linux_xcb>> create_xcb_window(const video_mode& vid_mod, std::string_view title_view, int visual_id);
- void xcb_window_was_destroyed(xcb_window_t window_id);
-public:
- device(::Display *display, int screen, xcb_connection_t *xcb_connection,
- xcb_screen_t *xcb_screen, own<input_stream> && an);
-
- ~device();
-
- void handle_events();
-
- own<window<backend::linux_xcb>> create_window(const video_mode& vid_mod, std::string_view title_view);
-
- void flush();
-
- // XCB specific info for other classes
- ::Display* get_xcb_display() {
- return display_;
- }
-
- int get_xcb_screen() const {
- return screen_;
- }
-};
-
-error_or<own<device<backend::linux_xcb>>> create_xcb_device(io_provider& provider);
-
-template<>
-class window<backend::linux_xcb> final {
-private:
- device<backend::linux_xcb> *device_;
-
- xcb_window_t xcb_window_;
- xcb_colormap_t xcb_colormap_;
-
- video_mode video_mode_;
- std::string window_title_;
-
- own<conveyor_feeder<data<schema::WindowEvents>>> event_feeder = nullptr;
-public:
- window(device<backend::linux_xcb>& dev_, xcb_window_t xcb_win, xcb_colormap_t xcb_colormap_, const video_mode& vid_mode_, const std::string_view& title_view_);
-
- ~window();
-
- void show();
- void hide();
-
- const video_mode& get_video_mode() const;
-
- const std::string_view get_title() const;
-
- void resize(uint64_t width, uint64_t height);
-
- conveyor<data<schema::WindowEvents>> on_event();
-
- void resize_event(uint64_t x, uint64_t y, uint64_t width, uint64_t height);
- void mouse_event(int16_t x, int16_t y, uint16_t state, bool pressed);
- void mouse_move_event(int16_t x, int16_t y);
- void keyboard_event(int16_t x, int16_t y, uint32_t keycode, bool pressed, bool repeat);
-
- // XCB specific things
- xcb_window_t get_xcb_window_handle() const;
-};
-}
-}