forstio-window/driver/window_xcb.h

48 lines
1.1 KiB
C++

#pragma once
#include <X11/Xlib-xcb.h>
#include <X11/Xlib.h>
#include <xcb/xcb.h>
#include <string>
#include "forstio/window/window.h"
namespace saw {
class xcb_device;
class xcb_window final : public window {
public:
xcb_device &device_;
xcb_window_t xcb_window_;
xcb_colormap_t xcb_colormap_;
video_mode video_mode_;
std::string window_title_;
own<conveyor_feeder<window::variant_event>> event_feeder = nullptr;
public:
xcb_window(xcb_device &dev, xcb_window_t xcb_win,
xcb_colormap_t xcb_colormap_, const video_mode &video_mode_,
std::string_view title_view_);
~xcb_window();
void show() override;
void hide() override;
const video_mode &videoMode() const override;
const std::string_view title() const override;
void resize(size_t width, size_t height) override;
conveyor<window::variant_event> onevent() override;
void resizeevent(size_t x, size_t y, size_t width, size_t height);
void mouseevent(int16_t x, int16_t y, uint16_t state, bool pressed);
void mouse_move_event(int16_t x, int16_t y);
void keyboardevent(int16_t x, int16_t y, uint32_t keycode, bool pressed,
bool repeat);
};
} // namespace saw