<?xml version="1.0" encoding="ISO-8859-1"?>

<screensaver name="attraction" _label="Attraction">

  <command arg="-root"/>

  <select id="mode">
    <option id="balls"    _label="Balls"    arg-set="-mode balls"/>
    <option id="lines"    _label="Lines"    arg-set="-mode lines"/>
    <option id="tails"    _label="Tails"    arg-set="-mode tails"/>
    <option id="polygons" _label="Polygons" arg-set="-mode polygons"/>
    <option id="splines"  _label="Splines"  arg-set="-mode splines"/>
    <option id="fsplines" _label="Filled Splines"
					    arg-set="-mode filled-splines"/>
  </select>

  <select id="wallmode">
    <option id="walls"   _label="Bounce Off Walls"/>
    <option id="nowalls" _label="Ignore Screen Edges" arg-set="-nowalls"/>
  </select>

  <hgroup>
    <number id="points" type="spinbutton" arg="-points %"
              _label="Ball Count" low="0" high="200" default="0"/>
    <number id="points" type="slider" arg="-size %"
              _low-label="Ball Mass" _high-label="High"
              low="0" high="100" default="0"/>
  </hgroup>

  <number id="viscosity" type="slider" arg="-viscosity %"
          _label="Environmental Viscosity"
          _low-label="Low" _high-label="High"
          low="0.0" high="1.0" default="1.0"
          convert="invert"/>

  <number id="threshold" type="slider" arg="-threshold %"
          _label="Repulsion Threshold"
          _low-label="Small" _high-label="Large"
          low="0" high="500" default="100"/>

  <number id="segments" type="slider" arg="-segments %"
          _label="Trail Length" _low-label="Short" _high-label="Long"
          low="2" high="1000" default="500"/>

  <number id="speed" type="slider" arg="-delay %"
          _label="Speed" _low-label="Slow" _high-label="Fast"
          low="0" high="20000" default="10000"
          convert="invert"/>

  <number id="ncolors" type="slider" arg="-colors %"
            _label="Number of Colors" _low-label="Two" _high-label="Many"
            low="1" high="255" default="200"/>

  <number id="color_contrast" type="slider" arg="-color-shift %"
          _label="Color Contrast" _low-label="Low" _high-label="High"
           low="0" high="25" default="3"/>

  <boolean id="orbit" _label="Orbital Mode" arg-set="-orbit"/>
  <hgroup>
    <number id="radius" type="spinbutton" arg="-radius %"
              _label="Radius" low="0" high="1000" default="0"/>
    <number id="vmult" type="slider" arg="-vmult %"
            _low-label="Outward" _high-label="Inward"
             low="-5.0" high="5.0" default="0.9"/>
  </hgroup>

  <!-- #### -vx [?] -->
  <!-- #### -vy [?] -->
  <!-- #### -glow -->
  <!-- #### -nomaxspeed -->
  <!-- #### -correct-bounce -->
  <!-- #### -graphmode [none] -->

  <_description>
Like qix, this uses a simple simple motion model to generate many
different display modes.  The control points attract each other up to
a certain distance, and then begin to repel each other.  The
attraction/repulsion is proportional to the distance between any two
particles, similar to the strong and weak nuclear forces.

One of the most interesting ways to watch this hack is simply as
bouncing balls, because their motions and interactions with each
other are so odd.  Sometimes two balls will get into a tight orbit
around each other, to be interrupted later by a third, or by the edge
of the screen.  It looks quite chaotic.

Written by Jamie Zawinski, based on Lisp code by John Pezaris.
  </_description>
</screensaver>
