Code Wed Apr 22
Code Wed. Apr 22, 2020
Code includes some minor changes to slider in the main tab. The main tab Slider is now a lengthSlider so that integer display of the value makes sense. There are minor changes to the formatting of background and text labels in the slider class tab so that the numerical display does not overlap the label display.
//Main Tab
//Make objects, objects call methods
//Global Variables
ButtonGroup btnGroup; //will hold 4 pattern buttons
Button clearButton;//declare the variable as global - btn is null
color backgroundColor;
color patternFillColor; //global
color patternStrokeColor; //
//TODO ADD global patternFillColor
Pattern currentPattern; //pointer variable keeps track of active Pattern
Pattern eraserPattern; //has a PShape circle and background fillColor
//SLIDERS
Slider lengthSlider;
void setup() {
size( 800, 800);
colorMode(HSB, 360, 100, 100, 100);
backgroundColor = color( 300); //light gray
background( backgroundColor);
// Button( float x, float y, float w, float h, String label )
clearButton = new Button( 10, 450, 100, 100, "Clear"); //initialize - move to bottom
Button[] btnArray = new Button[4]; //declare and initialize button array
btnArray[0] = new Button( 10, 10, 100, 100, "Eraser");
PImage img1 = loadImage( "pattern1Btn.png"); //file name with extension
btnArray[1] = new PImageButton( 10, 120, 100, 100, img1);
btnArray[2] = new Button( 10, 230, 100, 100, "Pattern2");
btnArray[3] = new Button( 10, 340, 100, 100, "Pattern3");
btnGroup = new ButtonGroup( btnArray );
//Logic for patterns
PShape s0 = createShape( ELLIPSE, 0,0, 50, 50);
eraserPattern = new Pattern( s0 );
eraserPattern.fillColor = color(backgroundColor);//start with Purple
eraserPattern.strokeColor = color(backgroundColor);
currentPattern = eraserPattern;
//Slider(float x, float y, float w, float h, float min, float max, String label ){
lengthSlider = new Slider( 40,height - 40, 200, 30, 10, 200, "Length");
} // end setup
void draw( ) {
if( mousePressed){
checkSliders( );
translate( mouseX, mouseY );
displayPattern( ); //draw currentPattern
resetMatrix();
}
displayButtons(); //do after drawing patterns
displaySliders();
} //end draw
void mouseClicked( ) {
boolean isChanged = btnGroup.clicked( mouseX, mouseY);
if( isChanged){
changePattern();
}
clearButton.clicked( mouseX, mouseY);
if( clearButton.selected ){
clearCanvas();
clearButton.reset();
}
} //end mouseClicked
void displaySliders(){
lengthSlider.display();
}//end displaySliders
boolean checkSliders(){
boolean isChanged = false;
if( lengthSlider.checkPressed( mouseX, mouseY)){
isChanged = true;
}
return isChanged;
} //end checkSliders
void changePattern(){
//TODO add logic to connect buttons to patterns
//activeBtnIndex will let us determine which pattern should be the currentPattern
//Switch Case Statement
float len = 100; //scale slider will set / modify this value
switch( btnGroup.activeBtnIndex){
case 0:
currentPattern = eraserPattern;
break;
case 1:
PShape s1 = createShape( RECT, 0,0,len *.8 , len);
currentPattern = new Pattern( s1);
break;
case 2:
PShape s2 = createShape( RECT, 0,0,len , len);
currentPattern = new Pattern( s2);
break;
case 3:
PShape s3 = vertexShape1( len );
currentPattern = new Pattern( s3 );
break;
default:
println("No match on switch case");
break;
} //end switch-case statement
} //end changePattern
void displayPattern(){
if( currentPattern != eraserPattern){
patternFillColor = color( 280, 100, 100, 50);
patternStrokeColor = color( 0, 50);
currentPattern.fillColor = patternFillColor;
currentPattern.strokeColor = patternStrokeColor;
}
currentPattern.display(); //sliders will set colors for other patterns
} //end displayPattern
void clearCanvas(){
//TODO add code to draw a rectangle over the full canvas using background color
fill( backgroundColor);
rect( 0,0, width,height);
}//end clearCanvas
void displayButtons(){
fill(0); //black
rect( 0,0, 120, height);//background of menu
btnGroup.display();
clearButton.display();
} //end displayButtons
//Modify to remove color parameter and color logic
PShape vertexShape1( float len){
PShape s2 = createShape();
s2.beginShape( );
s2.vertex( 0, 0);
s2.vertex( len * .5, len * .5);
s2.vertex( len, .7 * len);
s2.vertex( len * .5, len);
s2.vertex( 0, len);
s2.vertex( 0,0);
s2.beginContour();
s2.vertex( .2 * len, .35 * len);
s2.vertex( .25 * len, .75 * len);
s2.vertex( .35 * len, .45 * len);
s2.vertex( .5 * len, .25 * len);
s2.endContour();
s2.endShape( CLOSE);
return s2;
}
Last updated
Was this helpful?