Package | Class | Tree | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## controlP5
Class Knob

    java.lang.Object
      controlP5.Controller
          controlP5.Knob

All Implemented Interfaces:
  CDrawable, ControllerInterface, ControlP5Constants

    public class Knob

extends Controller

A knob is a circular slider which can be used with a limited and unlimited range. Knobs come in 3 designs LINE, ARC and ELIPSE and can be controller with both the mouse and the mouse wheel.

+Example
  `

      /**
      * ControlP5 Knob
      *
      *
      * find a list of public methods available for the Knob Controller
      * at the bottom of this sketch.
      *
      * by Andreas Schlegel, 2012
      * www.sojamo.de/libraries/controlp5
      *
      */

      import controlP5.*;

      ControlP5 cp5;

      int myColorBackground = color(0,0,0);
      int knobValue = 100;

      Knob myKnobA;
      Knob myKnobB;

      void setup() {
        size(700,400);
        smooth();
        noStroke();

        cp5 = new ControlP5(this);

        myKnobA = cp5.addKnob("knob")
                     .setRange(0,255)
                     .setValue(50)
                     .setPosition(100,70)
                     .setRadius(50)
                     .setViewStyle(Knob.ARC)
                     .setDragDirection(Knob.VERTICAL)
                     ;

        myKnobB = cp5.addKnob("knobValue")
                     .setRange(0,255)
                     .setValue(220)
                     .setPosition(100,210)
                     .setRadius(50)
                     .setNumberOfTickMarks(10)
                     .setTickMarkLength(4)
                     .snapToTickMarks(true)
                     .setColorForeground(color(255))
                     .setColorBackground(color(0, 160, 100))
                     .setColorActive(color(255,255,0))
                     .setDragDirection(Knob.HORIZONTAL)
                     ;
      }

      void draw() {
        background(myColorBackground);
        fill(knobValue);
        rect(0,height/2,width,height/2);
        fill(0,100);
        rect(80,40,140,320);
      }

      void knob(int theValue) {
        myColorBackground = color(theValue);
        println("a knob event. setting background to "+theValue);
      }

      void keyPressed() {
        switch(key) {
          case('1'):myKnobA.setValue(180);break;
          case('2'):myKnobB.setConstrained(false).hideTickMarks().snapToTickMarks(false);break;
          case('3'):myKnobA.shuffle();myKnobB.shuffle();break;
        }

      }

      /*
      a list of all methods available for the Knob Controller
      use ControlP5.printPublicMethodsFor(Knob.class);
      to print the following list into the console.

      You can find further details about class Knob in the javadoc.

      Format:
      ClassName : returnType methodName(parameter type)

      controlP5.Knob : Knob setConstrained(boolean)
      controlP5.Knob : Knob setDragDirection(int)
      controlP5.Knob : Knob setMax(float)
      controlP5.Knob : Knob setMin(float)
      controlP5.Knob : Knob setNumberOfTickMarks(int)
      controlP5.Knob : Knob setRadius(float)
      controlP5.Knob : Knob setRange(float)
      controlP5.Knob : Knob setResolution(float)
      controlP5.Knob : Knob setScrollSensitivity(float)
      controlP5.Knob : Knob setSensitivity(float)
      controlP5.Knob : Knob setShowRange(boolean)
      controlP5.Knob : Knob setStartAngle(float)
      controlP5.Knob : Knob setTickMarkLength(int)
      controlP5.Knob : Knob setTickMarkWeight(float)
      controlP5.Knob : Knob setValue(float)
      controlP5.Knob : Knob setViewStyle(int)
      controlP5.Knob : Knob showTickMarks(boolean)
      controlP5.Knob : Knob shuffle()
      controlP5.Knob : Knob snapToTickMarks(boolean)
      controlP5.Knob : Knob update()
      controlP5.Knob : boolean isConstrained()
      controlP5.Knob : boolean isShowRange()
      controlP5.Knob : boolean isShowTickMarks()
      controlP5.Knob : float getAngle()
      controlP5.Knob : float getRadius()
      controlP5.Knob : float getRange()
      controlP5.Knob : float getResolution()
      controlP5.Knob : float getStartAngle()
      controlP5.Knob : float getTickMarkWeight()
      controlP5.Knob : float getValue()
      controlP5.Knob : int getDragDirection()
      controlP5.Knob : int getNumberOfTickMarks()
      controlP5.Knob : int getTickMarkLength()
      controlP5.Knob : int getViewStyle()
      controlP5.Controller : CColor getColor()
      controlP5.Controller : ControlBehavior getBehavior()
      controlP5.Controller : ControlWindow getControlWindow()
      controlP5.Controller : ControlWindow getWindow()
      controlP5.Controller : ControllerProperty getProperty(String)
      controlP5.Controller : ControllerProperty getProperty(String, String)
      controlP5.Controller : Knob addCallback(CallbackListener)
      controlP5.Controller : Knob addListener(ControlListener)
      controlP5.Controller : Knob bringToFront()
      controlP5.Controller : Knob bringToFront(ControllerInterface)
      controlP5.Controller : Knob hide()
      controlP5.Controller : Knob linebreak()
      controlP5.Controller : Knob listen(boolean)
      controlP5.Controller : Knob lock()
      controlP5.Controller : Knob plugTo(Object)
      controlP5.Controller : Knob plugTo(Object, String)
      controlP5.Controller : Knob plugTo(Object[])
      controlP5.Controller : Knob plugTo(Object[], String)
      controlP5.Controller : Knob registerProperty(String)
      controlP5.Controller : Knob registerProperty(String, String)
      controlP5.Controller : Knob registerTooltip(String)
      controlP5.Controller : Knob removeBehavior()
      controlP5.Controller : Knob removeCallback()
      controlP5.Controller : Knob removeCallback(CallbackListener)
      controlP5.Controller : Knob removeListener(ControlListener)
      controlP5.Controller : Knob removeProperty(String)
      controlP5.Controller : Knob removeProperty(String, String)
      controlP5.Controller : Knob setArrayValue(float[])
      controlP5.Controller : Knob setArrayValue(int, float)
      controlP5.Controller : Knob setBehavior(ControlBehavior)
      controlP5.Controller : Knob setBroadcast(boolean)
      controlP5.Controller : Knob setCaptionLabel(String)
      controlP5.Controller : Knob setColor(CColor)
      controlP5.Controller : Knob setColorActive(int)
      controlP5.Controller : Knob setColorBackground(int)
      controlP5.Controller : Knob setColorCaptionLabel(int)
      controlP5.Controller : Knob setColorForeground(int)
      controlP5.Controller : Knob setColorValueLabel(int)
      controlP5.Controller : Knob setDecimalPrecision(int)
      controlP5.Controller : Knob setDefaultValue(float)
      controlP5.Controller : Knob setHeight(int)
      controlP5.Controller : Knob setId(int)
      controlP5.Controller : Knob setImages(PImage, PImage, PImage)
      controlP5.Controller : Knob setImages(PImage, PImage, PImage, PImage)
      controlP5.Controller : Knob setLabelVisible(boolean)
      controlP5.Controller : Knob setLock(boolean)
      controlP5.Controller : Knob setMax(float)
      controlP5.Controller : Knob setMin(float)
      controlP5.Controller : Knob setMouseOver(boolean)
      controlP5.Controller : Knob setMoveable(boolean)
      controlP5.Controller : Knob setPosition(PVector)
      controlP5.Controller : Knob setPosition(float, float)
      controlP5.Controller : Knob setSize(PImage)
      controlP5.Controller : Knob setSize(int, int)
      controlP5.Controller : Knob setStringValue(String)
      controlP5.Controller : Knob setUpdate(boolean)
      controlP5.Controller : Knob setValueLabel(String)
      controlP5.Controller : Knob setView(ControllerView)
      controlP5.Controller : Knob setVisible(boolean)
      controlP5.Controller : Knob setWidth(int)
      controlP5.Controller : Knob show()
      controlP5.Controller : Knob unlock()
      controlP5.Controller : Knob unplugFrom(Object)
      controlP5.Controller : Knob unplugFrom(Object[])
      controlP5.Controller : Knob unregisterTooltip()
      controlP5.Controller : Knob update()
      controlP5.Controller : Knob updateSize()
      controlP5.Controller : Label getCaptionLabel()
      controlP5.Controller : Label getValueLabel()
      controlP5.Controller : List getControllerPlugList()
      controlP5.Controller : PImage setImage(PImage)
      controlP5.Controller : PImage setImage(PImage, int)
      controlP5.Controller : PVector getAbsolutePosition()
      controlP5.Controller : PVector getPosition()
      controlP5.Controller : String getAddress()
      controlP5.Controller : String getInfo()
      controlP5.Controller : String getName()
      controlP5.Controller : String getStringValue()
      controlP5.Controller : String toString()
      controlP5.Controller : Tab getTab()
      controlP5.Controller : boolean isActive()
      controlP5.Controller : boolean isBroadcast()
      controlP5.Controller : boolean isInside()
      controlP5.Controller : boolean isLabelVisible()
      controlP5.Controller : boolean isListening()
      controlP5.Controller : boolean isLock()
      controlP5.Controller : boolean isMouseOver()
      controlP5.Controller : boolean isMousePressed()
      controlP5.Controller : boolean isMoveable()
      controlP5.Controller : boolean isUpdate()
      controlP5.Controller : boolean isVisible()
      controlP5.Controller : float getArrayValue(int)
      controlP5.Controller : float getDefaultValue()
      controlP5.Controller : float getMax()
      controlP5.Controller : float getMin()
      controlP5.Controller : float getValue()
      controlP5.Controller : float[] getArrayValue()
      controlP5.Controller : int getDecimalPrecision()
      controlP5.Controller : int getHeight()
      controlP5.Controller : int getId()
      controlP5.Controller : int getWidth()
      controlP5.Controller : int listenerSize()
      controlP5.Controller : void remove()
      controlP5.Controller : void setView(ControllerView, int)
      java.lang.Object : String toString()
      java.lang.Object : boolean equals(Object)

      */

  `

