PageSourceSearch

https://phildecroos.com/whiteboard/whiteboard.js

js phildecroos.com collected 2026-10-03 20:48:19 UTC 5,870 bytes, 154 lines download raw bytes

1const cvs = document.getElementById("whiteboard");
2const ctx = cvs.getContext("2d");
3
4cvs.height = window.innerHeight - 0;
5cvs.width = window.innerWidth - 0;
6
7function drawRect(x, y, width, height, color) {
8    ctx.fillStyle = color;
9    ctx.fillRect(x, y, width, height);
10}
11
12var thick = 12;
13var medium = 6;
14var thin = 2;
15
16var black = "#000000";
17var red = "#ff2222";
18var orange = "#ff8c00";
19var yellow = "#ffd700";
20var green = "#118111";
21var blue = "#1e90ff";
22var purple = "#550099";
23
24function clear() {
25    drawRect(0, 0, cvs.width, cvs.height, "white")
26}
27
28clear();
29
30const pen = {
31    x: 0,
32    y: 0,
33    size: medium,
34    color: black
35}
36
37var recentColor = pen.color;
38var recentSize = pen.size;
39
40document.getElementById("thick").onclick = function () { changePen(thick, recentColor); set1 = true; set2 = false; set3 = false; };
41document.getElementById("medium").onclick = function () { changePen(medium, recentColor); set1 = false; set2 = true; set3 = false; };
42document.getElementById("thin").onclick = function () { changePen(thin, recentColor); set1 = false; set2 = false; set3 = true; };
43
44document.getElementById("eraser").onclick = function () { changePen(20, "white") };
45
46document.getElementById("black").onclick = function () { changePen(recentSize, black); set6 = true; set7 = false; set8 = false; set9 = false; set10 = false; set11 = false; set12 = false; };
47document.getElementById("red").onclick = function () { changePen(recentSize, red); set6 = false; set7 = true; set8 = false; set9 = false; set10 = false; set11 = false; set12 = false; };
48document.getElementById("orange").onclick = function () { changePen(recentSize, orange); set6 = false; set7 = false; set8 = true; set9 = false; set10 = false; set11 = false; set12 = false; };
49document.getElementById("yellow").onclick = function () { changePen(recentSize, yellow); set6 = false; set7 = false; set8 = false; set9 = true; set10 = false; set11 = false; set12 = false; };
50document.getElementById("green").onclick = function () { changePen(recentSize, green); set6 = false; set7 = false; set8 = false; set9 = false; set10 = true; set11 = false; set12 = false; };
51document.getElementById("blue").onclick = function () { changePen(recentSize, blue); set6 = false; set7 = false; set8 = false; set9 = false; set10 = false; set11 = true; set12 = false; };
52document.getElementById("purple").onclick = function () { changePen(recentSize, purple); set6 = false; set7 = false; set8 = false; set9 = false; set10 = false; set11 = false; set12 = true; };
53
54document.getElementById("clear").onclick = function () { clear() };
55
56function changePen(size, color) {
57    // if changing to an eraser, save the size and color before the change
58    if (color == "white") {
59        recentColor = pen.color;
60        recentSize = pen.size;
61        set4 = true;
62
63        set1 = false;
64        set2 = false;
65        set3 = false;
66        set6 = false;
67        set7 = false;
68        set8 = false;
69        set9 = false;
70        set10 = false;
71        set11 = false;
72        set12 = false;
73        set13 = false;
74        set14 = false;
75    }
76    // if not changing to an eraser, update the size and color to be the values after the change
77    else {
78        if (recentColor == color) {
79            if (color == black) {
80                set6 = true; set7 = false; set8 = false; set9 = false; set10 = false; set11 = false; set12 == false;
81            }
82            else if (color == red) {
83                set6 = false; set7 = true; set8 = false; set9 = false; set10 = false; set11 = false; set12 == false;
84            }
85            else if (color == orange) {
86                set6 = false; set7 = false; set8 = true; set9 = false; set10 = false; set11 = false; set12 == false;
87            }
88            else if (color == yellow) {
89                set6 = false; set7 = false; set8 = false; set9 = true; set10 = false; set11 = false; set12 == false;
90            }
91            else if (color == green) {
92                set6 = false; set7 = false; set8 = false; set9 = false; set10 = true; set11 = false; set12 == false;
93            }
94            else if (color == blue) {
95                set6 = false; set7 = false; set8 = false; set9 = false; set10 = false; set11 = true; set12 == false;
96            }
97            else if (color == purple) {
98                set6 = false; set7 = false; set8 = false; set9 = false; set10 = false; set11 = false; set12 == true;
99            }
100        }
101        if (recentSize == size) {
102            if (size == thick) {
103                set1 = true; set2 = false; set3 = false;
104            }
105            else if (size == medium) {
106                set1 = false; set2 = true; set3 = false;
107            }
108            else if (size == thin) {
109                set1 = false; set2 = false; set3 = true;
110            }
111        }
112
113        recentColor = color;
114        recentSize = size;
115        set4 = false;
116    }
117
118    pen.size = size;
119    pen.color = color;
120}
121
122var drawing = false;
123
124cvs.addEventListener("mousedown", (event) => {
125    drawing = true;
126    update(event);
127});
128
129cvs.addEventListener("mouseup", () => {
130    drawing = false;
131    ctx.beginPath();
132});
133
134function update(event) {
135    if (event.clientX < 163 || event.clientX > window.innerWidth - 3 || event.clientY < 3 || event.clientY > window.innerHeight - 3) {
136        drawing = false;
137        ctx.beginPath();
138    }
139    if (drawing) {
140        ctx.lineWidth = pen.size;
141        ctx.lineCap = "round";
142        ctx.lineTo(event.clientX, event.clientY);
143        ctx.strokeStyle = pen.color;
144        ctx.stroke();
145    }
146}
147
148cvs.addEventListener("mousemove", update);
149
150window.addEventListener("resize", () => {
151    cvs.height = window.innerHeight - 0;
152    cvs.width = window.innerWidth - 0;
153    clear();
154});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.