Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
loeasy68
GitHub Repository: loeasy68/loeasy68.github.io
Path: blob/main/website/Drawing-app/sketch.js
2940 views
1
let radius; // Brush's Radius
2
let lastradius = []; // Stores Last Brush's Radius For Undo Function
3
let canvas2; // Second Canvas For Drawing
4
let mhx = []; // Stores Latest Brush Path's X
5
let mhy = []; // Stores Latest Brush Path's Y
6
let undoHistoryX = []; // Undo History That Stores Brush Path's X
7
let undoHistoryY = []; // Undo History That Stores Brush Path's Y
8
let slider; //Brush Size
9
let docelement = document.documentElement; //Document Itself
10
let windowx, windowy; // Window Size
11
let startedInCanvas; // none currently
12
let r = [],g = [],b = []; //Color For Brush
13
let lastBrush = []; //Last Brush Type
14
let imgStorageRef, databaseRef; // Firebase References
15
let finalData; //Stores The Submission On Submit Button Press
16
let colorNumber = 1; //Stores Current Color's Index Number
17
18
function setup(){
19
//Window Setup
20
isMobileDevice();
21
windowx = 0.95 * windowWidth;
22
windowy = windowHeight * 0.8;
23
24
canvas1 = createCanvas(windowx, windowy);
25
background(0);
26
canvas1.parent("sketchcontainer");
27
28
//Database Setup
29
var storage = firebase.storage();
30
var database = firebase.database();
31
imgStorageRef = storage.ref("gifts/");
32
databaseRef = database.ref("gifts/");
33
34
//-------------v------------------ All The CSS ---------------v----------------//
35
36
//Empty Space
37
createElement("br");
38
39
//---------------------------------------------------------------- Line 1 Canvas
40
var line1 = createDiv("Brush Size : ");
41
line1.addClass("line1");
42
43
//Slider
44
slider = createSlider(10,70,50);
45
slider.addClass('sliderClass');
46
line1.child(slider);
47
48
//Undo Button
49
var undo = createButton("Undo");
50
line1.child(undo);
51
undo.mousePressed(undofunc);
52
undo.addClass("undo");
53
54
//Clear Button
55
var clear = createButton("Clear");
56
line1.child(clear);
57
clear.mousePressed(clearfunc);
58
clear.addClass("clear");
59
60
//---------------------------------------------------------------- Line 2 div
61
var line2 = createDiv("Color : ");
62
line2.addClass("line2");
63
64
//All The Color Buttons
65
whiteC = createButton(" "); whiteC.addClass("ColorButtons");
66
blackC = createButton(" "); blackC.addClass("ColorButtons");
67
blueC = createButton(" "); blueC.addClass("ColorButtons");
68
greenC = createButton(" "); greenC.addClass("ColorButtons");
69
yellowC = createButton(" "); yellowC.addClass("ColorButtons");
70
orangeC = createButton(" "); orangeC.addClass("ColorButtons");
71
pinkC = createButton(" "); pinkC.addClass("ColorButtons");
72
redC = createButton(" "); redC.addClass("ColorButtons");
73
purpelC = createButton(" "); purpelC.addClass("ColorButtons");
74
75
whiteC.style("background-color","#ffffff");
76
blackC.style("background-color","#000000");
77
blueC.style("background-color","#3f92ff");
78
greenC.style("background-color","#0aff0a");
79
yellowC.style("background-color","#ffff0a");
80
orangeC.style("background-color","#ffa00a");
81
pinkC.style("background-color","#ff0a82");
82
redC.style("background-color","#ff0a0a");
83
purpelC.style("background-color","#b432ff");
84
85
line2.child(whiteC); line2.child(blackC); line2.child(blueC);
86
line2.child(greenC); line2.child(yellowC); line2.child(orangeC);
87
line2.child(pinkC); line2.child(redC); line2.child(purpelC);
88
89
BreakElement = createElement("br");
90
line2.child(BreakElement);
91
line2.child(BreakElement);
92
93
whiteC.mousePressed(function () {colorNumber = 1;} );
94
blackC.mousePressed(function () {colorNumber = 2;} );
95
blueC.mousePressed(function () {colorNumber = 3;} );
96
greenC.mousePressed(function () {colorNumber = 4;} );
97
yellowC.mousePressed(function () {colorNumber = 5;} );
98
orangeC.mousePressed(function () {colorNumber = 6;} );
99
pinkC.mousePressed(function () {colorNumber = 7;} );
100
redC.mousePressed(function () {colorNumber = 8;} );
101
purpelC.mousePressed(function () {colorNumber = 9;} );
102
103
//---------------------------------------------------------------- Line 3 Div
104
var line3 = createDiv();
105
line3.addClass("line3");
106
107
eraserSettings = createButton("Set Eraser");
108
brushSettings = createButton("Set Brush");
109
eraserSettings.addClass("eraserSettingsClass");
110
brushSettings.addClass("brushSettingsClass");
111
line3.child(eraserSettings);
112
line3.child(brushSettings);
113
114
//Submit Buttons
115
submitButton = createButton("Submit");
116
viewSubmissionsButton = createButton("View Submissions");
117
line3.child(submitButton);
118
line3.child(viewSubmissionsButton);
119
submitButton.mousePressed(submit);
120
viewSubmissionsButton.mousePressed(viewsub);
121
//Submit Button & View Submissions Button Style :
122
submitButton.addClass("submitButtonClass");
123
viewSubmissionsButton.addClass("viewSubmissionsButtonClass");
124
125
126
//Setting Up Brush Colors
127
eraserSettings.mousePressed(setEraser);
128
brushSettings.mousePressed(setBrush);
129
}
130
131
//--------------------------------------- Mobile Detector
132
function isMobileDevice() {
133
return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
134
};
135
136
137
//--------------------------------------- Setting Up Pointer For Touch
138
if(isMobileDevice() == true){
139
140
function touchStarted(){
141
if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){
142
switch(colorNumber){
143
case 1:
144
r.unshift(255);
145
g.unshift(255);
146
b.unshift(255);
147
break;
148
149
case 2:
150
r.unshift(0);
151
g.unshift(0);
152
b.unshift(0);
153
break;
154
155
case 3:
156
r.unshift(63);
157
g.unshift(146);
158
b.unshift(255);
159
break;
160
161
case 4:
162
r.unshift(10);
163
g.unshift(255);
164
b.unshift(10);
165
break;
166
167
case 5:
168
r.unshift(255);
169
g.unshift(255);
170
b.unshift(10);
171
break;
172
173
case 6:
174
r.unshift(255);
175
g.unshift(160);
176
b.unshift(10);
177
break;
178
179
case 7:
180
r.unshift(255);
181
g.unshift(10);
182
b.unshift(130);
183
break;
184
185
case 8:
186
r.unshift(255);
187
g.unshift(10);
188
b.unshift(10);
189
break;
190
191
case 9:
192
r.unshift(180);
193
g.unshift(50);
194
b.unshift(255);
195
break;
196
197
default:
198
r.unshift(255);
199
g.unshift(255);
200
b.unshift(255);
201
}
202
203
radius = slider.value();
204
mhx = [];
205
mhy = [];
206
207
mhx.unshift(mouseX);
208
mhy.unshift(mouseY);
209
lastradius.unshift(radius-4);
210
}
211
}
212
213
function touchMoved(){
214
if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){
215
mhx.unshift(mouseX);
216
mhy.unshift(mouseY);
217
218
stroke(r[0],g[0],b[0]);
219
strokeWeight(radius-4);
220
line(mhx[0],mhy[0],mhx[1],mhy[1]);
221
}
222
}
223
224
function touchEnded(){
225
if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){
226
undoHistoryX.unshift(mhx);
227
undoHistoryY.unshift(mhy);
228
mhx = [];
229
mhy = [];
230
}
231
}
232
233
}else{
234
235
//--------------------------------------- Setting Up Pointer For Mouse
236
function mousePressed(){
237
if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){
238
switch(colorNumber){
239
case 1:
240
r.unshift(255);
241
g.unshift(255);
242
b.unshift(255);
243
console.log("White");
244
break;
245
246
case 2:
247
r.unshift(0);
248
g.unshift(0);
249
b.unshift(0);
250
console.log("Black");
251
break;
252
253
case 3:
254
r.unshift(63);
255
g.unshift(146);
256
b.unshift(255);
257
console.log("Blue");
258
break;
259
260
case 4:
261
r.unshift(10);
262
g.unshift(255);
263
b.unshift(10);
264
console.log("Green");
265
break;
266
267
case 5:
268
r.unshift(255);
269
g.unshift(255);
270
b.unshift(10);
271
console.log("Yellow");
272
break;
273
274
case 6:
275
r.unshift(255);
276
g.unshift(160);
277
b.unshift(10);
278
console.log("Orange");
279
break;
280
281
case 7:
282
r.unshift(255);
283
g.unshift(10);
284
b.unshift(130);
285
console.log("Pink");
286
break;
287
288
case 8:
289
r.unshift(255);
290
g.unshift(10);
291
b.unshift(10);
292
console.log("Red");
293
break;
294
295
case 9:
296
r.unshift(180);
297
g.unshift(50);
298
b.unshift(255);
299
console.log("Purple");
300
break;
301
302
default:
303
r.unshift(255);
304
g.unshift(255);
305
b.unshift(255);
306
console.log("White");
307
}
308
309
radius = slider.value();
310
mhx = [];
311
mhy = [];
312
mhx.unshift(mouseX);
313
mhy.unshift(mouseY);
314
lastradius.unshift(radius-4);
315
}
316
}
317
318
function mouseDragged(){
319
if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){
320
mhx.unshift(mouseX);
321
mhy.unshift(mouseY);
322
323
stroke(r[0],g[0],b[0]);
324
strokeWeight(radius-4);
325
line(mhx[0],mhy[0],mhx[1],mhy[1]);
326
}
327
}
328
329
function mouseReleased(){
330
if(mouseX >= 0 && mouseX <= windowx && mouseY >= 0 && mouseY <= windowy){
331
undoHistoryX.unshift(mhx);
332
undoHistoryY.unshift(mhy);
333
334
mhx = [];
335
mhy = [];
336
}
337
}
338
}
339
340
//--------------------------------------- Clear Canvas function
341
function clearfunc(){
342
background(0);
343
undoHistoryX = [];
344
undoHistoryY = [];
345
mhx = [];
346
mhy = [];
347
r = [];
348
g = [];
349
b = [];
350
lastradius = [];
351
}
352
353
//--------------------------------------- Undo Function
354
function undofunc(){
355
background(0);
356
lastradius.shift();
357
undoHistoryX.shift();
358
undoHistoryY.shift();
359
r.shift();
360
g.shift();
361
b.shift();
362
lastBrush.shift();
363
364
//Draws The Whole Drawing *Very Important Function*
365
for(var i = undoHistoryX.length - 1; i >= 0; i--){
366
stroke(r[i],g[i],b[i]);
367
strokeWeight(lastradius[i]);
368
for(var j = 0; j < undoHistoryX[i].length; j++){
369
line(undoHistoryX[i][j],undoHistoryY[i][j],undoHistoryX[i][j+1],undoHistoryY[i][j+1]);
370
}
371
}
372
}
373
374
//--------------------------------------- Eraser Setter
375
function setEraser(){
376
colorNumber = 2;
377
}
378
379
//--------------------------------------- Brush Setter
380
function setBrush(){
381
colorNumber = 1;
382
}
383
384
//--------------------------------------- Submit Button Function
385
function submit(){
386
finalData = {
387
drawX : undoHistoryX,
388
drawY : undoHistoryY,
389
redChannel : r,
390
greenChannel : g,
391
blueChannel : b,
392
radius : lastradius,
393
canvasX : windowx,
394
canvasY : windowy,
395
username : username
396
}
397
databaseRef.push(finalData);
398
alert("Uploading Your Data.. Click Ok And Wait For Few Seconds");
399
setTimeout(function(){ alert("Data Upload Successful. Thank You For Your Submission!"); },3000);
400
}
401
402
//--------------------------------------- View Submission Button Function
403
function viewsub(){
404
window.location.href = "ViewSubmissions.html";
405
}
406