Field Summary
`static int` | `autoHeight`
`static int` | `autoWidth`

Fields inherited from interface controlP5.ControlP5Constants
`acceptClassList, ACTION_BROADCAST, ACTION_ENTER, ACTION_LEAVE, ACTION_PRESSED, ACTION_RELEASED, ACTION_RELEASEDOUTSIDE, ACTIVE, ALL, ALT, ARC, ARRAY, BACKSPACE, BASELINE, BITFONT, BOOLEAN, BOTTOM, BOTTOM_OUTSIDE, CAPTIONLABEL, CENTER, COMMANDKEY, CONTROL, controlEventClass, CUSTOM, DECREASE, DEFAULT, DELETE, DONE, DOWN, ELLIPSE, ENTER, ESCAPE, EVENT, eventMethod, FADEIN, FADEOUT, FIELD, FLOAT, HALF_PI, HIDE, HIGHLIGHT, HORIZONTAL, IDLE, IMAGE, INACTIVE, INCREASE, INTEGER, INVALID, KEYCONTROL, LEFT, LEFT_OUTSIDE, LINE, LOAD, MENU, METHOD, MOVE, MULTI, MULTIPLES, OVER, PI, PRESSED, PRINT, RELEASE, RESET, RIGHT, RIGHT_OUTSIDE, SAVE, SHIFT, SINGLE, SINGLE_COLUMN, SINGLE_ROW, SPRITE, STRING, SWITCH, SWITCH_BACK, SWITCH_FORE, TAB, TOP, TOP_OUTSIDE, TRANSITION_WAIT_FADEIN, TWO_PI, UP, VALUELABEL, VERBOSE, VERTICAL, WAIT`

