/*
 * phluid.h
 */

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
#include <X11/Xmd.h>
#include <Imlib2.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include "decal.h"

/* for convenience */
#define PH_DELETE_WIN(c) icccm_send_client_message(c, XInternAtom( \
  disp, "WM_DELETE_WINDOW", False));


/* some constants */
#define TITLEBAR_HEIGHT 17

#define TEXT_X 25
#define TEXT_Y 1

#define MOVE_AFTER_DRAG 0
#define SEND_CONFIGURE_AFTER_DRAG 1

/* client structure */
typedef struct _Client Client;

struct _Client
{
  Window window, frame;
  int x, y, width, height;
  char *name;
  int name_change;
  int name_width, name_height;
  Client *next;
  Imlib_Image bg;
  Imlib_Image title_bar;
  Imlib_Updates updates;
  unsigned int ignore_unmap;
  int shaded;
  int visible;
  Decal *decals;
  Decal *decals_to_render;
};

/* phluid.c */
extern Display *disp;
extern Window root;
extern Visual *vis;
extern Colormap cm;
extern Imlib_Image bg_image;
extern Client *client_list_head;
extern XColor fg, bg, bd, dummyc;
extern int depth;
extern int screen;
extern int bw;

/* client.c */
extern void make_client(Window * w);
extern void render_title_bar(Client * c);
extern void delete_client(Client * c);
extern void redraw_client(Client * c);
extern Client *find_client_by_frame(Window w);
extern Client *find_client_by_child(Window w);

/* decal.c */
extern void add_new_decal_to_client(Client * c, char *file, int x, int y,
                                    int fn1, int fn2, int fn3);
extern Decal *decal_at(Client * c, int x, int y);
extern void do_decal_fn(Client * c, Decal * d, int button);
extern void render_decals(Client *);
extern void clear_decals(Decal *);

/* mouse.c */
extern void get_mouse_x_y(int *, int *);

/* manipulate.c */
extern void drag_client(Client *, int, int);
extern void shade_client(Client *);
extern void unshade_client(Client *);
extern void iconify_client(Client *);

/* x.c */
extern void init_x(void);
extern void init_imlib(void);
extern Window x_get_top_window(void);
extern int handle_xerror(Display *, XErrorEvent *);

/* icccm.c */
extern void icccm_send_client_message(Client *, Atom);
extern void icccm_send_configure_event(Client *);
extern void icccm_set_state(Client *, int);

/* signal.c */
void init_signal(void);

/* event_handlers.c */
extern void button_press(XEvent);


syntax highlighted by Code2HTML, v. 0.9.1