/* Assignment #4: Drawing Tool (with widgets) Leila Aflatoony */ class InkPot{ //InkPot class fields int toneR; int toneG; int toneB; float xPosIP; float yPosIP; //InkPot constructor InkPot(int tR, int tG, int tB, float xPIP, float yPIP){ toneR = tR; toneG = tG; toneB = tB; xPosIP = xPIP; yPosIP = yPIP; } //method to create containers for different colours void drawInkPot(){ rectMode(CORNER); fill(toneR, toneG, toneB); rect(xPosIP, yPosIP, 50, 50); } } class Container{ //Container class fields float xPosC; float yPosC; //Container constructor Container(float xPC, float yPC){ xPosC = xPC; yPosC = yPC; } //method to create containers for different tools void drawContainer(){ rectMode(CORNER); rect(xPosC, yPosC, 100, 100); } } //controls what happens when the buttons comprising the pull-down menu are clicked public void controlEvent(ControlEvent theEvent) { if(theEvent.controller().name() == "Fill"){ active = true; } if(theEvent.controller().name() == "NoFill"){ active = false; } } //creates new ink objects InkPot i1 = new InkPot(250, 197, 0, 105, 5); InkPot i2 = new InkPot(221, 116, 30, 105, 60); InkPot i3 = new InkPot(150, 0, 0, 105, 115); InkPot i4 = new InkPot(112, 11, 11, 105, 170); InkPot i5 = new InkPot(60, 20, 5, 105, 225); InkPot i6 = new InkPot(90, 184, 19, 105, 280); InkPot i7 = new InkPot(20, 85, 14, 105, 335); InkPot i8 = new InkPot(11, 38, 5, 105, 390); InkPot i9 = new InkPot(255, 181, 250, 105, 445); InkPot i10 = new InkPot(255, 127, 196, 105, 500); //creates new function objects Container c1 = new Container(0, 0); Container c2 = new Container(0, 100); Container c3 = new Container(0, 200); Container c4 = new Container(0, 300); Container c5 = new Container(0, 400); Container c6 = new Container(0, 500); Container c7 = new Container(160, 0); Container c8 = new Container(160, 100); Container c9 = new Container(160, 200); Container c10 = new Container(160, 300); Container c11 = new Container(160, 400); Container c12 = new Container(160, 500); //global vars color currentColour; boolean leave2Clicked = false; boolean leave3Clicked = false; boolean leave4Clicked = false; boolean blossomClicked = false; boolean cherryClicked = false; boolean wipeClicked = false; boolean rect1Clicked = false; boolean rect2Clicked = false; boolean rect3Clicked = false; boolean ellipse1Clicked = false; boolean ellipse2Clicked = false; boolean ellipse3Clicked = false; public boolean active = false; //imports the controlP5 widget library import controlP5.*; //creates widgets ControlP5 controller1; Slider alphaSlide; Slider brushSlide; ControlP5 controller2; MultiList toggleFill; //initializes variables linked to widgets public int alphaSlideVal = 128; int alphaSlideDefaultVal = 128; public float brushSlideVal = 10; float brushSlideDefaultVal = 10; void setup(){ size(800, 650); background(255); smooth(); //instantiates a new control object controller1 = new ControlP5(this); controller2 = new ControlP5(this); //adds the sliders to the canvas with labels alphaSlide = controller1.addSlider("alphaSlideVal", 0, 255, alphaSlideDefaultVal, 250, 610, 255, 15); alphaSlide.setLabel("alpha"); brushSlide = controller1.addSlider("brushSlideVal", 0, 20, brushSlideDefaultVal, 610, 610, 100, 15); brushSlide.setLabel("brush size"); //adds the pulldown list to the app toggleFill = controller2.addMultiList("myList", 20, 610, 100, 15); //creates a list button 'a' MultiListButton a; a = toggleFill.add("Draw Mode", 1); //creates a sublist of button 'a' a.add("Fill", 11).setLabel("Filled"); a.add("NoFill", 33).setLabel("Un-filled"); //sets cursor type cursor(HAND); PImage m; m = loadImage("tree1.jpg"); image(m, 261, 90); fill(200, 200, 200); rect(100, 0, 60, 600);//the ink palette //places inkpots on the screen i1.drawInkPot(); i2.drawInkPot(); i3.drawInkPot(); i4.drawInkPot(); i5.drawInkPot(); i6.drawInkPot(); i7.drawInkPot(); i8.drawInkPot(); i9.drawInkPot(); i10.drawInkPot(); //places function containers on the screen fill(200, 200, 200); c1.drawContainer(); c2.drawContainer(); c3.drawContainer(); c4.drawContainer(); c5.drawContainer(); c6.drawContainer(); fill(240, 240, 240); c7.drawContainer(); c8.drawContainer(); c9.drawContainer(); c10.drawContainer(); c11.drawContainer(); c12.drawContainer(); PImage b; b = loadImage("leave2.png"); image(b, 25, 15); PImage c; c = loadImage("leave3.png"); image(c, 25, 115); PImage d; d = loadImage("leave4.png"); image(d, 25, 215); PImage e; e = loadImage("blossom.png"); image(e, 20, 320); PImage f; f = loadImage("cherry.png"); image(f, 15, 415); fill(98, 59, 15); PFont font; font = loadFont ("Papyrus-Regular-40.vlw"); textFont(font,40); text("draw your favorite season", 300, 65); fill(0); font = loadFont ("Papyrus-Regular-30.vlw"); textFont(font,30); text("Reset", 15, 560); noFill(); strokeWeight(2); rect(190,34,35,35); rect(195,125,25,45); rect(187,240,45,25); ellipse(210,350,40,40); ellipse(210,450,40,20); ellipse(210,550,20,40); //resets fill and stroke values in preparation for placing labels fill(0); stroke(0); //sets initial fill and stroke colour (before the user makes any colour selections) and sets strokeweight fill(0, 0, 0, alphaSlideDefaultVal); stroke(0, 0, 0, alphaSlideDefaultVal); strokeWeight(2); } void draw(){ //hides the pull-down menu options once they are no longer in use rectMode(CORNER); fill(100, 100, 115); stroke(100, 100, 115); rect(0, 603, 800, 50); //initial stroke and fill values for drawing stroke(0, 0, 0, alphaSlideVal); noFill(); loadPixels(); if(mousePressed){ if(mouseX >= 105 && mouseX <= 155 && mouseY >= 5 && mouseY <= 550) { currentColour = get(mouseX, mouseY); } if(mousePressed){ if(active == true){ fill(currentColour, alphaSlideVal); } else{ noFill(); } stroke(currentColour, alphaSlideVal); } if(mouseX >= 0 && mouseX <= 100 && mouseY >= 0 && mouseY <= 100){ //leave2 leave2Clicked = true; leave3Clicked = false; leave4Clicked = false; blossomClicked = false; cherryClicked = false; wipeClicked = false; rect1Clicked = false; rect2Clicked = false; rect3Clicked = false; ellipse1Clicked = false; ellipse2Clicked = false; ellipse3Clicked = false; } if(mouseX >= 0 && mouseX <= 100 && mouseY > 100 && mouseY <= 200){ //leave3 leave2Clicked = false; leave3Clicked = true; leave4Clicked = false; blossomClicked = false; cherryClicked = false; wipeClicked = false; rect1Clicked = false; rect2Clicked = false; rect3Clicked = false; ellipse1Clicked = false; ellipse2Clicked = false; ellipse3Clicked = false; } if(mouseX >= 0 && mouseX <=100 && mouseY > 200 && mouseY <= 300){ //leave4 leave2Clicked = false; leave3Clicked = false; leave4Clicked = true; blossomClicked = false; cherryClicked = false; wipeClicked = false; rect1Clicked = false; rect2Clicked = false; rect3Clicked = false; ellipse1Clicked = false; ellipse2Clicked = false; ellipse3Clicked = false; } if(mouseX >= 0 && mouseX <= 100 && mouseY > 300 && mouseY <= 400){ //blossom leave2Clicked = false; leave3Clicked = false; leave4Clicked = false; blossomClicked = true; cherryClicked = false; wipeClicked = false; rect1Clicked = false; rect2Clicked = false; rect3Clicked = false; ellipse1Clicked = false; ellipse2Clicked = false; ellipse3Clicked = false; } if(mouseX >= 0 && mouseX <= 100 && mouseY > 400 && mouseY <= 500){ //cherry leave2Clicked = false; leave3Clicked = false; leave4Clicked = false; blossomClicked = false; cherryClicked = true; wipeClicked = false; rect1Clicked = false; rect2Clicked = false; rect3Clicked = false; ellipse1Clicked = false; ellipse2Clicked = false; ellipse3Clicked = false; } if(mouseX >= 0 && mouseX <= 100 && mouseY >= 500 && mouseY <= 600){ //wipe canvas function leave2Clicked = false; leave3Clicked = false; leave4Clicked = false; blossomClicked = false; cherryClicked = false; wipeClicked = true; rect1Clicked = false; rect2Clicked = false; rect3Clicked = false; ellipse1Clicked = false; ellipse2Clicked = false; ellipse3Clicked = false; } if(mouseX >= 155 && mouseX <= 255 && mouseY >= 0 && mouseY <= 100){ //rect rect1Clicked = true; rect2Clicked = false; rect3Clicked = false; ellipse1Clicked = false; ellipse2Clicked = false; ellipse3Clicked = false; leave2Clicked = false; leave3Clicked = false; leave4Clicked = false; blossomClicked = false; cherryClicked = false; wipeClicked = false; } if(mouseX >= 155 && mouseX <= 255 && mouseY > 100 && mouseY <= 200){ //rect rect1Clicked = false; rect2Clicked = true; rect3Clicked = false; ellipse1Clicked = false; ellipse2Clicked = false; ellipse3Clicked = false; leave2Clicked = false; leave3Clicked = false; leave4Clicked = false; blossomClicked = false; cherryClicked = false; wipeClicked = false; } if(mouseX >= 155 && mouseX <=255 && mouseY > 200 && mouseY <= 300){ //rect rect1Clicked = false; rect2Clicked = false; rect3Clicked = true; ellipse1Clicked = false; ellipse2Clicked = false; ellipse3Clicked = false; leave2Clicked = false; leave3Clicked = false; leave4Clicked = false; blossomClicked = false; cherryClicked = false; wipeClicked = false; } if(mouseX >= 155 && mouseX <= 255 && mouseY > 300 && mouseY <= 400){ //ellipse rect1Clicked = false; rect2Clicked = false; rect3Clicked = false; ellipse1Clicked = true; ellipse2Clicked = false; ellipse3Clicked = false; leave2Clicked = false; leave3Clicked = false; leave4Clicked = false; blossomClicked = false; cherryClicked = false; wipeClicked = false; } if(mouseX >= 155 && mouseX <= 255 && mouseY > 400 && mouseY <= 500){ //ellipse rect1Clicked = false; rect2Clicked = false; rect3Clicked = false; ellipse1Clicked = false; ellipse2Clicked = true; ellipse3Clicked = false; leave2Clicked = false; leave3Clicked = false; leave4Clicked = false; blossomClicked = false; cherryClicked = false; wipeClicked = false; } if(mouseX >= 155 && mouseX <= 255 && mouseY >= 500 && mouseY <= 600){ //ellipse rect1Clicked = false; rect2Clicked = false; rect3Clicked = false; ellipse1Clicked = false; ellipse2Clicked = false; ellipse3Clicked = true; leave2Clicked = false; leave3Clicked = false; leave4Clicked = false; blossomClicked = false; cherryClicked = false; wipeClicked = false; } } if(leave2Clicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 490 && mouseY >= 100){ PImage b=loadImage("leave2.png"); image(b, mouseX, mouseY, 25,25); } if(leave3Clicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 490 && mouseY >= 100){ PImage c=loadImage("leave3.png"); image(c, mouseX, mouseY, 25,25); } if(leave4Clicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 490 && mouseY >= 100){ PImage d=loadImage("leave4.png"); image(d, mouseX, mouseY, 25,25); } if(blossomClicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 490 && mouseY >= 100){ PImage e=loadImage("blossom.png"); image(e, mouseX, mouseY, 25,25); } if(cherryClicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 490 && mouseY >= 100){ PImage f=loadImage("cherry.png"); image(f, mouseX, mouseY, 25,25); } if(rect1Clicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 600 && mouseY >= 100){ strokeWeight (2); rectMode(CENTER); rect(mouseX, mouseY, brushSlideVal, brushSlideVal); } if(rect2Clicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 600 && mouseY >= 100){ rectMode(CENTER); rect(mouseX, mouseY, brushSlideVal, brushSlideVal*2); } if(rect3Clicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 600 && mouseY >= 100){ rectMode(CENTER); rect(mouseX, mouseY, brushSlideVal*2, brushSlideVal); } if(ellipse1Clicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 600 && mouseY >= 100){ ellipseMode(CENTER); ellipse(mouseX, mouseY, brushSlideVal, brushSlideVal); } if(ellipse2Clicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 600 && mouseY >= 100){ ellipseMode(CENTER); ellipse(mouseX, mouseY, brushSlideVal*2, brushSlideVal); } if(ellipse3Clicked == true && mousePressed == true && mouseX <= 800 && mouseX >= 270 && mouseY <= 600 && mouseY >= 100){ ellipseMode(CENTER); ellipse(mouseX, mouseY, brushSlideVal, brushSlideVal*2); } if(wipeClicked == true && mousePressed == true){ noStroke(); PImage m; m = loadImage("tree1.jpg"); image(m, 261, 90);//the canvas space } }