2.2.6 release

This commit is contained in:
sojamo 2016-04-14 18:39:16 +08:00
parent 665b0c1aa5
commit 1f7cb64986
84 changed files with 1296 additions and 650 deletions

View File

@ -471,7 +471,7 @@ convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found. "copyright" line and a pointer to where the full notice is found.
controlP5 is a processing gui library. controlP5 is a processing gui library.
Copyright (C) 2006-2014 andreas schlegel Copyright (C) 2006-2015 andreas schlegel
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public

View File

@ -42,13 +42,13 @@ public void controlEvent(ControlEvent c) {
int b = int(c.getArrayValue(2)); int b = int(c.getArrayValue(2));
int a = int(c.getArrayValue(3)); int a = int(c.getArrayValue(3));
color col = color(r,g,b,a); color col = color(r,g,b,a);
println("event\talpha:"+a+"\tred:"+r+"\tgreen:"+g+"\tblue:"+b+"\tcol"+col); println("event \talpha:"+a+"\tred:"+r+"\tgreen:"+g+"\tblue:"+b+"\tcol"+col);
} }
} }
// color information from ColorPicker 'picker' are forwarded to the picker(int) function // color information from ColorPicker 'picker' are forwarded to the picker(int) function
void picker(int col) { void picker(int col) {
println("picker\talpha:"+alpha(col)+"\tred:"+red(col)+"\tgreen:"+green(col)+"\tblue:"+blue(col)+"\tcol"+col); println("picker\talpha:"+int(alpha(col))+"\tred:"+int(red(col))+"\tgreen:"+int(green(col))+"\tblue:"+int(blue(col))+"\tcol"+col);
} }
@ -184,5 +184,3 @@ java.lang.Object : boolean equals(Object)
created: 2015/03/24 12:20:58 created: 2015/03/24 12:20:58
*/ */

View File

