aboutsummaryrefslogtreecommitdiff
path: root/guile/starlet/state.scm
AgeCommit message (Collapse)Author
2023-06-15Un-GOOPS some proceduresThomas White
These don't need to be generic any more, now that we only have one type of attribute.
2023-06-15Remove colour-component stuffThomas White
It's a bit of a hack, only needed for MIDI control. I have a better solution using OSC in mind.
2023-05-11Programmer state should be LTPThomas White
2023-04-30Move fixture-has-attr? to (starlet fixture) and export itThomas White
2023-04-29Move selection stuff to a separate moduleThomas White
2023-04-25Add selected? and deselThomas White
2023-04-13state-source: Quote symbol valuesThomas White
2022-11-13Some symbol-><starlet-attribute> conversions I missedThomas White
2022-11-12Add write method for <starlet-state>Thomas White
2022-11-12Introduce new type for attribute namesThomas White
There's a serious problem with the design so far, where symbols are used for attribute names (intensity, strobe, colour etc), and also for attribute values (on, off, random etc). There's no way for 'at' to tell the difference between the two. For example, this form is ambiguous: (at myfixture 'strobe 'on) This commit introduces a new class, <starlet-attribute>, to replace the use of symbols here. The attributes are enumerated in (starlet attributes), and new ones can be added later. The attribute objects remember their 'canonical' names, to allow states to be printed. Apart from solving the ambiguity problem, this has two further advantages. First, attribute names no longer need to be quoted everywhere. Second, multiple names can be used to refer to the same attribute. For example: (define color colour).
2022-07-10Add "remove-selection-from-programmer!"Thomas White
2022-07-10Add 'ps' as a synonym for programmer-stateThomas White
2022-07-10Add "remove-fixture[s]-from-state!"Thomas White
2022-07-10Don't send fix/attr/val to state update hookThomas White
It's not used anywhere, and it doesn't work - there are many other kinds of update apart from setting an individual value.
2022-07-10Add "state-empty?"Thomas White
2022-07-09Error if someone tries to set an attribute that doesn't existThomas White
2022-06-11Rename make-colour-rgb to rgb, similar for cmyThomas White
2022-06-09Add 'blackout'Thomas White
2022-06-06Rename state-map to state-map->list, add a real state-mapThomas White
2022-01-25Separate cue lists from playbacks and crossfadesThomas White
2021-09-11at: Clamp continuous attributes to rangeThomas White
2021-09-11state-source: Clamp continuous attributes to rangeThomas White
2021-09-11Run state update hook in 'clear-state!'Thomas White
2021-08-08Add hook for state updatesThomas White
This includes a "source", intended to be used for avoiding hook users from responding to their own changes.
2021-06-27Fixture display: Show selectionThomas White
2021-05-24Add hook for state changes on a playbackThomas White
2021-05-22Add home-fixture!/blackout!Thomas White
2021-05-16Get rid of time parameter and use clock objects for cross-fadesThomas White
Because we can stop a clock object, but not "gettimeofday".
2021-05-13Export copy-stateThomas White
2021-05-13Avoid mutation of state objects by "set-state-name!"Thomas White
2021-05-10Run cues as single atomic operationsThomas White
This avoids a potential situation where one parameter of a fixture is reconfigured before another, which could (in theory) lead to flickering of lights.
2021-05-10Make state objects' hash tables immutable with atomic updatesThomas White
States often get updated while they're being scanned out. The obvious case is when manually setting values in the programmer-state, but the more pernicious one is when running a cue. This means that the updates have to be atomic.
2021-05-10Split 'base' module up into 'fixture', 'state' and 'scanout'Thomas White