Constructor Summary
`Knob(ControlP5 theControlP5, java.lang.String theName)` Convenience constructor to extend Knob.

Method Summary
`float` | `getAngle()`
`float` | `getAngleRange()`
`int` | `getDragDirection()` Gets the drag direction which is either Controller.HORIZONTAL or Controller.VERTICAL.
`int` | `getNumberOfTickMarks()`
`float` | `getRadius()`
`float` | `getResolution()`
`float` | `getStartAngle()` get the start angle, 0 is at 3 o'clock.
`int` | `getTickMarkLength()`
`float` | `getTickMarkWeight()`
`float` | `getValue()`
`int` | `getViewStyle()`
`Knob` | `hideTickMarks()`
`boolean` | `isConstrained()`
`boolean` | `isShowAngleRange()`
`boolean` | `isShowTickMarks()`
`Knob` | `scrolled(int theRotationValue)` Changes the value of the knob when hovering and using the mouse wheel or the scroll function of a multi-touch track pad.
`Knob` | `setAngleRange(float theRange)` set the range in between which the know operates.
`Knob` | `setConstrained(boolean theValue)`
`Knob` | `setDragDirection(int theValue)` Sets the drag direction, when controlling a knob, parameter is either Controller.HORIZONTAL or Controller.VERTICAL.
`Knob` | `setMax(float theValue)` sets the maximum value of the Controller.
`Knob` | `setMin(float theValue)` sets the minimum value of the Controller.
`Knob` | `setNumberOfTickMarks(int theNumber)`
`Knob` | `setRadius(float theValue)`
`Knob` | `setRange(float theMin, float theMax)`
`Knob` | `setResolution(float theValue)` resolution is a sensitivity value when dragging a knob.
`Knob` | `setScrollSensitivity(float theValue)` Sets the sensitivity for the scroll behavior when using the mouse wheel or the scroll function of a multi-touch track pad.
`Knob` | `setShowAngleRange(boolean theValue)`
`Knob` | `setSize(float theWidth, float theHeight)`
`Knob` | `setStartAngle(float theAngle)` The start angle is a value between 0 and TWO_PI.
`Knob` | `setTickMarkLength(int theLength)`
`Knob` | `setTickMarkWeight(float theWeight)`
`Knob` | `setValue(float theValue)`
`Knob` | `setViewStyle(int theStyle)` set the display style of a knob.
`Knob` | `showTickMarks()`
`Knob` | `shuffle()` Assigns a random value to the controller.
`Knob` | `snapToTickMarks(boolean theFlag)`

