Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,064 changes: 816 additions & 1,248 deletions package-lock.json

Large diffs are not rendered by default.

19 changes: 10 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "p5",
"repository": "processing/p5.js",
"type": "module",
"scripts": {
"build": "rollup -c",
"dev": "vite preview/",
Expand All @@ -21,11 +22,11 @@
},
"version": "2.2.0-rc.3",
"dependencies": {
"@davepagurek/bezier-path": "^0.0.2",
"@davepagurek/bezier-path": "^0.0.7",
"@japont/unicode-range": "^1.0.0",
"acorn": "^8.12.1",
"acorn": "^8.15.0",
"acorn-walk": "^8.3.4",
"colorjs.io": "^0.5.2",
"colorjs.io": "^0.6.0",
"escodegen": "^2.1.0",
"file-saver": "^1.3.8",
"gifenc": "^1.0.3",
Expand All @@ -34,8 +35,7 @@
"libtess": "^1.2.2",
"omggif": "^1.0.10",
"pako": "^2.1.0",
"pixelmatch": "^7.1.0",
"zod": "^3.25.51"
"zod": "^4.2.1"
},
"devDependencies": {
"@eslint/compat": "^1.2.9",
Expand All @@ -48,8 +48,8 @@
"@rollup/plugin-replace": "^5.0.7",
"@rollup/plugin-terser": "^0.4.4",
"@stylistic/eslint-plugin": "^4.4.1",
"@vitest/browser": "^2.1.5",
"all-contributors-cli": "^6.19.0",
"@vitest/browser": "^4.0.16",
"@vitest/browser-webdriverio": "^4.0.16",
"concurrently": "^8.2.2",
"documentation": "^14.0.3",
"eslint": "^9.28.0",
Expand All @@ -59,13 +59,14 @@
"husky": "^4.2.3",
"lint-staged": "^15.1.0",
"msw": "^2.6.3",
"pixelmatch": "^7.1.0",
"rollup": "^4.9.6",
"rollup-plugin-string": "^3.0.0",
"rollup-plugin-visualizer": "^5.12.0",
"typescript": "^5.9.2",
"vite": "^5.0.2",
"vite": "^7.3.0",
"vite-plugin-string": "^1.2.2",
"vitest": "^2.1.5",
"vitest": "^4.0.16",
"webdriverio": "^9.0.7"
},
"license": "LGPL-2.1",
Expand Down
2 changes: 1 addition & 1 deletion test/unit/type/loading.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ suite('Loading Fonts', function () {
});

// tests ////////////////////////////////////////////////
const fontFile = '/unit/assets/acmesa.ttf';
const fontFile = 'test/unit/assets/acmesa.ttf';

