Code Mon Apr 27
//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, hueSlider, satSlider, brightSlider;
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");
PImage img3 = loadImage( "pattern3.png");
btnArray[3] = new PImageButton( 10, 340, 100, 100,img3);
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, 100, 30, 10, 200, "Length");
hueSlider = new HueSlider( 300, height - 40, 100, 30, 100, 300);
checkSliders();
setPatternColor( );
} // 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){ //only change Pattern if activeButton has changed
changePattern();
}
clearButton.clicked( mouseX, mouseY);
if( clearButton.selected ){
clearCanvas();
clearButton.reset();
}
} //end mouseClicked
void displaySliders(){
fill(0);
rect( 0, height-100, width, 100);
lengthSlider.display();
hueSlider.display();
}//end displaySliders
boolean checkSliders(){
boolean isChanged = false;
boolean hueChanged = hueSlider.checkPressed( mouseX, mouseY);
if(hueChanged){
isChanged = true;
}
if( isChanged ){
setPatternColor( );
}
if( lengthSlider.checkPressed( mouseX, mouseY)){
changePattern( );
isChanged = true;
}
return isChanged;
} //end checkSliders
void setPatternColor( ){
float hue = hueSlider.sliderVal;
float sat = 100;
float bright = 100;
patternFillColor = color( hue, sat, bright); //set this value here
}
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
len = lengthSlider.sliderVal; //use slider to set len
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
//called every frame
void displayPattern(){
if( currentPattern != eraserPattern){
//patternFillColor is changed whenever a slider changes value
patternStrokeColor = color( 0, 50); //might be eraser stroke might need reset
currentPattern.fillColor = patternFillColor; //set in setPatternColor( )
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?