libhydride/include/overlay.h
2017-11-09 22:54:55 +03:00

88 lines
2.6 KiB
C

/*
* overlay.hpp
*
* Created on: Nov 8, 2017
* Author: nullifiedcat
*/
#pragma once
#include <X11/Xlib.h>
#include <X11/XKBlib.h>
#include "drawglx.h"
typedef void(*xoverlay_callback_keypress)(unsigned int keycode, int action);
typedef void(*xoverlay_callback_click)(unsigned int buttoncode, int action);
typedef void(*xoverlay_callback_scroll)(int value);
typedef void(*xoverlay_callback_mousemove)(int dx, int dy, int x, int y);
/* typedef void(*xoverlay_callback_draw)(); */
struct xoverlay_library
{
xoverlay_callback_keypress cb_keypress;
xoverlay_callback_click cb_click;
xoverlay_callback_scroll cb_scroll;
xoverlay_callback_mousemove cb_mousemove;
/* xoverlay_callback_draw cb_draw; */
Display *display;
Window window;
Colormap colormap;
GC gc;
XGCValues gcvalues;
XFontStruct font;
int screen;
int width;
int height;
struct
{
int x;
int y;
} mouse;
/*struct
{
int x;
int y;
char buttons[5];
} mouse;
struct
{
char keymap[32];
} keyboard;*/
struct xoverlay_glx_state glx;
char init;
char drawing;
};
int xoverlay_init(struct xoverlay_library *library);
void xoverlay_destroy(struct xoverlay_library *library);
void xoverlay_install_keyboard_callback(struct xoverlay_library *library, xoverlay_callback_keypress callback);
void xoverlay_install_click_callback(struct xoverlay_library *library, xoverlay_callback_click callback);
void xoverlay_install_scroll_callback(struct xoverlay_library *library, xoverlay_callback_scroll callback);
void xoverlay_install_mouse_callback(struct xoverlay_library *library, xoverlay_callback_mousemove callback);
/* void xoverlay_install_draw_callback(struct xoverlay_library *library, xoverlay_callback_draw callback); */
int xoverlay_is_button_down(struct xoverlay_library *library, KeyCode code);
unsigned xoverlay_rgb(int r, int g, int b);
unsigned xoverlay_rgba(int r, int g, int b, int a);
void xoverlay_clear_rectangle(struct xoverlay_library *library, int x, int y, int w, int h);
void xoverlay_clear_screen(struct xoverlay_library *library);
void xoverlay_draw_string(struct xoverlay_library *library, const char *string, int x, int y, unsigned fg, unsigned bg);
void xoverlay_draw_line(struct xoverlay_library *library, int x, int y, int w, int h, unsigned fg);
void xoverlay_draw_rectangle(struct xoverlay_library *library, int x, int y, int w, int h, unsigned fg);
void xoverlay_poll_events(struct xoverlay_library *library);
void xoverlay_draw_begin(struct xoverlay_library *library);
void xoverlay_draw_end(struct xoverlay_library *library);