commit daf76be8d74f7a343ac2a20e6217334e0fa17f9c Author: fredervish Date: Sun Sep 1 00:25:10 2019 +0200 version_essai diff --git a/0_config-polargraph/lov-expenum.properties.txt b/0_config-polargraph/lov-expenum.properties.txt new file mode 100644 index 0000000..86a49b0 --- /dev/null +++ b/0_config-polargraph/lov-expenum.properties.txt @@ -0,0 +1,53 @@ +# *** Polargraph properties file *** +#Sat Feb 09 13:59:46 CET 2019 +controller.pixel.samplearea=10 +controller.pictureframe.position.y=177 +controller.pictureframe.position.x=76 +controller.testPenWidth.startSize=0.5 +controller.machine.colour=969696 +machine.motors.mmPerRev=109.5 +controller.vector.filename=/home/fredervish/Documents/lov-polargraph/2_dessins-imprimer/theo-portrait-2.svg +controller.window.width=1607 +controller.frame.colour=C80000 +controller.image.position.y=588 +controller.image.position.x=131 +machine.motors.accel=250 +controller.image.height=394 +controller.machine.serialport=32 +controller.window.height=439 +controller.maxSegmentLength=2 +controller.geomerative.polygonizerLength=1 +machine.penlift.up=17 +machine.penlift.down=93 +controller.page.position.y=150 +controller.vector.scaling=20.6 +controller.page.position.x=364 +controller.pictureframe.width=570 +machine.step.multiplier=2 +controller.grid.size=93.0 +controller.testPenWidth.endSize=2 +controller.pictureframe.height=850 +controller.page.colour=DCDCDC +controller.testPenWidth.incrementSize=0.5 +controller.image.width=394 +machine.motors.stepsPerRev=200.5 +machine.pen.size=1 +controller.page.width=297 +controller.pixel.mask.color=958341 +controller.machine.baudrate=57600 +controller.vector.minLineLength=0 +machine.width=1025 +controller.geomerative.polygonizer=1 +controller.page.height=420 +controller.vector.position.y=-135.74 +controller.background.colour=646464 +controller.image.filename= +controller.vector.position.x=-387.4 +controller.homepoint.y=150 +controller.guide.colour=FFFFFF +machine.motors.maxSpeed=250 +controller.homepoint.x=512 +controller.density.preview.style=3 +controller.pixel.scaling=3.14 +controller.densitypreview.colour=000000 +machine.height=900 diff --git a/0_config-polargraph/lov-init.properties.txt b/0_config-polargraph/lov-init.properties.txt new file mode 100644 index 0000000..7604cee --- /dev/null +++ b/0_config-polargraph/lov-init.properties.txt @@ -0,0 +1,53 @@ +# *** Polargraph properties file *** +#Sun Dec 16 16:41:04 CET 2018 +controller.pixel.samplearea=10 +controller.pictureframe.position.y= +controller.pictureframe.position.x= +controller.testPenWidth.startSize=0.5 +controller.machine.colour= +machine.motors.mmPerRev=109.5 +controller.vector.filename= +controller.window.width= +controller.frame.colour= +controller.image.position.y= +controller.image.position.x +machine.motors.accel=250 +controller.image.height= +controller.machine.serialport= +controller.window.height= +controller.maxSegmentLength= +controller.geomerative.polygonizerLength=2 +machine.penlift.up=17 +machine.penlift.down=93 +controller.page.position.y=150 +controller.vector.scaling=50.0 +controller.page.position.x= +controller.pictureframe.width= +machine.step.multiplier=2 +controller.grid.size=18.0 +controller.testPenWidth.endSize=2 +controller.pictureframe.height=850 +controller.page.colour= +controller.testPenWidth.incrementSize=0.5 +controller.image.width= +machine.motors.stepsPerRev=200 +machine.pen.size=4.05 +controller.page.width=708 +controller.pixel.mask.color= +controller.machine.baudrate=57600 +controller.vector.minLineLength=0 +machine.width=708 +controller.geomerative.polygonizer= +controller.page.height=730 +controller.vector.position.y= +controller.background.colour= +controller.image.filename= +controller.vector.position.x= +controller.homepoint.y=150 +controller.guide.colour= +machine.motors.maxSpeed=500 +controller.homepoint.x=354 +controller.density.preview.style= +controller.pixel.scaling= +controller.densitypreview.colour= +machine.height=1097 diff --git a/0_config-polargraph/lov-v1.properties.txt b/0_config-polargraph/lov-v1.properties.txt new file mode 100644 index 0000000..afd8df0 --- /dev/null +++ b/0_config-polargraph/lov-v1.properties.txt @@ -0,0 +1,53 @@ +# *** Polargraph properties file *** +#Sun Dec 16 15:48:38 CET 2018 +controller.pixel.samplearea=10 +controller.pictureframe.position.y=177 +controller.pictureframe.position.x=76 +controller.testPenWidth.startSize=0.5 +controller.machine.colour=969696 +machine.motors.mmPerRev=109.5 +controller.vector.filename=/home/fredervish/Bureau/Heckert_GNU_white.svg +controller.window.width=1335 +controller.frame.colour=C80000 +controller.image.position.y=588 +controller.image.position.x=131 +machine.motors.accel=250 +controller.image.height=394 +controller.machine.serialport=32 +controller.window.height=34 +controller.maxSegmentLength=2 +controller.geomerative.polygonizerLength=1 +machine.penlift.up=17 +machine.penlift.down=93 +controller.page.position.y=120 +controller.vector.scaling=42.1 +controller.page.position.x=0 +controller.pictureframe.width=570 +machine.step.multiplier=2 +controller.grid.size=93.0 +controller.testPenWidth.endSize=2 +controller.pictureframe.height=850 +controller.page.colour=DCDCDC +controller.testPenWidth.incrementSize=0.5 +controller.image.width=394 +machine.motors.stepsPerRev=200.5 +machine.pen.size=1 +controller.page.width=708 +controller.pixel.mask.color=958341 +controller.machine.baudrate=57600 +controller.vector.minLineLength=0 +machine.width=708 +controller.geomerative.polygonizer=1 +controller.page.height=978 +controller.vector.position.y=-198.02 +controller.background.colour=646464 +controller.image.filename=/home/fredervish/Documents/lov-polargraph/2_dessins-imprimer/Common_Kingfisher_Alcedo_atthis.jpg +controller.vector.position.x=-700.27 +controller.homepoint.y=120 +controller.guide.colour=FFFFFF +machine.motors.maxSpeed=500 +controller.homepoint.x=354 +controller.density.preview.style=3 +controller.pixel.scaling=3.14 +controller.densitypreview.colour=000000 +machine.height=1097 diff --git a/0_config-polargraph/lov-v2.properties.txt b/0_config-polargraph/lov-v2.properties.txt new file mode 100644 index 0000000..c2bfee1 --- /dev/null +++ b/0_config-polargraph/lov-v2.properties.txt @@ -0,0 +1,53 @@ +# *** Polargraph properties file *** +#Sun Dec 16 16:41:04 CET 2018 +controller.pixel.samplearea=10 +controller.pictureframe.position.y=177 +controller.pictureframe.position.x=76 +controller.testPenWidth.startSize=0.5 +controller.machine.colour=969696 +machine.motors.mmPerRev=109.5 +controller.vector.filename= +controller.window.width=1287 +controller.frame.colour=C80000 +controller.image.position.y=588 +controller.image.position.x=131 +machine.motors.accel=250 +controller.image.height=394 +controller.machine.serialport=32 +controller.window.height=-80 +controller.maxSegmentLength=2 +controller.geomerative.polygonizerLength=1 +machine.penlift.up=17 +machine.penlift.down=93 +controller.page.position.y=150 +controller.vector.scaling=42.1 +controller.page.position.x=0 +controller.pictureframe.width=570 +machine.step.multiplier=2 +controller.grid.size=93.0 +controller.testPenWidth.endSize=2 +controller.pictureframe.height=850 +controller.page.colour=DCDCDC +controller.testPenWidth.incrementSize=0.5 +controller.image.width=394 +machine.motors.stepsPerRev=200.5 +machine.pen.size=1 +controller.page.width=708 +controller.pixel.mask.color=958341 +controller.machine.baudrate=57600 +controller.vector.minLineLength=0 +machine.width=708 +controller.geomerative.polygonizer=1 +controller.page.height=730 +controller.vector.position.y=-198.02 +controller.background.colour=646464 +controller.image.filename= +controller.vector.position.x=-700.27 +controller.homepoint.y=150 +controller.guide.colour=FFFFFF +machine.motors.maxSpeed=500 +controller.homepoint.x=354 +controller.density.preview.style=3 +controller.pixel.scaling=3.14 +controller.densitypreview.colour=000000 +machine.height=1097 diff --git a/0_config-polargraph/lov.properties.txt b/0_config-polargraph/lov.properties.txt new file mode 100644 index 0000000..969d59d --- /dev/null +++ b/0_config-polargraph/lov.properties.txt @@ -0,0 +1,53 @@ +# *** Polargraph properties file *** +#Mon Nov 12 21:22:36 CET 2018 +controller.pixel.samplearea=10 +controller.pictureframe.position.y=177 +controller.pictureframe.position.x=76 +controller.testPenWidth.startSize=0.5 +controller.machine.colour=969696 +machine.motors.mmPerRev=109.5 +controller.vector.filename=/home/fredervish/Bureau/Heckert_GNU_white.svg +controller.window.width=1383 +controller.frame.colour=C80000 +controller.image.position.y=588 +controller.image.position.x=131 +machine.motors.accel=253 +controller.image.height=394 +controller.machine.serialport=32 +controller.window.height=148 +controller.maxSegmentLength=2 +controller.geomerative.polygonizerLength=1 +machine.penlift.up=19 +machine.penlift.down=109 +controller.page.position.y=120 +controller.vector.scaling=42.1 +controller.page.position.x=0 +controller.pictureframe.width=570 +machine.step.multiplier=2 +controller.grid.size=93.0 +controller.testPenWidth.endSize=2 +controller.pictureframe.height=850 +controller.page.colour=DCDCDC +controller.testPenWidth.incrementSize=0.5 +controller.image.width=394 +machine.motors.stepsPerRev=200.5 +machine.pen.size=4.05 +controller.page.width=708 +controller.pixel.mask.color=958341 +controller.machine.baudrate=57600 +controller.vector.minLineLength=0 +machine.width=708 +controller.geomerative.polygonizer=1 +controller.page.height=978 +controller.vector.position.y=-198.02 +controller.background.colour=646464 +controller.image.filename=/home/fredervish/Documents/lov-polargraph/2_dessins-imprimer/Common_Kingfisher_Alcedo_atthis.jpg +controller.vector.position.x=-700.27 +controller.homepoint.y=120 +controller.guide.colour=FFFFFF +machine.motors.maxSpeed=499 +controller.homepoint.x=354 +controller.density.preview.style=3 +controller.pixel.scaling=3.14 +controller.densitypreview.colour=000000 +machine.height=1097 diff --git a/0_config-polargraph/lov2.properties.txt b/0_config-polargraph/lov2.properties.txt new file mode 100644 index 0000000..a2a9e6d --- /dev/null +++ b/0_config-polargraph/lov2.properties.txt @@ -0,0 +1,53 @@ +# *** Polargraph properties file *** +#Sun Dec 16 15:32:46 CET 2018 +controller.pixel.samplearea=10 +controller.pictureframe.position.y=177 +controller.pictureframe.position.x=76 +controller.testPenWidth.startSize=0.5 +controller.machine.colour=969696 +machine.motors.mmPerRev=109.5 +controller.vector.filename=/home/fredervish/Bureau/Heckert_GNU_white.svg +controller.window.width=1367 +controller.frame.colour=C80000 +controller.image.position.y=588 +controller.image.position.x=131 +machine.motors.accel=253 +controller.image.height=394 +controller.machine.serialport=32 +controller.window.height=110 +controller.maxSegmentLength=2 +controller.geomerative.polygonizerLength=1 +machine.penlift.up=52 +machine.penlift.down=109 +controller.page.position.y=120 +controller.vector.scaling=42.1 +controller.page.position.x=0 +machine.step.multiplier=2 +controller.pictureframe.width=570 +controller.grid.size=93.0 +controller.testPenWidth.endSize=2 +controller.pictureframe.height=850 +controller.page.colour=DCDCDC +controller.testPenWidth.incrementSize=0.5 +controller.image.width=394 +machine.motors.stepsPerRev=200.5 +machine.pen.size=4.05 +controller.page.width=708 +controller.pixel.mask.color=958341 +controller.machine.baudrate=57600 +controller.vector.minLineLength=0 +machine.width=708 +controller.geomerative.polygonizer=1 +controller.page.height=978 +controller.vector.position.y=-198.02 +controller.vector.position.x=-700.27 +controller.image.filename=/home/fredervish/Documents/lov-polargraph/2_dessins-imprimer/Common_Kingfisher_Alcedo_atthis.jpg +controller.background.colour=646464 +controller.homepoint.y=120 +controller.homepoint.x=354 +machine.motors.maxSpeed=499 +controller.guide.colour=FFFFFF +controller.density.preview.style=3 +controller.pixel.scaling=3.14 +controller.densitypreview.colour=000000 +machine.height=1097 diff --git a/libraries/controlP5/examples/controllers/ControlP5accordion/ControlP5accordion.pde b/libraries/controlP5/examples/controllers/ControlP5accordion/ControlP5accordion.pde new file mode 100644 index 0000000..81d395d --- /dev/null +++ b/libraries/controlP5/examples/controllers/ControlP5accordion/ControlP5accordion.pde @@ -0,0 +1,286 @@ +/** + * ControlP5 Accordion + * arrange controller groups in an accordion like style. + * + * find a list of public methods available for the Accordion Controller + * at the bottom of this sketch. In the example below 3 groups with controllers + * are created and added to an accordion controller. Furthermore several key + * combinations are mapped to control individual settings of the accordion. + * An accordion comes in 2 modes, Accordion.SINGLE and Accordion.MULTI where the + * latter allows to open multiple groups of an accordion and the SINGLE mode only + * allows 1 group to be opened at a time. + * + * by Andreas Schlegel, 2012 + * www.sojamo.de/libraries/controlp5 + * + */ + +import controlP5.*; + +ControlP5 cp5; + +Accordion accordion; + +color c = color(0, 160, 100); + +void setup() { + size(400, 600); + noStroke(); + smooth(); + gui(); +} + +void gui() { + + cp5 = new ControlP5(this); + + // group number 1, contains 2 bangs + Group g1 = cp5.addGroup("myGroup1") + .setBackgroundColor(color(0, 64)) + .setBackgroundHeight(150) + ; + + cp5.addBang("bang") + .setPosition(10,20) + .setSize(100,100) + .moveTo(g1) + .plugTo(this,"shuffle"); + ; + + // group number 2, contains a radiobutton + Group g2 = cp5.addGroup("myGroup2") + .setBackgroundColor(color(0, 64)) + .setBackgroundHeight(150) + ; + + cp5.addRadioButton("radio") + .setPosition(10,20) + .setItemWidth(20) + .setItemHeight(20) + .addItem("black", 0) + .addItem("red", 1) + .addItem("green", 2) + .addItem("blue", 3) + .addItem("grey", 4) + .setColorLabel(color(255)) + .activate(2) + .moveTo(g2) + ; + + // group number 3, contains a bang and a slider + Group g3 = cp5.addGroup("myGroup3") + .setBackgroundColor(color(0, 64)) + .setBackgroundHeight(150) + ; + + cp5.addBang("shuffle") + .setPosition(10,20) + .setSize(40,50) + .moveTo(g3) + ; + + cp5.addSlider("hello") + .setPosition(60,20) + .setSize(100,20) + .setRange(100,500) + .setValue(100) + .moveTo(g3) + ; + + cp5.addSlider("world") + .setPosition(60,50) + .setSize(100,20) + .setRange(100,500) + .setValue(200) + .moveTo(g3) + ; + + // create a new accordion + // add g1, g2, and g3 to the accordion. + accordion = cp5.addAccordion("acc") + .setPosition(40,40) + .setWidth(200) + .addItem(g1) + .addItem(g2) + .addItem(g3) + ; + + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.open(0,1,2);}}, 'o'); + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.close(0,1,2);}}, 'c'); + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.setWidth(300);}}, '1'); + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.setPosition(0,0);accordion.setItemHeight(190);}}, '2'); + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.setCollapseMode(ControlP5.ALL);}}, '3'); + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.setCollapseMode(ControlP5.SINGLE);}}, '4'); + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {cp5.remove("myGroup1");}}, '0'); + + accordion.open(0,1,2); + + // use Accordion.MULTI to allow multiple group + // to be open at a time. + accordion.setCollapseMode(Accordion.MULTI); + + // when in SINGLE mode, only 1 accordion + // group can be open at a time. + // accordion.setCollapseMode(Accordion.SINGLE); +} + + +void radio(int theC) { + switch(theC) { + case(0):c=color(0,200);break; + case(1):c=color(255,0,0,200);break; + case(2):c=color(0, 200, 140,200);break; + case(3):c=color(0, 128, 255,200);break; + case(4):c=color(50,128);break; + } +} + + +void shuffle() { + c = color(random(255),random(255),random(255),random(128,255)); +} + + +void draw() { + background(220); + + fill(c); + + float s1 = cp5.getController("hello").getValue(); + ellipse(200,400,s1,s1); + + float s2 = cp5.getController("world").getValue(); + ellipse(300,100,s2,s2); +} + + + + + +/* +a list of all methods available for the Accordion Controller +use ControlP5.printPublicMethodsFor(Accordion.class); +to print the following list into the console. + +You can find further details about class Accordion in the javadoc. + +Format: +ClassName : returnType methodName(parameter type) + + +controlP5.Accordion : Accordion addItem(ControlGroup) +controlP5.Accordion : Accordion close() +controlP5.Accordion : Accordion open() +controlP5.Accordion : Accordion remove(ControllerInterface) +controlP5.Accordion : Accordion removeItem(ControlGroup) +controlP5.Accordion : Accordion setCollapseMode(int) +controlP5.Accordion : Accordion setItemHeight(int) +controlP5.Accordion : Accordion setMinItemHeight(int) +controlP5.Accordion : Accordion setWidth(int) +controlP5.Accordion : Accordion updateItems() +controlP5.Accordion : int getItemHeight() +controlP5.Accordion : int getMinItemHeight() +controlP5.ControlGroup : Accordion activateEvent(boolean) +controlP5.ControlGroup : Accordion addListener(ControlListener) +controlP5.ControlGroup : Accordion removeListener(ControlListener) +controlP5.ControlGroup : Accordion setBackgroundColor(int) +controlP5.ControlGroup : Accordion setBackgroundHeight(int) +controlP5.ControlGroup : Accordion setBarHeight(int) +controlP5.ControlGroup : Accordion setSize(int, int) +controlP5.ControlGroup : Accordion updateInternalEvents(PApplet) +controlP5.ControlGroup : String getInfo() +controlP5.ControlGroup : String toString() +controlP5.ControlGroup : int getBackgroundHeight() +controlP5.ControlGroup : int getBarHeight() +controlP5.ControlGroup : int listenerSize() +controlP5.ControllerGroup : Accordion add(ControllerInterface) +controlP5.ControllerGroup : Accordion addListener(ControlListener) +controlP5.ControllerGroup : Accordion bringToFront() +controlP5.ControllerGroup : Accordion bringToFront(ControllerInterface) +controlP5.ControllerGroup : Accordion close() +controlP5.ControllerGroup : Accordion disableCollapse() +controlP5.ControllerGroup : Accordion enableCollapse() +controlP5.ControllerGroup : Accordion hide() +controlP5.ControllerGroup : Accordion hideArrow() +controlP5.ControllerGroup : Accordion hideBar() +controlP5.ControllerGroup : Accordion moveTo(ControlWindow) +controlP5.ControllerGroup : Accordion moveTo(PApplet) +controlP5.ControllerGroup : Accordion open() +controlP5.ControllerGroup : Accordion registerProperty(String) +controlP5.ControllerGroup : Accordion registerProperty(String, String) +controlP5.ControllerGroup : Accordion remove(CDrawable) +controlP5.ControllerGroup : Accordion remove(ControllerInterface) +controlP5.ControllerGroup : Accordion removeCanvas(Canvas) +controlP5.ControllerGroup : Accordion removeListener(ControlListener) +controlP5.ControllerGroup : Accordion removeProperty(String) +controlP5.ControllerGroup : Accordion removeProperty(String, String) +controlP5.ControllerGroup : Accordion setAddress(String) +controlP5.ControllerGroup : Accordion setArrayValue(float[]) +controlP5.ControllerGroup : Accordion setArrayValue(int, float) +controlP5.ControllerGroup : Accordion setCaptionLabel(String) +controlP5.ControllerGroup : Accordion setColor(CColor) +controlP5.ControllerGroup : Accordion setColorActive(int) +controlP5.ControllerGroup : Accordion setColorBackground(int) +controlP5.ControllerGroup : Accordion setColorForeground(int) +controlP5.ControllerGroup : Accordion setColorLabel(int) +controlP5.ControllerGroup : Accordion setColorValue(int) +controlP5.ControllerGroup : Accordion setHeight(int) +controlP5.ControllerGroup : Accordion setId(int) +controlP5.ControllerGroup : Accordion setLabel(String) +controlP5.ControllerGroup : Accordion setMouseOver(boolean) +controlP5.ControllerGroup : Accordion setMoveable(boolean) +controlP5.ControllerGroup : Accordion setOpen(boolean) +controlP5.ControllerGroup : Accordion setPosition(float, float) +controlP5.ControllerGroup : Accordion setPosition(float[]) +controlP5.ControllerGroup : Accordion setSize(int, int) +controlP5.ControllerGroup : Accordion setStringValue(String) +controlP5.ControllerGroup : Accordion setTitle(String) +controlP5.ControllerGroup : Accordion setUpdate(boolean) +controlP5.ControllerGroup : Accordion setValue(float) +controlP5.ControllerGroup : Accordion setVisible(boolean) +controlP5.ControllerGroup : Accordion setWidth(int) +controlP5.ControllerGroup : Accordion show() +controlP5.ControllerGroup : Accordion showArrow() +controlP5.ControllerGroup : Accordion showBar() +controlP5.ControllerGroup : Accordion update() +controlP5.ControllerGroup : Accordion updateAbsolutePosition() +controlP5.ControllerGroup : CColor getColor() +controlP5.ControllerGroup : Canvas addCanvas(Canvas) +controlP5.ControllerGroup : ControlWindow getWindow() +controlP5.ControllerGroup : Controller getController(String) +controlP5.ControllerGroup : ControllerProperty getProperty(String) +controlP5.ControllerGroup : ControllerProperty getProperty(String, String) +controlP5.ControllerGroup : Label getCaptionLabel() +controlP5.ControllerGroup : Label getValueLabel() +controlP5.ControllerGroup : String getAddress() +controlP5.ControllerGroup : String getInfo() +controlP5.ControllerGroup : String getName() +controlP5.ControllerGroup : String getStringValue() +controlP5.ControllerGroup : String toString() +controlP5.ControllerGroup : Tab getTab() +controlP5.ControllerGroup : boolean isBarVisible() +controlP5.ControllerGroup : boolean isCollapse() +controlP5.ControllerGroup : boolean isMouseOver() +controlP5.ControllerGroup : boolean isMoveable() +controlP5.ControllerGroup : boolean isOpen() +controlP5.ControllerGroup : boolean isUpdate() +controlP5.ControllerGroup : boolean isVisible() +controlP5.ControllerGroup : boolean setMousePressed(boolean) +controlP5.ControllerGroup : float getArrayValue(int) +controlP5.ControllerGroup : float getValue() +controlP5.ControllerGroup : float[] getArrayValue() +controlP5.ControllerGroup : float[] getPosition() +controlP5.ControllerGroup : int getHeight() +controlP5.ControllerGroup : int getId() +controlP5.ControllerGroup : int getWidth() +controlP5.ControllerGroup : int listenerSize() +controlP5.ControllerGroup : void controlEvent(ControlEvent) +controlP5.ControllerGroup : void remove() +java.lang.Object : String toString() +java.lang.Object : boolean equals(Object) + +created: 2015/03/24 12:25:32 + +*/ + + diff --git a/libraries/controlP5/examples/controllers/ControlP5background/ControlP5background.pde b/libraries/controlP5/examples/controllers/ControlP5background/ControlP5background.pde new file mode 100644 index 0000000..11a974c --- /dev/null +++ b/libraries/controlP5/examples/controllers/ControlP5background/ControlP5background.pde @@ -0,0 +1,188 @@ +/** +* ControlP5 Background +* +* +* find a list of public methods available for the Group Controller +* at the bottom of this sketch. +* +* by Andreas Schlegel, 2014 +* www.sojamo.de/libraries/controlp5 +* +*/ + +import controlP5.*; + +ControlP5 cp5; +int v1; +boolean lines = true; + +void setup() { + size(800, 400); + noStroke(); + cp5 = new ControlP5(this); + + cp5.begin(cp5.addBackground("abc")); + + cp5.addSlider("v1") + .setPosition(10, 20) + .setSize(200, 20) + .setRange(100, 300) + .setValue(250) + ; + + cp5.addToggle("lines") + .setPosition(10,50) + .setSize(80,20) + .setMode(Toggle.SWITCH) + ; + + cp5.end(); + +} + +void draw() { + background(200, 200, 200); + + pushMatrix(); + + pushMatrix(); + fill(255, 255, 0); + rect(v1, 100, 60, 200); + fill(0, 255, 110); + rect(40, v1, 320, 40); + translate(200, 200); + rotate(map(v1, 100, 300, -PI, PI)); + fill(255, 0, 128); + rect(0, 0, 100, 100); + popMatrix(); + + if(lines) { + translate(600, 100); + for (int i=0; i<20; i++) { + pushMatrix(); + fill(255); + translate(0, i*10); + rotate(map(v1+i, 0, 300, -PI, PI)); + rect(-150, 0, 300, 4); + popMatrix(); + } + } + + popMatrix(); +} + +/* +a list of all methods available for the Background Controller +use ControlP5.printPublicMethodsFor(Background.class); +to print the following list into the console. + +You can find further details about class Background in the javadoc. + +Format: +ClassName : returnType methodName(parameter type) + + +controlP5.ControlGroup : Background activateEvent(boolean) +controlP5.ControlGroup : Background addListener(ControlListener) +controlP5.ControlGroup : Background removeListener(ControlListener) +controlP5.ControlGroup : Background setBackgroundColor(int) +controlP5.ControlGroup : Background setBackgroundHeight(int) +controlP5.ControlGroup : Background setBarHeight(int) +controlP5.ControlGroup : Background setSize(int, int) +controlP5.ControlGroup : Background updateInternalEvents(PApplet) +controlP5.ControlGroup : String getInfo() +controlP5.ControlGroup : String toString() +controlP5.ControlGroup : int getBackgroundHeight() +controlP5.ControlGroup : int getBarHeight() +controlP5.ControlGroup : int listenerSize() +controlP5.ControllerGroup : Background add(ControllerInterface) +controlP5.ControllerGroup : Background addListener(ControlListener) +controlP5.ControllerGroup : Background bringToFront() +controlP5.ControllerGroup : Background bringToFront(ControllerInterface) +controlP5.ControllerGroup : Background close() +controlP5.ControllerGroup : Background disableCollapse() +controlP5.ControllerGroup : Background enableCollapse() +controlP5.ControllerGroup : Background hide() +controlP5.ControllerGroup : Background hideArrow() +controlP5.ControllerGroup : Background hideBar() +controlP5.ControllerGroup : Background moveTo(ControlWindow) +controlP5.ControllerGroup : Background moveTo(PApplet) +controlP5.ControllerGroup : Background open() +controlP5.ControllerGroup : Background registerProperty(String) +controlP5.ControllerGroup : Background registerProperty(String, String) +controlP5.ControllerGroup : Background remove(CDrawable) +controlP5.ControllerGroup : Background remove(ControllerInterface) +controlP5.ControllerGroup : Background removeCanvas(Canvas) +controlP5.ControllerGroup : Background removeListener(ControlListener) +controlP5.ControllerGroup : Background removeProperty(String) +controlP5.ControllerGroup : Background removeProperty(String, String) +controlP5.ControllerGroup : Background setAddress(String) +controlP5.ControllerGroup : Background setArrayValue(float[]) +controlP5.ControllerGroup : Background setArrayValue(int, float) +controlP5.ControllerGroup : Background setCaptionLabel(String) +controlP5.ControllerGroup : Background setColor(CColor) +controlP5.ControllerGroup : Background setColorActive(int) +controlP5.ControllerGroup : Background setColorBackground(int) +controlP5.ControllerGroup : Background setColorForeground(int) +controlP5.ControllerGroup : Background setColorLabel(int) +controlP5.ControllerGroup : Background setColorValue(int) +controlP5.ControllerGroup : Background setHeight(int) +controlP5.ControllerGroup : Background setId(int) +controlP5.ControllerGroup : Background setLabel(String) +controlP5.ControllerGroup : Background setMouseOver(boolean) +controlP5.ControllerGroup : Background setMoveable(boolean) +controlP5.ControllerGroup : Background setOpen(boolean) +controlP5.ControllerGroup : Background setPosition(float, float) +controlP5.ControllerGroup : Background setPosition(float[]) +controlP5.ControllerGroup : Background setSize(int, int) +controlP5.ControllerGroup : Background setStringValue(String) +controlP5.ControllerGroup : Background setTitle(String) +controlP5.ControllerGroup : Background setUpdate(boolean) +controlP5.ControllerGroup : Background setValue(float) +controlP5.ControllerGroup : Background setVisible(boolean) +controlP5.ControllerGroup : Background setWidth(int) +controlP5.ControllerGroup : Background show() +controlP5.ControllerGroup : Background showArrow() +controlP5.ControllerGroup : Background showBar() +controlP5.ControllerGroup : Background update() +controlP5.ControllerGroup : Background updateAbsolutePosition() +controlP5.ControllerGroup : CColor getColor() +controlP5.ControllerGroup : Canvas addCanvas(Canvas) +controlP5.ControllerGroup : ControlWindow getWindow() +controlP5.ControllerGroup : Controller getController(String) +controlP5.ControllerGroup : ControllerProperty getProperty(String) +controlP5.ControllerGroup : ControllerProperty getProperty(String, String) +controlP5.ControllerGroup : Label getCaptionLabel() +controlP5.ControllerGroup : Label getValueLabel() +controlP5.ControllerGroup : String getAddress() +controlP5.ControllerGroup : String getInfo() +controlP5.ControllerGroup : String getName() +controlP5.ControllerGroup : String getStringValue() +controlP5.ControllerGroup : String toString() +controlP5.ControllerGroup : Tab getTab() +controlP5.ControllerGroup : boolean isBarVisible() +controlP5.ControllerGroup : boolean isCollapse() +controlP5.ControllerGroup : boolean isMouseOver() +controlP5.ControllerGroup : boolean isMoveable() +controlP5.ControllerGroup : boolean isOpen() +controlP5.ControllerGroup : boolean isUpdate() +controlP5.ControllerGroup : boolean isVisible() +controlP5.ControllerGroup : boolean setMousePressed(boolean) +controlP5.ControllerGroup : float getArrayValue(int) +controlP5.ControllerGroup : float getValue() +controlP5.ControllerGroup : float[] getArrayValue() +controlP5.ControllerGroup : float[] getPosition() +controlP5.ControllerGroup : int getHeight() +controlP5.ControllerGroup : int getId() +controlP5.ControllerGroup : int getWidth() +controlP5.ControllerGroup : int listenerSize() +controlP5.ControllerGroup : void controlEvent(ControlEvent) +controlP5.ControllerGroup : void remove() +java.lang.Object : String toString() +java.lang.Object : boolean equals(Object) + +created: 2015/03/24 12:25:35 + +*/ + + diff --git a/libraries/controlP5/examples/controllers/ControlP5background/sketch.properties b/libraries/controlP5/examples/controllers/ControlP5background/sketch.properties new file mode 100644 index 0000000..8630fa2 --- /dev/null +++ b/libraries/controlP5/examples/controllers/ControlP5background/sketch.properties @@ -0,0 +1,2 @@ +mode.id=processing.mode.java.JavaMode +mode=Java diff --git a/libraries/controlP5/examples/controllers/ControlP5bang/ControlP5bang.pde b/libraries/controlP5/examples/controllers/ControlP5bang/ControlP5bang.pde new file mode 100644 index 0000000..c84e786 --- /dev/null +++ b/libraries/controlP5/examples/controllers/ControlP5bang/ControlP5bang.pde @@ -0,0 +1,231 @@ +/** + * ControlP5 Bang + * A bang triggers an event that can be received by a function named after the bang. + * By default a bang is triggered when pressed, this can be changed to 'release' + * using theBang.setTriggerEvent(Bang.RELEASE). + * + * find a list of public methods available for the Bang 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); + +color[] col = new color[] { + color(100), color(150), color(200), color(250) +}; + + +void setup() { + size(400, 600); + noStroke(); + cp5 = new ControlP5(this); + for (int i=0;i presets = new ArrayList(); + int currentPreset = 0; + Thread update; + + CustomMatrix(ControlP5 cp5, String theName) { + super(cp5, theName); + stop(); // stop the default sequencer and + // create our custom sequencer thread. Here we + // check if the sequencer has reached the end and if so + // we updated to the next preset. + update = new Thread(theName) { + public void run( ) { + while ( true ) { + cnt++; + cnt %= _myCellX; + if (cnt==0) { + // we reached the end and go back to start and + // update the preset + next(); + } + trigger(cnt); + try { + sleep( _myInterval ); + } + catch ( InterruptedException e ) { + } + } + } + }; + update.start(); + } + + + void next() { + currentPreset++; + currentPreset %= presets.size(); + setCells(presets.get(currentPreset)); + } + + // initialize some random presets. + void initPresets() { + for (int i=0;i<4;i++) { + presets.add(createPreset(_myCellX, _myCellY)); + } + setCells(presets.get(0)); + } + + // create a random preset + int[][] createPreset(int theX, int theY) { + int[][] preset = new int[theX][theY]; + for (int x=0;x0.5 ? 1:0; + } + } + return preset; + } + +} + diff --git a/libraries/controlP5/examples/experimental/ControlP5MenuList/ControlP5MenuList.pde b/libraries/controlP5/examples/experimental/ControlP5MenuList/ControlP5MenuList.pde new file mode 100644 index 0000000..651c1e2 --- /dev/null +++ b/libraries/controlP5/examples/experimental/ControlP5MenuList/ControlP5MenuList.pde @@ -0,0 +1,187 @@ + +/** + * ControlP5 MenuList + * + * A custom Controller, a scrollable Menu List, using a PGraphics buffer. + * Allows custom designs for List Item. + * + * by Andreas Schlegel, 2013 + * www.sojamo.de/libraries/controlp5 + * + */ + +import controlP5.*; +import static controlP5.ControlP5.*; +import java.util.*; +import java.util.Map.Entry; + + +ControlP5 cp5; + +PFont f1, f2; +void setup() { + size(800, 500, P3D ); + f1 = createFont("Helvetica", 20); + f2 = createFont("Helvetica", 12); + + cp5 = new ControlP5( this ); + + + /* create a custom MenuList with name menu, notice that function + * menu will be called when a menu item has been clicked. + */ + MenuList m = new MenuList( cp5, "menu", 200, 368 ); + + m.setPosition(40, 40); + // add some items to our menuList + for (int i=0;i<100;i++) { + m.addItem(makeItem("headline-"+i, "subline", "some copy lorem ipsum ", createImage(50, 50, RGB))); + } +} + +/* a convenience function to build a map that contains our key-value pairs which we will + * then use to render each item of the menuList. + */ +Map makeItem(String theHeadline, String theSubline, String theCopy, PImage theImage) { + Map m = new HashMap(); + m.put("headline", theHeadline); + m.put("subline", theSubline); + m.put("copy", theCopy); + m.put("image", theImage); + return m; +} + +void menu(int i) { + println("got some menu event from item with index "+i); +} + +public void controlEvent(ControlEvent theEvent) { + if(theEvent.isFrom("menu")){ + Map m = ((MenuList)theEvent.getController()).getItem(int(theEvent.getValue())); + println("got a menu event from item : "+m); + } +} + +void draw() { + background( 40 ); +} + + +/* A custom Controller that implements a scrollable menuList. Here the controller + * uses a PGraphics element to render customizable list items. The menuList can be scrolled + * using the scroll-wheel, touchpad, or mouse-drag. Items are triggered by a click. clicking + * the scrollbar to the right makes the list scroll to the item correspoinding to the + * click-location. + */ +class MenuList extends Controller { + + float pos, npos; + int itemHeight = 100; + int scrollerLength = 40; + List< Map> items = new ArrayList< Map>(); + PGraphics menu; + boolean updateMenu; + + MenuList(ControlP5 c, String theName, int theWidth, int theHeight) { + super( c, theName, 0, 0, theWidth, theHeight ); + c.register( this ); + menu = createGraphics(getWidth(), getHeight() ); + + setView(new ControllerView() { + + public void display(PGraphics pg, MenuList t ) { + if (updateMenu) { + updateMenu(); + } + if (inside() ) { + menu.beginDraw(); + int len = -(itemHeight * items.size()) + getHeight(); + int ty = int(map(pos, len, 0, getHeight() - scrollerLength - 2, 2 ) ); + menu.fill(255 ); + menu.rect(getWidth()-4, ty, 4, scrollerLength ); + menu.endDraw(); + } + pg.image(menu, 0, 0); + } + } + ); + updateMenu(); + } + + /* only update the image buffer when necessary - to save some resources */ + void updateMenu() { + int len = -(itemHeight * items.size()) + getHeight(); + npos = constrain(npos, len, 0); + pos += (npos - pos) * 0.1; + menu.beginDraw(); + menu.noStroke(); + menu.background(255, 64 ); + menu.textFont(cp5.getFont().getFont()); + menu.pushMatrix(); + menu.translate( 0, pos ); + menu.pushMatrix(); + + int i0 = PApplet.max( 0, int(map(-pos, 0, itemHeight * items.size(), 0, items.size()))); + int range = ceil((float(getHeight())/float(itemHeight))+1); + int i1 = PApplet.min( items.size(), i0 + range ); + + menu.translate(0, i0*itemHeight); + + for (int i=i0;i0.01 ? true:false; + } + + /* when detecting a click, check if the click happend to the far right, if yes, scroll to that position, + * otherwise do whatever this item of the list is supposed to do. + */ + public void onClick() { + if (getPointer().x()>getWidth()-10) { + npos= -map(getPointer().y(), 0, getHeight(), 0, items.size()*itemHeight); + updateMenu = true; + } + else { + int len = itemHeight * items.size(); + int index = int( map( getPointer().y() - pos, 0, len, 0, items.size() ) ) ; + setValue(index); + } + } + + public void onMove() { + } + + public void onDrag() { + npos += getPointer().dy() * 2; + updateMenu = true; + } + + public void onScroll(int n) { + npos += ( n * 4 ); + updateMenu = true; + } + + void addItem(Map m) { + items.add(m); + updateMenu = true; + } + + Map getItem(int theIndex) { + return items.get(theIndex); + } +} + diff --git a/libraries/controlP5/examples/experimental/ControlP5SliderList/ControlP5SliderList.pde b/libraries/controlP5/examples/experimental/ControlP5SliderList/ControlP5SliderList.pde new file mode 100644 index 0000000..88b7536 --- /dev/null +++ b/libraries/controlP5/examples/experimental/ControlP5SliderList/ControlP5SliderList.pde @@ -0,0 +1,257 @@ + +/** + * ControlP5 SilderList + * + * A custom Controller, a scrollable Menu List, using a PGraphics buffer. + * Allows custom designs for List Item. + * + * you will need a controlP5 version >= 2.1.5 + * you can download a copy from + * http://sojamo.de/files/archive/controlP5-2.1.5.zip + * + * by Andreas Schlegel, 2013 + * www.sojamo.de/libraries/controlp5 + * + */ + +import controlP5.*; +import java.util.*; + + +ControlP5 cp5; + +PFont f1; +int NUM = 100; +float[] rotation = new float[NUM]; + + +void setup() { + size(800, 400 ,P3D); + f1 = createFont("Helvetica", 12); + + cp5 = new ControlP5( this ); + + + // create a custom SilderList with name menu, notice that function + // menu will be called when a menu item has been clicked. + + SilderList m = new SilderList( cp5, "menu", 250, 350 ); + + m.setPosition(40, 20); + // add some items to our SilderList + for (int i=0;i makeItem(String theLabel, float theValue, float theMin, float theMax) { + Map m = new HashMap(); + m.put("label", theLabel); + m.put("sliderValue", theValue); + m.put("sliderValueMin", theMin); + m.put("sliderValueMax", theMax); + return m; +} + +void menu(int i) { + println("got some slider-list event from item with index "+i); +} + +public void controlEvent(ControlEvent theEvent) { + if (theEvent.isFrom("menu")) { + int index = int(theEvent.getValue()); + Map m = ((SilderList)theEvent.getController()).getItem(index); + println("got a slider event from item : "+m); + rotation[index] = f(m.get("sliderValue")); + } +} + +void draw() { + background( 220 ); + fill(0, 128, 255); + noStroke(); + pushMatrix(); + translate(width/2, 30 ); + for (int i=0;i { + + float pos, npos; + int itemHeight = 60; + int scrollerLength = 40; + int sliderWidth = 150; + int sliderHeight = 15; + int sliderX = 10; + int sliderY = 25; + + int dragMode = 0; + int dragIndex = -1; + + List< Map> items = new ArrayList< Map>(); + PGraphics menu; + boolean updateMenu; + + SilderList(ControlP5 c, String theName, int theWidth, int theHeight) { + super( c, theName, 0, 0, theWidth, theHeight ); + c.register( this ); + menu = createGraphics(getWidth(), getHeight()); + + setView(new ControllerView() { + + public void display(PGraphics pg, SilderList t ) { + if (updateMenu) { + updateMenu(); + } + if (inside() ) { // draw scrollbar + menu.beginDraw(); + int len = -(itemHeight * items.size()) + getHeight(); + int ty = int(map(pos, len, 0, getHeight() - scrollerLength - 2, 2 ) ); + menu.fill( 128 ); + menu.rect(getWidth()-6, ty, 4, scrollerLength ); + menu.endDraw(); + } + pg.image(menu, 0, 0); + } + } + ); + updateMenu(); + } + + // only update the image buffer when necessary - to save some resources + void updateMenu() { + int len = -(itemHeight * items.size()) + getHeight(); + npos = constrain(npos, len, 0); + pos += (npos - pos) * 0.1; + + /// draw the SliderList + menu.beginDraw(); + menu.noStroke(); + menu.background(240); + menu.textFont(cp5.getFont().getFont()); + menu.pushMatrix(); + menu.translate( 0, int(pos) ); + menu.pushMatrix(); + + int i0 = PApplet.max( 0, int(map(-pos, 0, itemHeight * items.size(), 0, items.size()))); + int range = ceil((float(getHeight())/float(itemHeight))+1); + int i1 = PApplet.min( items.size(), i0 + range ); + + menu.translate(0, i0*itemHeight); + + for (int i=i0;i0.01 ? true:false; + } + + // when detecting a click, check if the click happend to the far right, + // if yes, scroll to that position, otherwise do whatever this item of + // the list is supposed to do. + public void onClick() { + if (getPointer().x()>getWidth()-10) { + npos= -map(getPointer().y(), 0, getHeight(), 0, items.size()*itemHeight); + updateMenu = true; + } + } + + + public void onPress() { + int x = getPointer().x(); + int y = (int)(getPointer().y()-pos)%itemHeight; + boolean withinSlider = within(x, y, sliderX, sliderY, sliderWidth, sliderHeight); + dragMode = withinSlider ? 2:1; + if (dragMode==2) { + dragIndex = getIndex(); + float min = f(items.get(dragIndex).get("sliderValueMin")); + float max = f(items.get(dragIndex).get("sliderValueMax")); + float val = constrain(map(getPointer().x()-sliderX, 0, sliderWidth, min, max), min, max); + items.get(dragIndex).put("sliderValue", val); + setValue(dragIndex); + } + updateMenu = true; + } + + public void onDrag() { + switch(dragMode) { + case(1): // drag and scroll the list + npos += getPointer().dy() * 2; + updateMenu = true; + break; + case(2): // drag slider + float min = f(items.get(dragIndex).get("sliderValueMin")); + float max = f(items.get(dragIndex).get("sliderValueMax")); + float val = constrain(map(getPointer().x()-sliderX, 0, sliderWidth, min, max), min, max); + items.get(dragIndex).put("sliderValue", val); + setValue(dragIndex); + updateMenu = true; + break; + } + } + + public void onScroll(int n) { + npos += ( n * 4 ); + updateMenu = true; + } + + void addItem(Map m) { + items.add(m); + updateMenu = true; + } + + Map getItem(int theIndex) { + return items.get(theIndex); + } + + private int getIndex() { + int len = itemHeight * items.size(); + int index = int( map( getPointer().y() - pos, 0, len, 0, items.size() ) ) ; + return index; + } +} + +public static float f( Object o ) { + return ( o instanceof Number ) ? ( ( Number ) o ).floatValue( ) : Float.MIN_VALUE; +} + +public static boolean within(int theX, int theY, int theX1, int theY1, int theW1, int theH1) { + return (theX>theX1 && theXtheY1 && theY midimapper = new HashMap(); + +void setup() { + + size( 600, 400 ); + + cp5 = new ControlP5( this ); + + cp5.begin(cp5.addTab("a")); + cp5.addSlider("a-1").setPosition(20, 120).setSize(200, 20); + cp5.addSlider("a-2").setPosition(20, 160).setSize(200, 20); + cp5.addSlider("a-3").setPosition(20, 200).setSize(200, 20); + cp5.addToggle("a-4").setPosition(280, 120).setSize(100, 20); + cp5.addButton("a-5").setPosition(280, 160).setSize(100, 20); + cp5.addBang("a-6").setPosition(280, 200).setSize(100, 20); + cp5.end(); + + cp5.begin(cp5.addTab("b")); + cp5.addSlider("b-1").setPosition(20, 120).setSize(200, 20); + cp5.addSlider("b-2").setPosition(20, 160).setSize(200, 20); + cp5.addSlider("b-3").setPosition(20, 200).setSize(200, 20); + cp5.end(); + + final String device = "SLIDER/KNOB"; + + //midimapper.clear(); + + midimapper.put( ref( device, 0 ), "a-1" ); + midimapper.put( ref( device, 1 ), "a-2" ); + midimapper.put( ref( device, 2 ), "a-3" ); + midimapper.put( ref( device, 32 ), "a-4" ); + midimapper.put( ref( device, 48 ), "a-5" ); + midimapper.put( ref( device, 64 ), "a-6" ); + + midimapper.put( ref( device, 16 ), "b-1" ); + midimapper.put( ref( device, 17 ), "b-2" ); + midimapper.put( ref( device, 18 ), "b-3" ); + + boolean DEBUG = false; + + if (DEBUG) { + new MidiSimple( device ); + } + else { + new MidiSimple( device , new Receiver() { + + @Override public void send( MidiMessage msg, long timeStamp ) { + + byte[] b = msg.getMessage(); + + if ( b[ 0 ] != -48 ) { + + Object index = ( midimapper.get( ref( device , b[ 1 ] ) ) ); + + if ( index != null ) { + + Controller c = cp5.getController(index.toString()); + if (c instanceof Slider ) { + float min = c.getMin(); + float max = c.getMax(); + c.setValue(map(b[ 2 ], 0, 127, min, max) ); + } else if ( c instanceof Button ) { + if ( b[ 2 ] > 0 ) { + c.setValue( c.getValue( ) ); + c.setColorBackground( 0xff08a2cf ); + } else { + c.setColorBackground( 0xff003652 ); + } + } else if ( c instanceof Bang ) { + if ( b[ 2 ] > 0 ) { + c.setValue( c.getValue( ) ); + c.setColorForeground( 0xff08a2cf ); + } else { + c.setColorForeground( 0xff00698c ); + } + } else if ( c instanceof Toggle ) { + if ( b[ 2 ] > 0 ) { + ( ( Toggle ) c ).toggle( ); + } + } + } + } + } + + @Override public void close( ) { + } + } + ); + } +} + + +String ref(String theDevice, int theIndex) { + return theDevice+"-"+theIndex; +} + + +void draw() { + background( 0 ); +} + + diff --git a/libraries/controlP5/examples/experimental/MidiMapper/MidiSimple.java b/libraries/controlP5/examples/experimental/MidiMapper/MidiSimple.java new file mode 100644 index 0000000..f23252f --- /dev/null +++ b/libraries/controlP5/examples/experimental/MidiMapper/MidiSimple.java @@ -0,0 +1,107 @@ +import java.util.HashMap; +import java.util.Map; + +import javax.sound.midi.MidiDevice; +import javax.sound.midi.MidiMessage; +import javax.sound.midi.MidiSystem; +import javax.sound.midi.MidiUnavailableException; +import javax.sound.midi.Receiver; +import javax.sound.midi.Transmitter; + +public class MidiSimple { + + public MidiSimple( String theDeviceName , Receiver theReceiver ) { + + MidiDevice.Info[] aInfos = MidiSystem.getMidiDeviceInfo(); + for ( int i = 0; i < aInfos.length; i++ ) { + try { + MidiDevice device = MidiSystem.getMidiDevice( aInfos[ i ] ); + boolean bAllowsInput = ( device.getMaxTransmitters() != 0 ); + boolean bAllowsOutput = ( device.getMaxReceivers() != 0 ); + System.out.println( "" + i + " " + ( bAllowsInput ? "IN " : " " ) + ( bAllowsOutput ? "OUT " : " " ) + aInfos[ i ].getName() + ", " + aInfos[ i ].getVendor() + ", " + + aInfos[ i ].getVersion() + ", " + aInfos[ i ].getDescription() ); + } + catch ( MidiUnavailableException e ) { + // device is obviously not available... + // out(e); + } + } + + try { + MidiDevice device; + device = MidiSystem.getMidiDevice( getMidiDeviceInfo( theDeviceName, false ) ); + device.open(); + Transmitter conTrans = device.getTransmitter(); + conTrans.setReceiver( theReceiver ); + } + catch ( MidiUnavailableException e ) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (NullPointerException e) { + System.out.println("No Midi device ( "+theDeviceName+" ) is available."); + } + + } + + public MidiSimple( String theDeviceName ) { + new MidiSimple(theDeviceName , new MidiInputReceiver( theDeviceName ) ); + } + + + public MidiDevice.Info getMidiDeviceInfo( String strDeviceName, boolean bForOutput ) { + MidiDevice.Info[] aInfos = MidiSystem.getMidiDeviceInfo(); + for ( int i = 0; i < aInfos.length; i++ ) { + if ( aInfos[ i ].getName().equals( strDeviceName ) ) { + try { + MidiDevice device = MidiSystem.getMidiDevice( aInfos[ i ] ); + boolean bAllowsInput = ( device.getMaxTransmitters() != 0 ); + boolean bAllowsOutput = ( device.getMaxReceivers() != 0 ); + if ( ( bAllowsOutput && bForOutput ) || ( bAllowsInput && !bForOutput ) ) { + return aInfos[ i ]; + } + } + catch ( MidiUnavailableException e ) { + // TODO: + } + } + } + return null; + } + + class MidiInputReceiver implements Receiver { + public String name; + Map< Byte, String > commandMap = new HashMap< Byte, String >(); + + public MidiInputReceiver( String name ) { + this.name = name; + commandMap.put( ( byte ) -112, "Note On" ); + commandMap.put( ( byte ) -128, "Note Off" ); + commandMap.put( ( byte ) -48, "Channel Pressure" ); + commandMap.put( ( byte ) -80, "Continuous Controller" ); + } + + public void send( MidiMessage msg, long timeStamp ) { + System.out.println( "midi received (" + name + ")" ); + System.out.println( "Timestamp: " + timeStamp ); + byte[] b = msg.getMessage(); + + if ( b[ 0 ] != -48 ) { + // System.out.println("Message length: " + msg.getLength()); + System.out.println( "Note command: " + commandMap.get( b[ 0 ] ) ); + System.out.println( "Which note: " + b[ 1 ] ); + System.out.println( "Note pressure: " + b[ 2 ] ); + System.out.println( "---------------------" ); + } + else { + // System.out.println("Message length: " + msg.getLength()); + System.out.println( "Note command: " + commandMap.get( b[ 0 ] ) ); + System.out.println( "Note Pressure: " + b[ 1 ] ); + System.out.println( "---------------------" ); + } + } + + public void close( ) { + } + } +} + diff --git a/libraries/controlP5/examples/extra/ControlP5AutoDetectFields/ControlP5AutoDetectFields.pde b/libraries/controlP5/examples/extra/ControlP5AutoDetectFields/ControlP5AutoDetectFields.pde new file mode 100644 index 0000000..bd405bb --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5AutoDetectFields/ControlP5AutoDetectFields.pde @@ -0,0 +1,58 @@ +/** + * ControlP5 Autodetect Fields + * + * test sketch, controller values will automatically be set + * to its corresponding sketch fields. + * + * by Andreas Schlegel, 2011 + * www.sojamo.de/libraries/controlp5 + * + */ + + +import controlP5.*; + +int s1 = 50; +int s2 = 50; + +int nb1 = 50; +int nb2 = 50; + +int k1 = 50; +int k2 = 50; + +boolean t1 = false; +boolean t2 = false; + +int r1 = 20; +int r2 = 50; + +void setup() { + size(400,400); + ControlP5 cp5 = new ControlP5(this); + cp5.addSlider("s1",10,150,10,10,100,15).setLabel("50"); + cp5.addSlider("s2",10,150,20,150,10,100,15).setLabel("20"); + + cp5.addNumberbox("nb1",10,50,100,15).setLabel("50"); + cp5.addNumberbox("nb2",20,150,50,100,15).setLabel("20"); + + cp5.addKnob("k1",10,150,10,150,50).setLabel("50"); + cp5.addKnob("k2",10,150,20,150,150,50).setLabel("20"); + + cp5.addToggle("t1",10,240,100,15).setLabel("false"); + cp5.addToggle("t2",true,150,240,100,15).setLabel("true"); + + cp5.addButton("b1",50,10,280,100,15).setLabel("50"); + cp5.addButton("b2",20,150,280,100,15).setLabel("20"); + + cp5.addRange("r1",10,150,r1,r2,10,320,100,15).setLabel("50"); + +} + +void draw() { + background(0); +} + +void controlEvent(ControlEvent c) { + println(c.getValue()); +} diff --git a/libraries/controlP5/examples/extra/ControlP5ControllerInsideClass/ControlP5ControllerInsideClass.pde b/libraries/controlP5/examples/extra/ControlP5ControllerInsideClass/ControlP5ControllerInsideClass.pde new file mode 100644 index 0000000..8590f82 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5ControllerInsideClass/ControlP5ControllerInsideClass.pde @@ -0,0 +1,33 @@ +import controlP5.*; + +ControlP5 cp5; +Test t; +void setup() { + size(400,400); + cp5 = new ControlP5( this ); + t = new Test( "test" ); +} + +void draw() { + background(20); + println( t.value ); +} + +class Test { + + int value; + + Test( String thePrefix ) { + cp5.addSlider( "value-"+thePrefix ) + .setRange( 0, 255 ) + .plugTo( this, "setValue" ) + .setValue( 127 ) + .setLabel("value") + ; + } + + void setValue(int theValue) { + value = theValue; + } +} + diff --git a/libraries/controlP5/examples/extra/ControlP5canvasDrawIntoCanvas/ControlP5canvasDrawIntoCanvas.pde b/libraries/controlP5/examples/extra/ControlP5canvasDrawIntoCanvas/ControlP5canvasDrawIntoCanvas.pde new file mode 100644 index 0000000..5b9f962 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5canvasDrawIntoCanvas/ControlP5canvasDrawIntoCanvas.pde @@ -0,0 +1,72 @@ +/** + * ControlP5 DrawIntoCanvas + * + * this example demonstrates how to draw into a Canvas. + * Click and drag the mouse to show and draw into the Canvas. + * + * by Andreas Schlegel, 2011 + * www.sojamo.de/libraries/controlp5 + * + */ + +import controlP5.*; + +ControlP5 cp5; + +Canvas cc; + +// your controlWindowCanvas class +class MyCanvas extends Canvas { + + boolean mousePressed; + int mouseX, mouseY; + public void update(PApplet theApplet) { + mousePressed = theApplet.mousePressed; + mouseX = theApplet.mouseX; + mouseY = theApplet.mouseY; + } + + public void draw(PGraphics theApplet) { + theApplet.background(255); + // a rectangle will be drawn if the mouse has been + // pressed inside the main sketch window. + // mousePressed here refers to the mousePressed + // variable of your main sketch + if(mousePressed) { + theApplet.fill(255,0,0); + theApplet.rect(10,10,100,100); + theApplet.fill(0); + theApplet.ellipse(mouseX,mouseY,20,20); + } + // will draw a rectangle into the controlWindow + // if the mouse has been pressed inside the controlWindow itself. + // theApplet.mousePressed here refers to the + // mousePressed variable of the controlWindow. + if(mousePressed) { + theApplet.fill(0); + theApplet.rect(10,10,100,100); + theApplet.fill(255,0,0); + theApplet.ellipse(mouseX,mouseY,20,20); + } + + } + +} + + +void setup() { + size(400,400); + frameRate(30); + cp5 = new ControlP5(this); + + cc = new MyCanvas(); + cc.pre(); + cp5.addCanvas(cc); + +} + +void draw(){ + background(0); +} + + diff --git a/libraries/controlP5/examples/extra/ControlP5chartsCombined/ControlP5chartsCombined.pde b/libraries/controlP5/examples/extra/ControlP5chartsCombined/ControlP5chartsCombined.pde new file mode 100644 index 0000000..d8a0e79 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5chartsCombined/ControlP5chartsCombined.pde @@ -0,0 +1,252 @@ +/** +* ControlP5 ControlP5chartsCombined +* +* find a list of public methods available for the Chart Controller +* at the bottom of this sketch. +* +* by Andreas Schlegel, 2012 +* www.sojamo.de/libraries/controlp5 +* +*/ + + +import controlP5.*; + +ControlP5 cp5; + +Chart myChart; + +void setup() { + size(400, 700); + smooth(); + cp5 = new ControlP5(this); + cp5.printPublicMethodsFor(Chart.class); + myChart = cp5.addChart("hello") + .setPosition(50, 50) + .setSize(200, 200) + .setRange(-20, 20) + .setView(Chart.BAR) // use Chart.LINE, Chart.PIE, Chart.AREA, Chart.BAR_CENTERED + ; + + myChart.getColor().setBackground(color(255, 100)); + + + myChart.addDataSet("world"); + myChart.setColors("world", color(255,0,255),color(255,0,0)); + myChart.setData("world", new float[4]); + + myChart.setStrokeWeight(1.5); + + myChart.addDataSet("earth"); + myChart.setColors("earth", color(255), color(0, 255, 0)); + myChart.updateData("earth", 1, 2, 10, 3); + +} + + +void draw() { + background(0); + // unshift: add data from left to right (first in) + myChart.unshift("world", (sin(frameCount*0.01)*10)); + + // push: add data from right to left (last in) + myChart.push("earth", (sin(frameCount*0.1)*10)); +} + + + + + + + +/* +a list of all methods available for the Chart Controller +use ControlP5.printPublicMethodsFor(Chart.class); +to print the following list into the console. + +You can find further details about class Chart in the javadoc. + +Format: +ClassName : returnType methodName(parameter type) + + +controlP5.Chart : Chart addData(ChartData) +controlP5.Chart : Chart addData(ChartDataSet, float) +controlP5.Chart : Chart addData(String, ChartData) +controlP5.Chart : Chart addData(String, float) +controlP5.Chart : Chart addData(float) +controlP5.Chart : Chart addDataSet(String) +controlP5.Chart : Chart addFirst(String, float) +controlP5.Chart : Chart addFirst(float) +controlP5.Chart : Chart addLast(String, float) +controlP5.Chart : Chart addLast(float) +controlP5.Chart : Chart push(String, float) +controlP5.Chart : Chart push(float) +controlP5.Chart : Chart removeData(ChartData) +controlP5.Chart : Chart removeData(String, ChartData) +controlP5.Chart : Chart removeData(String, int) +controlP5.Chart : Chart removeData(int) +controlP5.Chart : Chart removeDataSet(String) +controlP5.Chart : Chart removeFirst() +controlP5.Chart : Chart removeFirst(String) +controlP5.Chart : Chart removeLast() +controlP5.Chart : Chart removeLast(String) +controlP5.Chart : Chart setData(String, int, ChartData) +controlP5.Chart : Chart setData(int, ChartData) +controlP5.Chart : Chart setDataSet(ChartDataSet) +controlP5.Chart : Chart setDataSet(String, ChartDataSet) +controlP5.Chart : Chart setRange(float, float) +controlP5.Chart : Chart setResolution(int) +controlP5.Chart : Chart setStrokeWeight(float) +controlP5.Chart : Chart setValue(float) +controlP5.Chart : Chart setView(int) +controlP5.Chart : Chart unshift(String, float) +controlP5.Chart : Chart unshift(float) +controlP5.Chart : ChartData getData(String, int) +controlP5.Chart : ChartDataSet getDataSet(String) +controlP5.Chart : LinkedHashMap getDataSet() +controlP5.Chart : String getInfo() +controlP5.Chart : String toString() +controlP5.Chart : float getStrokeWeight() +controlP5.Chart : float[] getValuesFrom(String) +controlP5.Chart : int getResolution() +controlP5.Chart : int size() +controlP5.Chart : void onEnter() +controlP5.Chart : void onLeave() +controlP5.Controller : CColor getColor() +controlP5.Controller : Chart addCallback(CallbackListener) +controlP5.Controller : Chart addListener(ControlListener) +controlP5.Controller : Chart addListenerFor(int, CallbackListener) +controlP5.Controller : Chart align(int, int, int, int) +controlP5.Controller : Chart bringToFront() +controlP5.Controller : Chart bringToFront(ControllerInterface) +controlP5.Controller : Chart hide() +controlP5.Controller : Chart linebreak() +controlP5.Controller : Chart listen(boolean) +controlP5.Controller : Chart lock() +controlP5.Controller : Chart onChange(CallbackListener) +controlP5.Controller : Chart onClick(CallbackListener) +controlP5.Controller : Chart onDoublePress(CallbackListener) +controlP5.Controller : Chart onDrag(CallbackListener) +controlP5.Controller : Chart onDraw(ControllerView) +controlP5.Controller : Chart onEndDrag(CallbackListener) +controlP5.Controller : Chart onEnter(CallbackListener) +controlP5.Controller : Chart onLeave(CallbackListener) +controlP5.Controller : Chart onMove(CallbackListener) +controlP5.Controller : Chart onPress(CallbackListener) +controlP5.Controller : Chart onRelease(CallbackListener) +controlP5.Controller : Chart onReleaseOutside(CallbackListener) +controlP5.Controller : Chart onStartDrag(CallbackListener) +controlP5.Controller : Chart onWheel(CallbackListener) +controlP5.Controller : Chart plugTo(Object) +controlP5.Controller : Chart plugTo(Object, String) +controlP5.Controller : Chart plugTo(Object[]) +controlP5.Controller : Chart plugTo(Object[], String) +controlP5.Controller : Chart registerProperty(String) +controlP5.Controller : Chart registerProperty(String, String) +controlP5.Controller : Chart registerTooltip(String) +controlP5.Controller : Chart removeBehavior() +controlP5.Controller : Chart removeCallback() +controlP5.Controller : Chart removeCallback(CallbackListener) +controlP5.Controller : Chart removeListener(ControlListener) +controlP5.Controller : Chart removeListenerFor(int, CallbackListener) +controlP5.Controller : Chart removeListenersFor(int) +controlP5.Controller : Chart removeProperty(String) +controlP5.Controller : Chart removeProperty(String, String) +controlP5.Controller : Chart setArrayValue(float[]) +controlP5.Controller : Chart setArrayValue(int, float) +controlP5.Controller : Chart setBehavior(ControlBehavior) +controlP5.Controller : Chart setBroadcast(boolean) +controlP5.Controller : Chart setCaptionLabel(String) +controlP5.Controller : Chart setColor(CColor) +controlP5.Controller : Chart setColorActive(int) +controlP5.Controller : Chart setColorBackground(int) +controlP5.Controller : Chart setColorCaptionLabel(int) +controlP5.Controller : Chart setColorForeground(int) +controlP5.Controller : Chart setColorLabel(int) +controlP5.Controller : Chart setColorValue(int) +controlP5.Controller : Chart setColorValueLabel(int) +controlP5.Controller : Chart setDecimalPrecision(int) +controlP5.Controller : Chart setDefaultValue(float) +controlP5.Controller : Chart setHeight(int) +controlP5.Controller : Chart setId(int) +controlP5.Controller : Chart setImage(PImage) +controlP5.Controller : Chart setImage(PImage, int) +controlP5.Controller : Chart setImages(PImage, PImage, PImage) +controlP5.Controller : Chart setImages(PImage, PImage, PImage, PImage) +controlP5.Controller : Chart setLabel(String) +controlP5.Controller : Chart setLabelVisible(boolean) +controlP5.Controller : Chart setLock(boolean) +controlP5.Controller : Chart setMax(float) +controlP5.Controller : Chart setMin(float) +controlP5.Controller : Chart setMouseOver(boolean) +controlP5.Controller : Chart setMoveable(boolean) +controlP5.Controller : Chart setPosition(float, float) +controlP5.Controller : Chart setPosition(float[]) +controlP5.Controller : Chart setSize(PImage) +controlP5.Controller : Chart setSize(int, int) +controlP5.Controller : Chart setStringValue(String) +controlP5.Controller : Chart setUpdate(boolean) +controlP5.Controller : Chart setValue(float) +controlP5.Controller : Chart setValueLabel(String) +controlP5.Controller : Chart setValueSelf(float) +controlP5.Controller : Chart setView(ControllerView) +controlP5.Controller : Chart setVisible(boolean) +controlP5.Controller : Chart setWidth(int) +controlP5.Controller : Chart show() +controlP5.Controller : Chart unlock() +controlP5.Controller : Chart unplugFrom(Object) +controlP5.Controller : Chart unplugFrom(Object[]) +controlP5.Controller : Chart unregisterTooltip() +controlP5.Controller : Chart update() +controlP5.Controller : Chart updateSize() +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 : ControllerView getView() +controlP5.Controller : Label getCaptionLabel() +controlP5.Controller : Label getValueLabel() +controlP5.Controller : List getControllerPlugList() +controlP5.Controller : Pointer getPointer() +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[] getAbsolutePosition() +controlP5.Controller : float[] getArrayValue() +controlP5.Controller : float[] getPosition() +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) + +created: 2014/08/16 19:11:34 + +*/ + + diff --git a/libraries/controlP5/examples/extra/ControlP5console/ControlP5console.pde b/libraries/controlP5/examples/extra/ControlP5console/ControlP5console.pde new file mode 100644 index 0000000..c5b5f38 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5console/ControlP5console.pde @@ -0,0 +1,71 @@ +/** + * ControlP5 Println + * + * + * a console like textarea which captures the output from the System.out stream + * + * by Andreas Schlegel, 2012 + * www.sojamo.de/libraries/controlp5 + * + */ + +import controlP5.*; + +ControlP5 cp5; + +Textarea myTextarea; + +int c = 0; + +Println console; + +void setup() { + size(700, 400); + cp5 = new ControlP5(this); + cp5.enableShortcuts(); + frameRate(50); + myTextarea = cp5.addTextarea("txt") + .setPosition(100, 100) + .setSize(200, 200) + .setFont(createFont("", 10)) + .setLineHeight(14) + .setColor(color(200)) + .setColorBackground(color(0, 100)) + .setColorForeground(color(255, 100)); + ; + + console = cp5.addConsole(myTextarea);// +} + + +void draw() { + background(128); + noStroke(); + ellipseMode(CENTER); + float n = sin(frameCount*0.01)*300; + fill(110, 255,220); + ellipse(width/2, height/2, n , n); + + println(frameCount+"\t"+String.format("%.2f", frameRate)+"\t"+String.format("%.2f", n)); +} + +void keyPressed() { + switch(key) { + case('1'): + console.pause(); + break; + case('2'): + console.play(); + break; + case('3'): + console.setMax(8); + break; + case('4'): + console.setMax(-1); + break; + case('5'): + console.clear(); + break; + } +} + diff --git a/libraries/controlP5/examples/extra/ControlP5controllerOnTop3D/ControlP5controllerOnTop3D.pde b/libraries/controlP5/examples/extra/ControlP5controllerOnTop3D/ControlP5controllerOnTop3D.pde new file mode 100644 index 0000000..cd28d9d --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5controllerOnTop3D/ControlP5controllerOnTop3D.pde @@ -0,0 +1,148 @@ +/** + * ControlP5 Controller on top of 3D + * demonstrates how to use controlP5 controllers on top of a + * OpenGL 3D scene. + * + * by Andreas Schlegel, 2011 + * www.sojamo.de/libraries/controlP5 + * + */ + + + +import controlP5.*; +import processing.opengl.*; + +ControlP5 cp5; +ControlGroup messageBox; +int messageBoxResult = -1; +String messageBoxString = ""; +float t; + +void setup() { + size(640,480,P3D); + cp5 = new ControlP5(this); + noStroke(); + createMessageBox(); + Button b = cp5.addButton("toggleBox",1,20,20,100,20); + b.setLabel("Toggle Box"); + textFont(createFont("",30)); +} + + +void draw() { + hint(ENABLE_DEPTH_TEST); + pushMatrix(); + if(messageBox.isVisible()) { + background(128); + } else { + background(0); + fill(255); + text(messageBoxString,20,height-40); + } + + translate(width/2,height/2,mouseX); + rotateY(t+=0.1); + fill(255); + rect(-50,-50,100,100); + popMatrix(); + hint(DISABLE_DEPTH_TEST); + // in case yo uare using the camera or you have + // changed the default camera setting, reset the camera + // to default by uncommenting the following line. + // camera(); +} + + + +void toggleBox(int theValue) { + if(messageBox.isVisible()) { + messageBox.hide(); + } else { + messageBox.show(); + } +} + + +void createMessageBox() { + // create a group to store the messageBox elements + messageBox = cp5.addGroup("messageBox",width/2 - 150,100,300); + messageBox.setBackgroundHeight(120); + messageBox.setBackgroundColor(color(0,100)); + messageBox.hideBar(); + + // add a TextLabel to the messageBox. + Textlabel l = cp5.addTextlabel("messageBoxLabel","Some MessageBox text goes here.",20,20); + l.moveTo(messageBox); + + // add a textfield-controller with named-id inputbox + // this controller will be linked to function inputbox() below. + Textfield f = cp5.addTextfield("inputbox",20,36,260,20); + f.getCaptionLabel().setVisible(false); + f.moveTo(messageBox); + f.setColorForeground(color(20)); + f.setColorBackground(color(20)); + f.setColorActive(color(100)); + // add the OK button to the messageBox. + // the name of the button corresponds to function buttonOK + // below and will be triggered when pressing the button. + Button b1 = cp5.addButton("buttonOK",0,65,80,80,24); + b1.moveTo(messageBox); + b1.setColorBackground(color(40)); + b1.setColorActive(color(20)); + // by default setValue would trigger function buttonOK, + // therefore we disable the broadcasting before setting + // the value and enable broadcasting again afterwards. + // same applies to the cancel button below. + b1.setBroadcast(false); + b1.setValue(1); + b1.setBroadcast(true); + b1.setCaptionLabel("OK"); + // centering of a label needs to be done manually + // with marginTop and marginLeft + //b1.captionLabel().style().marginTop = -2; + //b1.captionLabel().style().marginLeft = 26; + + // add the Cancel button to the messageBox. + // the name of the button corresponds to function buttonCancel + // below and will be triggered when pressing the button. + Button b2 = cp5.addButton("buttonCancel",0,155,80,80,24); + b2.moveTo(messageBox); + b2.setBroadcast(false); + b2.setValue(0); + b2.setBroadcast(true); + b2.setCaptionLabel("Cancel"); + b2.setColorBackground(color(40)); + b2.setColorActive(color(20)); + //b2.captionLabel().toUpperCase(false); + // centering of a label needs to be done manually + // with marginTop and marginLeft + //b2.captionLabel().style().marginTop = -2; + //b2.captionLabel().style().marginLeft = 16; +} + +// function buttonOK will be triggered when pressing +// the OK button of the messageBox. +void buttonOK(int theValue) { + println("a button event from button OK."); + messageBoxString = ((Textfield)cp5.getController("inputbox")).getText(); + messageBoxResult = theValue; + messageBox.hide(); +} + + +// function buttonCancel will be triggered when pressing +// the Cancel button of the messageBox. +void buttonCancel(int theValue) { + println("a button event from button Cancel."); + messageBoxResult = theValue; + messageBox.hide(); +} + +// inputbox is called whenever RETURN has been pressed +// in textfield-controller inputbox +void inputbox(String theString) { + println("got something from the inputbox : "+theString); + messageBoxString = theString; + messageBox.hide(); +} diff --git a/libraries/controlP5/examples/extra/ControlP5frame/ControlP5frame.pde b/libraries/controlP5/examples/extra/ControlP5frame/ControlP5frame.pde new file mode 100644 index 0000000..0b597ac --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5frame/ControlP5frame.pde @@ -0,0 +1,98 @@ +/** + * ControlP5 Controlframe + * with controlP5 2.0 all java.awt dependencies have been removed + * as a consequence the option to display controllers in a separate + * window had to be removed as well. + * this example shows you how to create a java.awt.frame and use controlP5 + * + * by Andreas Schlegel, 2012 + * www.sojamo.de/libraries/controlp5 + * + */ + +import java.awt.Frame; +import java.awt.BorderLayout; +import controlP5.*; + +private ControlP5 cp5; + +ControlFrame cf; + +int def; + +void setup() { + size(400, 400); + cp5 = new ControlP5(this); + + // by calling function addControlFrame() a + // new frame is created and an instance of class + // ControlFrame is instanziated. + cf = addControlFrame("extra", 200,200); + + // add Controllers to the 'extra' Frame inside + // the ControlFrame class setup() method below. + + +} + +void draw() { + background(def); +} + +ControlFrame addControlFrame(String theName, int theWidth, int theHeight) { + Frame f = new Frame(theName); + ControlFrame p = new ControlFrame(this, theWidth, theHeight); + f.add(p); + p.init(); + f.setTitle(theName); + f.setSize(p.w, p.h); + f.setLocation(100, 100); + f.setResizable(false); + f.setVisible(true); + return p; +} + + +// the ControlFrame class extends PApplet, so we +// are creating a new processing applet inside a +// new frame with a controlP5 object loaded +public class ControlFrame extends PApplet { + + int w, h; + + int abc = 100; + + public void setup() { + size(w, h); + frameRate(25); + cp5 = new ControlP5(this); + cp5.addSlider("abc").setRange(0, 255).setPosition(10,10); + cp5.addSlider("def").plugTo(parent,"def").setRange(0, 255).setPosition(10,30); + } + + public void draw() { + background(abc); + } + + private ControlFrame() { + } + + public ControlFrame(Object theParent, int theWidth, int theHeight) { + parent = theParent; + w = theWidth; + h = theHeight; + } + + + public ControlP5 control() { + return cp5; + } + + + ControlP5 cp5; + + Object parent; + + +} + diff --git a/libraries/controlP5/examples/extra/ControlP5frameRate/ControlP5frameRate.pde b/libraries/controlP5/examples/extra/ControlP5frameRate/ControlP5frameRate.pde new file mode 100644 index 0000000..85aed00 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5frameRate/ControlP5frameRate.pde @@ -0,0 +1,199 @@ +/** + * ControlP5 FrameRate + * + * + * uses a textlabel to display the current or average + * framerate of the sketch. + * + * by Andreas Schlegel, 2012 + * www.sojamo.de/libraries/controlp5 + * + */ + + +import controlP5.*; + +ControlP5 cp5; + +void setup() { + size(400,500); + frameRate(60); + cp5 = new ControlP5(this); + cp5.addFrameRate().setInterval(10).setPosition(0,height - 10); + +} + +void draw() { + background(129); +} + +/* +a list of all methods available for the FrameRate Controller +use ControlP5.printPublicMethodsFor(FrameRate.class); +to print the following list into the console. + +You can find further details about class FrameRate in the javadoc. + +Format: +ClassName : returnType methodName(parameter type) + + +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 : ControllerView getView() +controlP5.Controller : FrameRate addCallback(CallbackListener) +controlP5.Controller : FrameRate addListener(ControlListener) +controlP5.Controller : FrameRate addListenerFor(int, CallbackListener) +controlP5.Controller : FrameRate align(int, int, int, int) +controlP5.Controller : FrameRate bringToFront() +controlP5.Controller : FrameRate bringToFront(ControllerInterface) +controlP5.Controller : FrameRate hide() +controlP5.Controller : FrameRate linebreak() +controlP5.Controller : FrameRate listen(boolean) +controlP5.Controller : FrameRate lock() +controlP5.Controller : FrameRate onChange(CallbackListener) +controlP5.Controller : FrameRate onClick(CallbackListener) +controlP5.Controller : FrameRate onDoublePress(CallbackListener) +controlP5.Controller : FrameRate onDrag(CallbackListener) +controlP5.Controller : FrameRate onDraw(ControllerView) +controlP5.Controller : FrameRate onEndDrag(CallbackListener) +controlP5.Controller : FrameRate onEnter(CallbackListener) +controlP5.Controller : FrameRate onLeave(CallbackListener) +controlP5.Controller : FrameRate onMove(CallbackListener) +controlP5.Controller : FrameRate onPress(CallbackListener) +controlP5.Controller : FrameRate onRelease(CallbackListener) +controlP5.Controller : FrameRate onReleaseOutside(CallbackListener) +controlP5.Controller : FrameRate onStartDrag(CallbackListener) +controlP5.Controller : FrameRate onWheel(CallbackListener) +controlP5.Controller : FrameRate plugTo(Object) +controlP5.Controller : FrameRate plugTo(Object, String) +controlP5.Controller : FrameRate plugTo(Object[]) +controlP5.Controller : FrameRate plugTo(Object[], String) +controlP5.Controller : FrameRate registerProperty(String) +controlP5.Controller : FrameRate registerProperty(String, String) +controlP5.Controller : FrameRate registerTooltip(String) +controlP5.Controller : FrameRate removeBehavior() +controlP5.Controller : FrameRate removeCallback() +controlP5.Controller : FrameRate removeCallback(CallbackListener) +controlP5.Controller : FrameRate removeListener(ControlListener) +controlP5.Controller : FrameRate removeListenerFor(int, CallbackListener) +controlP5.Controller : FrameRate removeListenersFor(int) +controlP5.Controller : FrameRate removeProperty(String) +controlP5.Controller : FrameRate removeProperty(String, String) +controlP5.Controller : FrameRate setArrayValue(float[]) +controlP5.Controller : FrameRate setArrayValue(int, float) +controlP5.Controller : FrameRate setBehavior(ControlBehavior) +controlP5.Controller : FrameRate setBroadcast(boolean) +controlP5.Controller : FrameRate setCaptionLabel(String) +controlP5.Controller : FrameRate setColor(CColor) +controlP5.Controller : FrameRate setColorActive(int) +controlP5.Controller : FrameRate setColorBackground(int) +controlP5.Controller : FrameRate setColorCaptionLabel(int) +controlP5.Controller : FrameRate setColorForeground(int) +controlP5.Controller : FrameRate setColorLabel(int) +controlP5.Controller : FrameRate setColorValue(int) +controlP5.Controller : FrameRate setColorValueLabel(int) +controlP5.Controller : FrameRate setDecimalPrecision(int) +controlP5.Controller : FrameRate setDefaultValue(float) +controlP5.Controller : FrameRate setHeight(int) +controlP5.Controller : FrameRate setId(int) +controlP5.Controller : FrameRate setImage(PImage) +controlP5.Controller : FrameRate setImage(PImage, int) +controlP5.Controller : FrameRate setImages(PImage, PImage, PImage) +controlP5.Controller : FrameRate setImages(PImage, PImage, PImage, PImage) +controlP5.Controller : FrameRate setLabel(String) +controlP5.Controller : FrameRate setLabelVisible(boolean) +controlP5.Controller : FrameRate setLock(boolean) +controlP5.Controller : FrameRate setMax(float) +controlP5.Controller : FrameRate setMin(float) +controlP5.Controller : FrameRate setMouseOver(boolean) +controlP5.Controller : FrameRate setMoveable(boolean) +controlP5.Controller : FrameRate setPosition(float, float) +controlP5.Controller : FrameRate setPosition(float[]) +controlP5.Controller : FrameRate setSize(PImage) +controlP5.Controller : FrameRate setSize(int, int) +controlP5.Controller : FrameRate setStringValue(String) +controlP5.Controller : FrameRate setUpdate(boolean) +controlP5.Controller : FrameRate setValue(float) +controlP5.Controller : FrameRate setValueLabel(String) +controlP5.Controller : FrameRate setValueSelf(float) +controlP5.Controller : FrameRate setView(ControllerView) +controlP5.Controller : FrameRate setVisible(boolean) +controlP5.Controller : FrameRate setWidth(int) +controlP5.Controller : FrameRate show() +controlP5.Controller : FrameRate unlock() +controlP5.Controller : FrameRate unplugFrom(Object) +controlP5.Controller : FrameRate unplugFrom(Object[]) +controlP5.Controller : FrameRate unregisterTooltip() +controlP5.Controller : FrameRate update() +controlP5.Controller : FrameRate updateSize() +controlP5.Controller : Label getCaptionLabel() +controlP5.Controller : Label getValueLabel() +controlP5.Controller : List getControllerPlugList() +controlP5.Controller : Pointer getPointer() +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[] getAbsolutePosition() +controlP5.Controller : float[] getArrayValue() +controlP5.Controller : float[] getPosition() +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) +controlP5.FrameRate : FrameRate setInterval(int) +controlP5.FrameRate : void draw(PGraphics) +controlP5.Textlabel : ControllerStyle getStyle() +controlP5.Textlabel : Label get() +controlP5.Textlabel : Textlabel append(String, int) +controlP5.Textlabel : Textlabel setColor(int) +controlP5.Textlabel : Textlabel setFont(ControlFont) +controlP5.Textlabel : Textlabel setFont(PFont) +controlP5.Textlabel : Textlabel setHeight(int) +controlP5.Textlabel : Textlabel setLetterSpacing(int) +controlP5.Textlabel : Textlabel setLineHeight(int) +controlP5.Textlabel : Textlabel setMultiline(boolean) +controlP5.Textlabel : Textlabel setStringValue(String) +controlP5.Textlabel : Textlabel setText(String) +controlP5.Textlabel : Textlabel setValue(String) +controlP5.Textlabel : Textlabel setValue(float) +controlP5.Textlabel : Textlabel setWidth(int) +controlP5.Textlabel : int getLineHeight() +controlP5.Textlabel : void draw() +controlP5.Textlabel : void draw(PApplet) +controlP5.Textlabel : void draw(PGraphics) +controlP5.Textlabel : void draw(int, int) +java.lang.Object : String toString() +java.lang.Object : boolean equals(Object) + +created: 2015/03/24 12:22:02 + +*/ + + diff --git a/libraries/controlP5/examples/extra/ControlP5frames/ControlP5frames.pde b/libraries/controlP5/examples/extra/ControlP5frames/ControlP5frames.pde new file mode 100644 index 0000000..1c1979d --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5frames/ControlP5frames.pde @@ -0,0 +1,134 @@ + +import java.awt.*; +import java.awt.event.*; +import controlP5.*; + +private ControlP5 cp5; + +ControlFrame cf1, cf2; + +int bgColor; + +void setup() { + size(400, 400 ,P3D ); + /* add a controlP5 instance for the main sketch window (not required for other ControlFrames to work) */ + cp5 = new ControlP5( this ); + cp5.addSlider( "s2" ); + + + /* Add a controlframe */ + + cf1 = addControlFrame( "hello", 200, 200, 20, 20, color( 100 ) ); + + // add a slider with an EventListener. When dragging the slider, + // variable bgColor will change accordingly. + cf1.control().addSlider( "s1" ).setRange( 0, 255 ).addListener( new ControlListener() { + public void controlEvent( ControlEvent ev ) { + bgColor = color( ev.getValue() ); + } + } + ); + + + /* Add a second controlframe */ + + cf2 = addControlFrame( "world", 200, 200, 20, 240, color( 100 ) ); + + // add a button with an EventListener. When releasing the button, + // variable bgColor will change to color( 255 ); + cf2.control().addButton( "b1" ).addListener( new ControlListener() { + public void controlEvent( ControlEvent ev ) { + bgColor = color( 255 ); + } + } + ); + + cf2.control().addButton( "b2" ).addListener( new ControlListener() { + public void controlEvent(ControlEvent ev) { + bgColor = color( random( 255 ), random( 255 ), random( 255 ) ); + } + } + ); +} + +void draw() { + background( bgColor ); +} + + +/* no changes required below */ + + +ControlFrame addControlFrame(String theName, int theWidth, int theHeight) { + return addControlFrame(theName, theWidth, theHeight, 100, 100, color( 0 ) ); +} + +ControlFrame addControlFrame(String theName, int theWidth, int theHeight, int theX, int theY, int theColor ) { + final Frame f = new Frame( theName ); + final ControlFrame p = new ControlFrame( this, theWidth, theHeight, theColor ); + + f.add( p ); + p.init(); + f.setTitle(theName); + f.setSize( p.w, p.h ); + f.setLocation( theX, theY ); + f.addWindowListener( new WindowAdapter() { + @Override + public void windowClosing(WindowEvent we) { + p.dispose(); + f.dispose(); + } + } + ); + f.setResizable( false ); + f.setVisible( true ); + // sleep a little bit to allow p to call setup. + // otherwise a nullpointerexception might be caused. + try { + Thread.sleep( 100 ); + } + catch(Exception e) { + } + return p; +} + + +// the ControlFrame class extends PApplet, so we +// are creating a new processing applet inside a +// new frame with a controlP5 object loaded +public class ControlFrame extends PApplet { + + int w, h; + + int bg; + + public void setup() { + size(w, h); + frameRate(25); + cp5 = new ControlP5( this ); + } + + public void draw() { + background( bg ); + } + + private ControlFrame() { + } + + public ControlFrame(Object theParent, int theWidth, int theHeight, int theColor) { + parent = theParent; + w = theWidth; + h = theHeight; + bg = theColor; + } + + + public ControlP5 control() { + return this.cp5; + } + + ControlP5 cp5; + + Object parent; +} + diff --git a/libraries/controlP5/examples/extra/ControlP5groupCanvas/ControlP5groupCanvas.pde b/libraries/controlP5/examples/extra/ControlP5groupCanvas/ControlP5groupCanvas.pde new file mode 100644 index 0000000..73c2bb7 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5groupCanvas/ControlP5groupCanvas.pde @@ -0,0 +1,51 @@ +/** + * ControlP5 Canvas + * + * by andreas schlegel, 2011 + * www.sojamo.de/libraries/controlp5 + * + */ + +import controlP5.*; + +ControlP5 cp5; + +void setup() { + size(400,600); + smooth(); + + cp5 = new ControlP5(this); + cp5.addGroup("myGroup") + .setLabel("Testing Canvas") + .setPosition(100,200) + .setWidth(200) + .addCanvas(new TestCanvas()) + ; +} + +void draw() { + background(0); +} + + +class TestCanvas extends Canvas { + + float n; + float a; + + public void setup(PGraphics pg) { + println("starting a test canvas."); + n = 1; + } + public void draw(PGraphics pg) { + n += 0.01; + pg.ellipseMode(CENTER); + pg.fill(lerpColor(color(0,100,200),color(0,200,100),map(sin(n),-1,1,0,1))); + pg.rect(0,0,200,200); + pg.fill(255,150); + a+=0.01; + ellipse(100,100,abs(sin(a)*150),abs(sin(a)*150)); + ellipse(40,40,abs(sin(a+0.5)*50),abs(sin(a+0.5)*50)); + ellipse(60,140,abs(cos(a)*80),abs(cos(a)*80)); + } +} diff --git a/libraries/controlP5/examples/extra/ControlP5imageButton/ControlP5imageButton.pde b/libraries/controlP5/examples/extra/ControlP5imageButton/ControlP5imageButton.pde new file mode 100644 index 0000000..309ea21 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5imageButton/ControlP5imageButton.pde @@ -0,0 +1,38 @@ +import controlP5.*; + +ControlP5 cp5; + +int myColor = color(0); + + +void setup() { + size(400,600); + cp5 = new ControlP5(this); + + // replace the default controlP5 button with an image. + // button.setImages(defaultImage, rolloverImage, pressedImage); + // use button.updateSize() to adjust the size of the button and + // resize to the dimensions of the defaultImage + + cp5.addButton("buttonA") + .setPosition(175,275) + .setImages(loadImage("Arrow-Left.png"), loadImage("Arrow-Right.png"), loadImage("Refresh.png")) + .updateSize(); +} + +void draw() { + background(myColor); +} + +public void controlEvent(ControlEvent theEvent) { + println(theEvent.getController().getName()); + +} + +// function buttonA will receive changes from +// controller with name buttonA +public void buttonA(int theValue) { + println("a button event from buttonA: "+theValue); + myColor = color(128); +} + diff --git a/libraries/controlP5/examples/extra/ControlP5imageButton/data/Arrow-Left.png b/libraries/controlP5/examples/extra/ControlP5imageButton/data/Arrow-Left.png new file mode 100644 index 0000000..33ab6ee Binary files /dev/null and b/libraries/controlP5/examples/extra/ControlP5imageButton/data/Arrow-Left.png differ diff --git a/libraries/controlP5/examples/extra/ControlP5imageButton/data/Arrow-Right.png b/libraries/controlP5/examples/extra/ControlP5imageButton/data/Arrow-Right.png new file mode 100644 index 0000000..5afff9b Binary files /dev/null and b/libraries/controlP5/examples/extra/ControlP5imageButton/data/Arrow-Right.png differ diff --git a/libraries/controlP5/examples/extra/ControlP5imageButton/data/Refresh.png b/libraries/controlP5/examples/extra/ControlP5imageButton/data/Refresh.png new file mode 100644 index 0000000..6582a31 Binary files /dev/null and b/libraries/controlP5/examples/extra/ControlP5imageButton/data/Refresh.png differ diff --git a/libraries/controlP5/examples/extra/ControlP5key/ControlP5key.pde b/libraries/controlP5/examples/extra/ControlP5key/ControlP5key.pde new file mode 100644 index 0000000..095b7e4 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5key/ControlP5key.pde @@ -0,0 +1,50 @@ +/** + * ControlP5 ControlKey + * use ControlKeys to map key combinations to particular events. + * multi-keypress supported. + * + * by Andreas Schlegel, 2012 + * www.sojamo.de/libraries/controlp5 + * + */ + +import controlP5.*; + +ControlP5 cp5; + +int col; +int colEllipse; +boolean visible; + +void setup() { + size(400, 600); + smooth(); + noStroke(); + col = color(0); + colEllipse = color(0,255,90); + cp5 = new ControlP5(this); + + // press key 1 to change background to white + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {col = color(255);}}, '1'); + + // press key 2 to change background to black + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {col = color(0);}}, '2'); + + // press key 1 and ALT to make circles visible + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {visible = true;}}, ALT,'1'); + + // press key 2 and ALT to hide circles + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {visible = false;}}, ALT,'2'); + + // press key 1 and ALT and SHIFT to change the color of circles + cp5.mapKeyFor(new ControlKey() {public void keyEvent() {colEllipse = color(random(255));}}, ALT,'1',SHIFT); +} + +void draw() { + background(col); + if(visible) { + fill(colEllipse); + ellipse(100,100,50,50); + ellipse(150,400,200,200); + } +} diff --git a/libraries/controlP5/examples/extra/ControlP5listBoxClear/ControlP5listBoxClear.pde b/libraries/controlP5/examples/extra/ControlP5listBoxClear/ControlP5listBoxClear.pde new file mode 100644 index 0000000..177d019 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5listBoxClear/ControlP5listBoxClear.pde @@ -0,0 +1,74 @@ +import controlP5.*; + +String[][] s = new String[3][]; +ControlP5 controlP5; +ListBox l; + +void setup() { + size(400,400); + controlP5 = new ControlP5(this); + l = controlP5.addListBox("myList",100,100,120,150); + // l.actAsPulldownMenu(true); + l.setItemHeight(23); + + + s[0] = new String[] { + "a","b","c","d" + }; + s[1] = new String[] { + "a","b","c","d","e","f","g","h","i","j","k","l","m","n" + }; + s[2] = new String[] { + "l","m","n" + }; + + for(int i=0;i "+theEvent.getGroup().getValue()); + int n = int(theEvent.getGroup().getValue()); + println("\t\t group:"+(n >> 8 & 0xff)+", item:"+(n >> 0 & 0xff)); + } +} diff --git a/libraries/controlP5/examples/extra/ControlP5mouseWheel/ControlP5mouseWheel.pde b/libraries/controlP5/examples/extra/ControlP5mouseWheel/ControlP5mouseWheel.pde new file mode 100644 index 0000000..74904e8 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5mouseWheel/ControlP5mouseWheel.pde @@ -0,0 +1,94 @@ +/** + * ControlP5 KeyEventAndWheel + * + * with controlP5 2.0 all java.awt dependencies have been removed + * as a consequence the option to use the MouseWheel for some controllers + * has been removed. But the following example shows how to manually add + * the mouseWheel support. + * + * With early versions of the processing 2.0 beta releases the keyEvent forwarding + * does not work as expected and needs to be forwarded manually. + * + * by Andreas Schlegel, 2012 + * www.sojamo.de/libraries/controlp5 + * + */ + + +import controlP5.*; +import java.util.*; + +ControlP5 cp5; + +void setup() { + size(700, 300); + cp5 = new ControlP5(this); + + + cp5.addNumberbox("numberbox") + .setPosition(20, 20) + .setSize(100, 20) + ; + + cp5.addSlider("slider") + .setPosition(20, 70) + .setSize(200, 20) + ; + + cp5.addKnob("knob") + .setPosition(20, 120) + .setRadius(50) + ; + + List drops = new ArrayList(); + for(int i=0;i<100;i++) { + drops.add("item "+i); + } + + cp5.addDropdownList("drop") + .setPosition(300, 30) + .setWidth(200) + .addItems(drops) + ; + + cp5.addListBox("list") + .setPosition(520, 30) + .setSize(150,200) + .addItems(drops) + ; + + cp5.addTextarea("area") + .setPosition(300, 150) + .setSize(200,100) + .setLineHeight(10) + .setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam feugiat porttitor tempus. Donec hendrerit aliquam mauris, a interdum ante pellentesque et. In dui erat, condimentum et sodales eget, scelerisque quis libero. Nam non nibh vitae enim auctor fringilla sit amet quis magna. Quisque ultricies mi at arcu vulputate imperdiet tristique purus adipiscing. Maecenas pretium odio ac leo aliquam id commodo nulla eleifend. Aenean in pharetra mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla suscipit, nisl vitae eleifend tincidunt, dolor justo sollicitudin nunc, sit amet rhoncus odio purus eu purus. Cras bibendum placerat elementum. Donec in lorem libero. Praesent auctor, felis quis volutpat facilisis, neque turpis tempor nisi, interdum viverra enim purus vel mi. Nam faucibus accumsan lorem, convallis consectetur elit vulputate ut."); + ; + // add mousewheel support, now hover the slide with your mouse + // and use the mousewheel (or trackpad on a macbook) to change the + // value of the slider. + addMouseWheelListener(); +} + + +void draw() { + background(0); +} + + +void controlEvent(ControlEvent event) { + println(event); +} + +// When working in desktop mode, you can add mousewheel support for +// controlP5 by using java.awt.event.MouseWheelListener and +// java.awt.event.MouseWheelEvent + +void addMouseWheelListener() { + frame.addMouseWheelListener(new java.awt.event.MouseWheelListener() { + public void mouseWheelMoved(java.awt.event.MouseWheelEvent e) { + cp5.setMouseWheelRotation(e.getWheelRotation()); + } + } + ); +} + diff --git a/libraries/controlP5/examples/extra/ControlP5pointer/ControlP5pointer.pde b/libraries/controlP5/examples/extra/ControlP5pointer/ControlP5pointer.pde new file mode 100644 index 0000000..a278691 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5pointer/ControlP5pointer.pde @@ -0,0 +1,75 @@ +/** +* ControlP5 Pointer +* +* Default mouse actions use the Pointer class to trigger events. +* you can manipulate the x and y fields of the Pointer class +* for customizing input events for example when using a +* different input than the mouse. +* Here in this example the mouse coordiates are reveresed. +* +* by Andreas Schlegel, 2012 +* www.sojamo.de/libraries/controlp5 +* +*/ + +import controlP5.*; + +ControlP5 cp5; + +void setup() { + size(400, 600); + + cp5 = new ControlP5(this); + // disable outodraw because we want to draw our + // custom cursor on to of controlP5 + cp5.setAutoDraw(false); + + cp5.addSlider("hello", 0, 100, 50, 40, 40, 100, 20); + + // enable the pointer (and disable the mouse as input) + cp5.getPointer().enable(); + cp5.getPointer().set(width/2, height/2); +} + + +void draw() { + background(cp5.get("hello").getValue()); + // first draw controlP5 + cp5.draw(); + + // the draw our pointer + cp5.getPointer().set(width - mouseX, height - mouseY); + pushMatrix(); + translate(cp5.getPointer().getX(), cp5.getPointer().getY()); + stroke(255); + line(-10,0,10,0); + line(0,-10,0,10); + popMatrix(); + println(cp5.isMouseOver()); +} + +void mousePressed() { + cp5.getPointer().pressed(); +} + +void mouseReleased() { + cp5.getPointer().released(); +} + +/* +a list of all methods available for the Pointer Controller +use ControlP5.printPublicMethodsFor(Pointer.class); +to print the following list into the console. + +You can find further details about class Pointer in the javadoc. + +Format: +ClassName : returnType methodName(parameter type) + + + +created: 2015/03/24 12:22:14 + +*/ + + diff --git a/libraries/controlP5/examples/extra/ControlP5propertiesSets/ControlP5propertiesSets.pde b/libraries/controlP5/examples/extra/ControlP5propertiesSets/ControlP5propertiesSets.pde new file mode 100644 index 0000000..2c3d1a6 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5propertiesSets/ControlP5propertiesSets.pde @@ -0,0 +1,133 @@ +/** + * ControlP5 properties sets. + * + * saves/loads controller values into/from properties-file. + * this example shows how to make property sets of controllers that can be loaded and + * saved individually. By default property files come in a serialized format + * with a .ser extension. + * + * + * default properties load/save key combinations are + * alt+shift+l to load properties + * alt+shift+s to save properties + * + * + * find a list of public methods available for the ControllerPropererties Controller + * at the bottom of this sketch's source code + * + * by andreas schlegel, 2011 + * www.sojamo.de/libraries/controlp5 + * + */ + +import controlP5.*; + +ControlP5 cp5; + +public int slider1 = 32; +public int slider2 = 64; +public int slider3 = 128; +public int slider4 = 255; + + +void setup() { + size(400, 600); + cp5 = new ControlP5(this); + + // add a vertical slider + cp5.addSlider("slider1", 0, 255, 20, 100, 128, 20); + cp5.addSlider("slider2", 0, 255, 20, 150, 128, 20); + cp5.addSlider("slider3", 0, 255, 20, 200, 128, 20); + cp5.addSlider("slider4", 0, 255, 20, 250, 128, 20); + + cp5.addButton("b1", 0, 20, 350, 80, 12).setCaptionLabel("save setA"); + cp5.addButton("b2", 0, 101, 350, 80, 12).setCaptionLabel("load setA").setColorBackground(color(0, 100, 50)); + + cp5.addButton("b3", 0, 200, 350, 80, 12).setCaptionLabel("save default"); + cp5.addButton("b4", 0, 281, 350, 80, 12).setCaptionLabel("load default").setColorBackground(color(0, 100, 50)); + + + // add a new properties set 'setA' + cp5.getProperties().addSet("setA"); + + // move controller 'slider' from the default set to setA + // the 3 parameters read like this: move controller(1) from set(2) to set(3) + cp5.getProperties().move(cp5.getController("slider1"), "default", "setA"); + // use copy instead of move to register 'slider' with both sets (default and setA) + + // prints the current list of properties registered and the set(s) they belong to + cp5.getProperties().print(); + + /* by default properties are saved in JSON format, if you want to change to the old default (java's serialized format), un-comment line below*/ + // cp5.getProperties().setFormat(ControlP5.SERIALIZED); +} + +void draw() { + background(0); + + fill(slider1); + rect(250, 100, 100, 20); + + fill(slider2); + rect(250, 150, 100, 20); + + fill(slider3); + rect(250, 200, 100, 20); + + fill(slider4); + rect(250, 250, 100, 20); +} + +void b1(float v) { + cp5.saveProperties("setA", "setA"); +} + +void b2(float v) { + cp5.loadProperties(("setA")); +} + +void b3(float v) { + cp5.saveProperties("default", "default"); +} + +void b4(float v) { + cp5.loadProperties(("default.json")); +} + + + + + +/* + a list of all methods available for the ControllerProperties class + use ControlP5.printPublicMethodsFor(ControllerProperties.class); + to print the following list into the console. + + You can find further details about class ControllerProperties in the javadoc. + + Format: + ClassName : returnType methodName(parameter type) + +controlP5.ControllerProperties : ControllerProperties remove(ControllerInterface) +controlP5.ControllerProperties : ControllerProperties remove(ControllerInterface, String) +controlP5.ControllerProperties : ControllerProperties remove(ControllerInterface, String, String) +controlP5.ControllerProperties : ControllerProperty getProperty(ControllerInterface, String) +controlP5.ControllerProperties : ControllerProperty getProperty(ControllerInterface, String, String) +controlP5.ControllerProperties : ControllerProperty register(ControllerInterface, String) +controlP5.ControllerProperties : ControllerProperty register(ControllerInterface, String, String) +controlP5.ControllerProperties : HashSet addSet(String) +controlP5.ControllerProperties : HashSet getPropertySet(ControllerInterface) +controlP5.ControllerProperties : List get(ControllerInterface) +controlP5.ControllerProperties : Map get() +controlP5.ControllerProperties : String toString() +controlP5.ControllerProperties : boolean load() +controlP5.ControllerProperties : boolean load(String) +controlP5.ControllerProperties : void delete(ControllerProperty) +controlP5.ControllerProperties : void move(ControllerInterface, String, String) +controlP5.ControllerProperties : void move(ControllerProperty, String, String) +controlP5.ControllerProperties : void only(ControllerProperty, String) +controlP5.ControllerProperties : void print() +controlP5.ControllerProperties : void setFormat(Format) +java.lang.Object : String toString() +java.lang.Object : boolean equals(Object) +*/ diff --git a/libraries/controlP5/examples/extra/ControlP5propertiesSets/default.json b/libraries/controlP5/examples/extra/ControlP5propertiesSets/default.json new file mode 100644 index 0000000..473af1b --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5propertiesSets/default.json @@ -0,0 +1,17 @@ +{ + "/slider3": { + "min": 0, + "max": 255, + "value": 12.750000953674316 + }, + "/slider2": { + "min": 0, + "max": 255, + "value": 130.05001831054688 + }, + "/slider4": { + "min": 0, + "max": 255, + "value": 214.20004272460938 + } +} \ No newline at end of file diff --git a/libraries/controlP5/examples/extra/ControlP5propertiesSets/setA.json b/libraries/controlP5/examples/extra/ControlP5propertiesSets/setA.json new file mode 100644 index 0000000..8a50c9b --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5propertiesSets/setA.json @@ -0,0 +1,5 @@ +{"/slider1": { + "min": 0, + "max": 255, + "value": 255 +}} \ No newline at end of file diff --git a/libraries/controlP5/examples/extra/ControlP5renderIntoPGraphics/ControlP5renderIntoPGraphics.pde b/libraries/controlP5/examples/extra/ControlP5renderIntoPGraphics/ControlP5renderIntoPGraphics.pde new file mode 100644 index 0000000..0c11bc9 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5renderIntoPGraphics/ControlP5renderIntoPGraphics.pde @@ -0,0 +1,51 @@ +/** +* ControlP5 RenderIntoPGraphics +* +* +* experimental +* +* by Andreas Schlegel, 2013 +* www.sojamo.de/libraries/controlp5 +* +*/ + + +import controlP5.*; + +ControlP5 c1 , c2; +PGraphics panel1 , panel2; + +void setup() { + size( 1024, 500 , P3D ); // + panel1 = createGraphics( 200 , height/2 ); + panel2 = createGraphics( 200 , height/2 ); + c1 = new ControlP5( this ); + c1.enableShortcuts(); + c1.setBackground( color( 0 , 50 ) ); + c1.addButton("hello").setSize(200,20).setPosition( 0 , 0 ); + c1.addButton("world").setSize(200,100).setPosition( 0 , 70 ); + c1.addSlider("slider").setSize(50,20).setPosition( 0 , 40 ); + c1.setGraphics( panel1 , 0 , 0 ); + + c2 = new ControlP5( this ); + c2.enableShortcuts(); + c2.setBackground( color( 0 , 50 ) ); + c2.addButton("hello").setSize(200,20).setPosition( 0 , 0 ); + c2.addButton("world").setSize(200,100).setPosition( 0 , 70 ); + c2.addSlider("slider").setSize(50,20).setPosition( 0 , 40 ); + c2.setGraphics( panel2 , 220 , 0 ); + +} + + +void draw() { + background( 100 , 0 , 0 ); + + /* TODO update mouseevent when using setGraphics */ + c1.setGraphics( panel1 , 100 + int(sin(frameCount*0.1) * 100) , 250 ); +} + + +void controlEvent( ControlEvent ce) { + println(ce); +} diff --git a/libraries/controlP5/examples/extra/ControlP5style/ControlP5style.pde b/libraries/controlP5/examples/extra/ControlP5style/ControlP5style.pde new file mode 100644 index 0000000..01147c0 --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5style/ControlP5style.pde @@ -0,0 +1,110 @@ +/** +* ControlP5 ControllerStyle +* +* +* find a list of public methods available for the ControllerStyle Controller +* at the bottom of this sketch. +* +* by Andreas Schlegel, 2011 +* www.sojamo.de/libraries/controlp5 +* +*/ + +import controlP5.*; + +ControlP5 cp5; + +float v1 = 50, v2 = 100, v3 = 100, v4 = 100; + +void setup() { + size(400,600); + smooth(); + noStroke(); + cp5 = new ControlP5(this); + + cp5.begin(100,100); + cp5.addSlider("v1",0,255).linebreak(); + cp5.addSlider("v2",0,200).linebreak(); + cp5.addSlider("v3",0,300).linebreak(); + cp5.addSlider("v4",0,400); + cp5.end(); + + // change the caption label for controller v1 and apply styles + cp5.getController("v1").setCaptionLabel("Background"); + style("v1"); + + // change the caption label for controller v2 and apply styles + cp5.getController("v2").setCaptionLabel("Ellipse A"); + style("v2"); + + // change the caption label for controller v3 and apply styles + cp5.getController("v3").setCaptionLabel("Ellipse B"); + style("v3"); + + // change the caption label for controller v3 and apply styles + cp5.getController("v4").setCaptionLabel("Ellipse C"); + style("v4"); + + +} + +void style(String theControllerName) { + Controller c = cp5.getController(theControllerName); + // adjust the height of the controller + c.setHeight(15); + + // add some padding to the caption label background + c.getCaptionLabel().getStyle().setPadding(4,4,3,4); + + // shift the caption label up by 4px + c.getCaptionLabel().getStyle().setMargin(-4,0,0,0); + + // set the background color of the caption label + c.getCaptionLabel().setColorBackground(color(10,20,30,140)); +} + +void draw() { + background(v1); + fill(255,255,220,100); + ellipse(width/2-100, height/2-100,v2 + 50,v2 + 50); + ellipse(width/2+100, height/2,v3,v3); + ellipse(width/2, height/2+100,v4,v4); +} + + + +/* +a list of all methods available for the ControllerStyle Controller +use ControlP5.printPublicMethodsFor(ControllerStyle.class); +to print the following list into the console. + +You can find further details about class ControllerStyle in the javadoc. + +Format: +ClassName : returnType methodName(parameter type) + + + + +controlP5.ControllerStyle : ControllerStyle margin(int) +controlP5.ControllerStyle : ControllerStyle margin(int, int, int, int) +controlP5.ControllerStyle : ControllerStyle moveMargin(int, int, int, int) +controlP5.ControllerStyle : ControllerStyle movePadding(int, int, int, int) +controlP5.ControllerStyle : ControllerStyle padding(int) +controlP5.ControllerStyle : ControllerStyle padding(int, int, int, int) +controlP5.ControllerStyle : ControllerStyle setMargin(int, int, int, int) +controlP5.ControllerStyle : ControllerStyle setMarginBottom(int) +controlP5.ControllerStyle : ControllerStyle setMarginLeft(int) +controlP5.ControllerStyle : ControllerStyle setMarginRight(int) +controlP5.ControllerStyle : ControllerStyle setMarginTop(int) +controlP5.ControllerStyle : ControllerStyle setPadding(int, int, int, int) +controlP5.ControllerStyle : ControllerStyle setPaddingBottom(int) +controlP5.ControllerStyle : ControllerStyle setPaddingLeft(int) +controlP5.ControllerStyle : ControllerStyle setPaddingRight(int) +controlP5.ControllerStyle : ControllerStyle setPaddingTop(int) +java.lang.Object : String toString() +java.lang.Object : boolean equals(Object) + + +*/ + diff --git a/libraries/controlP5/examples/extra/ControlP5textfieldAdvanced/ControlP5textfieldAdvanced.pde b/libraries/controlP5/examples/extra/ControlP5textfieldAdvanced/ControlP5textfieldAdvanced.pde new file mode 100644 index 0000000..61899bd --- /dev/null +++ b/libraries/controlP5/examples/extra/ControlP5textfieldAdvanced/ControlP5textfieldAdvanced.pde @@ -0,0 +1,114 @@ +/** + * ControlP5 textfield (advanced) + * + * demonstrates how to use keepFocus, setText, getText, getTextList, + * clear, setAutoClear, isAutoClear and submit. + * + * by andreas schlegel, 2012 + * www.sojamo.de/libraries/controlp5 + * + */ + +import controlP5.*; + +ControlP5 cp5; + +String textValue = ""; + +Textfield myTextfield; + +void setup() { + size(400, 600); + + cp5 = new ControlP5(this); + myTextfield = cp5.addTextfield("textinput") + .setPosition(100, 200) + .setSize(200, 20) + .setFocus(true) + ; + + cp5.addTextfield("textValue") + .setPosition(100, 300) + .setSize(200, 20) + ; + + // use setAutoClear(true/false) to clear a textfield or keep text displayed in + // a textfield after pressing return. + myTextfield.setAutoClear(true).keepFocus(true); + + cp5.addButton("clear", 0, 20, 200, 70, 20); + cp5.addButton("submit", 0, 310, 200, 60, 20); + cp5.addButton("performTextfieldActions", 0, 20, 100, 150, 20); + cp5.addToggle("toggleAutoClear", true, 180, 100, 90, 20).setCaptionLabel("Auto Clear"); + cp5.addToggle("toggleKeepFocus", true, 280, 100, 90, 20).setCaptionLabel("Keep Focus"); + + +} + +void draw() { + background(0); +} + +void toggleAutoClear(boolean theFlag) { + myTextfield.setAutoClear(theFlag); +} + +void toggleKeepFocus(boolean theFlag) { + myTextfield.keepFocus(theFlag); +} + +void clear(int theValue) { + myTextfield.clear(); +} + +void submit(int theValue) { + myTextfield.submit(); +} + + +void controlEvent(ControlEvent theEvent) { + if (theEvent.isAssignableFrom(Textfield.class)) { + Textfield t = (Textfield)theEvent.getController(); + + println("controlEvent: accessing a string from controller '" + +t.getName()+"': "+t.getStringValue() + ); + + // Textfield.isAutoClear() must be true + print("controlEvent: trying to setText, "); + + t.setText("controlEvent: changing text."); + if (t.isAutoClear()==false) { + println(" success!"); + } + else { + println(" but Textfield.isAutoClear() is false, could not setText here."); + } + } +} + +void performTextfieldActions() { + println("\n"); + // Textfield.getText(); + println("the current text of myTextfield: "+myTextfield.getText()); + println("the current value of textValue: "+textValue); + // Textfield.setText(); + myTextfield.setText("changed the text of a textfield"); + println("changing text of myTextfield to: "+myTextfield.getText()); + // Textfield.getTextList(); + println("the textlist of myTextfield has "+myTextfield.getTextList().length+" items."); + for (int i=0;i + * After initializing controlP5 you can add controllers to controlP5. + * Here we use three numberboxes, one slider and one textfield. + * The numberbox with name numberboxC will trigger function numberboxC() + * in the example below. Whenever controlP5 detects a function in your + * sketch that corresponds to the name of a controller, it will forward + * an event to that function. Any event triggered by a controller + * will be forwarded to function controlEvent in your sketch. + * related examples ControlP5numberbox, ControlP5slider, ControlP5textfield + * + * by Andreas Schlegel, 2011 + * www.sojamo.de/libraries/controlp5 + * + */ + + +import controlP5.*; + +ControlP5 cp5; +public int myColorRect = 200; +public int myColorBackground = 100; + +void setup() { + size(400, 400); + noStroke(); + + cp5 = new ControlP5(this); + + // create a slider + // parameters: + // name, minValue, maxValue, defaultValue, x, y, width, height + cp5.addSlider("sliderA", 100, 200, 100, 100, 260, 100, 14); + + + // create 3 numberboxes and assign an id for each + cp5.addNumberbox("numberboxA", myColorRect, 100, 140, 100, 14).setId(1); + cp5.addNumberbox("numberboxB", myColorBackground, 100, 180, 100, 14).setId(2); + cp5.addNumberbox("numberboxC", 0, 100, 220, 100, 14).setId(3); + + + // create a texfield + cp5.addTextfield("textA", 100, 290, 100, 20); + + // change individual settings for a controller + cp5.getController("numberboxA").setMax(255); + cp5.getController("numberboxA").setMin(0); +} + +void draw() { + background(myColorBackground); + fill(myColorRect); + rect(0, 0, width, 100); +} + + +// events from controller numberboxC are received here +public void numberboxC(int theValue) { + println("### got an event from numberboxC : "+theValue); +} + + +// an event from slider sliderA will change the value of textfield textA here +public void sliderA(int theValue) { + Textfield txt = ((Textfield)cp5.getController("textA")); + txt.setValue(""+theValue); +} + + +// for every change (a textfield event confirmed with a return) in textfield textA, +// function textA will be invoked +public void textA(String theValue) { + println("### got an event from textA : "+theValue); +} + + +// function controlEvent will be invoked with every value change +// in any registered controller +public void controlEvent(ControlEvent theEvent) { + println("got a control event from controller with id "+theEvent.getId()); + switch(theEvent.getId()) { + case(1): // numberboxA is registered with id 1 + myColorRect = (int)(theEvent.getController().getValue()); + break; + case(2): // numberboxB is registered with id 2 + myColorBackground = (int)(theEvent.getController().getValue()); + break; + } +} + diff --git a/libraries/controlP5/examples/use/ControlP5beginEnd/ControlP5beginEnd.pde b/libraries/controlP5/examples/use/ControlP5beginEnd/ControlP5beginEnd.pde new file mode 100644 index 0000000..954ddd2 --- /dev/null +++ b/libraries/controlP5/examples/use/ControlP5beginEnd/ControlP5beginEnd.pde @@ -0,0 +1 @@ +// TBD diff --git a/libraries/controlP5/examples/use/ControlP5behavior/ControlP5behavior.pde b/libraries/controlP5/examples/use/ControlP5behavior/ControlP5behavior.pde new file mode 100644 index 0000000..6f76b82 --- /dev/null +++ b/libraries/controlP5/examples/use/ControlP5behavior/ControlP5behavior.pde @@ -0,0 +1,125 @@ +/** + * ControlP5 Behavior + * ControlBehavior is an abstract class that can be extended using your + * custom control behaviors. What is a control behavior? Control Behaviors + * allow you to automate and dynamically change the state or value of a + * controller. One behavior per controller is currently supported. i case you + * need to use more that one bahavior, the implementation has to happen + * on your side - inside your control behavior. + * + * find a list of public methods available for the ControlBehavior 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); + +public int sliderValue = 100; + +void setup() { + size(400, 400); + noStroke(); + + cp5 = new ControlP5(this); + cp5.addSlider("sliderValue") + .setRange(0,255) + .setValue(128) + .setPosition(100, 50 + height/2) + .setSize(40, 100); + + cp5.addSlider("slider") + .setRange(100, 255) + .setValue(128) + .setPosition(100, 50) + .setSize(100, 40); + + + cp5.addBang("bang") + .setPosition(40, 50 + height/2) + .setSize(40, 40); + + // add a custom ControlBehavior to controller bang, + // class TimerEvent is included in this sketch at the bottom + // and extends abstract class ControlBehavior. + cp5.getController("bang").setBehavior(new TimedEvent()); + + // use an anonymous class of type ControlBehavior. + cp5.getController("slider").setBehavior(new ControlBehavior() { + float a = 0; + public void update() { + setValue(sin(a += 0.1) * 50 + 150); + } + } + ); +} + +void draw() { + background(myColorBackground); + fill(sliderValue); + rect(0, 0, width, height/2); +} + +void slider(float theColor) { + myColorBackground = color(theColor); + println("# a slider event. setting background to "+theColor); +} + +public void bang() { + println("# an event received from controller bang."); + // a bang will set the value of controller sliderValue + // to a random number between 0 and 255. + cp5.getController("sliderValue").setValue(random(0, 255)); +} + +// custom ControlBehavior +class TimedEvent extends ControlBehavior { + long myTime; + int interval = 200; + + public TimedEvent() { + reset(); + } + void reset() { + myTime = millis() + interval; + } + + public void update() { + if (millis()>myTime) { + setValue(1); + reset(); + } + } +} + + + + +/* +a list of all methods available for the ControlBehavior Controller +use ControlP5.printPublicMethodsFor(ControlBehavior.class); +to print the following list into the console. + +You can find further details about class ControlBehavior in the javadoc. + +Format: +ClassName : returnType methodName(parameter type) + + +controlP5.ControlBehavior : Controller controller() +controlP5.ControlBehavior : boolean isActive() +controlP5.ControlBehavior : void setActive(boolean) +controlP5.ControlBehavior : void setValue(float) +java.lang.Object : String toString() +java.lang.Object : boolean equals(Object) + + +*/ + diff --git a/libraries/controlP5/examples/use/ControlP5bringToFront/ControlP5bringToFront.pde b/libraries/controlP5/examples/use/ControlP5bringToFront/ControlP5bringToFront.pde new file mode 100644 index 0000000..d777514 --- /dev/null +++ b/libraries/controlP5/examples/use/ControlP5bringToFront/ControlP5bringToFront.pde @@ -0,0 +1,55 @@ +import controlP5.*; + +ControlP5 cp5; + +void setup() { + size(700, 400); + + cp5 = new ControlP5(this); + + CallbackListener toFront = new CallbackListener() { + public void controlEvent(CallbackEvent theEvent) { + theEvent.getController().bringToFront(); + ((ScrollableList)theEvent.getController()).open(); + } + }; + + CallbackListener close = new CallbackListener() { + public void controlEvent(CallbackEvent theEvent) { + ((ScrollableList)theEvent.getController()).close(); + } + }; + + cp5.addScrollableList("myList1") + .setPosition(100, 100) + .addItems(new String[] {"a-1","b-1","c-1","d-1","e-1"}) + .onEnter(toFront) + .onLeave(close) + .setWidth(200) + .setItemHeight(20) + .setBarHeight(20) + .setBackgroundColor(color(128)) + .setHeight(100) + .close() + ; + + cp5.addScrollableList("myList2") + .setPosition(100, 125) + .addItems(new String[] {"a-2","b-2","c-2","d-2","e-2"}) + .onEnter(toFront) + .onLeave(close) + .setWidth(200) + .setItemHeight(20) + .setBarHeight(20) + .setBackgroundColor(color(128)) + .setHeight(100) + .setColor(ControlP5.THEME_RED) + .close() + ; +} + + + +void draw() { + background(220); +} diff --git a/libraries/controlP5/examples/use/ControlP5callback/ControlP5callback.pde b/libraries/controlP5/examples/use/ControlP5callback/ControlP5callback.pde new file mode 100644 index 0000000..216797c --- /dev/null +++ b/libraries/controlP5/examples/use/ControlP5callback/ControlP5callback.pde @@ -0,0 +1,178 @@ +/** + * ControlP5 Callback + * + * The following example demonstrates the CallbackListener and CallbackEvent. + * Here additional information about each available slider will be show when + * hovering the controller with the mouse. The info will fade out when leaving + * the controller. + * + * When hovering a controller, the mouse pointer will change as well. + * + * find a list of public methods available for the CallbackEvent Controller + * at the bottom of this sketch. + * + * by Andreas Schlegel, 2012 + * www.sojamo.de/libraries/controlp5 + * + */ + +import controlP5.*; + +ControlP5 cp5; +Slider s1, s2; +Info info; +CallbackListener cb; + +void setup() { + size(800, 400); + + cp5 = new ControlP5(this); + + + // create a new instance of class Info + // info will be used to display a controller's information and + // will fade in when a CallbackEvent is invoked. + info = new Info(); + + + // add 2 sliders + s1 = cp5.addSlider("hello") + .setRange(0, 100) + .setValue(50) + .setPosition(40, 40) + .setSize(100, 20); + + s2 = cp5.addSlider("world") + .setRange(0, 100) + .setValue(10) + .setPosition(40, 70) + .setSize(100, 20); + + + // the following CallbackListener will listen to any controlP5 + // action such as enter, leave, pressed, released, releasedoutside, broadcast + // see static variables starting with ACTION_ inside class controlP5.ControlP5Constants + + cb = new CallbackListener() { + public void controlEvent(CallbackEvent theEvent) { + switch(theEvent.getAction()) { + case(ControlP5.ACTION_ENTER): + info.n = 1; + info.label.setText(theEvent.getController().getInfo()); + cursor(HAND); + break; + case(ControlP5.ACTION_LEAVE): + case(ControlP5.ACTION_RELEASEDOUTSIDE): + info.n = 0; + cursor(ARROW); + break; + } + } + }; + + // add the above callback to controlP5 + cp5.addCallback(cb); + + // add another callback to slider s1, callback event will only be invoked for this + // particular controller. + s1.addCallback(new CallbackListener() { + public void controlEvent(CallbackEvent theEvent) { + if (theEvent.getAction()==ControlP5.ACTION_BROADCAST) { + s2.setValue(s2.getMax() - s1.getValue()); + } + } + } + ); +} + +void draw() { + background(0); + info.update(); +} + + +void controlEvent(ControlEvent theEvent) { + println("Got a ControlEvent for "+theEvent.name()+" = "+theEvent.value()); + info.label.setText(theEvent.getController().getInfo()); +} + +void keyPressed() { + // uncomment the line below to remove callback cb from controlP5 + // when a key is pressed. + //controlP5.removeCallback(cb); +} + +// controlEvent(CallbackEvent) is called whenever a callback +// has been triggered. controlEvent(CallbackEvent) is detected by +// controlP5 automatically. +void controlEvent(CallbackEvent theEvent) { + if (theEvent.getController().equals(s2)) { + switch(theEvent.getAction()) { + case(ControlP5.ACTION_ENTER): + println("Action:ENTER"); + break; + case(ControlP5.ACTION_LEAVE): + println("Action:LEAVE"); + break; + case(ControlP5.ACTION_PRESSED): + println("Action:PRESSED"); + break; + case(ControlP5.ACTION_RELEASED): + println("Action:RELEASED"); + break; + case(ControlP5.ACTION_RELEASEDOUTSIDE): + println("Action:RELEASED OUTSIDE"); + break; + case(ControlP5.ACTION_BROADCAST): + println("Action:BROADCAST"); + break; + } + } +} + + + +class Info { + float a; + float n = 0; + String txt = ""; + Textarea label; + + Info() { + label = cp5.addTextarea("Hello\nWorld") + .setSize(200,200) + .setPosition(300,40) + .setColor(color(255)) + .setColorBackground(color(100,0)) + .setLineHeight(12); + + } + + void update() { + a += (n-a)*0.1; + label.setColorBackground(color(100,255*a)); + } +} + + +/* +a list of all methods available for the CallbackEvent Controller + use ControlP5.printPublicMethodsFor(CallbackEvent.class); + to print the following list into the console. + + You can find further details about class CallbackEvent in the javadoc. + + Format: + ClassName : returnType methodName(parameter type) + + + controlP5.CallbackEvent : Controller getController() + controlP5.CallbackEvent : int getAction() + java.lang.Object : String toString() + java.lang.Object : boolean equals(Object) + + + */ + + + diff --git a/libraries/controlP5/examples/use/ControlP5controlEvent/ControlP5controlEvent.pde b/libraries/controlP5/examples/use/ControlP5controlEvent/ControlP5controlEvent.pde new file mode 100644 index 0000000..5f7a909 --- /dev/null +++ b/libraries/controlP5/examples/use/ControlP5controlEvent/ControlP5controlEvent.pde @@ -0,0 +1,119 @@ +/** + * ControlP5 ControlEvent. + * every control event is automatically forwarded to the function controlEvent(ControlEvent) + * inside a sketch if such function is available. For further details about the API of + * the ControlEvent class, please refer to the documentation. + * + * + * find a list of public methods available for ControlEvent + * at the bottom of this sketch's source code + * + * by Andreas Schlegel, 2012 + * www.sojamo.de/libraries/controlP5 + * + */ + +import controlP5.*; + +ControlP5 cp5; + +public int myColorRect1 = 200; + +public int myColorRect2 = 100; + + +void setup() { + size(400, 400); + noStroke(); + + cp5 = new ControlP5(this); + cp5.addNumberbox("n1") + .setValue(myColorRect1) + .setPosition(20, 20) + .setSize(100, 20) + .setMin(0) + .setMax(255) + .setId(1); + + cp5.addNumberbox("n2") + .setValue(myColorRect2) + .setPosition(20, 60) + .setSize(100, 20) + .setMin(0) + .setMax(255) + .setId(2); + + cp5.addTextfield("n3") + .setPosition(20, 100) + .setSize(100, 20) + .setId(3); + +} + +void draw() { + background(ControlP5.MAROON); + fill(ControlP5.RED, myColorRect1); + rect(140, 20, 240, 170); + fill(ControlP5.FUCHSIA, myColorRect2); + rect(140, 210, 240, 170); +} + + +void controlEvent(ControlEvent theEvent) { + println("got a control event from controller with id "+theEvent.getController().getId()); + + if (theEvent.isFrom(cp5.getController("n1"))) { + println("this event was triggered by Controller n1"); + } + + switch(theEvent.getController().getId()) { + case(1): + myColorRect1 = (int)(theEvent.getController().getValue()); + break; + case(2): + myColorRect2 = (int)(theEvent.getController().getValue()); + break; + case(3): + println(theEvent.getController().getStringValue()); + break; + } +} + + +/* +a list of all methods available for the ControlEvent Controller +use ControlP5.printPublicMethodsFor(ControlEvent.class); +to print the following list into the console. + +You can find further details about class ControlEvent in the javadoc. + +Format: +ClassName : returnType methodName(parameter type) + + +controlP5.ControlEvent : ControlGroup getGroup() +controlP5.ControlEvent : Controller getController() +controlP5.ControlEvent : String getLabel() +controlP5.ControlEvent : String getName() +controlP5.ControlEvent : String getStringValue() +controlP5.ControlEvent : String toString() +controlP5.ControlEvent : Tab getTab() +controlP5.ControlEvent : boolean isAssignableFrom(Class) +controlP5.ControlEvent : boolean isController() +controlP5.ControlEvent : boolean isFrom(ControllerInterface) +controlP5.ControlEvent : boolean isFrom(String) +controlP5.ControlEvent : boolean isGroup() +controlP5.ControlEvent : boolean isTab() +controlP5.ControlEvent : float getArrayValue(int) +controlP5.ControlEvent : float getValue() +controlP5.ControlEvent : float[] getArrayValue() +controlP5.ControlEvent : int getId() +controlP5.ControlEvent : int getType() +java.lang.Object : String toString() +java.lang.Object : boolean equals(Object) + +created: 2015/03/24 12:22:35 + +*/ + + diff --git a/libraries/controlP5/examples/use/ControlP5controlFont/ControlP5controlFont.pde b/libraries/controlP5/examples/use/ControlP5controlFont/ControlP5controlFont.pde new file mode 100644 index 0000000..35df35c --- /dev/null +++ b/libraries/controlP5/examples/use/ControlP5controlFont/ControlP5controlFont.pde @@ -0,0 +1,134 @@ +/** + * ControlP5 controlFont. + * + * this example shows how to create a button with controlP5 (1), how to + * load and use a PFont with controlP5 (2), apply a ControlFont to + * the caption label of a button (3), and adjust the location of a + * caption label using the style() property of a controller. + * + * by andreas schlegel, 2012 + */ +import controlP5.*; + +ControlP5 cp5; + +controlP5.Button b; + +int buttonValue = 1; + +boolean isOpen; + +int myColorBackground = color(0,0,0); + + +void setup() { + size(700,400); + smooth(); + + cp5 = new ControlP5(this); + // (1) + // create some controllers + cp5.addButton("button") + .setValue(10) + .setPosition(20,20) + .setSize(100,50) + .setId(1); + + b = cp5.addButton("buttonValue") + .setValue(4) + .setPosition(100,190) + .setSize(200,200) + .setId(2); + + // (2) + // load a new font. ControlFont is a wrapper for processing's PFont + // with processing 1.1 ControlFont.setSmooth() is not supported anymore. + // to display a font as smooth or non-smooth, use true/false as 3rd parameter + // when creating a PFont: + + PFont pfont = createFont("Arial",20,true); // use true/false for smooth/no-smooth + ControlFont font = new ControlFont(pfont,241); + + + + // (3) + // change the font and content of the captionlabels + // for both buttons create earlier. + cp5.getController("button") + .getCaptionLabel() + .setFont(font) + .toUpperCase(false) + .setSize(24) + ; + + b.getCaptionLabel() + .setFont(font) + .setSize(50) + .toUpperCase(false) + .setText("hello") + ; +// + // (4) + // adjust the location of a catiption label using the + // style property of a controller. + b.getCaptionLabel().getStyle().marginLeft = 20; + b.getCaptionLabel().getStyle().marginTop = 40; + +} + +void draw() { + background(ControlP5.SILVER); + // animate button b + float x = b.x(b.getPosition()); + x += ((isOpen==true ? 0:-200) - x) * 0.2;; + float y = b.y(b.getPosition()); + b.setPosition(x,y); +} + +public void controlEvent(ControlEvent theEvent) { + println(theEvent.getController().getId()); +} + +public void button(float theValue) { + println("a button event. "+theValue); + isOpen = !isOpen; + cp5.getController("button").setCaptionLabel((isOpen==true) ? "close":"open"); +} + + + +/* +a list of all methods available for the ControlFont Controller +use ControlP5.printPublicMethodsFor(ControlFont.class); +to print the following list into the console. + +You can find further details about class ControlFont in the javadoc. + +Format: +ClassName : returnType methodName(parameter type) + + +controlP5.ControlFont : PFont getFont() +controlP5.ControlFont : int getBaseline() +controlP5.ControlFont : int getBottom() +controlP5.ControlFont : int getCenter() +controlP5.ControlFont : int getHeight() +controlP5.ControlFont : int getOffset(int) +controlP5.ControlFont : int getOverflow() +controlP5.ControlFont : int getSize() +controlP5.ControlFont : int getTextHeight() +controlP5.ControlFont : int getTop() +controlP5.ControlFont : int getWidth() +controlP5.ControlFont : void adjust(PGraphics, Label) +controlP5.ControlFont : void draw(ControlP5, Label) +controlP5.ControlFont : void draw(PGraphics, Label) +controlP5.ControlFont : void init(Label) +controlP5.ControlFont : void setSize(int) +java.lang.Object : String toString() +java.lang.Object : boolean equals(Object) + +created: 2015/03/24 12:22:36 + +*/ + + diff --git a/libraries/controlP5/examples/use/ControlP5customView/ControlP5customView.pde b/libraries/controlP5/examples/use/ControlP5customView/ControlP5customView.pde new file mode 100644 index 0000000..4db2e6f --- /dev/null +++ b/libraries/controlP5/examples/use/ControlP5customView/ControlP5customView.pde @@ -0,0 +1,101 @@ +/** +* ControlP5 Custom View +* +* +* find a list of public methods available for the ControllerDisplay Controller +* at the bottom of this sketch. +* +* by Andreas Schlegel, 2012 +* www.sojamo.de/libraries/controlp5 +* +*/ + + +import controlP5.*; + + +ControlP5 cp5; + + +void setup() { + size(400, 400); + smooth(); + cp5 = new ControlP5(this); + cp5.addButton("hello") + .setPosition(50, 100) + .setSize(150,150) + .setView(new CircularButton()) + ; + + cp5.addButton("world") + .setPosition(250, 100) + .setSize(50,50) + .setView(new CircularButton()) + ; +} + + +void draw() { + background(ControlP5.BLACK); +} + +public void hello(int theValue) { + println("Hello pressed"); +} + +public void world(int theValue) { + println("World pressed"); +} + +/** + * to define a custom View for a controller use the ContollerView interface + * T here must be replace by the name of the Controller class your custom View will be + * applied to. In our example T is replace by Button since we are aplpying the View + * to the Button instance create in setup. The ControllerView interface requires + * you to implement the display(PApplet, T) method. Same here, T must be replaced by + * the Controller class you are designing the custom view for, for us this is the + * Button class. + */ + +class CircularButton implements ControllerView