Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::view::IRInteractiveElement Struct Reference

#include <design_ir.hpp>

Public Attributes

InteractiveElementKind kind = InteractiveElementKind::knob
float cx = 0.0f
 pivot / hit center, SVG coords
float cy = 0.0f
float hit_radius = 0.0f
 click-target radius, SVG coords
std::string svg_patch_d
 Knob: the d of its needle path in the SVG (the patch target a drag rotates around (cx, cy)).
float default_value = 0.5f
 0..1
bool flash = false
 toggle only: press-flash command button (sample next/prev/random, dice) — lights on press, clears on release, instead of the sticky on/off flip.
float x = 0.0f
 Element bounding box in SVG coords — where the native overlay widget is positioned (via DesignFrameView's panel transform).
float y = 0.0f
float w = 0.0f
float h = 0.0f
std::vector< std::string > options
 dropdown: the selectable options.
int selected_index = 0
 dropdown / tab_group: which option/tab is selected initially.
std::string placeholder
 text_field: placeholder text shown until focused/typed.
std::string bg_color
 text_field: the design's own field background ("#RRGGBB"), so the overlay matches it exactly and the inset-past-the-icon edge is seamless.
int target_frame = -1
 swap only: the frame index to activate when clicked (-1 = unset).
std::string action
 action only: the command id fired on click (e.g.
std::string text
 value_label only: the initial readout string painted over the rect.
bool value_left_align = false
 value_label only: left-align the readout (for a "LABEL <value>" overlay whose value grows rightward).
float default_value_y = 0.5f
 xy_pad only: initial normalized Y (0=top, 1=bottom).
std::string label
 Human-readable name for the control, taken from the design's own caption text (e.g.
std::string param_key
 Host-parameter binding key for this control, e.g.
int resolution_rung = 0
 Which ladder rung resolved this control's interaction.
float confidence_score = 1.0f
 Confidence the resolved kind is correct, 0..1. 1.0 = unset/legacy path.
std::vector< std::string > conflict_signals
 Cross-signal conflicts detected at import (e.g.
bool verification_pass = true
 Whether render-level verification (overlay covers its node region, type doesn't visually contradict the skin) passed.
std::string factory_id
 kind==custom only: the id the native overlay factory is registered under (register_design_control_factory).
std::string custom_props
 kind==custom only: opaque props handed to the factory (typically JSON).
std::optional< std::string > source_node_id
 Figma node id — provenance for the inspector's Wiring lens (maps a live control back to its source node).

Member Data Documentation

◆ action

std::string pulp::view::IRInteractiveElement::action

action only: the command id fired on click (e.g.

"octave_up"). Empty = unset. Maps 1:1 to DesignFrameElement::action.

◆ bg_color

std::string pulp::view::IRInteractiveElement::bg_color

text_field: the design's own field background ("#RRGGBB"), so the overlay matches it exactly and the inset-past-the-icon edge is seamless.

Empty → the default dark field color.

◆ confidence_score

float pulp::view::IRInteractiveElement::confidence_score = 1.0f

Confidence the resolved kind is correct, 0..1. 1.0 = unset/legacy path.

◆ conflict_signals

std::vector<std::string> pulp::view::IRInteractiveElement::conflict_signals

Cross-signal conflicts detected at import (e.g.

"name=knob but geometry is a wide track+thumb"). Empty = no conflict. A non-empty list means the control still materializes with the best candidate but is flagged for review.

◆ custom_props

std::string pulp::view::IRInteractiveElement::custom_props

kind==custom only: opaque props handed to the factory (typically JSON).

Maps 1:1 to DesignFrameElement::custom_props.

◆ cx

float pulp::view::IRInteractiveElement::cx = 0.0f

pivot / hit center, SVG coords

◆ cy

float pulp::view::IRInteractiveElement::cy = 0.0f

◆ default_value

float pulp::view::IRInteractiveElement::default_value = 0.5f

0..1

◆ default_value_y

float pulp::view::IRInteractiveElement::default_value_y = 0.5f

xy_pad only: initial normalized Y (0=top, 1=bottom).

The X axis reuses default_value. Maps to DesignFrameElement::value_y.

◆ factory_id

std::string pulp::view::IRInteractiveElement::factory_id

kind==custom only: the id the native overlay factory is registered under (register_design_control_factory).

Maps 1:1 to DesignFrameElement::factory_id.

◆ flash

bool pulp::view::IRInteractiveElement::flash = false

toggle only: press-flash command button (sample next/prev/random, dice) — lights on press, clears on release, instead of the sticky on/off flip.

Maps 1:1 to DesignFrameElement::flash. Defaults false (sticky toggle).

◆ h

float pulp::view::IRInteractiveElement::h = 0.0f

◆ hit_radius

float pulp::view::IRInteractiveElement::hit_radius = 0.0f

click-target radius, SVG coords

◆ kind

InteractiveElementKind pulp::view::IRInteractiveElement::kind = InteractiveElementKind::knob

◆ label

std::string pulp::view::IRInteractiveElement::label

Human-readable name for the control, taken from the design's own caption text (e.g.

the "DEPTH" label under a knob). Empty when the importer found no confident caption — consumers then fall back to the binding key. This is the name a host surfaces for the generated parameter (embed ABI v5 PulpEmbedParamInfo.name); unit/range are not carried here yet.

◆ options

std::vector<std::string> pulp::view::IRInteractiveElement::options

dropdown: the selectable options.

tab_group: the tab labels. The first entry is also the design's currently-shown value when selected_index is 0.

◆ param_key

std::string pulp::view::IRInteractiveElement::param_key

Host-parameter binding key for this control, e.g.

"filter.cutoff". Empty when the importer found no binding hint (a geometry-detected knob with a bare layer name) — the control still renders and drags, but drives nothing until a key is supplied. Maps 1:1 to DesignFrameElement::param_key, which DesignFrameView resolves against the framework-agnostic HostParamSurface (an embedding plug-in framework's parameter tree, or Pulp's own StateStore) when route_changes_to_host_params is on. This is the binding channel for geometry-detected interactive elements — the recognized-widget path lowers its binding through IRNode instead.

◆ placeholder

std::string pulp::view::IRInteractiveElement::placeholder

text_field: placeholder text shown until focused/typed.

◆ resolution_rung

int pulp::view::IRInteractiveElement::resolution_rung = 0

Which ladder rung resolved this control's interaction.

0 = not run through the resolver ladder (legacy/unset); 1 = explicit identity (component/Code-Connect); 2 = Tier-1 affordance-inferred primitive; 3 = name/token (whole-word); 4 = registered custom factory; 5 = inert render + diagnostic (the warn).

◆ selected_index

int pulp::view::IRInteractiveElement::selected_index = 0

dropdown / tab_group: which option/tab is selected initially.

◆ source_node_id

std::optional<std::string> pulp::view::IRInteractiveElement::source_node_id

Figma node id — provenance for the inspector's Wiring lens (maps a live control back to its source node).

NOT the host-param key; that is param_key.

◆ svg_patch_d

std::string pulp::view::IRInteractiveElement::svg_patch_d

Knob: the d of its needle path in the SVG (the patch target a drag rotates around (cx, cy)).

fader/switch reuse this as the translated thumb.

◆ target_frame

int pulp::view::IRInteractiveElement::target_frame = -1

swap only: the frame index to activate when clicked (-1 = unset).

Maps 1:1 to DesignFrameElement::target_frame.

◆ text

std::string pulp::view::IRInteractiveElement::text

value_label only: the initial readout string painted over the rect.

Maps 1:1 to DesignFrameElement::text.

◆ value_left_align

bool pulp::view::IRInteractiveElement::value_left_align = false

value_label only: left-align the readout (for a "LABEL <value>" overlay whose value grows rightward).

Maps 1:1 to DesignFrameElement::value_left_align.

◆ verification_pass

bool pulp::view::IRInteractiveElement::verification_pass = true

Whether render-level verification (overlay covers its node region, type doesn't visually contradict the skin) passed.

true = passed/unchecked.

◆ w

float pulp::view::IRInteractiveElement::w = 0.0f

◆ x

float pulp::view::IRInteractiveElement::x = 0.0f

Element bounding box in SVG coords — where the native overlay widget is positioned (via DesignFrameView's panel transform).

Zero for knobs.

◆ y

float pulp::view::IRInteractiveElement::y = 0.0f

The documentation for this struct was generated from the following file:
  • /home/runner/work/pulp/pulp/core/view/include/pulp/view/design_ir.hpp