Methods inherited from class controlP5.Controller
`add, addCallback, addListener, align, bringToFront, bringToFront, changeValue, getAbsolutePosition, getAddress, getArrayValue, getArrayValue, getBehavior, getCaptionLabel, getColor, getControllerPlugList, getControlWindow, getDecimalPrecision, getDefaultValue, getHeight, getId, getLabel, getMax, getMin, getName, getParent, getPickingColor, getPointer, getPosition, getProperty, getProperty, getStringValue, getTab, getValueLabel, getWidth, getWindow, hide, init, isActive, isBroadcast, isInside, isLabelVisible, isListening, isLock, isMouseOver, isMousePressed, isMoveable, isUpdate, isVisible, keyEvent, linebreak, listen, listenerSize, lock, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, plugTo, plugTo, plugTo, plugTo, registerProperty, registerProperty, registerTooltip, remove, remove, removeBehavior, removeCallback, removeCallback, removeListener, removeProperty, removeProperty, setAbsolutePosition, setAddress, setArrayValue, setArrayValue, setBehavior, setBroadcast, setCaptionLabel, setColor, setColorActive, setColorBackground, setColorCaptionLabel, setColorForeground, setColorValueLabel, setDecimalPrecision, setDefaultValue, setGroup, setGroup, setHeight, setId, setImage, setImage, setImages, setImages, setImages, setLabelVisible, setLock, setMouseOver, setMousePressed, setMoveable, setParent, setPosition, setPosition, setSize, setSize, setStringValue, setTab, setTab, setUpdate, setValueLabel, setView, setView, setVisible, setWidth, show, unlock, unplugFrom, unplugFrom, unregisterTooltip, update, updateAbsolutePosition, updateEvents, updateInternalEvents, updateSize`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface controlP5.ControllerInterface
`continuousUpdateEvents, draw, parent, setColorLabel, setColorValue, setLabel`

Methods inherited from interface controlP5.CDrawable
`draw`

Field Detail

### autoHeight

    public static int autoHeight

### autoWidth

    public static int autoWidth

Constructor Detail

