1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*/
/* Found in Don Hopkins' .plan file:
*
* The color situation is a total flying circus. The X approach to
* device independence is to treat everything like a MicroVax framebuffer
* on acid. A truely portable X application is required to act like the
* persistent customer in the Monty Python ``Cheese Shop'' sketch. Even
* the simplest applications must answer many difficult questions, like:
*
* WHAT IS YOUR DISPLAY?
* display = XOpenDisplay("unix:0");
* WHAT IS YOUR ROOT?
* root = RootWindow(display, DefaultScreen(display));
* AND WHAT IS YOUR WINDOW?
* win = XCreateSimpleWindow(display, root, 0, 0, 256, 256, 1,
* BlackPixel(display, DefaultScreen(display)),
* WhitePixel(display, DefaultScreen(display)))
* OH ALL RIGHT, YOU CAN GO ON.
*
* WHAT IS YOUR DISPLAY?
* display = XOpenDisplay("unix:0");
* WHAT IS YOUR COLORMAP?
* cmap = DefaultColormap(display, DefaultScreen(display));
* AND WHAT IS YOUR FAVORITE COLOR?
* favorite_color = 0; / * Black. * /
* / * Whoops! No, I mean: * /
* favorite_color = BlackPixel(display, DefaultScreen(display));
* / * AAAYYYYEEEEE!! (client dumps core & falls into the chasm) * /
*
* WHAT IS YOUR DISPLAY?
* display = XOpenDisplay("unix:0");
* WHAT IS YOUR VISUAL?
* struct XVisualInfo vinfo;
* if (XMatchVisualInfo(display, DefaultScreen(display),
* 8, PseudoColor, &vinfo) != 0)
* visual = vinfo.visual;
* AND WHAT IS THE NET SPEED VELOCITY OF AN XConfigureWindow REQUEST?
* / * Is that a SubStructureRedirectMask or a ResizeRedirectMask? * /
* WHAT?! HOW AM I SUPPOSED TO KNOW THAT?
* AAAAUUUGGGHHH!!!! (server dumps core & falls into the chasm)
*/
#ifndef __SCREENHACK_I_H__
#define __SCREENHACK_I_H__
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif /* HAVE_CONFIG_H */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#ifdef __hpux
/* Which of the ten billion standards does values.h belong to?
What systems always have it? */
# include <values.h>
#endif
#ifdef HAVE_COCOA
# include "jwxyz.h"
#else /* !HAVE_COCOA -- real X11 */
# include <X11/Xlib.h>
# include <X11/Xutil.h>
# include <X11/Xresource.h>
# include <X11/Xos.h>
#endif /* !HAVE_COCOA */
/* M_PI ought to have been defined in math.h, but... */
#ifndef M_PI
# define M_PI 3.1415926535
#endif
#ifndef M_PI_2
# define M_PI_2 1.5707963267
#endif
#ifndef Button6
# define Button6 6
# define Button7 7
#endif
#include "yarandom.h"
#include "usleep.h"
#include "resources.h"
#include "hsv.h"
#include "colors.h"
#include "grabscreen.h"
#include "visual.h"
#include "fps.h"
/* Be Posixly correct */
#undef bzero
#define bzero __ERROR_use_memset_not_bzero_in_xscreensaver__
#undef bcopy
#define bcopy __ERROR_use_memcpy_not_bcopy_in_xscreensaver__
#undef ftime
#define ftime __ERROR_use_gettimeofday_not_ftime_in_xscreensaver__
#undef sleep
#define sleep __ERROR_do_not_sleep_in_xscreensaver__
extern Bool mono_p;
struct xscreensaver_function_table {
const char *progclass;
const char * const *defaults;
const XrmOptionDescRec *options;
void (*setup_cb) (struct xscreensaver_function_table *, void *);
void * setup_arg;
void * (*init_cb) (Display *, Window);
unsigned long (*draw_cb) (Display *, Window, void *);
void (*reshape_cb) (Display *, Window, void *,
unsigned int w, unsigned int h);
Bool (*event_cb) (Display *, Window, void *, XEvent *);
void (*free_cb) (Display *, Window, void *);
void (*fps_cb) (Display *, Window, fps_state *, void *);
Visual * (*pick_visual_hook) (Screen *);
Bool (*validate_visual_hook) (Screen *, const char *, Visual *);
};
extern const char *progname;
#endif /* __SCREENHACK_I_H__ */
|