The Processing website features a selection of code examples from the Processing software.
The source files for these featured examples are located in /content/examples
. Before you contribute to the examples page, it is important that you understand where these files come from. In the context of the examples page, there are two kinds of files:
- Files specific to the website (like the thumbnail, or the metadata). These files *should* be edited in this repository.
- Files automatically copied from the
processing-examples
repo. These files should *not* be edited in this repository.
For instance, the files for Basic Examples > Image > BackgroundImage
are located at:
/content/examples/Basics/Image/BackgroundImage/
That folder contains the following files:
File Path | Description | Edit here |
---|---|---|
BackgroundImage.json |
Content file for the example (jump to section) | ✅ |
BackgroundImage.png |
Cover image used on page listings (jump to section) | ✅ |
liveSketch.js |
A manual port of the example to p5.js (jump to section) | ✅ |
BackgroundImage.pde |
Processing code for the example (code shown on the page) | ❌ |
Additionally, if the original example had a Data
folder, the contents of that folder are stored in /static/livesketch/
. For BackgroundImage
, you'll see a /static/livesketch/backgroundimage
folder with a file called moonwalk.jpg
. Do not edit this file ❌. Files in the /static/livesketch/
folder are copied from the processing-examples
repo and should *not* be edited in this repository
So you find an issue with an example on the website. Great! You are on your way to improving the Processing documentation and we are immensely grateful for your contribution! Here are the most common situations and the files you should edit.
If the sketch running on the website doesn't work as it should, especially if it doesn't match the behavior of the Processing code shown on the page, then you should edit the livesketch.js
in the corresponding example folder. The live sketch is a manual port of the Processing sketch to p5.js, created by a human. Do *not* try to edit the .pde
file. That file is automatically copied from the processing-examples
and does not run in a browser.
If there is a typo or any error in the code shown on an example page, head over to the processing-examples
repository and create an issue describing the problem. You can also submit a pull request with a fix. Check the instructions below on bringing changes from processing-examples
to this repo.
The Processing code for each example is copied via a script from the processing-examples
repo to website. The script will do two things: It will copy all .pde
files into the content/examples/TOPIC/SUBTOPIC/EXAMPLE
folder and it will copy all files in the data
folder of the example into a static/livesketch/EXAMPLE
folder. This makes it possible for the liveSketch.js
sketch to load the original data. Some live sketches differ slightly from the original example (such as the AlphaMask example requiring a .png
file instead of a .jpg
file) and these files are manually placed in the static/livesketch-manual
folder.
Note: The script will only copy examples into the website that already have an existing .pde
file. This means that the script will only update examples, not add new ones.
This is what you need to run the script:
- Make sure that you have the
processing-examples
repo next to thisprocessing-website
repo on your computer - Pull the latest
main
from theprocessing-examples
repository - From the root of this repo, run
npm run updateExamples
. The script will prompt you with an overview of the changes before it does anything.
You should now have the updated example files in your repo ready to be committed. Please submit the changes as a PR to the main
branch of processing-website
.
When adding a new example, copy/paste an existing example folder and change the content of all files to reflect the example. Remember to put any files inside the data
folder into /static/livesketch/EXAMPLE
and write the liveSketch.js
file to read from this folder.
Each example has to have a .json
file in this format:
{
"name": "",
"title": "",
"author": "",
"description": "",
"featured": ["", "", ""]
}
All empty ""
should be filled with the information for that examples.
The name is the name that will go to the url and the title is the title of the example shown on the page. You can find the name, title, author and description in the comments of the pde files here.
This is a new feature of the example pages so you should choose no more than 6 functions that appear in the example (in the .pde
files) and put them in the .json
file in the "features" field. The name of the functions should be the same as the name of their .json
files located in /content/references/translations/en
.
Each example has an image or animation that comes from P5.js code. The cover should be exported as a .png
from the original p5.js code from here to a size of 1280px720
(keeping the same proportions than the original sketch). If the example doesn't have a p5.js file, then the upscaling has to be done from the .pde
files from here. The naming of the image it's the same than the content file.
Most examples include a livesketch.js
file implemented in p5.js, designed to replicate the original Processing sketch's behavior as closely as possible. It allows the example to run in a browser. This file is not automatically generated but must be authored and updated by a contributor.
The code uses instance mode and is encapsulated in a runLiveSketch()
function.
All p5.js functions and variables must be accessed using the s
instance (e.g., s.createCanvas()
).
function runLiveSketch(s) {
s.setup = () => {
s.createCanvas(640, 360);
// Initialization code
};
s.draw = () => {
// Drawing code
};
}