1 /* bubbles.h - definitions for bubbles screensaver */
3 /* $Id: bubbles.h,v 1.6 2006/02/25 20:11:57 jwz Exp $ */
12 # include <X11/Xlib.h>
15 /***************************************************************************
16 * Options you might like to change to affect the program's behaviour *
17 ***************************************************************************/
20 * Uncommenting the following will enable support for reading bubbles from
21 * files (using the -file and -directory options to bubbles). This is
22 * disabled by default since such operations are inherently non-portable
23 * and we want the program to compile on as many systems as possible.
25 * If you uncomment this and you figure out how to get it working, please
26 * let me (J.Macnicol@student.anu.edu.au) know. Diffs against the standard
27 * distribution would be appreciated. Possible sources of problems are
28 * dirent and possibly the use of tmpnam().
31 /* #define BUBBLES_IO */
34 * The following only makes sense if BUBBLES_IO above is defined.
36 * Uncomment the following if you always want to use the -file or
37 * -directory options on the command line and never to use a default bubble
38 * compiled into the program. This way you would save memory and disk space
39 * since if you do use -file or -directory only one bubble will be loaded
40 * into memory at any one time (and remember the default bubble is really
41 * uncompressed, unlike bubbles in files which can be compressed). This
42 * is disabled by default only so people running the program for the first
43 * time with no knowldege of the command line options don't get error
46 * NOTE: You will still need to have a bubbles_default.c file, else the
47 * build sequence will fail. Well constructed bubbles_default.c files
48 * have #ifdef's which simply exclude everything else in the file at
49 * compile time. The bubblestodefault script does this.
52 /* #define NO_DEFAULT_BUBBLE */
55 * This turns on any debugging messages and sanity checks. Hopefully you
56 * won't need this :) It slows things down a bit, too.
58 * NOTE: If you uncomment this you will get some messages about unused
59 * functions when you compile. You can ignore these - they refer to
60 * convenient checking routines which simply aren't called but are left
61 * in case someone wants to use them.
66 /***************************************************************************
67 * Things you might need to change to get things working right *
68 ***************************************************************************/
71 * Name of the gzip binary. You shouldn't need to change this unless it's
72 * not in your PATH when the program is run, in which case you will need to
73 * substitute the full path here. Keep the double quotes else things won't
80 * Likewise for the Bourne shell.
86 * The name of the directory entry structure is different under Linux
87 * (under which this code is being developed) than other systems. The case
88 * alternate form here is that given in Kernighan & Ritchie's C book (which
89 * must be authoratitive, no?)
91 * 04/07/96 : People will have to hack this to get it working on some
92 * systems. I believe it doesn't work on SGI, for example.
96 #define STRUCT_DIRENT struct dirent
98 #define STRUCT_DIRENT Dirent
102 * The naming of fields in struct dirent also seems to differ from system to
103 * system. This may have to be extended to make things truly portable.
104 * What we want here is the name field from a dirent struct pointed to
107 * 04/07/96 : See above. This may need to be changed too.
111 #define DIRENT_NAME dp->d_name
113 #define DIRENT_NAME dp->name
116 /* I don't know why this isn't defined. */
118 /* apparently it is defined in recent linuxes. who knows. */
119 /*extern char *tempnam(char *, char *);*/
122 /****************************************************************************
123 * Buffer lengths and things you probably won't need to touch *
124 ****************************************************************************/
126 /* Maximum length of a full path name we can deal with */
127 #define PATH_BUF_SIZE 1024
129 /* Size of string passed to shell as command */
130 #define COMMAND_BUF_SIZE 2500
132 /* Size increments for read_line() buffers */
133 #define READ_LINE_BUF_SIZE 24
135 /* Maximum amount to drop a bubble */
136 #define MAX_DROPPAGE 20
138 /****************************************************************************
140 ****************************************************************************/
142 /* Some machines define M_PI and not PI. If they don't define either, use
143 own own. Really, the accuracy of this is _not_ very important. */
147 # define M_PI 3.1415926535
151 /* for delete_bubble_in_mesh() */
152 #define DELETE_BUBBLE 0
153 #define KEEP_BUBBLE 1
155 /* Status codes for read_line */
157 #define EOF_REACHED 1
161 * Magic number for Bubble struct, in case it's trashed when debugging code
162 * (which happened to me often.... :(
165 #define BUBBLE_MAGIC 5674
168 #define MAX(A, B) ((A) > (B) ? (A) : (B))
169 #define MIN(A, B) ((A) < (B) ? (A) : (B))
171 /* How we represent bubbles */
174 int step; /* for rendered bubbles */
185 typedef struct bub Bubble;
188 * How we represent pixmaps of rendered bubbles. Because the range of radii
189 * available may not be continuous, we call each a step (for the lack of a
193 #if defined(HAVE_GDK_PIXBUF) || defined(HAVE_XPM)
198 Pixmap ball, shape_mask;
199 GC draw_gc, erase_gc;
200 struct bub_step *next;
203 typedef struct bub_step Bubble_Step;
204 #endif /* HAVE_XPM || HAVE_GDK_PIXBUF */
206 /* Make sure default bubble isn't compiled when we don't have XPM
207 Disable file I/O code too. */
208 #if !defined(HAVE_XPM) && !defined(HAVE_GDK_PIXBUF)
209 # define NO_DEFAULT_BUBBLE
211 #endif /* !HAVE_XPM && !HAVE_GDK_PIXBUF */
213 /* Make sure default bubble is compiled in when we have XPM and no file I/O */
214 #if defined(HAVE_XPM) || defined(HAVE_GDK_PIXBUF)
216 # undef NO_DEFAULT_BUBBLE
217 # endif /* BUBBLES_IO */
218 #endif /* HAVE_XPM || HAVE_GDK_PIXBUF */
220 extern void init_default_bubbles(void);
221 extern int num_default_bubbles;
222 extern char **default_bubbles[];
224 #endif /* _BUBBLES_H_ */