diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2020-07-15 09:51:03 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2025-03-02 14:24:49 +0000 |
| commit | e5509f8214e64c81c0b98142ce76aa70bdc06512 (patch) | |
| tree | bbd720c68526f56935b548e0d380c954dae1dd44 | |
| parent | Op: vis method instead of field (diff) | |
| download | alive-e5509f8214e64c81c0b98142ce76aa70bdc06512.tar.gz alive-e5509f8214e64c81c0b98142ce76aa70bdc06512.zip | |
add vis/bar
| -rw-r--r-- | alv-lib/vis.moon | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/alv-lib/vis.moon b/alv-lib/vis.moon new file mode 100644 index 0000000..f39eb25 --- /dev/null +++ b/alv-lib/vis.moon @@ -0,0 +1,41 @@ +import Constant, Op, T, Input, sig, evt from require 'alv.base' + +bar = Constant.meta + meta: + name: 'bar' + summary: "visualize number as a bar." + examples: { '(vis/bar val [[min] max])' } + description: " +Visualizes `val` as a bar with range `min, max`. +`val` can be a `num~` or `num!`, `min` and `max` are optional `num~`. +`min` defaults to `0` and `max` defaults to `1`." + + value: class extends Op + pattern = (sig.num / evt.num) + -sig.num + -sig.num + setup: (inputs, scope) => + { val, min, max } = pattern\match inputs + if not max + min, max = nil, min + + @out = val.result\fork! + + super + val: Input.hot val + min: Input.cold min or Constant.num 0 + max: Input.cold max or Constant.num 1 + + tick: => + { :val, :min, :max } = @unwrap_all! + delta = max - min + @state = (val / delta) - min + @out\set val + + vis: => + { + type: 'bar' + bar: @state + } + +{ + :bar +} |
