75 lines
2.4 KiB
JavaScript
75 lines
2.4 KiB
JavaScript
// Preset registry for LEDLab
|
|
|
|
const RainbowPreset = require('./rainbow-preset');
|
|
const AuroraCurtainsPreset = require('./aurora-curtains-preset');
|
|
const BouncingBallPreset = require('./bouncing-ball-preset');
|
|
const CircuitPulsePreset = require('./circuit-pulse-preset');
|
|
const FadeGreenBluePreset = require('./fade-green-blue-preset');
|
|
const LavaLampPreset = require('./lava-lamp-preset');
|
|
const MeteorRainPreset = require('./meteor-rain-preset');
|
|
const NebulaDriftPreset = require('./nebula-drift-preset');
|
|
const OceanGlimmerPreset = require('./ocean-glimmer-preset');
|
|
const SpiralBloomPreset = require('./spiral-bloom-preset');
|
|
const VoxelFirefliesPreset = require('./voxel-fireflies-preset');
|
|
const WormholeTunnelPreset = require('./wormhole-tunnel-preset');
|
|
|
|
class PresetRegistry {
|
|
constructor() {
|
|
this.presets = new Map();
|
|
this.registerDefaults();
|
|
}
|
|
|
|
registerDefaults() {
|
|
this.register('rainbow', RainbowPreset);
|
|
this.register('aurora-curtains', AuroraCurtainsPreset);
|
|
this.register('bouncing-ball', BouncingBallPreset);
|
|
this.register('circuit-pulse', CircuitPulsePreset);
|
|
this.register('fade-green-blue', FadeGreenBluePreset);
|
|
this.register('lava-lamp', LavaLampPreset);
|
|
this.register('meteor-rain', MeteorRainPreset);
|
|
this.register('nebula-drift', NebulaDriftPreset);
|
|
this.register('ocean-glimmer', OceanGlimmerPreset);
|
|
this.register('spiral-bloom', SpiralBloomPreset);
|
|
this.register('voxel-fireflies', VoxelFirefliesPreset);
|
|
this.register('wormhole-tunnel', WormholeTunnelPreset);
|
|
}
|
|
|
|
register(name, presetClass) {
|
|
this.presets.set(name, presetClass);
|
|
}
|
|
|
|
createPreset(name, width = 16, height = 16) {
|
|
const presetClass = this.presets.get(name);
|
|
if (!presetClass) {
|
|
throw new Error(`Preset '${name}' not found`);
|
|
}
|
|
|
|
return new presetClass(width, height);
|
|
}
|
|
|
|
getPresetNames() {
|
|
return Array.from(this.presets.keys());
|
|
}
|
|
|
|
getPresetMetadata(name) {
|
|
try {
|
|
const preset = this.createPreset(name);
|
|
return preset.getMetadata();
|
|
} catch (error) {
|
|
console.error(`Error getting metadata for preset '${name}':`, error);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
getAllPresetMetadata() {
|
|
const metadata = {};
|
|
for (const name of this.getPresetNames()) {
|
|
metadata[name] = this.getPresetMetadata(name);
|
|
}
|
|
return metadata;
|
|
}
|
|
}
|
|
|
|
// Export the constructor class
|
|
module.exports = PresetRegistry;
|