48 lines
1.1 KiB
C++
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
|