feat: ledlab
This commit is contained in:
74
presets/preset-registry.js
Normal file
74
presets/preset-registry.js
Normal file
@@ -0,0 +1,74 @@
|
||||
// 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;
|
||||
Reference in New Issue
Block a user