source: trunk/third/xscreensaver/hacks/xlockmore.h @ 15683

Revision 15683, 5.3 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r15682, which included commits to RCS files with non-trunk default branches.
Line 
1/* xlockmore.h --- xscreensaver compatibility layer for xlockmore modules.
2 * xscreensaver, Copyright (c) 1997, 1998, 2001 Jamie Zawinski <jwz@jwz.org>
3 *
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation.  No representations are made about the suitability of this
9 * software for any purpose.  It is provided "as is" without express or
10 * implied warranty.
11 *
12 * The definitions in this file make it possible to compile an xlockmore
13 * module into a standalone program, and thus use it with xscreensaver.
14 * By Jamie Zawinski <jwz@jwz.org> on 10-May-97; based on the ideas
15 * in the older xlock.h by Charles Hannum <mycroft@ai.mit.edu>.  (I had
16 * to redo it, since xlockmore has diverged so far from xlock...)
17 */
18
19#if !defined(PROGCLASS) || !defined(HACK_INIT) || !defined(HACK_DRAW)
20ERROR!  Define PROGCLASS, HACK_INIT, and HACK_DRAW before including xlockmore.h
21#endif
22
23#include "config.h"
24
25#ifndef __STDC__
26ERROR!  Sorry, xlockmore.h requires ANSI C (gcc, for example.)
27  /* (The ansi dependency is that we use string concatenation,
28     and cpp-based stringification of tokens.) */
29#endif
30
31#include <stdio.h>
32#include <math.h>
33#include "xlockmoreI.h"
34
35#ifdef USE_GL
36# include <GL/glx.h>
37  extern GLXContext *init_GL (ModeInfo *);
38  extern void clear_gl_error (void);
39  extern void check_gl_error (const char *type);
40  extern void do_fps (ModeInfo *);
41# define FreeAllGL(dpy) /* */
42#endif /* !USE_GL */
43
44/* Accessor macros for the ModeInfo structure
45 */
46
47#define MI_DISPLAY(MI)          ((MI)->dpy)
48#define MI_WINDOW(MI)           ((MI)->window)
49#define MI_NUM_SCREENS(MI)      (1)     /* Only manage one screen at a time; */
50#define MI_SCREEN(MI)           (0)     /*  this might be fragile... */
51#define MI_WIN_WHITE_PIXEL(MI)  ((MI)->white)
52#define MI_WIN_BLACK_PIXEL(MI)  ((MI)->black)
53#define MI_NPIXELS(MI)          ((MI)->npixels)
54#define MI_PIXEL(MI,N)          ((MI)->pixels[(N)])
55#define MI_WIN_WIDTH(MI)        ((MI)->xgwa.width)
56#define MI_WIN_HEIGHT(MI)       ((MI)->xgwa.height)
57#define MI_WIN_DEPTH(MI)        ((MI)->xgwa.depth)
58#define MI_WIN_COLORMAP(MI)     ((MI)->xgwa.colormap)
59#define MI_VISUAL(MI)           ((MI)->xgwa.visual)
60#define MI_GC(MI)               ((MI)->gc)
61#define MI_PAUSE(MI)            ((MI)->pause)
62#define MI_WIN_IS_FULLRANDOM(MI)((MI)->fullrandom)
63#define MI_WIN_IS_VERBOSE(MI)   (False)
64#define MI_WIN_IS_INSTALL(MI)   (True)
65#define MI_WIN_IS_MONO(MI)      (mono_p)
66#define MI_WIN_IS_INROOT(MI)    ((MI)->root_p)
67#define MI_WIN_IS_INWINDOW(MI)  (!(MI)->root_p)
68#define MI_WIN_IS_ICONIC(MI)    (False)
69#define MI_WIN_IS_WIREFRAME(MI) ((MI)->wireframe_p)
70#define MI_WIN_IS_USE3D(MI)     ((MI)->threed)
71#define MI_LEFT_COLOR(MI)       ((MI)->threed_left_color)
72#define MI_RIGHT_COLOR(MI)      ((MI)->threed_right_color)
73#define MI_BOTH_COLOR(MI)       ((MI)->threed_both_color)
74#define MI_NONE_COLOR(MI)       ((MI)->threed_none_color)
75#define MI_DELTA3D(MI)          ((MI)->threed_delta)
76#define MI_CYCLES(MI)           ((MI)->cycles)
77#define MI_BATCHCOUNT(MI)       ((MI)->batchcount)
78#define MI_SIZE(MI)             ((MI)->size)
79#define MI_IS_DRAWN(MI)         ((MI)->is_drawn)
80#define MI_IS_DRAWN(MI)         ((MI)->is_drawn)
81#define MI_NCOLORS(MI)          ((MI)->npixels)
82#define MI_NAME(MI)             (progname)
83
84#define MI_WIDTH(MI)            (MI_WIN_WIDTH((MI)))
85#define MI_HEIGHT(MI)           (MI_WIN_HEIGHT((MI)))
86#define MI_IS_ICONIC(MI)        (MI_WIN_IS_ICONIC((MI)))
87#define MI_IS_WIREFRAME(MI)     (MI_WIN_IS_WIREFRAME((MI)))
88#define MI_IS_MONO(MI)          (MI_WIN_IS_MONO((MI)))
89#define MI_COUNT(MI)            (MI_BATCHCOUNT((MI)))
90#define MI_BLACK_PIXEL(MI)      (MI_WIN_BLACK_PIXEL(MI))
91#define MI_WHITE_PIXEL(MI)      (MI_WIN_WHITE_PIXEL(MI))
92#define MI_IS_FULLRANDOM(MI)    (MI_WIN_IS_FULLRANDOM(MI))
93#define MI_IS_VERBOSE(MI)       (MI_WIN_IS_VERBOSE(MI))
94#define MI_IS_INSTALL(MI)       (MI_WIN_IS_INSTALL(MI))
95#define MI_IS_DEBUG(MI)         (False)
96#define MI_IS_MOUSE(MI)         (False)
97
98#define MI_CLEARWINDOW(mi) XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi))
99
100/* Some other utility macros.
101 */
102#define SINF(n)                 ((float)sin((double)(n)))
103#define COSF(n)                 ((float)cos((double)(n)))
104#define FABSF(n)                ((float)fabs((double)(n)))
105
106#undef MAX
107#undef MIN
108#undef ABS
109#define MAX(a,b)((a)>(b)?(a):(b))
110#define MIN(a,b)((a)<(b)?(a):(b))
111#define ABS(a)((a)<0 ? -(a) : (a))
112
113/* Maximum possible number of colors (*not* default number of colors.) */
114#define NUMCOLORS 256
115
116/* The globals that screenhack.c expects (initialized by xlockmore.c).
117 */
118char *defaults[100];
119XrmOptionDescRec options[100];
120
121/* Prototypes for the actual drawing routines...
122 */
123extern void HACK_INIT(ModeInfo *);
124extern void HACK_DRAW(ModeInfo *);
125
126#ifdef HACK_FREE
127  extern void HACK_FREE(ModeInfo *);
128#else
129# define HACK_FREE 0
130#endif
131
132#ifdef HACK_RESHAPE
133  extern void HACK_RESHAPE(ModeInfo *, int width, int height);
134#else
135# define HACK_RESHAPE 0
136#endif
137
138
139/* Emit code for the entrypoint used by screenhack.c, and pass control
140   down into xlockmore.c with the appropriate parameters.
141 */
142
143char *progclass = PROGCLASS;
144
145void screenhack (Display *dpy, Window window)
146{
147  xlockmore_screenhack (dpy, window,
148
149#ifdef WRITABLE_COLORS
150                        True,
151#else
152                        False,
153#endif
154
155#ifdef UNIFORM_COLORS
156                        True,
157#else
158                        False,
159#endif
160
161#ifdef SMOOTH_COLORS
162                        True,
163#else
164                        False,
165#endif
166
167#ifdef BRIGHT_COLORS
168                        True,
169#else
170                        False,
171#endif
172
173                        HACK_INIT,
174                        HACK_DRAW,
175                        HACK_RESHAPE,
176                        HACK_FREE);
177}
178
179
180const char *app_defaults = DEFAULTS ;
Note: See TracBrowser for help on using the repository browser.