controlP5
Class Range

java.lang.Object
  extended by controlP5.Controller
      extended by controlP5.Range
All Implemented Interfaces:
CDrawable, ControllerInterface, ControlP5Constants

public class Range
extends Controller

A range slider works just like a slider but can be adjusted on both ends.

See Also:
Slider
+Example
/**
* ControlP5 Range
*
* find a list of public methods available for the Range 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 colorMin = 100;

int colorMax = 100;

Range range;

void setup() {
  size(700,400);
  cp5 = new ControlP5(this);
  range = cp5.addRange("rangeController")
             // disable broadcasting since setRange and setRangeValues will trigger an event
             .setBroadcast(false) 
             .setPosition(50,50)
             .setSize(400,40)
             .setHandleSize(20)
             .setRange(0,255)
             .setRangeValues(50,100)
             // after the initialization we turn broadcast back on again
             .setBroadcast(true)
             .setColorForeground(color(255,40))
             .setColorBackground(color(255,40))  
             ;
             
  noStroke();             
}

void draw() {
  background(colorMax);
  fill(colorMin);
  rect(0,0,width,height/2);
}

void controlEvent(ControlEvent theControlEvent) {
  if(theControlEvent.isFrom("rangeController")) {
    // min and max values are stored in an array.
    // access this array with controller().arrayValue().
    // min is at index 0, max is at index 1.
    colorMin = int(theControlEvent.getController().getArrayValue(0));
    colorMax = int(theControlEvent.getController().getArrayValue(1));
    println("range update, done.");
  }
  
}


void keyPressed() {
  switch(key) {
    case('1'):range.setLowValue(0);break;
    case('2'):range.setLowValue(100);break;
    case('3'):range.setHighValue(120);break;
    case('4'):range.setHighValue(200);break;
    case('5'):range.setRangeValues(40,60);break;
  }
}


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

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

Format:
ClassName : returnType methodName(parameter type)


controlP5.Range : Range setArrayValue(float[]) 
controlP5.Range : Range setColorCaptionLabel(int) 
controlP5.Range : Range setColorTickMark(int) 
controlP5.Range : Range setColorValueLabel(int) 
controlP5.Range : Range setHandleSize(int) 
controlP5.Range : Range setHeight(int) 
controlP5.Range : Range setHighValue(float) 
controlP5.Range : Range setHighValueLabel(String) 
controlP5.Range : Range setLowValue(float) 
controlP5.Range : Range setLowValueLabel(String) 
controlP5.Range : Range setMax(float) 
controlP5.Range : Range setMin(float) 
controlP5.Range : Range setNumberOfTickMarks(int) 
controlP5.Range : Range setRange(float, float) 
controlP5.Range : Range setRangeValues(float, float) 
controlP5.Range : Range setWidth(int) 
controlP5.Range : Range showTickMarks(boolean) 
controlP5.Range : Range snapToTickMarks(boolean)
controlP5.Range : ArrayList getTickMarks() 
controlP5.Range : float getHighValue() 
controlP5.Range : float getLowValue() 
controlP5.Range : float[] getArrayValue()
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 : 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 : Range addCallback(CallbackListener) 
controlP5.Controller : Range addListener(ControlListener) 
controlP5.Controller : Range bringToFront() 
controlP5.Controller : Range bringToFront(ControllerInterface) 
controlP5.Controller : Range hide() 
controlP5.Controller : Range linebreak() 
controlP5.Controller : Range listen(boolean) 
controlP5.Controller : Range lock() 
controlP5.Controller : Range plugTo(Object) 
controlP5.Controller : Range plugTo(Object, String) 
controlP5.Controller : Range plugTo(Object[]) 
controlP5.Controller : Range plugTo(Object[], String) 
controlP5.Controller : Range registerProperty(String) 
controlP5.Controller : Range registerProperty(String, String) 
controlP5.Controller : Range registerTooltip(String) 
controlP5.Controller : Range removeBehavior() 
controlP5.Controller : Range removeCallback() 
controlP5.Controller : Range removeCallback(CallbackListener) 
controlP5.Controller : Range removeListener(ControlListener) 
controlP5.Controller : Range removeProperty(String) 
controlP5.Controller : Range removeProperty(String, String) 
controlP5.Controller : Range setArrayValue(float[]) 
controlP5.Controller : Range setArrayValue(int, float) 
controlP5.Controller : Range setBehavior(ControlBehavior) 
controlP5.Controller : Range setBroadcast(boolean) 
controlP5.Controller : Range setCaptionLabel(String) 
controlP5.Controller : Range setColor(CColor) 
controlP5.Controller : Range setColorActive(int) 
controlP5.Controller : Range setColorBackground(int) 
controlP5.Controller : Range setColorCaptionLabel(int) 
controlP5.Controller : Range setColorForeground(int) 
controlP5.Controller : Range setColorValueLabel(int) 
controlP5.Controller : Range setDecimalPrecision(int) 
controlP5.Controller : Range setDefaultValue(float) 
controlP5.Controller : Range setHeight(int) 
controlP5.Controller : Range setId(int) 
controlP5.Controller : Range setImages(PImage, PImage, PImage) 
controlP5.Controller : Range setImages(PImage, PImage, PImage, PImage) 
controlP5.Controller : Range setLabelVisible(boolean) 
controlP5.Controller : Range setLock(boolean) 
controlP5.Controller : Range setMax(float) 
controlP5.Controller : Range setMin(float) 
controlP5.Controller : Range setMouseOver(boolean) 
controlP5.Controller : Range setMoveable(boolean) 
controlP5.Controller : Range setPosition(PVector) 
controlP5.Controller : Range setPosition(float, float) 
controlP5.Controller : Range setSize(PImage) 
controlP5.Controller : Range setSize(int, int) 
controlP5.Controller : Range setStringValue(String) 
controlP5.Controller : Range setUpdate(boolean) 
controlP5.Controller : Range setValueLabel(String) 
controlP5.Controller : Range setView(ControllerView) 
controlP5.Controller : Range setVisible(boolean) 
controlP5.Controller : Range setWidth(int) 
controlP5.Controller : Range show() 
controlP5.Controller : Range unlock() 
controlP5.Controller : Range unplugFrom(Object) 
controlP5.Controller : Range unplugFrom(Object[]) 
controlP5.Controller : Range unregisterTooltip() 
controlP5.Controller : Range update() 
controlP5.Controller : Range updateSize() 
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
 int alignValueLabel
           
static int autoHeight
           
static processing.core.PVector autoSpacing
           
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, 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, WAIT
 
Constructor Summary
Range(ControlP5 theControlP5, ControllerGroup theParent, java.lang.String theName, float theMin, float theMax, float theDefaultMinValue, float theDefaultMaxValue, int theX, int theY, int theWidth, int theHeight)
           
Range(ControlP5 theControlP5, java.lang.String theName)
          Convenience constructor to extend Range.
 
Method Summary
 float[] arrayValue()
          Deprecated. 
 float[] getArrayValue()
          returns the current float array value of a controller.
 float getHighValue()
           
 float getLowValue()
           
 TickMark getTickMark()
           
 java.util.ArrayList getTickMarks()
           
 float highValue()
          Deprecated. 
 float lowValue()
          Deprecated. 
 void mousePressed()
           
 void mouseReleased()
           
 void mouseReleasedOutside()
           
 void onLeave()
           
 Range setArrayValue(float[] theArray)
           
 Range setColorCaptionLabel(int theColor)
          
 Range setColorTickMark(int theColor)
           
 Range setColorValueLabel(int theColor)
           
 Range setDraggable(boolean theFlag)
           
 Range setHandleSize(int theSize)
           
 Range setHeight(int theValue)
           
 Range setHighValue(float theValue)
           
 Range setHighValueLabel(java.lang.String theLabel)
           
 Range setLowValue(float theValue)
           
 Range setLowValueLabel(java.lang.String theLabel)
           
 Range setMax(float theValue)
          sets the maximum value of the Controller.
 Range setMin(float theValue)
          sets the minimum value of the Controller.
 Range setNumberOfTickMarks(int theNumber)
           
 Range setRange(float theMinValue, float theMaxValue)
           
 Range setRangeValues(float theLowValue, float theHighValue)
           
 Range setSliderMode(int theMode)
           
 Range setValue(float theValue)
          set the value of the range-slider.
 Range setWidth(int theValue)
           
 Range showTickMarks(boolean theFlag)
           
 Range snapToTickMarks(boolean theFlag)
           
 java.lang.String toString()
           
 Range updateDisplayMode(int theMode)
           
 Range updateInternalEvents(processing.core.PApplet theApplet)
          a method for putting input events like e.g.
 
Methods inherited from class controlP5.Controller
add, addCallback, addListener, align, bringToFront, bringToFront, changeValue, getAbsolutePosition, getAddress, getArrayValue, getBehavior, getCaptionLabel, getColor, getControllerPlugList, getControlWindow, getDecimalPrecision, getDefaultValue, getHeight, getId, getLabel, getMax, getMin, getName, getParent, getPickingColor, getPointer, getPosition, getProperty, getProperty, getStringValue, getTab, getValue, 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, setBehavior, setBroadcast, setCaptionLabel, setColor, setColorActive, setColorBackground, setColorForeground, setDecimalPrecision, setDefaultValue, setGroup, setGroup, setId, setImage, setImage, setImages, setImages, setImages, setLabelVisible, setLock, setMouseOver, setMousePressed, setMoveable, setParent, setPosition, setPosition, setSize, setSize, setStringValue, setTab, setTab, setUpdate, setValueLabel, setView, setView, setVisible, show, unlock, unplugFrom, unplugFrom, unregisterTooltip, update, updateAbsolutePosition, updateEvents, updateSize
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface controlP5.ControllerInterface
continuousUpdateEvents, draw, parent, setColorLabel, setColorValue, setLabel
 
Methods inherited from interface controlP5.CDrawable
draw
 

Field Detail

alignValueLabel

public int alignValueLabel

autoHeight

public static int autoHeight

autoSpacing

public static processing.core.PVector autoSpacing

autoWidth

public static int autoWidth
Constructor Detail

Range

public Range(ControlP5 theControlP5,
             ControllerGroup theParent,
             java.lang.String theName,
             float theMin,
             float theMax,
             float theDefaultMinValue,
             float theDefaultMaxValue,
             int theX,
             int theY,
             int theWidth,
             int theHeight)
Parameters:
theControlP5 - ControlP5
theParent - ControllerGroup
theName - String
theMin - float
theMax - float
theDefaultValue - float
theX - int
theY - int
theWidth - int
theHeight - int

Range

public Range(ControlP5 theControlP5,
             java.lang.String theName)
Convenience constructor to extend Range.

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

arrayValue

@Deprecated
public float[] arrayValue()
Deprecated. 

Overrides:
arrayValue in class Controller

getArrayValue

public float[] getArrayValue()
Description copied from class: Controller
returns the current float array value of a controller.

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

getHighValue

public float getHighValue()

getLowValue

public float getLowValue()

getTickMark

public TickMark getTickMark()

getTickMarks

public java.util.ArrayList getTickMarks()

highValue

@Deprecated
public float highValue()
Deprecated. 


lowValue

@Deprecated
public float lowValue()
Deprecated. 


mousePressed

public void mousePressed()

mouseReleased

public void mouseReleased()

mouseReleasedOutside

public void mouseReleasedOutside()

onLeave

public void onLeave()

setArrayValue

public Range setArrayValue(float[] theArray)
Specified by:
setArrayValue in interface ControllerInterface
Overrides:
setArrayValue in class Controller
Returns:
Controller

setColorCaptionLabel

public Range setColorCaptionLabel(int theColor)
Description copied from class: Controller

Overrides:
setColorCaptionLabel in class Controller
Returns:
Controller

setColorTickMark

public Range setColorTickMark(int theColor)

setColorValueLabel

public Range setColorValueLabel(int theColor)
Overrides:
setColorValueLabel in class Controller
Returns:
Controller

setDraggable

public Range setDraggable(boolean theFlag)

setHandleSize

public Range setHandleSize(int theSize)

setHeight

public Range setHeight(int theValue)
Overrides:
setHeight in class Controller
Returns:
Controller

setHighValue

public Range setHighValue(float theValue)

setHighValueLabel

public Range setHighValueLabel(java.lang.String theLabel)

setLowValue

public Range setLowValue(float theValue)

setLowValueLabel

public Range setLowValueLabel(java.lang.String theLabel)

setMax

public Range 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 Range 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 Range setNumberOfTickMarks(int theNumber)

setRange

public Range setRange(float theMinValue,
                      float theMaxValue)

setRangeValues

public Range setRangeValues(float theLowValue,
                            float theHighValue)

setSliderMode

public Range setSliderMode(int theMode)

setValue

public Range setValue(float theValue)
set the value of the range-slider. to set the low and high value, use setLowValue and setHighValue or setRangeValues

Specified by:
setValue in interface ControllerInterface
Overrides:
setValue in class Controller
Parameters:
theValue - float
Returns:
Range
See Also:
Range.setLowValue(float), Range.setHighValue(float), Range.setRangeValues(float, float)

setWidth

public Range setWidth(int theValue)
Overrides:
setWidth in class Controller
Returns:
Controller

showTickMarks

public Range showTickMarks(boolean theFlag)

snapToTickMarks

public Range snapToTickMarks(boolean theFlag)

toString

public java.lang.String toString()
Overrides:
toString in class Controller

updateDisplayMode

public Range updateDisplayMode(int theMode)

updateInternalEvents

public Range updateInternalEvents(processing.core.PApplet theApplet)
Description copied from interface: ControllerInterface
a method for putting input events like e.g. mouse or keyboard events and queries. this has been taken out of the draw method for better overwriting capability.

Specified by:
updateInternalEvents in interface ControllerInterface
Overrides:
updateInternalEvents in class Controller
See Also:
ControllerInterface.updateInternalEvents


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