@ -1,98 +1,112 @@
/** /**
* ControlP5 Controlframe * 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 * this example shows you how to create separate window to
* display and use controllers with processing 3
*
* by Andreas Schlegel, 2016
* www.sojamo.de/libraries/controlp5 * www.sojamo.de/libraries/controlp5
* *
*/ */
import java.awt.Frame;
import java.awt.BorderLayout;
import controlP5.*; import controlP5.*;
private ControlP5 cp5;
ControlFrame cf; ControlFrame cf;
int def; float speed;
float pos;
float c0, c1, c2, c3;
boolean auto;
void settings() {
size(400, 400, P3D);
}
void setup() { void setup() {
size(400, 400); cf = new ControlFrame(this, 400, 800, "Controls");
cp5 = new ControlP5(this); surface.setLocation(420, 10);
noStroke();
// 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() { void draw() {
background(def); if (auto) pos += speed;
} background(0);
translate(width/2, height/2);
ControlFrame addControlFrame(String theName, int theWidth, int theHeight) { rotateY(pos);
Frame f = new Frame(theName); lights();
ControlFrame p = new ControlFrame(this, theWidth, theHeight); fill(c0, c1, c2, c3);
f.add(p); box(100);
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 class ControlFrame extends PApplet {
public class ControlFrame extends PApplet {
int w, h; int w, h;
PApplet parent;
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; ControlP5 cp5;
Object parent; public ControlFrame(PApplet _parent, int _w, int _h, String _name) {
super();
parent = _parent;
w=_w;
h=_h;
PApplet.runSketch(new String[]{this.getClass().getName()}, this);
}
public void settings() {
size(w, h);
}
public void setup() {
surface.setLocation(10, 10);
cp5 = new ControlP5(this);
cp5.addToggle("auto")
.plugTo(parent, "auto")
.setPosition(10, 70)
.setSize(50, 50)
.setValue(true);
cp5.addKnob("blend")
.plugTo(parent, "c3")
.setPosition(100, 300)
.setSize(200, 200)
.setRange(0, 255)
.setValue(200);
cp5.addNumberbox("color-red")
.plugTo(parent, "c0")
.setRange(0, 255)
.setValue(255)
.setPosition(100, 10)
.setSize(100, 20);
cp5.addNumberbox("color-green")
.plugTo(parent, "c1")
.setRange(0, 255)
.setValue(128)
.setPosition(100, 70)
.setSize(100, 20);
cp5.addNumberbox("color-blue")
.plugTo(parent, "c2")
.setRange(0, 255)
.setValue(0)
.setPosition(100, 130)
.setSize(100, 20);
cp5.addSlider("speed")
.plugTo(parent, "speed")
.setRange(0, 0.1)
.setValue(0.01)
.setPosition(100, 240)
.setSize(200, 30);
}
void draw() {
background(190);
}
} }

View File

@ -13,13 +13,13 @@
</path> </path>
<property name="javaVersion" value="1.6"/> <property name="javaVersion" value="1.6"/>
<property name="author" value="Andreas Schlegel"/> <property name="author" value="Andreas Schlegel"/>
<property name="copyright" value="(c) 2006-2015"/> <property name="copyright" value="(c) 2006-2016"/>
<property name="libraryName" value="controlP5"/> <property name="libraryName" value="controlP5"/>
<property name="versionNumber" value="2.2.5"/> <property name="versionNumber" value="2.2.6"/>
<property name="yourLink" value="http://www.sojamo.de" /> <property name="yourLink" value="http://www.sojamo.de" />
<property name="keywords" value="gui, ui, controller, interface, user interface" /> <property name="keywords" value="gui, ui, controller, interface, user interface" />
<property name="tested:platform" value="osx, windows, linux" /> <property name="tested:platform" value="osx, windows, linux" />
<property name="tested:processingVersion" value="2.2.1" /> <property name="tested:processingVersion" value="3.0.2" />
<property name="tested:dependencies" value="none" /> <property name="tested:dependencies" value="none" />
<property name="source:host" value="github" /> <property name="source:host" value="github" />
<property name="source:url" value="https://github.com/sojamo/controlp5" /> <property name="source:url" value="https://github.com/sojamo/controlp5" />
@ -334,4 +334,3 @@
<replaceregexp file="${file}" match="##date##" replace="${date}" flags="g" /> <replaceregexp file="${file}" match="##date##" replace="${date}" flags="g" />
</target> </target>
</project> </project>

View File

@ -1,4 +1,4 @@
cd $HOME/Documents/workspace/controlp5/bin cd $HOME/Documents/workspace/controlp5/bin
jar cf ../test/controlP5.jar . jar cf ../test/controlP5.jar .
cp ../test/controlP5.jar $HOME/Documents/Processing/libraries/controlP5/library cp ../test/controlP5.jar $HOME/Documents/Processing3/libraries/controlP5/library
echo "controlP5 compiled on $(date)" echo "controlP5 compiled on $(date)"

View File

@ -38,7 +38,7 @@ paragraph = Includes interface elements such as slider, button, knob, toggle, te
# is used to compare different versions of the same library, and # is used to compare different versions of the same library, and
# check if an update is available. You should think of it as a # check if an update is available. You should think of it as a
# counter, counting the total number of releases you've had. # counter, counting the total number of releases you've had.
version = 84 # This must be parsable as an int version = 85 # This must be parsable as an int
# The version as the user will see it. If blank, the version attribute will be used here # The version as the user will see it. If blank, the version attribute will be used here
prettyVersion = 2.2.5 # This is treated as a String prettyVersion = 2.2.6 # This is treated as a String

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2014 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
public class Background extends ControlGroup< Background > { public class Background extends ControlGroup< Background > {
public Background( ControlP5 theControlP5 , ControllerGroup< ? > theParent , String theName , int theX , int theY , int theW , int theH ) { public Background( ControlP5 theControlP5 , ControllerGroup< ? > theParent , String theName , int theX , int theY , int theW , int theH ) {

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2014 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2014 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2014 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it * This library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser * and/or modify it under the terms of the GNU Lesser

View File

@ -1,5 +1,32 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import static controlP5.ControlP5.b; import static controlP5.ControlP5.b;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or modify it under * This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free * the terms of the GNU Lesser General Public License as published by the Free

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.lang.reflect.Array; import java.lang.reflect.Array;
import java.net.URLEncoder; import java.net.URLEncoder;
@ -7,8 +32,6 @@ import java.text.CharacterIterator;
import java.text.StringCharacterIterator; import java.text.StringCharacterIterator;
import java.util.List; import java.util.List;
import processing.core.PVector;
public class CP { public class CP {
/** /**
@ -224,9 +247,6 @@ public class CP {
return c.toString( ).startsWith( pattern ) ? c.toString( ).substring( pattern.length( ) ) : c.toString( ); return c.toString( ).startsWith( pattern ) ? c.toString( ).substring( pattern.length( ) ) : c.toString( );
} }
static public boolean inside( int[] theRect , PVector theVector ) {
return inside( theRect , theVector.x , theVector.y );
}
static public boolean inside( int[] theRect , float theX , float theY ) { static public boolean inside( int[] theRect , float theX , float theY ) {
if ( theRect.length == 4 ) { if ( theRect.length == 4 ) {

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2014 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PGraphics; import processing.core.PGraphics;

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
/** /**
* Used by Chart, single chart data is stored here including value, (label) text, and color. * Used by Chart, single chart data is stored here including value, (label) text, and color.
*/ */

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.util.ArrayList; import java.util.ArrayList;
import java.util.ListIterator; import java.util.ListIterator;

View File

@ -1,16 +1,9 @@
package controlP5; package controlP5;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import processing.core.PImage;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -32,6 +25,13 @@ import processing.core.PImage;
* *
*/ */
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import processing.core.PImage;
/** /**
* A multiple-choice radioButton. items are added to a checkBox and can be organized in rows and * A multiple-choice radioButton. items are added to a checkBox and can be organized in rows and
* columns. items of a checkBox are of type Toggle. * columns. items of a checkBox are of type Toggle.

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
class ColorPalette extends ControlGroup< ColorPalette > { class ColorPalette extends ControlGroup< ColorPalette > {
protected ColorPalette( ControlP5 theControlP5 , ControllerGroup< ? > theParent , String theName , int theX , int theY , int theWidth , int theHeight ) { protected ColorPalette( ControlP5 theControlP5 , ControllerGroup< ? > theParent , String theName , int theX , int theY , int theWidth , int theHeight ) {

View File

@ -3,19 +3,21 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or modify it under * This library is free software; you can redistribute it and/or
* the terms of the GNU Lesser General Public License as published by the Free * modify it under the terms of the GNU Lesser General Public License
* Software Foundation; either version 2.1 of the License, or (at your option) * as published by the Free Software Foundation; either version 2.1
* any later version. This library is distributed in the hope that it will be * of the License, or (at your option) any later version.
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of * This library is distributed in the hope that it will be useful,
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser * but WITHOUT ANY WARRANTY; without even the implied warranty of
* General Public License for more details. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General
* along with this library; if not, write to the Free Software Foundation, Inc., * Public License along with this library; if not, write to the
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
* *
* @author Andreas Schlegel (http://www.sojamo.de) * @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date## * @modified ##date##
@ -169,7 +171,7 @@ public class ColorPicker extends ControlGroup< ColorPicker > {
if ( _myPlug != null ) { if ( _myPlug != null ) {
try { try {
Method method = _myPlug.getClass( ).getMethod( _myPlugName , int.class ); Method method = _myPlug.getClass( ).getMethod( _myPlugName , int.class );
method.invoke( _myPlug , ( int ) _myValue ); method.invoke( _myPlug , ( int ) getColorValue( ) );
} catch ( SecurityException ex ) { } catch ( SecurityException ex ) {
ex.printStackTrace( ); ex.printStackTrace( );
} catch ( NoSuchMethodException ex ) { } catch ( NoSuchMethodException ex ) {

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -175,9 +200,9 @@ public class ColorWheel extends Controller< ColorWheel > {
buffer.ellipse( buffer.width / 2 , buffer.height / 2 , ( inner_radius + 1 ) * 2 , ( inner_radius + 1 ) * 2 ); buffer.ellipse( buffer.width / 2 , buffer.height / 2 , ( inner_radius + 1 ) * 2 , ( inner_radius + 1 ) * 2 );
for ( int y = 0 ; y < h ; y++ ) { for ( int y = 0 ; y < h ; y++ ) {
int dy = ( int ) ( y(center) - y ); int dy = ( int ) ( y( center ) - y );
for ( int x = 0 ; x < w ; x++ ) { for ( int x = 0 ; x < w ; x++ ) {
int dx = ( int ) ( x(center) - x ); int dx = ( int ) ( x( center ) - x );
double dist = Math.sqrt( dx * dx + dy * dy ); double dist = Math.sqrt( dx * dx + dy * dy );
if ( dist >= inner_radius && dist <= outer_radius ) { if ( dist >= inner_radius && dist <= outer_radius ) {
double theta = Math.atan2( dy , dx ); double theta = Math.atan2( dy , dx );
@ -234,9 +259,9 @@ public class ColorWheel extends Controller< ColorWheel > {
float y = _myColorResources.get( "default" ).height / 2 - ( float ) Math.sin( theta ) * s; float y = _myColorResources.get( "default" ).height / 2 - ( float ) Math.sin( theta ) * s;
set( _myCursor , x , y ); set( _myCursor , x , y );
setSaturation( t[ 1 ] ); setSaturation( t[ 1 ] );
// TODO resolve rounding error issue as reported here https://github.com/sojamo/controlp5/issues/21
_myColorValue = HSLtoRGB( hsl ); _myColorValue = HSLtoRGB( hsl );
setValue( _myColorValue ); setValue( _myColorValue );
return this; return this;
} }

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,23 +3,21 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it * This library is free software; you can redistribute it and/or
* and/or modify it under the terms of the GNU Lesser * modify it under the terms of the GNU Lesser General Public License
* General Public License as published by the Free Software * as published by the Free Software Foundation; either version 2.1
* Foundation; either version 2.1 of the License, or (at * of the License, or (at your option) any later version.
* your option) any later version. This library is * This library is distributed in the hope that it will be useful,
* distributed in the hope that it will be useful, but * but WITHOUT ANY WARRANTY; without even the implied warranty of
* WITHOUT ANY WARRANTY; without even the implied warranty * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * Lesser General Public License for more details.
* See the GNU Lesser General Public License for more
* details.
* *
* You should have received a copy of the GNU Lesser General * You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to * Public License along with this library; if not, write to the
* the Free Software Foundation, Inc., 59 Temple Place, * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Suite 330, Boston, MA 02111-1307 USA * Boston, MA 02111-1307 USA
* *
* @author Andreas Schlegel (http://www.sojamo.de) * @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date## * @modified ##date##

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
public interface ControlKey { public interface ControlKey {
public void keyEvent(); public void keyEvent();

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,23 +3,21 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it * This library is free software; you can redistribute it and/or
* and/or modify it under the terms of the GNU Lesser * modify it under the terms of the GNU Lesser General Public License
* General Public License as published by the Free Software * as published by the Free Software Foundation; either version 2.1
* Foundation; either version 2.1 of the License, or (at * of the License, or (at your option) any later version.
* your option) any later version. This library is * This library is distributed in the hope that it will be useful,
* distributed in the hope that it will be useful, but * but WITHOUT ANY WARRANTY; without even the implied warranty of
* WITHOUT ANY WARRANTY; without even the implied warranty * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * Lesser General Public License for more details.
* See the GNU Lesser General Public License for more
* details.
* *
* You should have received a copy of the GNU Lesser General * You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to * Public License along with this library; if not, write to the
* the Free Software Foundation, Inc., 59 Temple Place, * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Suite 330, Boston, MA 02111-1307 USA * Boston, MA 02111-1307 USA
* *
* @author Andreas Schlegel (http://www.sojamo.de) * @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date## * @modified ##date##
@ -98,7 +96,7 @@ public class ControlP5 extends ControlP5Base {
/** /**
* @exclude * @exclude
*/ */
@ControlP5.Invisible public static final String VERSION = "2.2.5";// "##version##"; @ControlP5.Invisible public static final String VERSION = "2.2.6";// "##version##";
/** /**
* @exclude * @exclude
@ -954,7 +952,8 @@ public class ControlP5 extends ControlP5Base {
public boolean loadProperties( final String theFilePath ) { public boolean loadProperties( final String theFilePath ) {
String path = theFilePath.endsWith( _myProperties.format.getExtension( ) ) ? theFilePath : theFilePath + "." + _myProperties.format.getExtension( ); String path = theFilePath.endsWith( _myProperties.format.getExtension( ) ) ? theFilePath : theFilePath + "." + _myProperties.format.getExtension( );
path = checkPropertiesPath( path ); path = checkPropertiesPath( path );
File f = new File( path ); File f = new File( path);
if ( f.exists( ) ) { if ( f.exists( ) ) {
return _myProperties.load( path ); return _myProperties.load( path );
} }
@ -1226,8 +1225,14 @@ public class ControlP5 extends ControlP5Base {
/* static helper functions including Object-to-Type /* static helper functions including Object-to-Type
* conversions, invokes */ * conversions, invokes */
static public Object invoke( Object theObject , String theMember , Object ... theParams ) { static public Object invoke( final Object theObject , final String theMember , final Object ... theParams ) {
return invoke( theObject , theObject.getClass( ) , theMember , theParams );
}
static public Object invoke( final Object theObject , final Class< ? > theClass , final String theMember , final Object ... theParams ) {
if ( theClass == null ) {
return null;
}
Class[] cs = new Class[ theParams.length ]; Class[] cs = new Class[ theParams.length ];
for ( int i = 0 ; i < theParams.length ; i++ ) { for ( int i = 0 ; i < theParams.length ; i++ ) {
@ -1235,7 +1240,7 @@ public class ControlP5 extends ControlP5Base {
cs[ i ] = classmap.containsKey( c ) ? classmap.get( c ) : c; cs[ i ] = classmap.containsKey( c ) ? classmap.get( c ) : c;
} }
try { try {
final Field f = theObject.getClass( ).getDeclaredField( theMember ); final Field f = theClass.getDeclaredField( theMember );
/* TODO check super */ /* TODO check super */
f.setAccessible( true ); f.setAccessible( true );
Object o = theParams[ 0 ]; Object o = theParams[ 0 ];
@ -1257,8 +1262,7 @@ public class ControlP5 extends ControlP5Base {
} }
} catch ( NoSuchFieldException e1 ) { } catch ( NoSuchFieldException e1 ) {
try { try {
final Method m = theObject.getClass( ).getDeclaredMethod( theMember , cs ); final Method m = theClass.getDeclaredMethod( theMember , cs );
/* TODO check super */
m.setAccessible( true ); m.setAccessible( true );
try { try {
return m.invoke( theObject , theParams ); return m.invoke( theObject , theParams );
@ -1273,7 +1277,7 @@ public class ControlP5 extends ControlP5Base {
} catch ( SecurityException e ) { } catch ( SecurityException e ) {
System.err.println( e ); System.err.println( e );
} catch ( NoSuchMethodException e ) { } catch ( NoSuchMethodException e ) {
System.err.println( e ); invoke( theObject , theClass.getSuperclass( ) , theMember , theParams );
} }
} catch ( IllegalArgumentException e ) { } catch ( IllegalArgumentException e ) {
System.err.println( e ); System.err.println( e );

View File

@ -3,23 +3,21 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it * This library is free software; you can redistribute it and/or
* and/or modify it under the terms of the GNU Lesser * modify it under the terms of the GNU Lesser General Public License
* General Public License as published by the Free Software * as published by the Free Software Foundation; either version 2.1
* Foundation; either version 2.1 of the License, or (at * of the License, or (at your option) any later version.
* your option) any later version. This library is * This library is distributed in the hope that it will be useful,
* distributed in the hope that it will be useful, but * but WITHOUT ANY WARRANTY; without even the implied warranty of
* WITHOUT ANY WARRANTY; without even the implied warranty * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * Lesser General Public License for more details.
* See the GNU Lesser General Public License for more
* details.
* *
* You should have received a copy of the GNU Lesser General * You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to * Public License along with this library; if not, write to the
* the Free Software Foundation, Inc., 59 Temple Place, * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Suite 330, Boston, MA 02111-1307 USA * Boston, MA 02111-1307 USA
* *
* @author Andreas Schlegel (http://www.sojamo.de) * @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date## * @modified ##date##
@ -39,7 +37,6 @@ import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PVector;
import processing.event.Event; import processing.event.Event;
import static controlP5.Controller.*; import static controlP5.Controller.*;

View File

@ -3,29 +3,28 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it * This library is free software; you can redistribute it and/or
* and/or modify it under the terms of the GNU Lesser * modify it under the terms of the GNU Lesser General Public License
* General Public License as published by the Free Software * as published by the Free Software Foundation; either version 2.1
* Foundation; either version 2.1 of the License, or (at * of the License, or (at your option) any later version.
* your option) any later version. This library is * This library is distributed in the hope that it will be useful,
* distributed in the hope that it will be useful, but * but WITHOUT ANY WARRANTY; without even the implied warranty of
* WITHOUT ANY WARRANTY; without even the implied warranty * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * Lesser General Public License for more details.
* See the GNU Lesser General Public License for more
* details.
* *
* You should have received a copy of the GNU Lesser General * You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to * Public License along with this library; if not, write to the
* the Free Software Foundation, Inc., 59 Temple Place, * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Suite 330, Boston, MA 02111-1307 USA * Boston, MA 02111-1307 USA
* *
* @author Andreas Schlegel (http://www.sojamo.de) * @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date## * @modified ##date##
* @version ##version## * @version ##version##
* *
*/ */
import processing.core.PApplet; import processing.core.PApplet;
/** /**

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.util.ArrayList; import java.util.ArrayList;
import processing.core.PApplet; import processing.core.PApplet;

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2014 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it * This library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser * and/or modify it under the terms of the GNU Lesser
@ -34,7 +34,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PConstants; import processing.core.PConstants;
import processing.core.PGraphics; import processing.core.PGraphics;
import processing.core.PVector;
import processing.event.KeyEvent; import processing.event.KeyEvent;
import processing.event.MouseEvent; import processing.event.MouseEvent;
import controlP5.ControlP5Base.KeyCode; import controlP5.ControlP5Base.KeyCode;
@ -62,10 +61,10 @@ public final class ControlWindow {
protected List< Canvas > _myCanvas; protected List< Canvas > _myCanvas;
protected boolean isDrawBackground = true; protected boolean isDrawBackground = true;
protected boolean isUndecorated = false; protected boolean isUndecorated = false;
protected PVector autoPosition = new PVector( 10 , 30 , 0 ); protected float[] autoPosition = new float[]{ 10 , 30 , 0 };
protected float tempAutoPositionHeight = 0; protected float tempAutoPositionHeight = 0;
protected boolean rendererNotification = false; protected boolean rendererNotification = false;
protected PVector positionOfTabs = new PVector( 0 , 0 , 0 ); protected float[] positionOfTabs = new float[]{ 0 , 0 , 0 };
private int _myFrameCount = 0; private int _myFrameCount = 0;
private boolean isMouse = true; private boolean isMouse = true;
private Pointer _myPointer; private Pointer _myPointer;
@ -82,7 +81,8 @@ public final class ControlWindow {
protected boolean mouselock; protected boolean mouselock;
protected char key; protected char key;
protected int keyCode; protected int keyCode;
private boolean[] keys = new boolean[ 525 ]; private final int numKeys = 1024;
private boolean[] keys = new boolean[ numKeys ];
private int numOfActiveKeys = 0; private int numOfActiveKeys = 0;
private boolean focused = true; private boolean focused = true;
@ -195,29 +195,18 @@ public final class ControlWindow {
/** /**
* Sets the position of the tab bar which is set to 0,0 * Sets the position of the tab bar which is set to 0,0
* by default. to move the tabs to y-position 100, use * by default. to move the tabs to y-position 100, use
* cp5.getWindow().setPositionOfTabs(new PVector(0,100,0)); * cp5.getWindow().setPositionOfTabs(0,100);
* *
* @param thePVector
*/ */
public ControlWindow setPositionOfTabs( PVector thePVector ) {
positionOfTabs.set( thePVector );
return this;
}
public ControlWindow setPositionOfTabs( int theX , int theY ) { public ControlWindow setPositionOfTabs( int theX , int theY ) {
positionOfTabs.set( theX , theY , positionOfTabs.z ); positionOfTabs[0] = theX;
positionOfTabs[1] = theY;
return this; return this;
} }
/**
* Returns the position of the tab bar as PVector. to public float[] getPositionOfTabs( ) {
* move the tabs to y-position 100, use
* cp5.window().getPositionOfTabs().y = 100; or
* cp5.window().setPositionOfTabs(new PVector(0,100,0));
*
* @return PVector
*/
public PVector getPositionOfTabs( ) {
return positionOfTabs; return positionOfTabs;
} }
@ -508,7 +497,7 @@ public final class ControlWindow {
} }
public void clearKeys( ) { public void clearKeys( ) {
keys = new boolean[ 525 ]; keys = new boolean[ numKeys ];
numOfActiveKeys = 0; numOfActiveKeys = 0;
} }
@ -566,8 +555,8 @@ public final class ControlWindow {
pg.noStroke( ); pg.noStroke( );
pg.noFill( ); pg.noFill( );
int myOffsetX = ( int ) getPositionOfTabs( ).x; int myOffsetX = ( int ) getPositionOfTabs( )[0];
int myOffsetY = ( int ) getPositionOfTabs( ).y; int myOffsetY = ( int ) getPositionOfTabs( )[1];
int myHeight = 0; int myHeight = 0;
if ( _myTabs.size( ) > 0 ) { if ( _myTabs.size( ) > 0 ) {

View File

@ -4,7 +4,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -1,17 +1,23 @@
package controlP5; package controlP5;
/** /**
* controlP5 is a processing gui library.
* *
* 2006-2013 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General * This library is free software; you can redistribute it and/or
* Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) * modify it under the terms of the GNU Lesser General Public License
* any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * as published by the Free Software Foundation; either version 2.1
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * of the License, or (at your option) any later version.
* License for more details. * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to * You should have received a copy of the GNU Lesser General
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
* *
* @author Andreas Schlegel (http://www.sojamo.de) * @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date## * @modified ##date##
@ -26,9 +32,9 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PFont;
import processing.core.PGraphics; import processing.core.PGraphics;
import processing.core.PImage; import processing.core.PImage;
import processing.core.PVector;
import processing.event.KeyEvent; import processing.event.KeyEvent;
/** /**
@ -270,8 +276,7 @@ public abstract class Controller< T > implements ControllerInterface< T > , CDra
} }
protected void updateFont( ControlFont theControlFont ) { protected void updateFont( ControlFont theControlFont ) {
_myCaptionLabel.updateFont( theControlFont ); setFont( theControlFont );
_myValueLabel.updateFont( theControlFont );
} }
/** /**
@ -413,15 +418,7 @@ public abstract class Controller< T > implements ControllerInterface< T > , CDra
return me; return me;
} }
/**
* @return {@link PVector}
*/
public float[] getAbsolutePosition( ) { public float[] getAbsolutePosition( ) {
// should return a mutable object of absolutePostion
// in a new PVector object to prevent
// absolutePosition from being
// modified by changing its field values. PVector
// should have getter and setters for x,y,z
return absolutePosition; return absolutePosition;
} }
@ -2213,4 +2210,16 @@ public abstract class Controller< T > implements ControllerInterface< T > , CDra
return me; return me;
} }
@Override public T setFont( PFont thePFont ) {
getValueLabel( ).setFont( thePFont );
getCaptionLabel( ).setFont( thePFont );
return me;
}
@Override public T setFont( ControlFont theFont ) {
getValueLabel( ).setFont( theFont );
getCaptionLabel( ).setFont( theFont );
return me;
}
} }

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -104,16 +104,16 @@ class ControllerAutomator {
* *
*/ */
void addControllersFor( final String theAddressSpace , final Object t ) { void addControllersFor( final String theAddressSpace , final Object t ) {
System.out.println("OKOK");
if ( t instanceof List< ? > ) { if ( t instanceof List< ? > ) {
return; return;
} }
Class< ? > c = t.getClass( ); Class< ? > c = t.getClass( );
Field[] fs = c.getDeclaredFields( ); Field[] fs = c.getFields( );
Method[] ms = c.getDeclaredMethods( ); Method[] ms = c.getMethods( );
Map< ControllerInterface , Integer > controllersIndexed = new HashMap< ControllerInterface , Integer >( ); Map< ControllerInterface , Integer > controllersIndexed = new HashMap< ControllerInterface , Integer >( );

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -29,6 +29,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PFont;
import processing.core.PGraphics; import processing.core.PGraphics;
import processing.event.KeyEvent; import processing.event.KeyEvent;
@ -260,8 +261,8 @@ public abstract class ControllerGroup< T > implements ControllerInterface< T > ,
return me; return me;
} }
public T setPosition( float[] thePVector ) { public T setPosition( float[] thePosition ) {
setPosition( x( thePVector ) , y( thePVector ) ); setPosition( x( thePosition ) , y( thePosition ) );
return me; return me;
} }
@ -954,4 +955,16 @@ public abstract class ControllerGroup< T > implements ControllerInterface< T > ,
return 0; return 0;
} }
@Override public T setFont( PFont thePFont ) {
getValueLabel( ).setFont( thePFont );
getCaptionLabel( ).setFont( thePFont );
return me;
}
@Override public T setFont( ControlFont theFont ) {
getValueLabel( ).setFont( theFont );
getCaptionLabel( ).setFont( theFont );
return me;
}
} }

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -26,6 +26,7 @@ package controlP5;
*/ */
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PFont;
import processing.core.PGraphics; import processing.core.PGraphics;
import processing.event.KeyEvent; import processing.event.KeyEvent;
@ -64,11 +65,11 @@ public interface ControllerInterface< T > {
@ControlP5.Invisible public T setPosition( float theX , float theY ); @ControlP5.Invisible public T setPosition( float theX , float theY );
@ControlP5.Invisible public T setPosition( float[] thePVector ); @ControlP5.Invisible public T setPosition( float[] thePosition );
public float[] getAbsolutePosition( ); public float[] getAbsolutePosition( );
public T setAbsolutePosition( float[] thePVector ); public T setAbsolutePosition( float[] thePosition );
public T updateAbsolutePosition( ); public T updateAbsolutePosition( );
@ -164,6 +165,10 @@ public interface ControllerInterface< T > {
public T setMouseOver( boolean theFlag ); public T setMouseOver( boolean theFlag );
public T setFont( PFont theFont );
public T setFont( ControlFont theFont );
public T addListener( ControlListener theListener ); public T addListener( ControlListener theListener );
public T setCaptionLabel( String theValue ); public T setCaptionLabel( String theValue );

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
@ -11,7 +36,6 @@ import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import processing.core.PVector;
class ControllerLayout { class ControllerLayout {
@ -28,7 +52,6 @@ class ControllerLayout {
datatypes.put( Long.class , long.class ); datatypes.put( Long.class , long.class );
datatypes.put( Double.class , double.class ); datatypes.put( Double.class , double.class );
datatypes.put( Byte.class , byte.class ); datatypes.put( Byte.class , byte.class );
datatypes.put( PVector.class , PVector.class );
datatypes.put( CColor.class , CColor.class ); datatypes.put( CColor.class , CColor.class );
} }

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.io.Serializable; import java.io.Serializable;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -35,6 +35,7 @@ import java.io.ObjectOutputStream;
import java.io.StringReader; import java.io.StringReader;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
@ -70,6 +71,8 @@ public class ControllerProperties {
public final static int OPEN = 0; public final static int OPEN = 0;
public final static int CLOSE = 1; public final static int CLOSE = 1;
public static String defaultName = "controlP5"; public static String defaultName = "controlP5";
PropertiesStorageFormat format; PropertiesStorageFormat format;
/** /**
@ -420,14 +423,7 @@ public class ControllerProperties {
for ( ControllerProperty cp : l ) { for ( ControllerProperty cp : l ) {
ControllerInterface< ? > ci = controlP5.getController( cp.getAddress( ) ); ControllerInterface< ? > ci = controlP5.getController( cp.getAddress( ) );
ci = ( ci == null ) ? controlP5.getGroup( cp.getAddress( ) ) : ci; ci = ( ci == null ) ? controlP5.getGroup( cp.getAddress( ) ) : ci;
Method method; ControlP5.invoke( ( Controller ) ci , cp.getSetter( ) , cp.getValue( ) );
try {
method = ci.getClass( ).getMethod( cp.getSetter( ) , new Class[] { cp.getType( ) } );
method.setAccessible( true );
method.invoke( ci , new Object[] { cp.getValue( ) } );
} catch ( Exception e ) {
logger.severe( e.toString( ) );
}
} }
} }
return this; return this;
@ -473,7 +469,7 @@ public class ControllerProperties {
* saves all registered properties into the default 'controlP5.properties' file into your sketch folder. * saves all registered properties into the default 'controlP5.properties' file into your sketch folder.
*/ */
public boolean save( ) { public boolean save( ) {
System.out.println( "saving with format " + format + " (" + format.getExtension( ) + ") " + controlP5.papplet.sketchPath( defaultName ) ); System.out.println( "save properties using format " + format + " (" + format.getExtension( ) + ") " + controlP5.papplet.sketchPath( defaultName ) );
format.compile( allProperties.keySet( ) , getPathWithExtension( format , controlP5.papplet.sketchPath( defaultName ) ) ); format.compile( allProperties.keySet( ) , getPathWithExtension( format , controlP5.papplet.sketchPath( defaultName ) ) );
return true; return true;
} }
@ -688,11 +684,13 @@ public class ControllerProperties {
} }
} }
class JSONFormat implements PropertiesStorageFormat { public class JSONFormat implements PropertiesStorageFormat {
public void compile( Set< ControllerProperty > theProperties , String thePropertiesPath ) { public void compile( Set< ControllerProperty > theProperties , String thePropertiesPath ) {
long t = System.currentTimeMillis( ); long t = System.currentTimeMillis( );
JSONObject json = new JSONObject( ); JSONObject json = new JSONObject( );
for ( ControllerProperty cp : theProperties ) { for ( ControllerProperty cp : theProperties ) {
if ( cp.isActive( ) ) { if ( cp.isActive( ) ) {
if ( updatePropertyValue( cp ) ) { if ( updatePropertyValue( cp ) ) {
cp.setId( cp.getController( ).getId( ) ); cp.setId( cp.getController( ).getId( ) );
@ -714,11 +712,26 @@ public class ControllerProperties {
} else if ( cp.getValue( ) instanceof Boolean ) { } else if ( cp.getValue( ) instanceof Boolean ) {
item.setBoolean( key , ControlP5.b( cp.getValue( ) ) ); item.setBoolean( key , ControlP5.b( cp.getValue( ) ) );
} else { } else {
if ( cp.getValue( ).getClass( ).isArray( ) ) {
JSONArray arr = new JSONArray( );
if ( cp.getValue( ) instanceof int[] ) {
for ( Object o : ( int[] ) cp.getValue( ) ) {
arr.append( ControlP5.i( o ) );
}
} else if ( cp.getValue( ) instanceof float[] ) {
for ( Object o : ( float[] ) cp.getValue( ) ) {
arr.append( ControlP5.f( o ) );
}
}
item.setJSONArray( key , arr );
} else {
item.setString( key , cp.getValue( ).toString( ) ); item.setString( key , cp.getValue( ).toString( ) );
} }
} }
} }
} }
}
json.save( new File( getPathWithExtension( this , thePropertiesPath ) ) , "" ); json.save( new File( getPathWithExtension( this , thePropertiesPath ) ) , "" );
} }
@ -741,9 +754,21 @@ public class ControllerProperties {
ControlP5.invoke( c , member , ControlP5.f( value.getValue( ) ) ); ControlP5.invoke( c , member , ControlP5.f( value.getValue( ) ) );
} else if ( i1 instanceof String ) { } else if ( i1 instanceof String ) {
ControlP5.invoke( c , member , ControlP5.s( value.getValue( ) ) ); ControlP5.invoke( c , member , ControlP5.s( value.getValue( ) ) );
} else if ( i1 instanceof float[] ) {
ControlP5.invoke( c , member , (float[])i1 );
} else {
if ( i1 instanceof List ) {
List l = ( List ) i1;
float[] arr = new float[ l.size( ) ];
for ( int i = 0 ; i < l.size( ) ; i++ ) {
arr[ i ] = ControlP5.f( l.get( i ) );
}
ControlP5.invoke( c , member , arr );
} else { } else {
ControlP5.invoke( c , member , value.getValue( ) ); ControlP5.invoke( c , member , value.getValue( ) );
} }
}
} }
} }
return false; return false;
@ -818,7 +843,7 @@ public class ControllerProperties {
} }
class SerializedFormat implements PropertiesStorageFormat { public class SerializedFormat implements PropertiesStorageFormat {
public boolean load( String thePropertiesPath ) { public boolean load( String thePropertiesPath ) {
try { try {

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.io.Serializable; import java.io.Serializable;
/** /**
@ -11,21 +36,13 @@ import java.io.Serializable;
public class ControllerProperty implements Serializable , Cloneable { public class ControllerProperty implements Serializable , Cloneable {
private static final long serialVersionUID = 4506431150330867327L; private static final long serialVersionUID = 4506431150330867327L;
private String setter; private String setter;
private String getter; private String getter;
private Class< ? > type; private Class< ? > type;
private Object value; private Object value;
private String address; private String address;
private int id; private int id;
private transient boolean active; private transient boolean active;
private transient ControllerInterface< ? > controller; private transient ControllerInterface< ? > controller;
ControllerProperty( ControllerInterface< ? > theController , String theSetter , String theGetter ) { ControllerProperty( ControllerInterface< ? > theController , String theSetter , String theGetter ) {
@ -37,8 +54,7 @@ public class ControllerProperty implements Serializable , Cloneable {
setId( theController.getId( ) ); setId( theController.getId( ) );
} }
@Override @Override protected Object clone( ) throws CloneNotSupportedException {
protected Object clone( ) throws CloneNotSupportedException {
ControllerProperty clone = ( ControllerProperty ) super.clone( ); ControllerProperty clone = ( ControllerProperty ) super.clone( );
clone.setSetter( getSetter( ) ); clone.setSetter( getSetter( ) );
clone.setGetter( getGetter( ) ); clone.setGetter( getGetter( ) );
@ -54,8 +70,7 @@ public class ControllerProperty implements Serializable , Cloneable {
/** /**
* @exclude {@inheritDoc} * @exclude {@inheritDoc}
*/ */
@Override @Override public boolean equals( Object o ) {
public boolean equals( Object o ) {
if ( this == o ) { if ( this == o ) {
return true; return true;
@ -74,8 +89,7 @@ public class ControllerProperty implements Serializable , Cloneable {
/** /**
* @exclude {@inheritDoc} * @exclude {@inheritDoc}
*/ */
@Override @Override public int hashCode( ) {
public int hashCode( ) {
int result = 17; int result = 17;
result = 37 * result + ( address != null ? address.hashCode( ) : 0 ); result = 37 * result + ( address != null ? address.hashCode( ) : 0 );
result = 37 * result + ( setter != null ? setter.hashCode( ) : 0 ); result = 37 * result + ( setter != null ? setter.hashCode( ) : 0 );
@ -91,8 +105,7 @@ public class ControllerProperty implements Serializable , Cloneable {
active = true; active = true;
} }
@Override @Override public String toString( ) {
public String toString( ) {
return address + " " + setter + ", " + getter; return address + " " + setter + ", " + getter;
} }

View File

@ -1,23 +1,23 @@
package controlP5; package controlP5;
import java.io.Serializable;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or modify it under * This library is free software; you can redistribute it and/or
* the terms of the GNU Lesser General Public License as published by the Free * modify it under the terms of the GNU Lesser General Public License
* Software Foundation; either version 2.1 of the License, or (at your option) * as published by the Free Software Foundation; either version 2.1
* any later version. This library is distributed in the hope that it will be * of the License, or (at your option) any later version.
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of * This library is distributed in the hope that it will be useful,
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser * but WITHOUT ANY WARRANTY; without even the implied warranty of
* General Public License for more details. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General
* along with this library; if not, write to the Free Software Foundation, Inc., * Public License along with this library; if not, write to the
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
* *
* @author Andreas Schlegel (http://www.sojamo.de) * @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date## * @modified ##date##
@ -25,6 +25,9 @@ import java.io.Serializable;
* *
*/ */
import java.io.Serializable;
/** /**
* Labels use the ControllerStyle class to store margin and padding information. * Labels use the ControllerStyle class to store margin and padding information.
* *

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -16,7 +16,7 @@ import processing.event.KeyEvent;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -127,6 +127,7 @@ public class DropdownList extends Controller< DropdownList > implements ControlL
// n += itemRange; /* UP */ // n += itemRange; /* UP */
int index = ( int ) n + itemIndexOffset; int index = ( int ) n + itemIndexOffset;
if (index < items.size()) {
Map m = items.get( index ); Map m = items.get( index );
switch ( _myType ) { switch ( _myType ) {
@ -146,6 +147,7 @@ public class DropdownList extends Controller< DropdownList > implements ControlL
m.put( "state" , !ControlP5.b( m.get( "state" ) ) ); m.put( "state" , !ControlP5.b( m.get( "state" ) ) );
break; break;
} }
}
} }
} }

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.lang.reflect.Field; import java.lang.reflect.Field;
/** /**

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PGraphics; import processing.core.PGraphics;

View File

@ -1,5 +1,29 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
public class Group extends ControlGroup< Group > { public class Group extends ControlGroup< Group > {
/** /**

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PFont; import processing.core.PFont;
import processing.core.PGraphics; import processing.core.PGraphics;

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it * This library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser * and/or modify it under the terms of the GNU Lesser
@ -41,6 +41,7 @@ import processing.core.PGraphics;
*/ */
public class Label implements CDrawable { public class Label implements CDrawable {
public static boolean isToUpperCaseDefault = true;
protected int _myLetterSpacing = 0; protected int _myLetterSpacing = 0;
protected boolean isMultiline; protected boolean isMultiline;
protected boolean isFixedSize; protected boolean isFixedSize;
@ -48,7 +49,7 @@ public class Label implements CDrawable {
protected boolean isVisible = true; protected boolean isVisible = true;
protected int _myColor = 0xffffffff; protected int _myColor = 0xffffffff;
protected boolean isColorBackground; protected boolean isColorBackground;
protected boolean isToUpperCase = true; protected boolean isToUpperCase = isToUpperCaseDefault;
protected boolean changed; protected boolean changed;
protected int _myColorBackground = 0xffffffff; protected int _myColorBackground = 0xffffffff;
protected int _myHeight = -1; protected int _myHeight = -1;
@ -407,13 +408,23 @@ public class Label implements CDrawable {
return new Label( this ); return new Label( this );
} }
public static void setUpperCaseDefault( boolean theValue ) {
isToUpperCaseDefault = theValue;
}
interface Labeltype { interface Labeltype {
public void draw( Label theLabel , PGraphics theGraphics , int theX , int theY , ControllerInterface< ? > theController ); public void draw( Label theLabel , PGraphics theGraphics , int theX , int theY , ControllerInterface< ? > theController );
public void draw( Label theLabel , PGraphics theGraphics , int theX , int theY , int theW , int theH ); public void draw( Label theLabel , PGraphics theGraphics , int theX , int theY , int theW , int theH );
public int getWidth( ); public int getWidth( );
public int getHeight( ); public int getHeight( );
public int getOverflow( ); public int getOverflow( );
public String getTextFormatted( ); public String getTextFormatted( );
} }

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
class Pad { class Pad {
// pad for placing controllers, like matrix but without the grid // pad for placing controllers, like matrix but without the grid
// a sequencer // a sequencer

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
public interface Pointer { public interface Pointer {
public int x(); public int x();

View File

@ -1,6 +1,31 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.io.IOException; import java.io.IOException;
import java.io.PipedInputStream; import java.io.PipedInputStream;
import java.io.PipedOutputStream; import java.io.PipedOutputStream;

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
/* /*
* Backwards compatibility, cp5magic for example uses it. * Backwards compatibility, cp5magic for example uses it.
* But if possible, upgrade to RadioButton * But if possible, upgrade to RadioButton

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -29,8 +29,8 @@ import java.util.ArrayList;
import java.util.logging.Level; import java.util.logging.Level;
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PFont;
import processing.core.PGraphics; import processing.core.PGraphics;
import processing.core.PVector;
import controlP5.ControlP5.Invisible; import controlP5.ControlP5.Invisible;
/** /**
@ -66,7 +66,7 @@ public class Range extends Controller< Range > {
protected boolean isSnapToTickMarks; protected boolean isSnapToTickMarks;
public static int autoWidth = 99; public static int autoWidth = 99;
public static int autoHeight = 9; public static int autoHeight = 9;
public static PVector autoSpacing = new PVector( 0 , 5 , 0 ); public static float[] autoSpacing = new float[]{ 0 , 5 , 0 };
public int alignValueLabel = CENTER; public int alignValueLabel = CENTER;
protected int _myColorTickMark = 0xffffffff; protected int _myColorTickMark = 0xffffffff;
private int mode = -1; private int mode = -1;
@ -490,6 +490,16 @@ public class Range extends Controller< Range > {
} }
@Override public Range setFont( PFont thePFont ) {
_myHighValueLabel.setFont( thePFont );
return super.setFont( thePFont );
}
@Override public Range setFont( ControlFont theFont ) {
_myHighValueLabel.setFont( theFont );
return super.setFont( theFont );
}
@Override @ControlP5.Invisible public String toString( ) { @Override @ControlP5.Invisible public String toString( ) {
return "type:\tRange\n" + super.toString( ); return "type:\tRange\n" + super.toString( );
} }

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import static controlP5.ControlP5.b; import static controlP5.ControlP5.b;
import java.util.ArrayList; import java.util.ArrayList;
@ -13,33 +38,6 @@ import processing.core.PApplet;
import processing.core.PGraphics; import processing.core.PGraphics;
import processing.event.KeyEvent; import processing.event.KeyEvent;
/**
* controlP5 is a processing gui library.
*
* 2006-2012 by Andreas Schlegel
*
* This library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser
* General Public License as published by the Free Software
* Foundation; either version 2.1 of the License, or (at
* your option) any later version. This library is
* distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to
* the Free Software Foundation, Inc., 59 Temple Place,
* Suite 330, Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
/** /**
* A ScrollableList is a list of vertically aligned items * A ScrollableList is a list of vertically aligned items
* which can be scrolled if required. * which can be scrolled if required.

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PGraphics; import processing.core.PGraphics;

View File

@ -1,5 +1,30 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import processing.core.PGraphics; import processing.core.PGraphics;
public class Spacer extends Controller< Spacer > { public class Spacer extends Controller< Spacer > {

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -1,21 +1,9 @@
package controlP5; package controlP5;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import processing.core.PApplet;
import processing.core.PFont;
import processing.core.PGraphics;
import processing.event.Event;
import processing.event.KeyEvent;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -37,6 +25,19 @@ import processing.event.KeyEvent;
* *
*/ */
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import processing.core.PApplet;
import processing.core.PFont;
import processing.core.PGraphics;
import processing.event.Event;
import processing.event.KeyEvent;
/** /**
* A singleline input textfield, use arrow keys to go back and forth, use backspace to delete * A singleline input textfield, use arrow keys to go back and forth, use backspace to delete
* characters. Using the up and down arrows lets you cycle through the history of the textfield. * characters. Using the up and down arrows lets you cycle through the history of the textfield.
@ -109,7 +110,7 @@ public class Textfield extends Controller< Textfield > {
public Textfield( ControlP5 theControlP5 , ControllerGroup< ? > theParent , String theName , String theDefaultValue , int theX , int theY , int theWidth , int theHeight ) { public Textfield( ControlP5 theControlP5 , ControllerGroup< ? > theParent , String theName , String theDefaultValue , int theX , int theY , int theWidth , int theHeight ) {
super( theControlP5 , theParent , theName , theX , theY , theWidth , theHeight ); super( theControlP5 , theParent , theName , theX , theY , theWidth , theHeight );
_myCaptionLabel = new Label( cp5 , theName.toUpperCase( ) , 0 , 0 , color.getCaptionLabel( ) ); _myCaptionLabel = new Label( cp5 , theName , 0 , 0 , color.getCaptionLabel( ) );
_myValueLabel.setFont( cp5.controlFont == cp5.defaultFont ? cp5.defaultFontForText : cp5.controlFont ); _myValueLabel.setFont( cp5.controlFont == cp5.defaultFont ? cp5.defaultFontForText : cp5.controlFont );
_myCaptionLabel.align( ControlP5.LEFT , ControlP5.BOTTOM_OUTSIDE ); _myCaptionLabel.align( ControlP5.LEFT , ControlP5.BOTTOM_OUTSIDE );
_myCaptionLabel.setPaddingX( 0 ); _myCaptionLabel.setPaddingX( 0 );
@ -183,15 +184,15 @@ public class Textfield extends Controller< Textfield > {
return this; return this;
} }
public Textfield setFont( PFont thePFont ) { // public Textfield setFont( PFont thePFont ) {
getValueLabel( ).setFont( thePFont ); // getValueLabel( ).setFont( thePFont );
return this; // return this;
} // }
//
public Textfield setFont( ControlFont theFont ) { // public Textfield setFont( ControlFont theFont ) {
getValueLabel( ).setFont( theFont ); // getValueLabel( ).setFont( theFont );
return this; // return this;
} // }
public Textfield setFont( int theFont ) { public Textfield setFont( int theFont ) {
getValueLabel( ).setFont( theFont ); getValueLabel( ).setFont( theFont );

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -24,7 +24,6 @@ package controlP5;
* @version ##version## * @version ##version##
* *
*/ */
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PGraphics; import processing.core.PGraphics;

View File

@ -3,7 +3,7 @@ package controlP5;
/** /**
* controlP5 is a processing gui library. * controlP5 is a processing gui library.
* *
* 2006-2012 by Andreas Schlegel * 2006-2015 by Andreas Schlegel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License

View File

@ -1,11 +1,35 @@
package controlP5; package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import processing.core.PApplet; import processing.core.PApplet;
import processing.core.PGraphics; import processing.core.PGraphics;
import processing.core.PVector;
/** /**
* A tooltip can be registered for individual controllers * A tooltip can be registered for individual controllers
@ -17,10 +41,10 @@ import processing.core.PVector;
public class Tooltip { public class Tooltip {
private ControllerView< ? > _myView; private ControllerView< ? > _myView;
private PVector position = new PVector( ); private float[] position = new float[3];
private PVector currentPosition = new PVector( ); private float[] currentPosition = new float[3];
private PVector previousPosition = new PVector( ); private float[] previousPosition = new float[3];
private PVector offset = new PVector( ); private float[] offset = new float[3];
private Controller< ? > _myController; private Controller< ? > _myController;
private long startTime = 0; private long startTime = 0;
private long _myDelayInMillis = 500; private long _myDelayInMillis = 500;
@ -39,10 +63,11 @@ public class Tooltip {
Tooltip( ControlP5 theControlP5 ) { Tooltip( ControlP5 theControlP5 ) {
cp5 = theControlP5; cp5 = theControlP5;
position = new PVector( -1000 , -1000 ); position[0] = -1000;
currentPosition = new PVector( ); position[1] = -1000;
previousPosition = new PVector( ); currentPosition = new float[3];
offset = new PVector( 0 , 24 , 0 ); previousPosition = new float[3];
offset = new float[] { 0 , 24 , 0 };
map = new HashMap< Controller< ? > , String >( ); map = new HashMap< Controller< ? > , String >( );
_myLabel = new Label( cp5 , "tooltip" ); _myLabel = new Label( cp5 , "tooltip" );
_myLabel.setColor( _myColor ); _myLabel.setColor( _myColor );
@ -103,83 +128,11 @@ public class Tooltip {
* @param theWindow * @param theWindow
*/ */
void draw( ControlWindow theWindow ) { void draw( ControlWindow theWindow ) {
/* // TODO re-implement Tooltip
if ( enabled ) {
if ( _myMode >= ControlP5.WAIT ) {
previousPosition.set( currentPosition );
currentPosition.set( theWindow.mouseX , theWindow.mouseY , 0 );
if ( _myController != null ) {
if ( _myController.getControlWindow( ).equals( theWindow ) ) {
switch ( _myMode ) {
case ( ControlP5.WAIT ):
if ( moved( ) ) {
startTime = System.nanoTime( );
}
if ( System.nanoTime( ) > startTime + ( _myDelayInMillis * 1000000 ) ) {
position.set( currentPosition );
_myAlignH = ControlP5.RIGHT;
if ( position.x > ( _myController.getControlWindow( ).papplet( ).width - ( getWidth( ) + 20 ) ) ) {
position.sub( new PVector( getWidth( ) , 0 , 0 ) );
_myAlignH = ControlP5.LEFT;
}
_myMode = ControlP5.FADEIN;
startTime = System.nanoTime( );
_myAlpha = 0;
}
break;
case ( ControlP5.FADEIN ):
float t1 = System.nanoTime( ) - startTime;
_myAlpha = ( int ) PApplet.map( t1 , 0 , 200 * 1000000 , 0 , _myMaxAlpha );
if ( _myAlpha >= 250 ) {
_myMode = ControlP5.IDLE;
_myAlpha = 255;
}
break;
case ( ControlP5.IDLE ):
break;
case ( ControlP5.FADEOUT ):
float t2 = System.nanoTime( ) - startTime;
_myAlpha = ( int ) PApplet.map( t2 , 0 , 200 * 1000000 , _myMaxAlpha , 0 );
if ( _myAlpha <= 0 ) {
_myMode = ControlP5.DONE;
}
break;
case ( ControlP5.DONE ):
_myController = null;
_myMode = ControlP5.INACTIVE;
position.set( -1000 , -1000 , 0 );
}
_myAlpha = PApplet.max( 0 , PApplet.min( _myAlpha , _myMaxAlpha ) );
if ( _myMode >= ControlP5.WAIT ) {
_myAlpha = ( _myMode == ControlP5.WAIT ) ? 0 : _myAlpha;
theWindow.papplet( ).pushMatrix( );
theWindow.papplet( ).translate( position.x , position.y );
theWindow.papplet( ).translate( offset.x , offset.y );
// TODO should request the current PGraphics element, not only the PApplet context. What if we render into a PGraphics buffer?
_myView.display( theWindow.papplet( ).g , null );
theWindow.papplet( ).popMatrix( );
}
if ( _myMode < ControlP5.FADEOUT ) {
if ( moved( ) ) {
deactivate( 0 );
}
}
}
}
}
}
*/
} }
private boolean moved( ) { private boolean moved( ) {
return PApplet.abs( PApplet.dist( previousPosition.x , previousPosition.y , currentPosition.x , currentPosition.y ) ) > 1; return PApplet.abs( PApplet.dist( previousPosition[0] , previousPosition[1] , currentPosition[0] , currentPosition[1] ) ) > 1;
} }
/** /**
@ -206,7 +159,8 @@ public class Tooltip {
if ( map.containsKey( theController ) ) { if ( map.containsKey( theController ) ) {
startTime = System.nanoTime( ); startTime = System.nanoTime( );
_myController = theController; _myController = theController;
currentPosition.set( theController.getControlWindow( ).mouseX , theController.getControlWindow( ).mouseY , 0 ); currentPosition[0] = theController.getControlWindow( ).mouseX;
currentPosition[1] = theController.getControlWindow( ).mouseY;
updateText( map.get( _myController ) ); updateText( map.get( _myController ) );
_myMode = ControlP5.WAIT; _myMode = ControlP5.WAIT;
} }
@ -329,8 +283,8 @@ public class Tooltip {
* @return Tooltip * @return Tooltip
*/ */
public Tooltip setPositionOffset( float theX , float theY ) { public Tooltip setPositionOffset( float theX , float theY ) {
offset.x = theX; offset[0] = theX;
offset.y = theY; offset[1] = theY;
return this; return this;
} }

View File

@ -1,3 +1,12 @@
2016-14-04 Andreas Schlegel <andi at sojamo.de>
mostly bug fixes, see github issues
removed all PVector references, variables, and functions using processing.core.PVector
2015-08-02 Andreas Schlegel <andi at sojamo.de>
changes see github change log
2015-03-29 Andreas Schlegel <andi at sojamo.de> 2015-03-29 Andreas Schlegel <andi at sojamo.de>
* src controlP5.ScrollabelList: * src controlP5.ScrollabelList: