Decorative Registry

The Decorative Registry tracks non-interactive background elements for scene persistence.

Overview

Decorative elements include:

  • Generator outputs (sunburst, waves, etc.)
  • Freehand drawings
  • Background patterns
  • Non-selectable visual elements

Why Decorative Registry?

  • Decorative elements need recreation on scene load
  • Generator outputs are procedural (params, not pixels)
  • Separating decorative from interactive enables efficient scene switching
  • Workers can regenerate decorative elements without blocking UI

Registering Elements

app.decorativeRegistry.register(item, 'sunburst', {
  generator: 'drawSunburst',
  params: { rayCount: 16, colors: ['#FF6B6B'] }
});

Entry Types

Generator Output

{
  type: 'generator',
  name: 'drawSunburst',
  params: { rayCount: 16 }
}

Freehand Path

{
  type: 'path',
  segments: [[100, 100], [150, 120], ...],
  strokeColor: '#FF0000',
  strokeWidth: 5
}

Querying

// Get all decorative elements
const elements = app.decorativeRegistry.getAll();

// Get by type
const generators = app.decorativeRegistry.getByType('generator');
const paths = app.decorativeRegistry.getByType('path');

Regeneration

Rebuild decorative elements (e.g., after canvas resize):

await app.decorativeRegistry.regenerate();

Scene Integration

When saving/loading scenes:

// Export decorative state
const decorative = app.decorativeRegistry.exportForSave();

// Import decorative state
app.decorativeRegistry.importFromSave(decorative);

Cleanup

// Remove specific element
app.decorativeRegistry.remove(id);

// Clear all
app.decorativeRegistry.clear();

Difference from Item Registry

Aspect Item Registry Decorative Registry
Selectable Yes No
Interactive Yes No
Persistence JSON export Params for regeneration
Examples Text, shapes Patterns, generators