projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
http://ftp.x.org/contrib/applications/xscreensaver-3.10.tar.gz
[xscreensaver]
/
hacks
/
penrose.c
diff --git
a/hacks/penrose.c
b/hacks/penrose.c
index 6e401aa673243b545f90a8fbd8fe719c8b216b81..a8af2e51d13b43196718cdc6efc1f0b1f87b7a9a 100644
(file)
--- a/
hacks/penrose.c
+++ b/
hacks/penrose.c
@@
-102,9
+102,6
@@
If one of these are hit penrose will reinitialize.
* vertex rules only allow at most seven tiles to meet at a vertex.
*/
* vertex rules only allow at most seven tiles to meet at a vertex.
*/
-#define CELEBRATE 31415927 /* This causes a pause, an error occurred. */
-#define COMPLETION 3141593 /* This causes a pause, an error occurred. */
-
#define MAX_TILES_PER_VERTEX 7
#define N_VERTEX_RULES 8
#define ALLOC_NODE( type) ((type *)malloc( sizeof( type)))
#define MAX_TILES_PER_VERTEX 7
#define N_VERTEX_RULES 8
#define ALLOC_NODE( type) ((type *)malloc( sizeof( type)))
@@
-112,21
+109,28
@@
If one of these are hit penrose will reinitialize.
static Bool ammann;
static Bool ammann;
+/* How long in seconds should we wait before starting a new tiling? */
+static long redo_delay = 3;
+static long redo_delay_usec;
+
static XrmOptionDescRec opts[] =
{
{"-ammann", ".penrose.ammann", XrmoptionNoArg, (caddr_t) "on"},
static XrmOptionDescRec opts[] =
{
{"-ammann", ".penrose.ammann", XrmoptionNoArg, (caddr_t) "on"},
- {"+ammann", ".penrose.ammann", XrmoptionNoArg, (caddr_t) "off"}
+ {"+ammann", ".penrose.ammann", XrmoptionNoArg, (caddr_t) "off"},
+ {"-redoDelay", ".penrose.redoDelay", XrmoptionSepArg, NULL}
};
static argtype vars[] =
{
};
static argtype vars[] =
{
- {(caddr_t *) & ammann, "ammann", "Ammann", DEF_AMMANN, t_Bool}
+ {(caddr_t *) & ammann, "ammann", "Ammann", DEF_AMMANN, t_Bool},
+ {(caddr_t *) & redo_delay, "redoDelay", "RedoDelay", "3", t_Int}
};
static OptionStruct desc[] =
{
};
static OptionStruct desc[] =
{
- {"-/+ammann", "turn on/off Ammann lines"}
+ {"-/+ammann", "turn on/off Ammann lines"},
+ {"-redoDelay", "delay between new tilings"}
};
};
-ModeSpecOpt penrose_opts = {
2, opts, 1
, vars, desc };
+ModeSpecOpt penrose_opts = {
3, opts, 2
, vars, desc };
/*-
/*-
@@
-326,7
+330,7
@@
vertex_dir(ModeInfo * mi, fringe_node_c * vertex, unsigned side)
(void) fprintf(stderr, "v2->fived[%d]=%d, vertex->fived[%d]=%d\n",
i, v2->fived[i], i, vertex->fived[i]);
}
(void) fprintf(stderr, "v2->fived[%d]=%d, vertex->fived[%d]=%d\n",
i, v2->fived[i], i, vertex->fived[i]);
}
- MI_PAUSE(mi) =
CELEBRATE
;
+ MI_PAUSE(mi) =
redo_delay_usec
;
return 0;
}
return 0;
}
@@
-414,6
+418,8
@@
init_penrose(ModeInfo * mi)
fringe_node_c *fp;
int i, size;
fringe_node_c *fp;
int i, size;
+ redo_delay_usec = redo_delay * 1000000;
+
if (tilings == NULL) {
if ((tilings = (tiling_c *) calloc(MI_NUM_SCREENS(mi),
sizeof (tiling_c))) == NULL)
if (tilings == NULL) {
if ((tilings = (tiling_c *) calloc(MI_NUM_SCREENS(mi),
sizeof (tiling_c))) == NULL)
@@
-715,7
+721,7
@@
check_vertex(ModeInfo * mi, fringe_node_c * vertex, tiling_c * tp)
if (MI_WIN_IS_VERBOSE(mi)) {
(void) fprintf(stderr, "Dislocation occured!\n");
}
if (MI_WIN_IS_VERBOSE(mi)) {
(void) fprintf(stderr, "Dislocation occured!\n");
}
- MI_PAUSE(mi) =
CELEBRATE;
/* Should be able to recover */
+ MI_PAUSE(mi) =
redo_delay_usec;
/* Should be able to recover */
}
if (1 == find_completions(vertex, hits, n_hits, S_LEFT, 0 /*, False */ ))
forced_sides |= S_LEFT;
}
if (1 == find_completions(vertex, hits, n_hits, S_LEFT, 0 /*, False */ ))
forced_sides |= S_LEFT;
@@
-770,7
+776,7
@@
delete_vertex(ModeInfo * mi, fringe_node_c * vertex, tiling_c * tp)
(void) fprintf(stderr, "Weirdness in delete_penrose()\n");
(void) fprintf(stderr, "tp->fringe.nodes == vertex\n");
}
(void) fprintf(stderr, "Weirdness in delete_penrose()\n");
(void) fprintf(stderr, "tp->fringe.nodes == vertex\n");
}
- MI_PAUSE(mi) =
CELEBRATE
;
+ MI_PAUSE(mi) =
redo_delay_usec
;
}
if (vertex->list_ptr != 0) {
forced_node_c *node = *vertex->list_ptr;
}
if (vertex->list_ptr != 0) {
forced_node_c *node = *vertex->list_ptr;
@@
-910,7
+916,7
@@
alloc_vertex(ModeInfo * mi, angle_c dir, fringe_node_c * from, tiling_c * tp)
(void) fprintf(stderr, "Weirdness in alloc_vertex()\n");
(void) fprintf(stderr, "v = 0\n");
}
(void) fprintf(stderr, "Weirdness in alloc_vertex()\n");
(void) fprintf(stderr, "v = 0\n");
}
- MI_PAUSE(mi) =
CELEBRATE
;
+ MI_PAUSE(mi) =
redo_delay_usec
;
}
*v = *from;
add_unit_vec(dir, v->fived);
}
*v = *from;
add_unit_vec(dir, v->fived);
@@
-1230,7
+1236,7
@@
draw_penrose(ModeInfo * mi)
/* No visible nodes left. */
if (tp->fringe.n_nodes == 0) {
tp->done = True;
/* No visible nodes left. */
if (tp->fringe.n_nodes == 0) {
tp->done = True;
- MI_PAUSE(mi) =
COMPLETION;
/* Just finished drawing */
+ MI_PAUSE(mi) =
redo_delay_usec;
/* Just finished drawing */
return;
}
if (tp->forced.n_visible > 0 && tp->failures < 10) {
return;
}
if (tp->forced.n_visible > 0 && tp->failures < 10) {