+#ifdef STANDALONE
+#define MODE_hop
+#define DEFAULTS "*delay: 10000 \n" \
+ "*count: 1000 \n" \
+ "*cycles: 2500 \n" \
+ "*ncolors: 200 \n" \
+ "*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
+
+# define SMOOTH_COLORS
+# define reshape_hop 0
+# define release_hop 0
+# define hop_handle_event 0
+# include "xlockmore.h" /* in xscreensaver distribution */
+#else /* STANDALONE */
+# include "xlock.h" /* in xlockmore distribution */
+#endif /* STANDALONE */
+
+#ifdef MODE_hop
+
+#define DEF_MARTIN "False"
+#define DEF_POPCORN "False"
+#define DEF_EJK1 "False"
+#define DEF_EJK2 "False"
+#define DEF_EJK3 "False"
+#define DEF_EJK4 "False"
+#define DEF_EJK5 "False"
+#define DEF_EJK6 "False"
+#define DEF_RR "False"
+#define DEF_JONG "False"
+#define DEF_SINE "False"
+
+static Bool martin;
+static Bool popcorn;
+static Bool ejk1;
+static Bool ejk2;
+static Bool ejk3;
+static Bool ejk4;
+static Bool ejk5;
+static Bool ejk6;
+static Bool rr;
+static Bool jong;
+static Bool sine;
+
+static XrmOptionDescRec opts[] =
+{
+ {"-martin", ".hop.martin", XrmoptionNoArg, "on"},
+ {"+martin", ".hop.martin", XrmoptionNoArg, "off"},
+ {"-popcorn", ".hop.popcorn", XrmoptionNoArg, "on"},
+ {"+popcorn", ".hop.popcorn", XrmoptionNoArg, "off"},
+ {"-ejk1", ".hop.ejk1", XrmoptionNoArg, "on"},
+ {"+ejk1", ".hop.ejk1", XrmoptionNoArg, "off"},
+ {"-ejk2", ".hop.ejk2", XrmoptionNoArg, "on"},
+ {"+ejk2", ".hop.ejk2", XrmoptionNoArg, "off"},
+ {"-ejk3", ".hop.ejk3", XrmoptionNoArg, "on"},
+ {"+ejk3", ".hop.ejk3", XrmoptionNoArg, "off"},
+ {"-ejk4", ".hop.ejk4", XrmoptionNoArg, "on"},
+ {"+ejk4", ".hop.ejk4", XrmoptionNoArg, "off"},
+ {"-ejk5", ".hop.ejk5", XrmoptionNoArg, "on"},
+ {"+ejk5", ".hop.ejk5", XrmoptionNoArg, "off"},
+ {"-ejk6", ".hop.ejk6", XrmoptionNoArg, "on"},
+ {"+ejk6", ".hop.ejk6", XrmoptionNoArg, "off"},
+ {"-rr", ".hop.rr", XrmoptionNoArg, "on"},
+ {"+rr", ".hop.rr", XrmoptionNoArg, "off"},
+ {"-jong", ".hop.jong", XrmoptionNoArg, "on"},
+ {"+jong", ".hop.jong", XrmoptionNoArg, "off"},
+ {"-sine", ".hop.sine", XrmoptionNoArg, "on"},
+ {"+sine", ".hop.sine", XrmoptionNoArg, "off"}
+};
+static argtype vars[] =
+{
+ {&martin, "martin", "Martin", DEF_MARTIN, t_Bool},
+ {&popcorn, "popcorn", "Popcorn", DEF_POPCORN, t_Bool},
+ {&ejk1, "ejk1", "EJK1", DEF_EJK1, t_Bool},
+ {&ejk2, "ejk2", "EJK2", DEF_EJK2, t_Bool},
+ {&ejk3, "ejk3", "EJK3", DEF_EJK3, t_Bool},
+ {&ejk4, "ejk4", "EJK4", DEF_EJK4, t_Bool},
+ {&ejk5, "ejk5", "EJK5", DEF_EJK5, t_Bool},
+ {&ejk6, "ejk6", "EJK6", DEF_EJK6, t_Bool},
+ {&rr, "rr", "RR", DEF_RR, t_Bool},
+ {&jong, "jong", "Jong", DEF_JONG, t_Bool},
+ {&sine, "sine", "Sine", DEF_SINE, t_Bool}
+};
+static OptionStruct desc[] =
+{
+ {"-/+martin", "turn on/off sqrt format"},
+ {"-/+popcorn", "turn on/off Clifford A. Pickover's popcorn format"},
+ {"-/+ejk1", "turn on/off ejk1 format"},
+ {"-/+ejk2", "turn on/off ejk2 format"},
+ {"-/+ejk3", "turn on/off ejk3 format"},
+ {"-/+ejk4", "turn on/off ejk4 format"},
+ {"-/+ejk5", "turn on/off ejk5 format"},
+ {"-/+ejk6", "turn on/off ejk6 format"},
+ {"-/+rr", "turn on/off rr format"},
+ {"-/+jong", "turn on/off jong format"},
+ {"-/+sine", "turn on/off sine format"}
+};
+
+ENTRYPOINT ModeSpecOpt hop_opts =
+{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
+
+#ifdef USE_MODULES
+ModStruct hop_description =
+{"hop", "init_hop", "draw_hop", (char *) NULL,
+ "refresh_hop", "init_hop", "free_hop", &hop_opts,
+ 10000, 1000, 2500, 1, 64, 1.0, "",
+ "Shows real plane iterated fractals", 0, NULL};