test('loadFont on zlib compressed fonts works', async () => {
const font = await myp5.loadFont('https://fonts.gstatic.com/s/montserrat/v29/JTUFjIg1_i6t8kCHKm459Wx7xQYXK0vOoz6jq6R8aXw.woff');
Expand Down
2 changes: 1 addition & 1 deletion test/unit/type/p5.Font.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ suite('p5.Font', function () {
});

// tests ////////////////////////////////////////////////
const fontFile = '/unit/assets/acmesa.ttf';
const fontFile = 'test/unit/assets/acmesa.ttf';
const textString = 'Lorem ipsum dolor sit amet.';

test('textBounds', async () => {
Expand Down
4 changes: 2 additions & 2 deletions test/unit/visual/cases/shapes.js
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ visualSuite('Shape drawing', function() {
});

visualTest('Texture coordinates', async function(p5, screenshot) {
const tex = await p5.loadImage('/unit/assets/cat.jpg');
const tex = await p5.loadImage('test/unit/assets/cat.jpg');
setup(p5);
p5.texture(tex);
p5.beginShape(p5.QUAD_STRIP);
Expand All @@ -417,7 +417,7 @@ visualSuite('Shape drawing', function() {
});

visualTest('Normalized texture coordinates', async function(p5, screenshot) {
const tex = await p5.loadImage('/unit/assets/cat.jpg');
const tex = await p5.loadImage('test/unit/assets/cat.jpg');
setup(p5);
p5.texture(tex);
p5.textureMode(p5.NORMAL);
Expand Down
32 changes: 16 additions & 16 deletions test/unit/visual/cases/typography.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ visualSuite('Typography', function () {
visualTest('with a font file', async function (p5, screenshot) {
p5.createCanvas(100, 100);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.textFont(font);
p5.textAlign(p5.LEFT, p5.TOP);
Expand All @@ -46,7 +46,7 @@ visualSuite('Typography', function () {
visualTest('with a woff font file', async function (p5, screenshot) {
p5.createCanvas(100, 100);
const font = await p5.loadFont(
'/unit/assets/Lato-Regular.woff'
'test/unit/assets/Lato-Regular.woff'
);
p5.textFont(font);
p5.textAlign(p5.LEFT, p5.TOP);
Expand All @@ -65,7 +65,7 @@ visualSuite('Typography', function () {
visualTest('with a font file in WebGL', async function (p5, screenshot) {
p5.createCanvas(100, 100, p5.WEBGL);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.textFont(font);
p5.textAlign(p5.LEFT, p5.TOP);
Expand Down Expand Up @@ -112,7 +112,7 @@ visualSuite('Typography', function () {
visualTest('can control variable fonts from files', async function (p5, screenshot) {
p5.createCanvas(100, 100);
const font = await p5.loadFont(
'/unit/assets/BricolageGrotesque-Variable.ttf'
'test/unit/assets/BricolageGrotesque-Variable.ttf'
);
for (let weight = 400; weight <= 800; weight += 100) {
p5.background(255);
Expand All @@ -128,7 +128,7 @@ visualSuite('Typography', function () {
visualTest('can control variable fonts from files in WebGL', async function (p5, screenshot) {
p5.createCanvas(100, 100, p5.WEBGL);
const font = await p5.loadFont(
'/unit/assets/BricolageGrotesque-Variable.ttf'
'test/unit/assets/BricolageGrotesque-Variable.ttf'
);
for (let weight = 400; weight <= 800; weight += 100) {
p5.push();
Expand Down Expand Up @@ -195,7 +195,7 @@ visualSuite('Typography', function () {
if (mode === 'webgl') p5.translate(-p5.width/2, -p5.height/2);
p5.textSize(60);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.textFont(font);
alignments.forEach(alignment => {
Expand Down Expand Up @@ -229,7 +229,7 @@ visualSuite('Typography', function () {
if (mode === 'webgl') p5.translate(-p5.width/2, -p5.height/2);
p5.textSize(45);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.textFont(font);
alignments.forEach(alignment => {
Expand Down Expand Up @@ -265,7 +265,7 @@ visualSuite('Typography', function () {
p5.textSize(20);
p5.textWrap(p5.WORD);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.textFont(font);

Expand Down Expand Up @@ -330,7 +330,7 @@ visualSuite('Typography', function () {
p5.textSize(19);
p5.textWrap(p5.CHAR);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.textFont(font);

Expand Down Expand Up @@ -395,7 +395,7 @@ visualSuite('Typography', function () {
p5.textSize(20);

const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.textFont(font);

Expand Down Expand Up @@ -454,7 +454,7 @@ visualSuite('Typography', function () {
p5.textSize(20);

const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.textFont(font);

Expand Down Expand Up @@ -566,7 +566,7 @@ visualSuite('Typography', function () {
visualTest('Fonts can be converted to points', async function (p5, screenshot) {
p5.createCanvas(100, 100);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.background(255);
p5.strokeWeight(2);
Expand All @@ -581,7 +581,7 @@ visualSuite('Typography', function () {
visualTest('Sampling density can be changed', async function (p5, screenshot) {
p5.createCanvas(100, 100);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.background(255);
p5.strokeWeight(2);
Expand All @@ -597,7 +597,7 @@ visualSuite('Typography', function () {
visualTest(`Fonts point angles work in ${mode} mode`, async function (p5, screenshot) {
p5.createCanvas(100, 100);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.background(255);
p5.strokeWeight(2);
Expand Down Expand Up @@ -625,7 +625,7 @@ visualSuite('Typography', function () {
visualTest('Fonts can be converted to points grouped by contour', async function (p5, screenshot) {
p5.createCanvas(100, 100);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.background(200);
p5.strokeWeight(2);
Expand All @@ -646,7 +646,7 @@ visualSuite('Typography', function () {
visualTest('Fonts can be converted to drawing context commands', async function (p5, screenshot) {
p5.createCanvas(100, 100);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.background(200);
p5.strokeWeight(2);
Expand Down
26 changes: 13 additions & 13 deletions test/unit/visual/cases/webgl.js
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ visualSuite('WebGL', function() {
visualTest('OBJ model with MTL file displays diffuse colors correctly', function(p5, screenshot) {
return new Promise(resolve => {
p5.createCanvas(50, 50, p5.WEBGL);
p5.loadModel('/unit/assets/octa-color.obj', model => {
p5.loadModel('test/unit/assets/octa-color.obj', model => {
p5.background(255);
p5.rotateX(10 * 0.01);
p5.rotateY(10 * 0.01);
Expand All @@ -276,7 +276,7 @@ visualSuite('WebGL', function() {
visualTest('Object with no colors takes on fill color', function(p5, screenshot) {
return new Promise(resolve => {
p5.createCanvas(50, 50, p5.WEBGL);
p5.loadModel('/unit/assets/cube.obj', model => {
p5.loadModel('test/unit/assets/cube.obj', model => {
p5.background(255);
p5.fill('blue'); // Setting a fill color
p5.rotateX(p5.frameCount * 0.01);
Expand All @@ -292,8 +292,8 @@ visualSuite('WebGL', function() {
'Object with different texture coordinates per use of vertex keeps the coordinates intact',
async function(p5, screenshot) {
p5.createCanvas(50, 50, p5.WEBGL);
const tex = await p5.loadImage('/unit/assets/cat.jpg');
const cube = await new Promise(resolve => p5.loadModel('/unit/assets/cube-textures.obj', resolve));
const tex = await p5.loadImage('test/unit/assets/cat.jpg');
const cube = await new Promise(resolve => p5.loadModel('test/unit/assets/cube-textures.obj', resolve));
cube.normalize();
p5.background(255);
p5.texture(tex);
Expand Down Expand Up @@ -405,7 +405,7 @@ visualSuite('WebGL', function() {
visualSuite('ShaderFunctionality', function() {
visualTest('FillShader', async (p5, screenshot) => {
p5.createCanvas(50, 50, p5.WEBGL);
const img = await p5.loadImage('/unit/assets/cat.jpg');
const img = await p5.loadImage('test/unit/assets/cat.jpg');
const fillShader = p5.createShader(
`
attribute vec3 aPosition;
Expand Down Expand Up @@ -456,7 +456,7 @@ visualSuite('WebGL', function() {

visualTest('ImageShader', async (p5, screenshot) => {
p5.createCanvas(50, 50, p5.WEBGL);
const img = await p5.loadImage('/unit/assets/cat.jpg');
const img = await p5.loadImage('test/unit/assets/cat.jpg');
const imgShader = p5.createShader(
`
precision mediump float;
Expand Down Expand Up @@ -655,7 +655,7 @@ visualSuite('WebGL', function() {
visualTest('Flat', async (p5, screenshot) => {
p5.createCanvas(50, 50, p5.WEBGL);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.textSize(20);
const geom = font.textToModel('p5*js', 0, 0, {
Expand All @@ -674,7 +674,7 @@ visualSuite('WebGL', function() {
visualTest('Extruded', async (p5, screenshot) => {
p5.createCanvas(50, 50, p5.WEBGL);
const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);
p5.textSize(20);
const geom = font.textToModel('p5*js', 0, 0, {
Expand Down Expand Up @@ -775,7 +775,7 @@ visualSuite('WebGL', function() {
vi.spyOn(p5._renderer, 'maxCachedGlyphs').mockReturnValue(6);

const font = await p5.loadFont(
'/unit/assets/Inconsolata-Bold.ttf'
'test/unit/assets/Inconsolata-Bold.ttf'
);

p5.textFont(font);
Expand All @@ -795,15 +795,15 @@ visualSuite('WebGL', function() {
visualSuite('texture()', () => {
visualTest('on a rect', async (p5, screenshot) => {
p5.createCanvas(50, 50, p5.WEBGL);
const tex = await p5.loadImage('/unit/assets/cat.jpg');
const tex = await p5.loadImage('test/unit/assets/cat.jpg');
p5.texture(tex);
p5.rect(-20, -20, 40, 40);
screenshot();
});

visualTest('on a rect with rounded corners', async (p5, screenshot) => {
p5.createCanvas(50, 50, p5.WEBGL);
const tex = await p5.loadImage('/unit/assets/cat.jpg');
const tex = await p5.loadImage('test/unit/assets/cat.jpg');
p5.texture(tex);
p5.rect(-20, -20, 40, 40, 10);
screenshot();
Expand All @@ -813,7 +813,7 @@ visualSuite('WebGL', function() {
visualSuite('textures in p5.strands', () => {
visualTest('uniformTexture() works', async (p5, screenshot) => {
p5.createCanvas(50, 50, p5.WEBGL);
const tex = await p5.loadImage('/unit/assets/cat.jpg');
const tex = await p5.loadImage('test/unit/assets/cat.jpg');
const shader = p5.baseMaterialShader().modify(() => {
const texUniform = p5.uniformTexture(() => tex)
p5.getPixelInputs((inputs) => {
Expand All @@ -836,7 +836,7 @@ visualSuite('WebGL', function() {
p5.createCanvas(100, 100, p5.WEBGL);

// Load the environment map
const env = await p5.loadImage('/unit/assets/spheremap.jpg');
const env = await p5.loadImage('test/unit/assets/spheremap.jpg');
p5.clear();

// Set up panorama background
Expand Down
Loading
Loading