### Knob

    public Knob(ControlP5 theControlP5,
                java.lang.String theName)

  Convenience constructor to extend Knob.

  Parameters:
    `theControlP5` -
    `theName` -
    +Example
      `

          /**
           * ControlP5 extending Controllers
           *
           * the following example shows how to extend the Controller class to
           * create customizable Controllers. You can either extend the Controller class itself,
           * or any class that extends Controller itself like the Slider, Button, DropdownList, etc.
           *
           * How to:
           *
           * 1) do a super call to the convenience constructor requiring
           * 2 parameter (ControlP5 instance, name)
           *
           * 2) the Controller class has a set of empty methods that allow you to capture
           * inputs from the mouse including
           * onEnter(), onLeave(), onPress(), onRelease(), onClick(), onScroll(int), onDrag()
           * These you can override and include functionality as needed.
           *
           * 3) use method getPointer() to return the local (relative)
           * xy-coordinates of the controller
           *
           * 4) after instantiation custom controllers are treated the same
           * as default controlP5 controllers.
           *
           * by Andreas Schlegel, 2012
           * www.sojamo.de/libraries/controlp5
           *
           */

          import controlP5.*;

          ControlP5 cp5;
          PApplet p;

          void setup() {
            size(400, 400);
            cp5 = new ControlP5(this);

            // create 2 groups to show nesting of custom controllers and
            //
            Group g1 = cp5.addGroup("a").setPosition(0,100).setWidth(180);
            Group g2 = cp5.addGroup("b").setPosition(0,10).setWidth(180);
            g2.moveTo(g1);

            // create 2 custom Controllers from class MyButton
            // MyButton extends Controller and inherits all methods accordingly.
            new MyButton(cp5, "b1").setPosition(0, 0).setSize(180, 200).moveTo(g2);
            new MyButton(cp5, "b2").setPosition(205, 15).setSize(180, 200);

          }

          void draw() {
            background(0);
          }

          // b1 will be called from Controller b1
          public void b1(float theValue) {
            println("yay button "+theValue);
          }

          public void controlEvent(ControlEvent theEvent) {
            println("controlEvent : "+theEvent);
          }

          // Create a custom Controller, please not that
          // MyButton extends Controller,
          // is an indicator for the super class about the type of
          // custom controller to be created.

          class MyButton extends Controller {

            int current = 0xffff0000;

            float a = 128;

            float na;

            int y;

            // use the convenience constructor of super class Controller
            // MyButton will automatically registered and move to the
            // default controlP5 tab.

            MyButton(ControlP5 cp5, String theName) {
              super(cp5, theName);

              // replace the default view with a custom view.
              setView(new ControllerView() {
                public void display(PApplet p, Object b) {
                  // draw button background
                  na += (a-na) * 0.1;
                  p.fill(current,na);
                  p.rect(0, 0, getWidth(), getHeight());

                  // draw horizontal line which can be moved on the x-axis
                  // using the scroll wheel.
                  p.fill(0,255,0);
                  p.rect(0,y,width,10);

                  // draw the custom label
                  p.fill(128);
                  translate(0,getHeight()+14);
                  p.text(getName(),0,0);
                  p.text(getName(),0,0);

                }
              }
              );
            }

            // override various input methods for mouse input control
            void onEnter() {
              cursor(HAND);
              println("enter");
              a = 255;
            }

            void onScroll(int n) {
              println("scrolling");
              y -= n;
              y = constrain(y,0,getHeight()-10);
            }

            void onPress() {
              println("press");
              current = 0xffffff00;
            }

            void onClick() {
              Pointer p1 = getPointer();
              println("clicked at "+p1.x()+", "+p1.y());
              current = 0xffffff00;
              setValue(y);
            }

            void onRelease() {
              println("release");
              current = 0xffffffff;
            }

            void onMove() {
              println("moving "+this+" "+_myControlWindow.getMouseOverList());
            }

            void onDrag() {
              current = 0xff0000ff;
              Pointer p1 = getPointer();
              float dif = dist(p1.px(),p1.py(),p1.x(),p1.y());
              println("dragging at "+p1.x()+", "+p1.y()+" "+dif);
            }

            void onReleaseOutside() {
              onLeave();
            }

            void onLeave() {
              println("leave");
              cursor(ARROW);
              a = 128;
            }
          }

      `

Method Detail

### getAngle

    public float getAngle()

### getAngleRange

    public float getAngleRange()

### getDragDirection

    public int getDragDirection()

  Gets the drag direction which is either Controller.HORIZONTAL or Controller.VERTICAL.

  Returns:
    int returns Controller.HORIZONTAL or Controller.VERTICAL

