Fixture Class
TheFixture class (engine/src/fixture.h:71) represents an instance of a lighting fixture.
Creating Fixtures
Basic Properties
- Identity
- Addressing
- Definition
Channel Access
Channel Groups
Heads
Multi-head fixtures (e.g., LED bars) have multiple heads:Physical Properties
Load and Save
Fixture Definitions
Fixture definitions describe fixture capabilities.QLCFixtureDef Class
QLCFixtureMode Class
QLCChannel Class
QLCCapability Class
Fixture Definition Cache
The cache loads and manages fixture definitions.QLCFixtureDefCache Class
Working with Fixtures
Adding a Generic RGB Fixture
Adding a Fixture from Definition
Enumerating Fixture Channels
Finding Specific Channels
Checking Address Conflicts
Fixture Groups
Fixture groups organize fixtures for RGB matrix effects.FixtureGroup Class
Creating a Fixture Group
Channel Modifiers
Channel modifiers apply transformations to channel values.ChannelModifier Class
Using Modifiers
Advanced Topics
Cross-Universe Fixtures
Fixtures can span multiple universes:Forced HTP/LTP
Override default channel behavior:Bulk Fixture Operations
Best Practices
Memory Management
Memory Management
- Fixtures are owned by
Doc - Use
Doc::addFixture()andDoc::deleteFixture() - Don’t delete fixtures manually
- Use
QPointer<Fixture>for long-lived references
Address Management
Address Management
- Always check for address conflicts
- Use
checkAddressValidity()before adding - Consider cross-universe fixtures
- Leave gaps between fixtures for patching flexibility
Channel Access
Channel Access
- Always check if channel exists before using
- Use
QLCChannel::invalid()constant for comparisons - Cache channel lookups if used frequently
- Handle multi-head fixtures correctly
Fixture Definitions
Fixture Definitions
- Load fixture definition cache at startup
- Prefer using definitions over generic fixtures
- Validate definition exists before creating fixture
- Handle missing definitions gracefully
