#ifndef FVWMLIB_FSCRREN_H
#define FVWMLIB_FSCRREN_H

/* needs X11/Xlib.h and X11/Xutil.h */

enum
{
  FSCREEN_GLOBAL  = -1,
  FSCREEN_CURRENT = -2,
  FSCREEN_PRIMARY = -3,
  FSCREEN_XYPOS   = -4
};

enum
{
  FSCREEN_SPEC_GLOBAL = 'g',
  FSCREEN_SPEC_CURRENT = 'c',
  FSCREEN_SPEC_PRIMARY = 'p',
  FSCREEN_SPEC_WINDOW = 'w'
};

typedef union
{
  XEvent *mouse_ev;
  struct
  {
    int x;
    int y;
  } xypos;
} fscreen_scr_arg;

/* Control */
Bool FScreenIsEnabled(void);
Bool FScreenIsSLSEnabled(void);
void FScreenInit(Display *dpy);
void FScreenOnOff(Bool do_enable);
Bool FScreenConfigureSLS(int width, int height);
void FScreenSLSOnOff(Bool do_enable);
/* Intended to be called by modules.  Simply pass in the parameter from the
 * config string sent by fvwm. */
void FScreenConfigureModule(char *args);
const char* FScreenGetConfiguration(void); /* For use by FVWM */
void FScreenDisableRandR(void);

void FScreenSetPrimaryScreen(int scr);

/* Screen info */
Bool FScreenGetScrRect(
  fscreen_scr_arg *arg, int screen, int *x, int *y, int *w, int *h);
void FScreenTranslateCoordinates(
  fscreen_scr_arg *arg_src, int screen_src,
  fscreen_scr_arg *arg_dest, int screen_dest,
  int *x, int *y);
void FScreenGetResistanceRect(
  int wx, int wy, int ww, int wh, int *x0, int *y0, int *x1, int *y1);
Bool FScreenIsRectangleOnScreen(
  fscreen_scr_arg *arg, int screen, rectangle *rec);

/* Clipping/positioning */
int FScreenClipToScreen(
  fscreen_scr_arg *arg, int screen, int *x, int *y, int w, int h);
void FScreenCenterOnScreen(
  fscreen_scr_arg *arg, int screen, int *x, int *y, int w, int h);

/* Geometry management */
int FScreenGetScreenArgument(char *scr_spec, char default_screen);
int FScreenParseGeometryWithScreen(
  char *parsestring, int *x_return, int *y_return, unsigned int *width_return,
  unsigned int *height_return, int *screen_return);
int FScreenParseGeometry(
  char *parsestring, int *x_return, int *y_return, unsigned int *width_return,
  unsigned int *height_return);
int  FScreenGetGeometry(
  char *parsestring, int *x_return, int *y_return,
  int *width_return, int *height_return, XSizeHints *hints, int flags);

/* RandR support */
int  FScreenGetRandrEventType(void);
Bool FScreenHandleRandrEvent(
  XEvent *event, int *old_w, int *old_h, int *new_w, int *new_h);

#endif /* FVWMLIB_FSCRREN_H */


syntax highlighted by Code2HTML, v. 0.9.1