|
/*
|
|
* DWN - Desktop Window Manager
|
|
* retoor <retoor@molodetz.nl>
|
|
* Window decorations (title bars, borders, buttons)
|
|
*/
|
|
|
|
#ifndef DWN_DECORATIONS_H
|
|
#define DWN_DECORATIONS_H
|
|
|
|
#include "dwn.h"
|
|
#include <stdbool.h>
|
|
|
|
typedef enum {
|
|
BUTTON_CLOSE,
|
|
BUTTON_MAXIMIZE,
|
|
BUTTON_MINIMIZE,
|
|
BUTTON_COUNT
|
|
} ButtonType;
|
|
|
|
typedef struct {
|
|
int x, y;
|
|
int width, height;
|
|
} ButtonArea;
|
|
|
|
void decorations_init(void);
|
|
void decorations_cleanup(void);
|
|
|
|
void decorations_render(Client *client, bool focused);
|
|
void decorations_render_title_bar(Client *client, bool focused);
|
|
void decorations_render_buttons(Client *client, bool focused);
|
|
void decorations_render_border(Client *client, bool focused);
|
|
|
|
ButtonType decorations_hit_test_button(Client *client, int x, int y);
|
|
bool decorations_hit_test_title_bar(Client *client, int x, int y);
|
|
bool decorations_hit_test_resize_area(Client *client, int x, int y, int *direction);
|
|
|
|
void decorations_button_press(Client *client, ButtonType button);
|
|
|
|
void decorations_draw_text(Window window, GC gc, int x, int y,
|
|
const char *text, unsigned long color);
|
|
|
|
#endif
|