Remove TypeScript files.
This commit is contained in:
parent
e3103fb8a3
commit
5a36bfb40b
|
@ -1,66 +0,0 @@
|
||||||
import {
|
|
||||||
FocusBlur,
|
|
||||||
Mirrors,
|
|
||||||
Newsprint,
|
|
||||||
SimplexNoise,
|
|
||||||
Softglow,
|
|
||||||
StereographicProjection,
|
|
||||||
} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [1920, 1080];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: false,
|
|
||||||
name: '2022-03-06',
|
|
||||||
operations: [
|
|
||||||
new SimplexNoise({scale: 4, seed: 2_071_140_406}),
|
|
||||||
new Newsprint({
|
|
||||||
colorModel: 'rgb',
|
|
||||||
pattern2: 'line',
|
|
||||||
period2: 200,
|
|
||||||
angle2: 15,
|
|
||||||
pattern3: 'line',
|
|
||||||
period3: 200,
|
|
||||||
angle3: 45,
|
|
||||||
pattern4: 'line',
|
|
||||||
period4: 200,
|
|
||||||
angle4: 0,
|
|
||||||
}),
|
|
||||||
new Mirrors(),
|
|
||||||
new Softglow(),
|
|
||||||
new Newsprint(),
|
|
||||||
new StereographicProjection({tilt: 123}),
|
|
||||||
new FocusBlur({
|
|
||||||
blurType: 'gaussian',
|
|
||||||
blurRadius: 11.5,
|
|
||||||
radius: 0.9,
|
|
||||||
midpoint: 0.6,
|
|
||||||
}),
|
|
||||||
new Newsprint({
|
|
||||||
colorModel: 'rgb',
|
|
||||||
pattern2: 'diamond',
|
|
||||||
period2: 200,
|
|
||||||
angle2: 0,
|
|
||||||
pattern3: 'diamond',
|
|
||||||
period3: 200,
|
|
||||||
angle3: 35,
|
|
||||||
pattern4: 'diamond',
|
|
||||||
period4: 200,
|
|
||||||
angle4: 55,
|
|
||||||
}),
|
|
||||||
new FocusBlur({
|
|
||||||
blurType: 'gaussian',
|
|
||||||
blurRadius: 11.5,
|
|
||||||
radius: 0.9,
|
|
||||||
midpoint: 0.6,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
resetAlpha: false,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,68 +0,0 @@
|
||||||
import {
|
|
||||||
Cartoon,
|
|
||||||
MedianBlur,
|
|
||||||
Mirrors,
|
|
||||||
Mosaic,
|
|
||||||
Plasma,
|
|
||||||
Waterpixels,
|
|
||||||
Waves,
|
|
||||||
} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [1920, 1080];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: false,
|
|
||||||
name: '2022-03-07',
|
|
||||||
operations: [
|
|
||||||
new Plasma({
|
|
||||||
height,
|
|
||||||
seed: 2_000_111_903,
|
|
||||||
turbulence: 1,
|
|
||||||
width,
|
|
||||||
}),
|
|
||||||
new Mosaic({
|
|
||||||
colorVariation: 1,
|
|
||||||
tileHeight: 5,
|
|
||||||
tileNeatness: 1,
|
|
||||||
tileSize: 116.53,
|
|
||||||
tileSurface: true,
|
|
||||||
tileType: 'triangles',
|
|
||||||
}),
|
|
||||||
new Waves({
|
|
||||||
amplitude: 2.9,
|
|
||||||
clamp: true,
|
|
||||||
samplerType: 'cubic',
|
|
||||||
}),
|
|
||||||
new Waves({
|
|
||||||
amplitude: 17.3,
|
|
||||||
clamp: true,
|
|
||||||
samplerType: 'cubic',
|
|
||||||
}),
|
|
||||||
new Mirrors({
|
|
||||||
oX: 1,
|
|
||||||
oY: 0.353,
|
|
||||||
nSegs: 2,
|
|
||||||
}),
|
|
||||||
new Cartoon(),
|
|
||||||
new Waterpixels({
|
|
||||||
fill: 'average',
|
|
||||||
size: 32,
|
|
||||||
smoothness: 1,
|
|
||||||
}),
|
|
||||||
new Mirrors({
|
|
||||||
oX: 0.01,
|
|
||||||
oY: 0.01,
|
|
||||||
nSegs: 5,
|
|
||||||
rAngle: 342,
|
|
||||||
}),
|
|
||||||
new MedianBlur(),
|
|
||||||
],
|
|
||||||
resetAlpha: false,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,42 +0,0 @@
|
||||||
import {
|
|
||||||
DiffractionPatterns,
|
|
||||||
FocusBlur,
|
|
||||||
Newsprint,
|
|
||||||
StereographicProjection,
|
|
||||||
TileSeamless,
|
|
||||||
} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [1920, 1080];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: false,
|
|
||||||
name: '2022-03-08',
|
|
||||||
operations: [
|
|
||||||
new DiffractionPatterns({
|
|
||||||
height,
|
|
||||||
width,
|
|
||||||
}),
|
|
||||||
new TileSeamless(),
|
|
||||||
new StereographicProjection(),
|
|
||||||
new Newsprint({
|
|
||||||
colorModel: 'cmyk',
|
|
||||||
period: 4,
|
|
||||||
}),
|
|
||||||
new FocusBlur({
|
|
||||||
blurRadius: 9.72,
|
|
||||||
blurType: 'lens',
|
|
||||||
focus: 0,
|
|
||||||
highlightFactor: 0.924,
|
|
||||||
radius: 1.173,
|
|
||||||
shape: 'circle',
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
resetAlpha: false,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,60 +0,0 @@
|
||||||
import {
|
|
||||||
FocusBlur,
|
|
||||||
Maze,
|
|
||||||
MedianBlur,
|
|
||||||
Mirrors,
|
|
||||||
Newsprint,
|
|
||||||
Oilify,
|
|
||||||
TileGlass,
|
|
||||||
TileSeamless,
|
|
||||||
Waterpixels,
|
|
||||||
Waves,
|
|
||||||
} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [1920, 1080];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: true,
|
|
||||||
name: '2022-03-09',
|
|
||||||
operations: [
|
|
||||||
new Maze(),
|
|
||||||
new TileGlass(),
|
|
||||||
new Waterpixels(),
|
|
||||||
new Newsprint({
|
|
||||||
angle2: -55.4,
|
|
||||||
angle3: 60.77,
|
|
||||||
angle4: 103.55,
|
|
||||||
colorModel: 'rgb',
|
|
||||||
}),
|
|
||||||
new Waves({
|
|
||||||
amplitude: 5.9,
|
|
||||||
clamp: true,
|
|
||||||
}),
|
|
||||||
new Oilify(),
|
|
||||||
new TileSeamless(),
|
|
||||||
new MedianBlur({
|
|
||||||
percentile: 2.35,
|
|
||||||
}),
|
|
||||||
new Mirrors({
|
|
||||||
nSegs: 3,
|
|
||||||
oX: 0.1,
|
|
||||||
oY: 0.2,
|
|
||||||
rAngle: 330,
|
|
||||||
}),
|
|
||||||
new FocusBlur({
|
|
||||||
blurRadius: 33.57,
|
|
||||||
blurType: 'lens',
|
|
||||||
focus: 0.111,
|
|
||||||
highlightFactor: 0.529,
|
|
||||||
radius: 1.173,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
resetAlpha: true,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,47 +0,0 @@
|
||||||
import {Bloom, CellNoise, Newsprint, Waves} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [3840, 2160];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: false,
|
|
||||||
name: '2022-03-10',
|
|
||||||
operations: [
|
|
||||||
new CellNoise({
|
|
||||||
scale: 0.5,
|
|
||||||
seed: 2_762_328_325,
|
|
||||||
}),
|
|
||||||
new Newsprint({
|
|
||||||
angle4: 75.85,
|
|
||||||
colorModel: 'rgb',
|
|
||||||
pattern2: 'circle',
|
|
||||||
pattern4: 'cross',
|
|
||||||
period2: 42.38,
|
|
||||||
period3: 0,
|
|
||||||
period4: 135.1,
|
|
||||||
turbulence: 0.454,
|
|
||||||
}),
|
|
||||||
new Waves({
|
|
||||||
amplitude: 67.6,
|
|
||||||
clamp: true,
|
|
||||||
period: 514.8,
|
|
||||||
phi: -0.529,
|
|
||||||
samplerType: 'cubic',
|
|
||||||
x: -0.25,
|
|
||||||
y: -0.75,
|
|
||||||
}),
|
|
||||||
new Bloom({
|
|
||||||
radius: 20,
|
|
||||||
softness: 57,
|
|
||||||
strength: 90,
|
|
||||||
threshold: 10,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
resetAlpha: false,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,61 +0,0 @@
|
||||||
import {
|
|
||||||
Bloom,
|
|
||||||
Cartoon,
|
|
||||||
Newsprint,
|
|
||||||
NoisePick,
|
|
||||||
Plasma,
|
|
||||||
Waterpixels,
|
|
||||||
} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [3840, 2160];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: true,
|
|
||||||
name: '2022-03-11',
|
|
||||||
operations: [
|
|
||||||
new Plasma({
|
|
||||||
seed: 168_139_081,
|
|
||||||
turbulence: 1.5,
|
|
||||||
height,
|
|
||||||
width,
|
|
||||||
}),
|
|
||||||
new Cartoon({
|
|
||||||
maskRadius: 40,
|
|
||||||
pctBlack: 0.2,
|
|
||||||
}),
|
|
||||||
new Waterpixels({
|
|
||||||
size: 64,
|
|
||||||
}),
|
|
||||||
new Cartoon({
|
|
||||||
maskRadius: 40,
|
|
||||||
pctBlack: 0.2,
|
|
||||||
}),
|
|
||||||
new Newsprint({
|
|
||||||
colorModel: 'rgb',
|
|
||||||
pattern2: 'circle',
|
|
||||||
pattern3: 'cross',
|
|
||||||
pattern4: 'circle',
|
|
||||||
period2: 15,
|
|
||||||
period3: 150,
|
|
||||||
period4: 30,
|
|
||||||
turbulence: 0.9,
|
|
||||||
}),
|
|
||||||
new Bloom({
|
|
||||||
radius: 7.48,
|
|
||||||
strength: 115.29,
|
|
||||||
threshold: 65.88,
|
|
||||||
}),
|
|
||||||
new NoisePick({
|
|
||||||
repeat: 5,
|
|
||||||
seed: 0,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
resetAlpha: false,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,51 +0,0 @@
|
||||||
import {
|
|
||||||
DiffractionPatterns,
|
|
||||||
Generic,
|
|
||||||
MedianBlur,
|
|
||||||
Mirrors,
|
|
||||||
Newsprint,
|
|
||||||
Waterpixels,
|
|
||||||
} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [3840, 2160];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: false,
|
|
||||||
name: '2022-03-12',
|
|
||||||
operations: [
|
|
||||||
new DiffractionPatterns({
|
|
||||||
brightness: 0.382,
|
|
||||||
polarization: 0.67,
|
|
||||||
scattering: 53.21,
|
|
||||||
height,
|
|
||||||
width,
|
|
||||||
}),
|
|
||||||
new Waterpixels({
|
|
||||||
smoothness: 2,
|
|
||||||
}),
|
|
||||||
new Generic('gegl:edge-neon', {
|
|
||||||
amount: 0.5,
|
|
||||||
radius: 3,
|
|
||||||
}),
|
|
||||||
new Mirrors({
|
|
||||||
oX: 0.365,
|
|
||||||
oY: 0.694,
|
|
||||||
trimX: 0.375,
|
|
||||||
trimY: 0.375,
|
|
||||||
}),
|
|
||||||
new Newsprint({
|
|
||||||
turbulence: 0.996,
|
|
||||||
}),
|
|
||||||
new MedianBlur({
|
|
||||||
neighborhood: 'diamond',
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
resetAlpha: false,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,53 +0,0 @@
|
||||||
import {
|
|
||||||
Cartoon,
|
|
||||||
Mirrors,
|
|
||||||
Oilify,
|
|
||||||
Plasma,
|
|
||||||
StereographicProjection,
|
|
||||||
Waterpixels,
|
|
||||||
} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [3840, 2160];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: false,
|
|
||||||
name: '2022-03-13',
|
|
||||||
operations: [
|
|
||||||
new Plasma({
|
|
||||||
seed: 65_198_886,
|
|
||||||
height,
|
|
||||||
width,
|
|
||||||
}),
|
|
||||||
new Cartoon({
|
|
||||||
maskRadius: 50,
|
|
||||||
pctBlack: 1,
|
|
||||||
}),
|
|
||||||
new Waterpixels({
|
|
||||||
size: 64,
|
|
||||||
}),
|
|
||||||
new Oilify({
|
|
||||||
maskRadius: 8,
|
|
||||||
}),
|
|
||||||
new Mirrors({
|
|
||||||
nSegs: 8,
|
|
||||||
oX: 0.829,
|
|
||||||
oY: 0.812,
|
|
||||||
trimX: 0.325,
|
|
||||||
trimY: 0.09,
|
|
||||||
}),
|
|
||||||
new StereographicProjection({
|
|
||||||
tilt: -73.42,
|
|
||||||
}),
|
|
||||||
new Oilify({
|
|
||||||
maskRadius: 8,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
resetAlpha: false,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,51 +0,0 @@
|
||||||
import {
|
|
||||||
Cartoon,
|
|
||||||
DiffractionPatterns,
|
|
||||||
Generic,
|
|
||||||
MedianBlur,
|
|
||||||
Mirrors,
|
|
||||||
} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [3840, 2160];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: false,
|
|
||||||
name: '2022-03-14',
|
|
||||||
operations: [
|
|
||||||
new DiffractionPatterns({
|
|
||||||
height,
|
|
||||||
width,
|
|
||||||
}),
|
|
||||||
new Mirrors({
|
|
||||||
nSegs: 7,
|
|
||||||
oX: 0.347,
|
|
||||||
oY: 0.1,
|
|
||||||
rAngle: 13,
|
|
||||||
trimX: 0.051,
|
|
||||||
trimY: 0.253,
|
|
||||||
}),
|
|
||||||
new Cartoon({
|
|
||||||
maskRadius: 50,
|
|
||||||
pctBlack: 1,
|
|
||||||
}),
|
|
||||||
new MedianBlur({
|
|
||||||
radius: 5,
|
|
||||||
}),
|
|
||||||
new Generic('gegl:edge', {
|
|
||||||
algorithm: 'prewitt',
|
|
||||||
amount: 10,
|
|
||||||
borderBehavior: 'clamp',
|
|
||||||
}),
|
|
||||||
new MedianBlur({
|
|
||||||
radius: 5,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
resetAlpha: false,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,90 +0,0 @@
|
||||||
import {
|
|
||||||
Bloom,
|
|
||||||
Cartoon,
|
|
||||||
Crop,
|
|
||||||
FocusBlur,
|
|
||||||
Generic,
|
|
||||||
Mirrors,
|
|
||||||
Newsprint,
|
|
||||||
Waves,
|
|
||||||
} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [3840, 2160];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: false,
|
|
||||||
name: '2022-03-15',
|
|
||||||
operations: [
|
|
||||||
new Generic('gegl:spiral', {
|
|
||||||
balance: 0.424,
|
|
||||||
color1: '#3078d2',
|
|
||||||
color2: '#ff00dc',
|
|
||||||
direction: 'cw',
|
|
||||||
height,
|
|
||||||
radius: 918.7,
|
|
||||||
type: 'linear',
|
|
||||||
width,
|
|
||||||
x: 0.307,
|
|
||||||
y: 0.542,
|
|
||||||
}),
|
|
||||||
new Crop({
|
|
||||||
height,
|
|
||||||
width,
|
|
||||||
}),
|
|
||||||
new Cartoon({
|
|
||||||
maskRadius: 50,
|
|
||||||
pctBlack: 1,
|
|
||||||
}),
|
|
||||||
new Newsprint({
|
|
||||||
colorModel: 'rgb',
|
|
||||||
pattern2: 'line',
|
|
||||||
pattern3: 'diamond',
|
|
||||||
pattern4: 'pssquare',
|
|
||||||
period2: 105.96,
|
|
||||||
period3: 30.46,
|
|
||||||
period4: 125.83,
|
|
||||||
turbulence: 0.182,
|
|
||||||
}),
|
|
||||||
new Bloom({
|
|
||||||
radius: 2.08,
|
|
||||||
softness: 87.94,
|
|
||||||
strength: 165.29,
|
|
||||||
}),
|
|
||||||
new Cartoon({
|
|
||||||
maskRadius: 50,
|
|
||||||
pctBlack: 1,
|
|
||||||
}),
|
|
||||||
new Waves({
|
|
||||||
amplitude: 65,
|
|
||||||
clamp: true,
|
|
||||||
period: 500,
|
|
||||||
phi: 0.5,
|
|
||||||
x: 0,
|
|
||||||
y: 1,
|
|
||||||
}),
|
|
||||||
new Mirrors({
|
|
||||||
rAngle: 30,
|
|
||||||
nSegs: 3,
|
|
||||||
oX: 0.312,
|
|
||||||
oY: 1,
|
|
||||||
trimX: 0.162,
|
|
||||||
trimY: 0.031,
|
|
||||||
}),
|
|
||||||
new FocusBlur({
|
|
||||||
blurRadius: 5.4,
|
|
||||||
blurType: 'lens',
|
|
||||||
focus: 0.154,
|
|
||||||
highlightFactor: 0.75,
|
|
||||||
midpoint: 0.38,
|
|
||||||
radius: 0.802,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
resetAlpha: false,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,50 +0,0 @@
|
||||||
import {
|
|
||||||
Bloom,
|
|
||||||
Cartoon,
|
|
||||||
FocusBlur,
|
|
||||||
Mirrors,
|
|
||||||
Oilify,
|
|
||||||
Plasma,
|
|
||||||
} from '../../gegl/exports.js';
|
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
const [width, height] = [3840, 2160];
|
|
||||||
|
|
||||||
const project: Project = {
|
|
||||||
createInputImage: false,
|
|
||||||
name: '2022-03-29',
|
|
||||||
operations: [
|
|
||||||
new Plasma({
|
|
||||||
height,
|
|
||||||
seed: 3_474_742_930,
|
|
||||||
turbulence: 2,
|
|
||||||
width,
|
|
||||||
}),
|
|
||||||
new Cartoon({
|
|
||||||
maskRadius: 50,
|
|
||||||
pctBlack: 1,
|
|
||||||
}),
|
|
||||||
new FocusBlur({
|
|
||||||
blurType: 'lens',
|
|
||||||
}),
|
|
||||||
new Mirrors({
|
|
||||||
oX: 0.406,
|
|
||||||
oY: 0.588,
|
|
||||||
}),
|
|
||||||
new Oilify({
|
|
||||||
maskRadius: 8,
|
|
||||||
}),
|
|
||||||
new Bloom({
|
|
||||||
radius: 2.08,
|
|
||||||
softness: 87.94,
|
|
||||||
strength: 165.29,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
resetAlpha: false,
|
|
||||||
resolution: {
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default project;
|
|
|
@ -1,29 +0,0 @@
|
||||||
import Project from '../../project.js';
|
|
||||||
|
|
||||||
import p2022_03_06 from './2022-03-06.js';
|
|
||||||
import p2022_03_07 from './2022-03-07.js';
|
|
||||||
import p2022_03_08 from './2022-03-08.js';
|
|
||||||
import p2022_03_09 from './2022-03-09.js';
|
|
||||||
import p2022_03_10 from './2022-03-10.js';
|
|
||||||
import p2022_03_11 from './2022-03-11.js';
|
|
||||||
import p2022_03_12 from './2022-03-12.js';
|
|
||||||
import p2022_03_13 from './2022-03-13.js';
|
|
||||||
import p2022_03_14 from './2022-03-14.js';
|
|
||||||
import p2022_03_15 from './2022-03-15.js';
|
|
||||||
import p2022_03_29 from './2022-03-29.js';
|
|
||||||
|
|
||||||
const projects: Project[] = [
|
|
||||||
p2022_03_06,
|
|
||||||
p2022_03_07,
|
|
||||||
p2022_03_08,
|
|
||||||
p2022_03_09,
|
|
||||||
p2022_03_10,
|
|
||||||
p2022_03_11,
|
|
||||||
p2022_03_12,
|
|
||||||
p2022_03_13,
|
|
||||||
p2022_03_14,
|
|
||||||
p2022_03_15,
|
|
||||||
p2022_03_29,
|
|
||||||
];
|
|
||||||
|
|
||||||
export default projects;
|
|
|
@ -1,6 +0,0 @@
|
||||||
import Project from '../project.js';
|
|
||||||
import p2022_03 from './03/projects.js';
|
|
||||||
|
|
||||||
const projects: Project[] = [...p2022_03];
|
|
||||||
|
|
||||||
export default projects;
|
|
|
@ -1,39 +0,0 @@
|
||||||
export abstract class BaseOperation<P extends {}> {
|
|
||||||
public abstract get default(): P;
|
|
||||||
|
|
||||||
public parameters: P;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Some GEGL operations will run infinitely unless you limit the buffer in
|
|
||||||
* some way, so all operations must indicate whether or not they should be
|
|
||||||
* followed by a crop operation.
|
|
||||||
*/
|
|
||||||
public abstract appendCrop: boolean;
|
|
||||||
|
|
||||||
/** The GEGL operation name, starting with `gegl:`. */
|
|
||||||
public abstract name: string;
|
|
||||||
|
|
||||||
constructor(parameters: P) {
|
|
||||||
this.parameters = parameters;
|
|
||||||
}
|
|
||||||
|
|
||||||
public graph(includeDefaults = false): string[] {
|
|
||||||
const defaults = this.default;
|
|
||||||
const graph: string[] = [this.name];
|
|
||||||
|
|
||||||
for (const [key, value] of Object.entries(this.parameters)) {
|
|
||||||
if (
|
|
||||||
!includeDefaults &&
|
|
||||||
key in defaults &&
|
|
||||||
(defaults as Record<string, any>)[key] === value
|
|
||||||
) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const kebabCasedKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
||||||
graph.push(`${kebabCasedKey}=${value as string}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return graph;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface BloomParameters {
|
|
||||||
limitExposure: boolean;
|
|
||||||
radius: number;
|
|
||||||
softness: number;
|
|
||||||
strength: number;
|
|
||||||
threshold: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Bloom extends BaseOperation<BloomParameters> {
|
|
||||||
public static default: BloomParameters = {
|
|
||||||
limitExposure: false,
|
|
||||||
radius: 10,
|
|
||||||
softness: 25,
|
|
||||||
strength: 50,
|
|
||||||
threshold: 50,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Bloom.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:bloom';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<BloomParameters>) {
|
|
||||||
super({...Bloom.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface CartoonParameters {
|
|
||||||
maskRadius: number;
|
|
||||||
pctBlack: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Cartoon extends BaseOperation<CartoonParameters> {
|
|
||||||
public static default: CartoonParameters = {
|
|
||||||
maskRadius: 7,
|
|
||||||
pctBlack: 0.2,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Cartoon.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = true;
|
|
||||||
public name = 'gegl:cartoon';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<CartoonParameters>) {
|
|
||||||
super({...Cartoon.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface CellNoiseParameters {
|
|
||||||
iterations: number;
|
|
||||||
palettize: boolean;
|
|
||||||
rank: number;
|
|
||||||
scale: number;
|
|
||||||
seed: number;
|
|
||||||
shape: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class CellNoise extends BaseOperation<CellNoiseParameters> {
|
|
||||||
public static default: CellNoiseParameters = {
|
|
||||||
iterations: 1,
|
|
||||||
palettize: false,
|
|
||||||
rank: 1,
|
|
||||||
scale: 1,
|
|
||||||
seed: 0,
|
|
||||||
shape: 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return CellNoise.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = true;
|
|
||||||
public name = 'gegl:cell-noise';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<CellNoiseParameters>) {
|
|
||||||
super({...CellNoise.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface CropParameters {
|
|
||||||
height: number;
|
|
||||||
resetOrigin: boolean;
|
|
||||||
width: number;
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Crop extends BaseOperation<CropParameters> {
|
|
||||||
public static default: CropParameters = {
|
|
||||||
height: 0,
|
|
||||||
resetOrigin: false,
|
|
||||||
width: 0,
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Crop.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:crop';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<CropParameters>) {
|
|
||||||
super({...Crop.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,48 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface DiffractionPatternsParameters {
|
|
||||||
blueContours: number;
|
|
||||||
blueFrequency: number;
|
|
||||||
blueSedges: number;
|
|
||||||
brightness: number;
|
|
||||||
greenContours: number;
|
|
||||||
greenFrequency: number;
|
|
||||||
greenSedges: number;
|
|
||||||
height: number;
|
|
||||||
polarization: number;
|
|
||||||
redContours: number;
|
|
||||||
redFrequency: number;
|
|
||||||
redSedges: number;
|
|
||||||
scattering: number;
|
|
||||||
width: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class DiffractionPatterns extends BaseOperation<DiffractionPatternsParameters> {
|
|
||||||
public static default: DiffractionPatternsParameters = {
|
|
||||||
blueContours: 0.97,
|
|
||||||
blueFrequency: 1.12,
|
|
||||||
blueSedges: 0.64,
|
|
||||||
brightness: 0.07,
|
|
||||||
greenContours: 0.82,
|
|
||||||
greenFrequency: 1.22,
|
|
||||||
greenSedges: 0.68,
|
|
||||||
height: 200,
|
|
||||||
polarization: -0.47,
|
|
||||||
redContours: 0.82,
|
|
||||||
redFrequency: 0.81,
|
|
||||||
redSedges: 0.61,
|
|
||||||
scattering: 37.13,
|
|
||||||
width: 200,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return DiffractionPatterns.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = true;
|
|
||||||
public name = 'gegl:diffraction-patterns';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<DiffractionPatternsParameters>) {
|
|
||||||
super({...DiffractionPatterns.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
export * from './base.js';
|
|
||||||
export * from './bloom.js';
|
|
||||||
export * from './cartoon.js';
|
|
||||||
export * from './cell-noise.js';
|
|
||||||
export * from './crop.js';
|
|
||||||
export * from './diffraction-patterns.js';
|
|
||||||
export * from './focus-blur.js';
|
|
||||||
export * from './generic.js';
|
|
||||||
export * from './maze.js';
|
|
||||||
export * from './median-blur.js';
|
|
||||||
export * from './mirrors.js';
|
|
||||||
export * from './mosaic.js';
|
|
||||||
export * from './newsprint.js';
|
|
||||||
export * from './noise-pick.js';
|
|
||||||
export * from './oilify.js';
|
|
||||||
export * from './plasma.js';
|
|
||||||
export * from './simplex-noise.js';
|
|
||||||
export * from './softglow.js';
|
|
||||||
export * from './stereographic-projection.js';
|
|
||||||
export * from './tile-glass.js';
|
|
||||||
export * from './tile-seamless.js';
|
|
||||||
export * from './waterpixels.js';
|
|
||||||
export * from './waves.js';
|
|
|
@ -1,48 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface FocusBlurParameters {
|
|
||||||
aspectRatio: number;
|
|
||||||
blurRadius: number;
|
|
||||||
blurType: 'gaussian' | 'lens';
|
|
||||||
focus: number;
|
|
||||||
highlightFactor: number;
|
|
||||||
highlightThresholdHigh: number;
|
|
||||||
highlightThresholdLow: number;
|
|
||||||
highQuality: boolean;
|
|
||||||
midpoint: number;
|
|
||||||
radius: number;
|
|
||||||
rotation: number;
|
|
||||||
shape: 'circle' | 'square' | 'diamond' | 'horizontal' | 'vertical';
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class FocusBlur extends BaseOperation<FocusBlurParameters> {
|
|
||||||
public static default: FocusBlurParameters = {
|
|
||||||
aspectRatio: 0,
|
|
||||||
blurRadius: 25,
|
|
||||||
blurType: 'gaussian',
|
|
||||||
focus: 0.25,
|
|
||||||
highlightFactor: 0,
|
|
||||||
highlightThresholdHigh: 1,
|
|
||||||
highlightThresholdLow: 0,
|
|
||||||
highQuality: false,
|
|
||||||
midpoint: 0.5,
|
|
||||||
radius: 0.75,
|
|
||||||
rotation: 0,
|
|
||||||
shape: 'circle',
|
|
||||||
x: 0.5,
|
|
||||||
y: 0.5,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return FocusBlur.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:focus-blur';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<FocusBlurParameters>) {
|
|
||||||
super({...FocusBlur.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export type GenericParameters = Record<string, number | string | boolean>;
|
|
||||||
|
|
||||||
export class Generic extends BaseOperation<GenericParameters> {
|
|
||||||
public get default() {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop: boolean;
|
|
||||||
public name: string;
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
name: string,
|
|
||||||
parameters?: GenericParameters,
|
|
||||||
appendCrop?: boolean,
|
|
||||||
) {
|
|
||||||
super(parameters ?? {});
|
|
||||||
this.name = name;
|
|
||||||
this.appendCrop = appendCrop ?? false;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface MazeParameters {
|
|
||||||
algorithmType: 'depth-first' | 'prim';
|
|
||||||
bgColor: string;
|
|
||||||
fgColor: string;
|
|
||||||
seed: number;
|
|
||||||
tileable: boolean;
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Maze extends BaseOperation<MazeParameters> {
|
|
||||||
public static default: MazeParameters = {
|
|
||||||
algorithmType: 'depth-first',
|
|
||||||
bgColor: '#fff',
|
|
||||||
fgColor: '#000',
|
|
||||||
seed: 0,
|
|
||||||
tileable: false,
|
|
||||||
x: 16,
|
|
||||||
y: 16,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Maze.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:maze';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<MazeParameters>) {
|
|
||||||
super({...Maze.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface MedianBlurParameters {
|
|
||||||
abyssPolicy: 'none' | 'clamp';
|
|
||||||
alphaPercentile: number;
|
|
||||||
highPrecision: boolean;
|
|
||||||
neighborhood: 'square' | 'circle' | 'diamond';
|
|
||||||
percentile: number;
|
|
||||||
radius: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class MedianBlur extends BaseOperation<MedianBlurParameters> {
|
|
||||||
public static default: MedianBlurParameters = {
|
|
||||||
abyssPolicy: 'clamp',
|
|
||||||
alphaPercentile: 50,
|
|
||||||
highPrecision: false,
|
|
||||||
neighborhood: 'circle',
|
|
||||||
percentile: 50,
|
|
||||||
radius: 3,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return MedianBlur.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:median-blur';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<MedianBlurParameters>) {
|
|
||||||
super({...MedianBlur.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface MirrorsParameters {
|
|
||||||
clip: boolean;
|
|
||||||
cX: number;
|
|
||||||
cY: number;
|
|
||||||
inputScale: number;
|
|
||||||
mAngle: number;
|
|
||||||
nSegs: number;
|
|
||||||
outputScale: number;
|
|
||||||
oX: number;
|
|
||||||
oY: number;
|
|
||||||
rAngle: number;
|
|
||||||
trimX: number;
|
|
||||||
trimY: number;
|
|
||||||
warp: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Mirrors extends BaseOperation<MirrorsParameters> {
|
|
||||||
public static default: MirrorsParameters = {
|
|
||||||
clip: true,
|
|
||||||
cX: 0.5,
|
|
||||||
cY: 0.5,
|
|
||||||
inputScale: 100,
|
|
||||||
mAngle: 0,
|
|
||||||
nSegs: 6,
|
|
||||||
outputScale: 1,
|
|
||||||
oX: 0,
|
|
||||||
oY: 0,
|
|
||||||
rAngle: 0,
|
|
||||||
trimX: 0,
|
|
||||||
trimY: 0,
|
|
||||||
warp: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Mirrors.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:mirrors';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<MirrorsParameters>) {
|
|
||||||
super({...Mirrors.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,48 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface MosaicParameters {
|
|
||||||
antialiasing: boolean;
|
|
||||||
colorAveraging: boolean;
|
|
||||||
colorVariation: number;
|
|
||||||
jointsColor: string;
|
|
||||||
lightColor: string;
|
|
||||||
lightDir: number;
|
|
||||||
seed: number;
|
|
||||||
tileAllowSplit: boolean;
|
|
||||||
tileHeight: number;
|
|
||||||
tileNeatness: number;
|
|
||||||
tileSize: number;
|
|
||||||
tileSpacing: number;
|
|
||||||
tileSurface: boolean;
|
|
||||||
tileType: 'squares' | 'hexagons' | 'octagons' | 'triangles';
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Mosaic extends BaseOperation<MosaicParameters> {
|
|
||||||
public static default: MosaicParameters = {
|
|
||||||
antialiasing: true,
|
|
||||||
colorAveraging: true,
|
|
||||||
colorVariation: 0.2,
|
|
||||||
jointsColor: '#000',
|
|
||||||
lightColor: '#fff',
|
|
||||||
lightDir: 135,
|
|
||||||
seed: 0,
|
|
||||||
tileAllowSplit: true,
|
|
||||||
tileHeight: 4,
|
|
||||||
tileNeatness: 0.65,
|
|
||||||
tileSize: 15,
|
|
||||||
tileSpacing: 1,
|
|
||||||
tileSurface: false,
|
|
||||||
tileType: 'hexagons',
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Mosaic.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:mosaic';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<MosaicParameters>) {
|
|
||||||
super({...Mosaic.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,58 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
type NewsprintPattern = 'line' | 'circle' | 'diamond' | 'pssquare' | 'cross';
|
|
||||||
|
|
||||||
export interface NewsprintParameters {
|
|
||||||
aaSamples: number;
|
|
||||||
angle: number;
|
|
||||||
angle2: number;
|
|
||||||
angle3: number;
|
|
||||||
angle4: number;
|
|
||||||
angleboost: number;
|
|
||||||
blackPullout: number;
|
|
||||||
blocksize: number;
|
|
||||||
colorModel: 'black-on-white' | 'cmyk' | 'rgb' | 'white-on-black';
|
|
||||||
pattern: NewsprintPattern;
|
|
||||||
pattern2: NewsprintPattern;
|
|
||||||
pattern3: NewsprintPattern;
|
|
||||||
pattern4: NewsprintPattern;
|
|
||||||
period: number;
|
|
||||||
period2: number;
|
|
||||||
period3: number;
|
|
||||||
period4: number;
|
|
||||||
turbulence: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Newsprint extends BaseOperation<NewsprintParameters> {
|
|
||||||
public static default: NewsprintParameters = {
|
|
||||||
aaSamples: 16,
|
|
||||||
angle: 75,
|
|
||||||
angle2: 15,
|
|
||||||
angle3: 45,
|
|
||||||
angle4: 0,
|
|
||||||
angleboost: 0,
|
|
||||||
blackPullout: 1,
|
|
||||||
blocksize: -1,
|
|
||||||
colorModel: 'black-on-white',
|
|
||||||
pattern: 'line',
|
|
||||||
pattern2: 'line',
|
|
||||||
pattern3: 'line',
|
|
||||||
pattern4: 'line',
|
|
||||||
period: 12,
|
|
||||||
period2: 12,
|
|
||||||
period3: 12,
|
|
||||||
period4: 12,
|
|
||||||
turbulence: 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Newsprint.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:newsprint';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<NewsprintParameters>) {
|
|
||||||
super({...Newsprint.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface NoisePickParameters {
|
|
||||||
pctRandom: number;
|
|
||||||
repeat: number;
|
|
||||||
seed: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class NoisePick extends BaseOperation<NoisePickParameters> {
|
|
||||||
public static default: NoisePickParameters = {
|
|
||||||
pctRandom: 50,
|
|
||||||
repeat: 1,
|
|
||||||
seed: 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return NoisePick.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = true;
|
|
||||||
public name = 'gegl:noise-pick';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<NoisePickParameters>) {
|
|
||||||
super({...NoisePick.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface OilifyParameters {
|
|
||||||
exponent: number;
|
|
||||||
intensities: number;
|
|
||||||
maskRadius: number;
|
|
||||||
useInten: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Oilify extends BaseOperation<OilifyParameters> {
|
|
||||||
public static default: OilifyParameters = {
|
|
||||||
exponent: 8,
|
|
||||||
intensities: 128,
|
|
||||||
maskRadius: 4,
|
|
||||||
useInten: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Oilify.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:oilify';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<OilifyParameters>) {
|
|
||||||
super({...Oilify.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface PlasmaParameters {
|
|
||||||
height: number;
|
|
||||||
seed: number;
|
|
||||||
turbulence: number;
|
|
||||||
width: number;
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Plasma extends BaseOperation<PlasmaParameters> {
|
|
||||||
public static default: PlasmaParameters = {
|
|
||||||
height: 768,
|
|
||||||
seed: 0,
|
|
||||||
turbulence: 1,
|
|
||||||
width: 1024,
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Plasma.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:plasma';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<PlasmaParameters>) {
|
|
||||||
super({...Plasma.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface SimplexNoiseParameters {
|
|
||||||
iterations: number;
|
|
||||||
scale: number;
|
|
||||||
seed: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class SimplexNoise extends BaseOperation<SimplexNoiseParameters> {
|
|
||||||
public static default: SimplexNoiseParameters = {
|
|
||||||
iterations: 1,
|
|
||||||
scale: 1,
|
|
||||||
seed: 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return SimplexNoise.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = true;
|
|
||||||
public name = 'gegl:simplex-noise';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<SimplexNoiseParameters>) {
|
|
||||||
super({...SimplexNoise.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface SoftglowParameters {
|
|
||||||
brightness: number;
|
|
||||||
glowRadius: number;
|
|
||||||
sharpness: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Softglow extends BaseOperation<SoftglowParameters> {
|
|
||||||
public static default: SoftglowParameters = {
|
|
||||||
brightness: 0.3,
|
|
||||||
glowRadius: 10,
|
|
||||||
sharpness: 0.85,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Softglow.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:softglow';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<SoftglowParameters>) {
|
|
||||||
super({...Softglow.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface StereographicProjectionParameters {
|
|
||||||
height: number;
|
|
||||||
inverse: boolean;
|
|
||||||
pan: number;
|
|
||||||
samplerType: 'nearest' | 'linear' | 'cubic' | 'nohalo' | 'lohalo';
|
|
||||||
spin: number;
|
|
||||||
tilt: number;
|
|
||||||
width: number;
|
|
||||||
zoom: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class StereographicProjection extends BaseOperation<StereographicProjectionParameters> {
|
|
||||||
public static default: StereographicProjectionParameters = {
|
|
||||||
height: -1,
|
|
||||||
inverse: false,
|
|
||||||
pan: 0,
|
|
||||||
samplerType: 'nearest',
|
|
||||||
spin: 0,
|
|
||||||
tilt: 90,
|
|
||||||
width: -1,
|
|
||||||
zoom: 100,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return StereographicProjection.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:stereographic-projection';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<StereographicProjectionParameters>) {
|
|
||||||
super({...StereographicProjection.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface TileGlassParameters {
|
|
||||||
tileHeight: number;
|
|
||||||
tileWidth: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class TileGlass extends BaseOperation<TileGlassParameters> {
|
|
||||||
public static default: TileGlassParameters = {
|
|
||||||
tileHeight: 25,
|
|
||||||
tileWidth: 25,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return TileGlass.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:tile-glass';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<TileGlassParameters>) {
|
|
||||||
super({...TileGlass.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export type TileSeamlessParameters = Record<string, unknown>;
|
|
||||||
|
|
||||||
export class TileSeamless extends BaseOperation<TileSeamlessParameters> {
|
|
||||||
public get default() {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:tile-seamless';
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
super({});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface WaterpixelsParameters {
|
|
||||||
fill: 'average' | 'random';
|
|
||||||
regularization: number;
|
|
||||||
size: number;
|
|
||||||
smoothness: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Waterpixels extends BaseOperation<WaterpixelsParameters> {
|
|
||||||
public static default: WaterpixelsParameters = {
|
|
||||||
fill: 'average',
|
|
||||||
regularization: 0,
|
|
||||||
size: 32,
|
|
||||||
smoothness: 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Waterpixels.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = false;
|
|
||||||
public name = 'gegl:waterpixels';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<WaterpixelsParameters>) {
|
|
||||||
super({...Waterpixels.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
import {BaseOperation} from './base.js';
|
|
||||||
|
|
||||||
export interface WavesParameters {
|
|
||||||
amplitude: number;
|
|
||||||
aspect: number;
|
|
||||||
clamp: boolean;
|
|
||||||
period: number;
|
|
||||||
phi: number;
|
|
||||||
samplerType: 'nearest' | 'linear' | 'cubic' | 'nohalo' | 'lohalo';
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Waves extends BaseOperation<WavesParameters> {
|
|
||||||
public static default: WavesParameters = {
|
|
||||||
amplitude: 25,
|
|
||||||
aspect: 1,
|
|
||||||
clamp: false,
|
|
||||||
period: 100,
|
|
||||||
phi: 0,
|
|
||||||
samplerType: 'cubic',
|
|
||||||
x: 0.5,
|
|
||||||
y: 0.5,
|
|
||||||
};
|
|
||||||
|
|
||||||
public get default() {
|
|
||||||
return Waves.default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public appendCrop = true;
|
|
||||||
public name = 'gegl:waves';
|
|
||||||
|
|
||||||
constructor(parameters?: Partial<WavesParameters>) {
|
|
||||||
super({...Waves.default, ...parameters});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,132 +0,0 @@
|
||||||
import fsp from 'node:fs/promises';
|
|
||||||
import path from 'node:path';
|
|
||||||
import {performance} from 'node:perf_hooks';
|
|
||||||
|
|
||||||
import {execa} from 'execa';
|
|
||||||
import meow from 'meow';
|
|
||||||
|
|
||||||
import {Crop} from './gegl/exports.js';
|
|
||||||
import Project from './project.js';
|
|
||||||
|
|
||||||
import p2022 from './2022/projects.js';
|
|
||||||
|
|
||||||
async function main(): Promise<void> {
|
|
||||||
const cli = meow(
|
|
||||||
`
|
|
||||||
Options
|
|
||||||
--filter <name> Only render projects starting with <name>.
|
|
||||||
--include-defaults Include default GEGL operation parameters.
|
|
||||||
--no-render Don't render any images.
|
|
||||||
`,
|
|
||||||
{
|
|
||||||
flags: {
|
|
||||||
filter: {
|
|
||||||
default: '',
|
|
||||||
type: 'string',
|
|
||||||
},
|
|
||||||
includeDefaults: {
|
|
||||||
default: false,
|
|
||||||
type: 'boolean',
|
|
||||||
},
|
|
||||||
render: {
|
|
||||||
default: true,
|
|
||||||
type: 'boolean',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
importMeta: import.meta,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
const includeDefaults = cli.flags.includeDefaults;
|
|
||||||
const noRender = !cli.flags.render;
|
|
||||||
|
|
||||||
const projects: Project[] = [...p2022].filter((project) =>
|
|
||||||
project.name.startsWith(cli.flags.filter),
|
|
||||||
);
|
|
||||||
|
|
||||||
for (const {
|
|
||||||
createInputImage,
|
|
||||||
name,
|
|
||||||
operations,
|
|
||||||
resolution,
|
|
||||||
resetAlpha,
|
|
||||||
} of projects) {
|
|
||||||
const dataStart = performance.now();
|
|
||||||
const {width, height} = resolution;
|
|
||||||
|
|
||||||
const baseDir = path.resolve(`./output/${name}`);
|
|
||||||
await fsp.mkdir(baseDir, {recursive: true});
|
|
||||||
|
|
||||||
console.log(`# ${name}`);
|
|
||||||
console.log(`* ${width}x${height}`);
|
|
||||||
console.log(`* ${operations.length} operations`);
|
|
||||||
|
|
||||||
const graph = operations.flatMap((operation) => {
|
|
||||||
const graph = operation.graph(includeDefaults);
|
|
||||||
if (operation.appendCrop) {
|
|
||||||
graph.push(...new Crop({height, width}).graph(includeDefaults));
|
|
||||||
}
|
|
||||||
|
|
||||||
return graph;
|
|
||||||
});
|
|
||||||
|
|
||||||
const prettyGraph = graph.map((operation) =>
|
|
||||||
operation.startsWith('gegl:') ? `\n${operation}\n` : ` ${operation}\n`,
|
|
||||||
);
|
|
||||||
|
|
||||||
const graphFile = `${name}.txt`;
|
|
||||||
const outputFile = `${name}.png`;
|
|
||||||
const compressedFile = `${outputFile.slice(0, -4)}.jpeg`;
|
|
||||||
|
|
||||||
console.log(`* Writing ${graphFile}`);
|
|
||||||
await fsp.writeFile(
|
|
||||||
path.join(baseDir, graphFile),
|
|
||||||
prettyGraph.join('').trimStart(),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (noRender) {
|
|
||||||
console.log(`* Skipped ${outputFile}`);
|
|
||||||
} else {
|
|
||||||
const fullOutputFile = path.join(baseDir, outputFile);
|
|
||||||
if (createInputImage) {
|
|
||||||
await execa('convert', [
|
|
||||||
'-size',
|
|
||||||
`${width}x${height}`,
|
|
||||||
'xc:white',
|
|
||||||
fullOutputFile,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(`* Writing ${outputFile}`);
|
|
||||||
await execa('gegl', [
|
|
||||||
...(createInputImage ? ['-i', fullOutputFile] : []),
|
|
||||||
'-o',
|
|
||||||
fullOutputFile,
|
|
||||||
'--',
|
|
||||||
...graph,
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (resetAlpha) {
|
|
||||||
await execa('convert', [
|
|
||||||
fullOutputFile,
|
|
||||||
'-alpha',
|
|
||||||
'Off',
|
|
||||||
fullOutputFile,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(`* Writing ${compressedFile}`);
|
|
||||||
await execa('convert', [
|
|
||||||
fullOutputFile,
|
|
||||||
'-quality',
|
|
||||||
'92',
|
|
||||||
path.join(baseDir, compressedFile),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
const time = (performance.now() - dataStart).toFixed(2);
|
|
||||||
console.log(`* Generated in ${time}ms`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void main();
|
|
|
@ -1,12 +0,0 @@
|
||||||
import {BaseOperation} from './gegl/exports.js';
|
|
||||||
|
|
||||||
export default interface Project {
|
|
||||||
createInputImage: boolean;
|
|
||||||
name: string;
|
|
||||||
operations: Array<InstanceType<typeof BaseOperation>>;
|
|
||||||
resetAlpha: boolean;
|
|
||||||
resolution: {
|
|
||||||
height: number;
|
|
||||||
width: number;
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in New Issue