-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
210 lines (208 loc) · 9.26 KB
/
index.html
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
</meta>
<meta name="author" content="Monokuma Bear (github.com/monokumaBear)">
</meta>
<meta name="description" content="Sneedacity and SIMP programs information and downloads">
</meta>
<meta name="keywords" content="Sneedacity,sneedacity,Audacity,audacity,SIMP,Simp,simp,GIMP,Gimp,gimp,Sneed,sneed,4chan,4Chan,audio,audio manipulation,audio-manipulation,image,image manipulation,image-manipulation,Adobe Audition,adobe audition,Adobe audition,Audition,audition,Adobe Photoshop,adobe photoshop,Adobe photoshop,Photoshop,photoshop,tool,program,software,foundation,open source,open-source,sneed,Sneed">
</meta>
<meta name="theme-color" content="#DDA707">
</meta>
<meta name="color-scheme" content="only light">
</meta>
<meta name="creator" content="Sneedacity and SIMP Team">
</meta>
<meta name="publisher" content="Sneedacity and SIMP Team">
</meta>
<meta name="robots" content="index,follow">
</meta>
<title>
Sneedacity & SIMP Projects
</title>
<script src="resources/cssUsableDocumentSize.js">
</script>
<link rel="stylesheet" type="text/css" as="style" media="all" href="resources/main.css">
</link>
<style>
#farmerHead {
margin: 2vw 10vw;
padding: 0;
width: 80vw;
height: 20vh;
position: relative;
}
#farmerHead > img, #farmerHead > canvas {
height: 20vh;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
#farmerHead > img {
z-index: 1;
width: auto;
}
#farmerHead > canvas {
z-index: 0;
/*The height is 20vh and the image dimensions are 265x312*/
width: calc(20vh * 265 / 312);
}
</style>
</head>
<body>
<header>
<nav>
<a href="index.html">
Home
</a>
<a href="projects/index.html">
Projects
</a>
<a href="downloads.html">
Downloads
</a>
<a href="music.html">
Music
</a>
</nav>
<img id="logo" src="resources/logo.png">
</img>
<h1>
Sneedacity & SIMP Projects
</h1>
</header>
<main>
<div id="farmerHead">
<img src="resources/sneedFarmerHeadTransparentNoEyes.png">
</img>
<canvas width="512" height="512">
</canvas>
</div>
<section>
<h2>
About
</h2>
<p>
This website serves as a homepage to learn about the <cite>Sneed Suite</cite> of software, including but not limited to <cite>Sneedacity</cite>, <cite>SIMP</cite>, and <cite>Sneedbooru</cite>.
</p>
<p>
The navigation bar contains many helpful links for those who want to learn about, download, and/or contribute to the projects.
</p>
<p>
Our website is available at the domains <a href="https://sneeda.city">sneeda.city</a>, <a href="https://sneedacity.org">sneedacity.org</a>, and <a href="https://sneedacity.com">sneedacity.com</a>.
</p>
</section>
<section>
<h2>How to use</h2>
<h3>
Download
</h3>
<p>
You can download installations of our software for your specific operating system at the "<a href="downloads.html">Downloads</a>" page of our website located in the navigation bar.
</p>
<h3>
Contribute
</h3>
<p>
All of our projects are open-source and hosted on GitHub; links to the GitHub pages of projects are located in the "<a href="projects/index.html">Projects</a>" page.
</p>
</section>
<section>
<h2>
FAQ
</h2>
<h3>
Where does the name come from?
</h3>
<p>
"Sneed" comes from episode 5 of season 11 of The Simpsons, <cite>E-I-E-I-D'oh</cite> (or <cite>E-I-E-I-(Annoyed Grunt)</cite>). Sneed (and the sign it appears on, <i>Sneed's Feed and Seed (Formerly Chuck's)</i>) is a meme that has become very popular on 4chan (especially amongst the "blue," or "Safe-For-Work," boards). Some reference to "Sneed" is always incorporated into the names of our software.
</p>
<h3>
Is this a serious project?
</h3>
<p>
Yes, this is a serious project. Many people are working on the software and intend to support it in the future.
</p>
<h3>
Is all software you produce open source?
</h3>
<p>
Yes, all software we develop and distribute is open source; feel free to contribute if you would be so generous as to do so.
</p>
<h3>
What projects are you working on (or have completed)?
</h3>
<p>
Currently, the list of projects we are working on are Sneedacity (audio-manipulation tool based off of Audacity), and SIMP (image-manipulation tool based off of GIMP). Hear more about our projects and software by going to the "<a href="projects/index.html">Projects</a>" tab in the navigation bar.
</p>
<h3>
How did you get started? What is /g/?
</h3>
<p>
We started working on our first project, Sneedacity, on the imageboard 4chan's /g/ board, which is the section of the forum dealing with technology (mainly computer science). We decided to fill the niche in the market when we learned that many people were looking for a derivative of Audacity that did not send data to the company that owns the software (a version that did not include "spyware").
</p>
</section>
</main>
<footer>
<p>
<small>
Project maintained by <a href="https://4chan.org/g/sneedacity">4chan's /g/ board</a>
</small>
</p>
</footer>
</body>
<script>
const FARMER_EYE_SCLERA_COLOR = "#BCCDD5";
const FARMER_EYE_PUPIL_COLOR = "#0C141F";
const FARMER_EYE_IMAGE = document.getElementById("farmerHead").getElementsByTagName("img")[0];
const FARMER_EYE_POSITIONS = [[100, 235], [240, 230]];
const FARMER_EYE_CANVAS = document.getElementById("farmerHead").getElementsByTagName("canvas")[0];
let FARMER_EYE_CANVAS_CLIENT_RECT = null;
let FARMER_EYE_CANVAS_SCALING_FACTORS = null;
//Updates any screen-based measurements when the window size is changed
function updateScreenBasedMeasurements() {
FARMER_EYE_CANVAS_CLIENT_RECT = FARMER_EYE_CANVAS.getBoundingClientRect();
FARMER_EYE_CANVAS_SCALING_FACTORS = [FARMER_EYE_CANVAS.width / FARMER_EYE_CANVAS_CLIENT_RECT.width, FARMER_EYE_CANVAS.height / FARMER_EYE_CANVAS_CLIENT_RECT.height];
};
updateScreenBasedMeasurements();
window.addEventListener("resize", updateScreenBasedMeasurements);
const FARMER_EYE_MAX_LOOK_DISTANCE = 15;
const FARMER_EYE_PUPIL_RADIUS = 8;
const FARMER_EYE_CANVAS_CONTEXT = FARMER_EYE_CANVAS.getContext("2d");
FARMER_EYE_CANVAS_CONTEXT.strokeStyle = "#00000000";
function clientToCanvasPosition(coordinates) {
return [FARMER_EYE_CANVAS_SCALING_FACTORS[0] * (coordinates[0] - FARMER_EYE_CANVAS_CLIENT_RECT.left), FARMER_EYE_CANVAS_SCALING_FACTORS[1] * (coordinates[1] - FARMER_EYE_CANVAS_CLIENT_RECT.top)];
};
function updateFarmerEyePosition(mouseMoveEvent) {
FARMER_EYE_CANVAS_CONTEXT.fillStyle = FARMER_EYE_SCLERA_COLOR;
FARMER_EYE_CANVAS_CONTEXT.fillRect(67, 190, 300, 70);
const MOUSE_POSITION = [mouseMoveEvent.clientX, mouseMoveEvent.clientY];
const MOUSE_POSITION_CANVAS = clientToCanvasPosition(MOUSE_POSITION);
let THETAS = [Math.atan((MOUSE_POSITION_CANVAS[1] - FARMER_EYE_POSITIONS[0][1]) / (MOUSE_POSITION_CANVAS[0] - FARMER_EYE_POSITIONS[0][0])), Math.atan((MOUSE_POSITION_CANVAS[1] - FARMER_EYE_POSITIONS[1][1]) / (MOUSE_POSITION_CANVAS[0] - FARMER_EYE_POSITIONS[1][0]))];
//Adding pi to the result if the sign of MOUSE_POSITION_CANVAS[1] - FARMER_EYE_POSITIONS[0][1] is negative gives the correct value of arctan, since the Math.atan() function only returns solutions within the interval [-pi/2, pi/2]
for (let i = 0; i < 2; i++) {
if (MOUSE_POSITION_CANVAS[0] - FARMER_EYE_POSITIONS[i][0] < 0) {
THETAS[i] += Math.PI;
};
};
const FARMER_EYE_LOOK_DISTANCES = [Math.min(Math.sqrt(Math.pow(FARMER_EYE_POSITIONS[0][0] - MOUSE_POSITION_CANVAS[0], 2) + Math.pow(FARMER_EYE_POSITIONS[0][1] - MOUSE_POSITION_CANVAS[1], 2)), FARMER_EYE_MAX_LOOK_DISTANCE), Math.min(Math.sqrt(Math.pow(FARMER_EYE_POSITIONS[1][0] - MOUSE_POSITION_CANVAS[0], 2) + Math.pow(FARMER_EYE_POSITIONS[1][1] - MOUSE_POSITION_CANVAS[1], 2)), FARMER_EYE_MAX_LOOK_DISTANCE)];
const FARMER_EYE_LOOK_POSITIONS = [[FARMER_EYE_POSITIONS[0][0] + FARMER_EYE_LOOK_DISTANCES[0] * Math.cos(THETAS[0]), FARMER_EYE_POSITIONS[0][1] + FARMER_EYE_LOOK_DISTANCES[0] * Math.sin(THETAS[0])], [FARMER_EYE_POSITIONS[1][0] + FARMER_EYE_LOOK_DISTANCES[1] * Math.cos(THETAS[1]), FARMER_EYE_POSITIONS[1][1] + FARMER_EYE_LOOK_DISTANCES[1] * Math.sin(THETAS[1])]];
FARMER_EYE_CANVAS_CONTEXT.fillStyle = FARMER_EYE_PUPIL_COLOR;
FARMER_EYE_CANVAS_CONTEXT.beginPath();
FARMER_EYE_CANVAS_CONTEXT.arc(FARMER_EYE_LOOK_POSITIONS[0][0], FARMER_EYE_LOOK_POSITIONS[0][1], FARMER_EYE_PUPIL_RADIUS, 0, 2 * Math.PI);
FARMER_EYE_CANVAS_CONTEXT.fill();
FARMER_EYE_CANVAS_CONTEXT.beginPath();
FARMER_EYE_CANVAS_CONTEXT.arc(FARMER_EYE_LOOK_POSITIONS[1][0], FARMER_EYE_LOOK_POSITIONS[1][1], FARMER_EYE_PUPIL_RADIUS, 0, 2 * Math.PI);
FARMER_EYE_CANVAS_CONTEXT.fill();
};
window.addEventListener("mousemove", updateFarmerEyePosition);
//Causes the sclera and pupils to be drawn looking towards the left before the mouse moves for the first time
const ARTIFICIAL_MOUSEMOVE_EVENT = new MouseEvent("mousemove", {
clientX: FARMER_EYE_POSITIONS[0][0] - 100,
clientY: (FARMER_EYE_POSITIONS[0][1] + FARMER_EYE_POSITIONS[1][1]) / 2
});
window.dispatchEvent(ARTIFICIAL_MOUSEMOVE_EVENT);
</script>
</html>