diff options
-rw-r--r-- | Cargo.toml | 4 | ||||
-rw-r--r-- | extra/exuberantbovines.xml | 30 | ||||
-rw-r--r-- | src/main.rs | 9 |
3 files changed, 43 insertions, 0 deletions
@@ -11,3 +11,7 @@ authors = ["bnewbold <bnewbold@robocracy.org>"] glium = "0.*" image = "0.*" getopts = "^0.2" + +[[bin]] +name = "exuberantbovines" +path = "src/main.rs" diff --git a/extra/exuberantbovines.xml b/extra/exuberantbovines.xml new file mode 100644 index 0000000..49bc7d6 --- /dev/null +++ b/extra/exuberantbovines.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> + +<screensaver name="exuberantbovines" _label="ExuberantBovines" gl="yes"> + + <command arg="--root"/> + + <video href="http://www.youtube.com/watch?v=O_b5UWhv49w"/> + + <number id="delay" type="slider" arg="--delay %" + _label="Frame rate" _low-label="Low" _high-label="High" + low="0" high="100000" default="30000" + convert="invert"/> + + <number id="speed" type="slider" arg="--speed %" + _label="Bovine velocity" _low-label="Slow" _high-label="Fast" + low="0.05" high="2.0" default="1.0"/> + + <number id="count" type="slider" arg="--count %" + _label="Number of 'vines" _low-label="Moo" _high-label="Herd" + low="1" high="9" default="3"/> + + <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/> + <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/> + + <xscreensaver-updater /> + + <_description> +A port of jwz's BouncingCow to Rust. + </_description> +</screensaver> diff --git a/src/main.rs b/src/main.rs index e07c972..af0a37f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -199,11 +199,20 @@ fn main() { let args = util::convert_xscreensaver_args(args); let mut opts = Options::new(); + + // Common Args (all screensavers) opts.optflag("h", "help", "print this help menu"); opts.optflag("", "window", "run in a window (IGNORED)"); opts.optflag("", "root", "run in root window (IGNORED)"); + opts.optflag("", "fps", "show frames per second (IGNORED)"); opts.optopt("", "window-id", "X window id number", "NUM"); + // Bovine-specific args + opts.optflag("", "wire", "wireframe mode (IGNORED)"); + opts.optopt("c", "count", "how many cows? (1 to 9) (IGNORED)", "NUM"); + opts.optopt("", "delay", "inter-frame delay (0 to 100000) (IGNORED)", "NUM"); + opts.optopt("s", "speed", "how fast? ratio, with 1.0 as normal (IGNORED)", "NUM"); + let matches = match opts.parse(&args[1..]) { Ok(m) => { m } Err(f) => { |