### getNumberOfTickMarks

    public int getNumberOfTickMarks()

### getRadius

    public float getRadius()

### getResolution

    public float getResolution()

### getStartAngle

    public float getStartAngle()

  get the start angle, 0 is at 3 o'clock.

### getTickMarkLength

    public int getTickMarkLength()

### getTickMarkWeight

    public float getTickMarkWeight()

### getValue

    public float getValue()

  Specified by:
    `getValue` in interface `ControllerInterface`
  Overrides:
    `getValue` in class `Controller`
  Returns:
    float
  See Also:
    `Controller.getStringValue()`, `Controller.getArrayValue()`

### getViewStyle

    public int getViewStyle()

### hideTickMarks

    public Knob hideTickMarks()

### isConstrained

    public boolean isConstrained()

### isShowAngleRange

    public boolean isShowAngleRange()

### isShowTickMarks

    public boolean isShowTickMarks()

### scrolled

    public Knob scrolled(int theRotationValue)

  Changes the value of the knob when hovering and using the mouse wheel or the scroll function of a multi-touch track pad.

### setAngleRange

    public Knob setAngleRange(float theRange)

  set the range in between which the know operates. By default the range is PI + HALF_PI

### setConstrained

    public Knob setConstrained(boolean theValue)

### setDragDirection

    public Knob setDragDirection(int theValue)

  Sets the drag direction, when controlling a knob, parameter is either Controller.HORIZONTAL or Controller.VERTICAL.

  Parameters:
    `theValue` - must be Controller.HORIZONTAL or Controller.VERTICAL
  Returns:
    Knob

### setMax

    public Knob setMax(float theValue)

  Description copied from class: `Controller`
  sets the maximum value of the Controller.

  Overrides:
    `setMax` in class `Controller`
  Parameters:
    `theValue` - float
  Returns:
    Controller

### setMin

    public Knob setMin(float theValue)

  Description copied from class: `Controller`
  sets the minimum value of the Controller.

  Overrides:
    `setMin` in class `Controller`
  Parameters:
    `theValue` - float
  Returns:
    Controller

### setNumberOfTickMarks

    public Knob setNumberOfTickMarks(int theNumber)

### setRadius

    public Knob setRadius(float theValue)

### setRange

    public Knob setRange(float theMin,
                         float theMax)

### setResolution

    public Knob setResolution(float theValue)

  resolution is a sensitivity value when dragging a knob. the higher the value, the more sensitive the dragging.

### setScrollSensitivity

    public Knob setScrollSensitivity(float theValue)

  Sets the sensitivity for the scroll behavior when using the mouse wheel or the scroll function of a multi-touch track pad. The smaller the value (closer to 0) the higher the sensitivity.

  Parameters:
    `theValue` -
  Returns:
    Knob

### setShowAngleRange

    public Knob setShowAngleRange(boolean theValue)

### setSize

    public Knob setSize(float theWidth,
                        float theHeight)

### setStartAngle

    public Knob setStartAngle(float theAngle)

  The start angle is a value between 0 and TWO_PI. By default the start angle is set to HALF_PI + PI * 0.25f

### setTickMarkLength

    public Knob setTickMarkLength(int theLength)

### setTickMarkWeight

    public Knob setTickMarkWeight(float theWeight)

### setValue

    public Knob setValue(float theValue)

  Specified by:
    `setValue` in interface `ControllerInterface`
  Overrides:
    `setValue` in class `Controller`
  Parameters:
    `theValue` - float

### setViewStyle

    public Knob setViewStyle(int theStyle)

  set the display style of a knob. takes parameters Knob.LINE, Knob.ELLIPSE or Knob.ARC. default style is Knob.LINE

  Parameters:
    `theStyle` - use Knob.LINE, Knob.ELLIPSE or Knob.ARC
  Returns:
    Knob

### showTickMarks

    public Knob showTickMarks()

### shuffle

    public Knob shuffle()

  Assigns a random value to the controller.

### snapToTickMarks

    public Knob snapToTickMarks(boolean theFlag)

Package | Class | Tree | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

processing library controlP5 by Andreas Schlegel. (c) 2006-2012