Path: blob/main/website/Drawing-app/sketch.js
2940 views
let radius; // Brush's Radius1let lastradius = []; // Stores Last Brush's Radius For Undo Function2let canvas2; // Second Canvas For Drawing3let mhx = []; // Stores Latest Brush Path's X4let mhy = []; // Stores Latest Brush Path's Y5let undoHistoryX = []; // Undo History That Stores Brush Path's X6let undoHistoryY = []; // Undo History That Stores Brush Path's Y7let slider; //Brush Size8let docelement = document.documentElement; //Document Itself9let windowx, windowy; // Window Size10let startedInCanvas; // none currently11let r = [],g = [],b = []; //Color For Brush12let lastBrush = []; //Last Brush Type13let imgStorageRef, databaseRef; // Firebase References14let finalData; //Stores The Submission On Submit Button Press15let colorNumber = 1; //Stores Current Color's Index Number1617function setup(){18//Window Setup19isMobileDevice();20windowx = 0.95 * windowWidth;21windowy = windowHeight * 0.8;2223canvas1 = createCanvas(windowx, windowy);24background(0);25canvas1.parent("sketchcontainer");2627//Database Setup28var storage = firebase.storage();29var database = firebase.database();30imgStorageRef = storage.ref("gifts/");31databaseRef = database.ref("gifts/");3233//-------------v------------------ All The CSS ---------------v----------------//3435//Empty Space36createElement("br");3738//---------------------------------------------------------------- Line 1 Canvas39var line1 = createDiv("Brush Size : ");40line1.addClass("line1");4142//Slider43slider = createSlider(10,70,50);44slider.addClass('sliderClass');45line1.child(slider);4647//Undo Button48var undo = createButton("Undo");49line1.child(undo);50undo.mousePressed(undofunc);51undo.addClass("undo");5253//Clear Button54var clear = createButton("Clear");55line1.child(clear);56clear.mousePressed(clearfunc);57clear.addClass("clear");5859//---------------------------------------------------------------- Line 2 div60var line2 = createDiv("Color : ");61line2.addClass("line2");6263//All The Color Buttons64whiteC = createButton(" "); whiteC.addClass("ColorButtons");65blackC = createButton(" "); blackC.addClass("ColorButtons");66blueC = createButton(" "); blueC.addClass("ColorButtons");67greenC = createButton(" "); greenC.addClass("ColorButtons");68yellowC = createButton(" "); yellowC.addClass("ColorButtons");69orangeC = createButton(" "); orangeC.addClass("ColorButtons");70pinkC = createButton(" "); pinkC.addClass("ColorButtons");71redC = createButton(" "); redC.addClass("ColorButtons");72purpelC = createButton(" "); purpelC.addClass("ColorButtons");7374whiteC.style("background-color","#ffffff");75blackC.style("background-color","#000000");76blueC.style("background-color","#3f92ff");77greenC.style("background-color","#0aff0a");78yellowC.style("background-color","#ffff0a");79orangeC.style("background-color","#ffa00a");80pinkC.style("background-color","#ff0a82");81redC.style("background-color","#ff0a0a");82purpelC.style("background-color","#b432ff");8384line2.child(whiteC); line2.child(blackC); line2.child(blueC);85line2.child(greenC); line2.child(yellowC); line2.child(orangeC);86line2.child(pinkC); line2.child(redC); line2.child(purpelC);8788BreakElement = createElement("br");89line2.child(BreakElement);90line2.child(BreakElement);9192whiteC.mousePressed(function () {colorNumber = 1;} );93blackC.mousePressed(function () {colorNumber = 2;} );94blueC.mousePressed(function () {colorNumber = 3;} );95greenC.mousePressed(function () {colorNumber = 4;} );96yellowC.mousePressed(function () {colorNumber = 5;} );97orangeC.mousePressed(function () {colorNumber = 6;} );98pinkC.mousePressed(function () {colorNumber = 7;} );99redC.mousePressed(function () {colorNumber = 8;} );100purpelC.mousePressed(function () {colorNumber = 9;} );101102//---------------------------------------------------------------- Line 3 Div103var line3 = createDiv();104line3.addClass("line3");105106eraserSettings = createButton("Set Eraser");107brushSettings = createButton("Set Brush");108eraserSettings.addClass("eraserSettingsClass");109brushSettings.addClass("brushSettingsClass");110line3.child(eraserSettings);111line3.child(brushSettings);112113//Submit Buttons114submitButton = createButton("Submit");115viewSubmissionsButton = createButton("View Submissions");116line3.child(submitButton);117line3.child(viewSubmissionsButton);118submitButton.mousePressed(submit);119viewSubmissionsButton.mousePressed(viewsub);120//Submit Button & View Submissions Button Style :121submitButton.addClass("submitButtonClass");122viewSubmissionsButton.addClass("viewSubmissionsButtonClass");123124125//Setting Up Brush Colors126eraserSettings.mousePressed(setEraser);127brushSettings.mousePressed(setBrush);128}129130//--------------------------------------- Mobile Detector131function isMobileDevice() {132return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);133};134135136//--------------------------------------- Setting Up Pointer For Touch137if(isMobileDevice() == true){138139function touchStarted(){140if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){141switch(colorNumber){142case 1:143r.unshift(255);144g.unshift(255);145b.unshift(255);146break;147148case 2:149r.unshift(0);150g.unshift(0);151b.unshift(0);152break;153154case 3:155r.unshift(63);156g.unshift(146);157b.unshift(255);158break;159160case 4:161r.unshift(10);162g.unshift(255);163b.unshift(10);164break;165166case 5:167r.unshift(255);168g.unshift(255);169b.unshift(10);170break;171172case 6:173r.unshift(255);174g.unshift(160);175b.unshift(10);176break;177178case 7:179r.unshift(255);180g.unshift(10);181b.unshift(130);182break;183184case 8:185r.unshift(255);186g.unshift(10);187b.unshift(10);188break;189190case 9:191r.unshift(180);192g.unshift(50);193b.unshift(255);194break;195196default:197r.unshift(255);198g.unshift(255);199b.unshift(255);200}201202radius = slider.value();203mhx = [];204mhy = [];205206mhx.unshift(mouseX);207mhy.unshift(mouseY);208lastradius.unshift(radius-4);209}210}211212function touchMoved(){213if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){214mhx.unshift(mouseX);215mhy.unshift(mouseY);216217stroke(r[0],g[0],b[0]);218strokeWeight(radius-4);219line(mhx[0],mhy[0],mhx[1],mhy[1]);220}221}222223function touchEnded(){224if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){225undoHistoryX.unshift(mhx);226undoHistoryY.unshift(mhy);227mhx = [];228mhy = [];229}230}231232}else{233234//--------------------------------------- Setting Up Pointer For Mouse235function mousePressed(){236if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){237switch(colorNumber){238case 1:239r.unshift(255);240g.unshift(255);241b.unshift(255);242console.log("White");243break;244245case 2:246r.unshift(0);247g.unshift(0);248b.unshift(0);249console.log("Black");250break;251252case 3:253r.unshift(63);254g.unshift(146);255b.unshift(255);256console.log("Blue");257break;258259case 4:260r.unshift(10);261g.unshift(255);262b.unshift(10);263console.log("Green");264break;265266case 5:267r.unshift(255);268g.unshift(255);269b.unshift(10);270console.log("Yellow");271break;272273case 6:274r.unshift(255);275g.unshift(160);276b.unshift(10);277console.log("Orange");278break;279280case 7:281r.unshift(255);282g.unshift(10);283b.unshift(130);284console.log("Pink");285break;286287case 8:288r.unshift(255);289g.unshift(10);290b.unshift(10);291console.log("Red");292break;293294case 9:295r.unshift(180);296g.unshift(50);297b.unshift(255);298console.log("Purple");299break;300301default:302r.unshift(255);303g.unshift(255);304b.unshift(255);305console.log("White");306}307308radius = slider.value();309mhx = [];310mhy = [];311mhx.unshift(mouseX);312mhy.unshift(mouseY);313lastradius.unshift(radius-4);314}315}316317function mouseDragged(){318if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){319mhx.unshift(mouseX);320mhy.unshift(mouseY);321322stroke(r[0],g[0],b[0]);323strokeWeight(radius-4);324line(mhx[0],mhy[0],mhx[1],mhy[1]);325}326}327328function mouseReleased(){329if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){330undoHistoryX.unshift(mhx);331undoHistoryY.unshift(mhy);332333mhx = [];334mhy = [];335}336}337}338339//--------------------------------------- Clear Canvas function340function clearfunc(){341background(0);342undoHistoryX = [];343undoHistoryY = [];344mhx = [];345mhy = [];346r = [];347g = [];348b = [];349lastradius = [];350}351352//--------------------------------------- Undo Function353function undofunc(){354background(0);355lastradius.shift();356undoHistoryX.shift();357undoHistoryY.shift();358r.shift();359g.shift();360b.shift();361lastBrush.shift();362363//Draws The Whole Drawing *Very Important Function*364for(var i = undoHistoryX.length - 1; i >= 0; i--){365stroke(r[i],g[i],b[i]);366strokeWeight(lastradius[i]);367for(var j = 0; j < undoHistoryX[i].length; j++){368line(undoHistoryX[i][j],undoHistoryY[i][j],undoHistoryX[i][j+1],undoHistoryY[i][j+1]);369}370}371}372373//--------------------------------------- Eraser Setter374function setEraser(){375colorNumber = 2;376}377378//--------------------------------------- Brush Setter379function setBrush(){380colorNumber = 1;381}382383//--------------------------------------- Submit Button Function384function submit(){385finalData = {386drawX : undoHistoryX,387drawY : undoHistoryY,388redChannel : r,389greenChannel : g,390blueChannel : b,391radius : lastradius,392canvasX : windowx,393canvasY : windowy,394username : username395}396databaseRef.push(finalData);397alert("Uploading Your Data.. Click Ok And Wait For Few Seconds");398setTimeout(function(){ alert("Data Upload Successful. Thank You For Your Submission!"); },3000);399}400401//--------------------------------------- View Submission Button Function402function viewsub(){403window.location.href = "ViewSubmissions.html";404}405406