-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
116 lines (94 loc) · 2.93 KB
/
script.js
File metadata and controls
116 lines (94 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// Get canvas and context
const canvas = document.getElementById('smileyCanvas');
const ctx = canvas.getContext('2d');
// Get slider elements
const eyeDistanceSlider = document.getElementById('eyeDistance');
const smileWidthSlider = document.getElementById('smileWidth');
const smileCurveSlider = document.getElementById('smileCurve');
// Get value display elements
const eyeDistanceValue = document.getElementById('eyeDistanceValue');
const smileWidthValue = document.getElementById('smileWidthValue');
const smileCurveValue = document.getElementById('smileCurveValue');
// Get download button
const downloadBtn = document.getElementById('downloadBtn');
// Smiley parameters
let eyeDistance = 80;
let smileWidth = 140;
let smileCurve = 50;
// Center of canvas
const centerX = canvas.width / 2;
const centerY = canvas.height / 2;
const faceRadius = 150;
// Function to draw the smiley face
function drawSmiley() {
// Clear canvas
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Draw face
ctx.beginPath();
ctx.arc(centerX, centerY, faceRadius, 0, Math.PI * 2);
ctx.fillStyle = '#FFD700';
ctx.fill();
ctx.strokeStyle = '#333';
ctx.lineWidth = 3;
ctx.stroke();
// Draw eyes
const eyeY = centerY - 30;
const eyeRadius = 10;
// Left eye
ctx.beginPath();
ctx.arc(centerX - eyeDistance / 2, eyeY, eyeRadius, 0, Math.PI * 2);
ctx.fillStyle = '#333';
ctx.fill();
// Right eye
ctx.beginPath();
ctx.arc(centerX + eyeDistance / 2, eyeY, eyeRadius, 0, Math.PI * 2);
ctx.fillStyle = '#333';
ctx.fill();
// Draw smile (curved line)
const smileY = centerY + 20;
const smileHeight = smileCurve;
ctx.beginPath();
ctx.moveTo(centerX - smileWidth / 2, smileY);
// Create a quadratic curve for the smile
ctx.quadraticCurveTo(
centerX,
smileY + smileHeight,
centerX + smileWidth / 2,
smileY
);
ctx.strokeStyle = '#333';
ctx.lineWidth = 3;
ctx.lineCap = 'round';
ctx.stroke();
}
// Update eye distance
eyeDistanceSlider.addEventListener('input', (e) => {
eyeDistance = parseInt(e.target.value);
eyeDistanceValue.textContent = eyeDistance;
drawSmiley();
});
// Update smile width
smileWidthSlider.addEventListener('input', (e) => {
smileWidth = parseInt(e.target.value);
smileWidthValue.textContent = smileWidth;
drawSmiley();
});
// Update smile curve
smileCurveSlider.addEventListener('input', (e) => {
smileCurve = parseInt(e.target.value);
smileCurveValue.textContent = smileCurve;
drawSmiley();
});
// Download functionality
downloadBtn.addEventListener('click', () => {
// Create a link element
const link = document.createElement('a');
// Set the download filename
link.download = 'my-smiley-face.png';
// Convert canvas to data URL
link.href = canvas.toDataURL('image/png');
// Trigger the download
link.click();
});
// Draw initial smiley
drawSmiley();