Blob Blame History Raw
#ifndef XMAIN_H
#define XMAIN_H


#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/Xdbe.h>


#define LOG(stream, prefix, suffix, result, ...) \
  ( fputs(prefix, stream), fprintf(stream, __VA_ARGS__), fputs(suffix, stream), fflush(stream), result )
#ifdef NDEBUG
  #define LOGDBG(...) dummy(1)
#else
  #define LOGDBG(...) LOG(stdout, "DEBUG: ",    "\n", dummy(1), __VA_ARGS__)
#endif
#define LOGINF(...) LOG(stdout, "INFO: ",    "\n", dummy(1), __VA_ARGS__)
#define LOGWRN(...) LOG(stderr, "WARNING: ", "\n", dummy(1), __VA_ARGS__)
#define LOGERR(...) LOG(stderr, "ERROR: ",   "\n", dummy(0), __VA_ARGS__)
#define DIE(...)    LOG(stderr, "ERROR: ",   "\n", exit(1),  __VA_ARGS__)
static inline int dummy(int i) { return i; }


extern Display *dpy;
extern int screen;
extern Window win;
extern Drawable drw;
extern Visual *visual;
extern GC gc;
extern int winW, winH;


void stop(int code);


int init();
void deinit();
void resize();
void mouseDown(int x, int y);
void mouseUp();
void draw();


#endif