Table of Contents

Namespace PluginUI

The user interface toolkit: hosting (UIHost, StandaloneWindow), the element tree (UIElement, layout panels), about eighty controls, themes and skins, Direct2D drawing (DrawingContext), parameters (IParameter) and services (clipboard, file dialogs, MIDI learn).

Everything is measured in DIPs (1/96 inch). Elements are created and modified on the UI thread; other threads use Post(Action) or lock-free sources such as PeakValue. See the element catalog and Extending PluginUI.

Classes

ABCompareBar

A/B comparison bar: two slots holding complete settings, switched with one click, plus a "copy to the other slot" button. Works on a list of parameters (Parameters) or on any custom state (CaptureState / RestoreState).

AboutBox

"About" dialog: logo, product name, version, a free text and a clickable URL. A click anywhere (outside the link) or Escape closes it.

Animation

A running animation; Cancel() stops it without calling the completion callback.

Animator

Drives animations from the host frame timer. Obtain it through Animator.

BitmapFont

Monospace bitmap font: an image (atlas) cut into equal cells, one glyph per cell, in character order. Used by BitmapText for LCD, VFD, pixel-art or "hardware" displays that a vector font cannot reproduce.

BitmapText

Text drawn with a BitmapFont (iPlug2 IBTextControl): fixed text or text refreshed every frame (TextSource), integer pixel scaling, alignment, character spacing and an optional dim "unlit segments" background that mimics LCD / VFD displays.

Border

Decorator: background, border, corner radius, shadow and padding around a single child.

BoundValue

One normalized value of a multi-value control (range slider, XY pad, envelope, multi-slider): either stored locally or bound to an IParameter, with the gesture protocol and change notification. Reusable by custom controls that edit several parameters at once.

Button

Momentary push button with text and/or icon (bitmap, SVG or vector callback). Raises Click on release over the button (or repeatedly while held when RepeatWhileHeld), and can drive a parameter as a momentary switch (1 while pressed, 0 when released).

Canvas

Absolute positioning: each child is placed at its Left/Top with its explicit or desired size. The usual root of fixed-size plug-in editors (and the live editor's favorite).

CheckBox

Check box with a caption on the right. Clicking the box or the caption toggles the value.

Clipboard

Unicode text clipboard (UI thread).

ColorPicker

HSV color picker: saturation/value square, hue strip, optional alpha strip, hex field, old/new preview and recently used colors. Usually shown in a ColorPickerPopup by a ColorSwatch.

ColorPickerPopup

Popup containing a ColorPicker. Changes are live (ColorChanged); closing commits (Committed, the color is added to the recent colors) and Escape restores the original color.

ColorSwatch

Color well: shows a color (checkerboard behind translucent colors); clicking opens a ColorPickerPopup and updates the color live.

CompressorCurve

Static transfer curve of a compressor / limiter (input level → output level, in dB) with threshold, ratio and soft knee, the unity line, and a moving dot showing the current input level on the curve. The threshold and the ratio can be edited by dragging, optionally bound to parameters.

ContentPanel

Panel holding a single Content element.

Control

Base class of interactive widgets: vector style, optional skin (bitmap, film-strip, SVG, custom), label, pressed/hover state and the label/value layout helpers shared by most controls.

CornerResizer

Resize grip for the bottom-right corner of a resizable editor (iPlug2 ICornerResizerControl). Dragging asks the container for a new pixel size through RequestResize(int, int); the DAW (or the standalone window) decides and calls back SetPixelSize(int, int). Hidden when the host is not resizable. Double-click restores the preferred size.

CorrelationMeter

Phase correlation meter: a horizontal bar from −1 (out of phase) through 0 to +1 (mono), computed from two AudioRingBuffer over WindowMilliseconds and smoothed. Red on the left half warns that the mix will lose content when summed to mono.

CurveEditor

Multi-segment envelope / LFO shape editor (MSEG, as in Serum or Vital): draggable breakpoints joined by curved segments, grid snapping, play cursor, and exact evaluation of the shape for the audio engine (Evaluate(double)).

DataColumn

Column of a DataTable.

DataTable

Virtualized multi-column table (preset browsers, sample lists, modulation matrices): sortable headers with arrows, resizable columns, striped rows, single or extended selection, keyboard navigation, horizontal and vertical scrolling, and in-place editing of editable columns (double-click or F2).

DelegateSkin

Skin from a delegate: the quickest way to give one control a custom look.

Dialog

Modal dialog drawn inside the host window: title, body element and a row of buttons. Enter chooses the default button, Escape the cancel button. Plug-in editors cannot rely on native modal windows (they would block the DAW), so dialogs are popups: the rest of the editor is dimmed and inert while one is open.

DialogText

Wrapped text block used by dialogs (and usable anywhere a paragraph is needed).

DockPanel

Docks children to the edges in order (Dock); the last child fills the remaining space when LastChildFill is set.

DragEventArgs

Internal drag-and-drop event data (between elements of the same host).

DrawingContext

Immediate-mode drawing API handed to OnRender(DrawingContext). All coordinates are DIPs.

DropDown

Drop-down list (combo box) for a discrete value: shows the selected item and a chevron, opens a menu with a check mark on the current item. Items come from Items or the parameter's state labels; names such as "Bass/Sub" are grouped into sub-menus when SubmenuSeparator is set. IsItemAvailable hides the items that do not apply in the current context (the menu omits them and the wheel and arrow keys skip them), without changing the indices of the others.

Easing

Easing curves: map linear progress t ∈ [0, 1] to eased progress.

ElementCollection

Children collection of a Panel: maintains parent links, host attachment and layout invalidation.

EndlessKnob

Endless rotary encoder: turns without limits and reports steps through Turned (preset browsing, list scrolling, fine tuning). Optionally drives a parameter by StepSize per step, with wrap-around.

EnvelopeEditor

Graphical ADSR editor: drag the peak (attack), the decay corner (decay + sustain), the sustain plateau (sustain) or the end point (release). Values are normalized (times scaled by the plug-in) and each can be bound to a parameter; double-click a point resets it.

EqBand

One band of a ParametricEqEditor: shape, frequency, gain, Q and on/off state, either stored in the band or read from bound parameters.

FallbackTextMeasurer

Approximate measurer used when no renderer is available (unit tests, layout before attachment).

FileDialogs

Modern Windows file dialogs (IFileOpenDialog / IFileSaveDialog), owned by the host window. Modal: they run a nested message loop, call them from the UI thread.

FilePathBox

Path field with a browse button: shows the path with a middle ellipsis, opens the native file/folder dialog and accepts files dropped from Explorer (sample loaders, IR loaders, export folders).

FilesDroppedEventArgs

Files dropped from the shell.

FilmStrip

Vertical or horizontal strip of equally sized animation frames (classic "film-strip" knobs and switches).

FilmStripSkin

Film-strip skin: the frame is chosen from the normalized value (knobs, sliders, meters, multi-state switches).

FpsCounter

Debug overlay showing the repaint rate (frames per second) and the average frame interval. It forces a continuous repaint while attached, so remove it from release builds. iPlug2 IFPSDisplayControl.

FrequencyResponseView

Frequency-response display: any number of curves on a logarithmic or linear frequency axis, a fixed left axis (magnitude) and an auto-scaled right axis (phase, phase delay, group delay…), an optional analyzed input spectrum and the same spectrum shaped by a response without a second FFT, and draggable nodes.

Glyphs

Small vector glyphs shared by buttons, menus and pickers.

Goniometer

Goniometer (vector scope): plots the stereo signal as a cloud of points rotated by 45°, so that mono material is a vertical line, wide material a broad cloud, and out-of-phase material a horizontal line. Reads two AudioRingBuffer written by the audio thread (one per channel).

Grid

Rows × columns layout with Auto, fixed and star sizes, spans and spacing. Children use Row, Column, RowSpan and ColumnSpan.

GroupBox

Titled section: a rounded frame with a header strip holding the title, an optional collapse chevron and a single content element.

HistoryGraph

Rolling graph of a value over time, newest on the right (iPlug2 IVDisplayControl): gain reduction history, envelope follower, LFO output, CPU load… Values come from Push(float) (UI thread), from a lock-free PeakValue published by the audio thread (PeakSource), or from a function polled every frame (ValueSource).

Hyperlink

Clickable link text: accent colored, underlined on hover, hand cursor. Opens Url in the default browser (or raises Clicked only when no URL is set). iPlug2 IURLControl.

ImageLayout

Image placement helpers.

ImageRotarySkin

Bitmap knob made of a single rotor image rotated with the value (iPlug2 IBKnobRotaterControl), with an optional static background (scale, shadow) and foreground (highlights, glass). Lighter than a film-strip: one image instead of 64–128 frames, at the cost of rotating the lighting with the knob.

ImageSource

Raster image decoded once (PNG, JPEG, BMP, GIF, TIFF... through WIC) into premultiplied BGRA pixels. Device bitmaps are created lazily by each renderer and rebuilt after a device loss.

ImageStateSkin

One image per state: off/on (toggles), optional hover, pressed and disabled variants.

ImageView

Displays a bitmap, or plays a film-strip animation (VSTGUI CMovieBitmap): logos, backgrounds, animated indicators. The animation runs on the host frame timer only while IsPlaying.

InvariantNumber

Culture-independent number formatting and parsing used for every number PluginUI displays or reads from the user: the decimal separator is always a point (1.5), whatever the language of the interface (Language) and the regional settings of the machine (CurrentCulture).

KeyEventArgs

Keyboard event data.

Knob

Rotary control. Drag up/right to increase (Shift = fine), wheel and arrow keys step, double-click or Ctrl+click resets, Alt+click (or right double-click) types a value. Vector styles: KnobStyle; bitmap/SVG looks through Skin (FilmStripSkin, SvgRotarySkin).

Label

Static or real-time text: single line (with ellipsis) or wrapped multi-line text, aligned in its bounds. Set TextSource to refresh the text on every frame (CPU load, voice count, tempo...).

LayeredPanel

Stack of full-size layers drawn on top of each other (VSTGUI CLayeredViewContainer): backgrounds, a control layer, an overlay page that fades in, a modulation layer… Every child fills the panel (minus its Margin, with its alignment), the last child is on top, and layer opacity is composited properly (a half-transparent layer does not reveal the overlaps of its own children).

Led

Indicator LED with a lens highlight and a glow proportional to its brightness. Drive it with IsOn, Brightness, or a BrightnessSource polled every frame (signal present, clip, MIDI activity...). iPlug2 ILEDControl.

LevelMeter

Multi-channel level meter: vertical or horizontal, dB scale with marks, gradient / LED segments / solid bars, peak-hold markers, latched clip indicators (click to reset), optional RMS + peak dual display, gain-reduction mode.

LinearGradientPaint

Linear gradient between two points.

ListBox

Virtualized list of items (presets, files, samples...): only visible rows are drawn, so lists of any length cost the same per frame. Single or extended selection (Ctrl / Shift), keyboard navigation with type-ahead, wheel and slim scrollbar, double-click / Enter activation and optional drag reordering.

LiveEditor

In-place layout editor. Mouse: click selects (Alt+click selects the parent), drag moves, the 8 handles resize. Keyboard: arrows nudge (Shift ×10, Ctrl resizes), Tab cycles siblings, Esc deselects, Ctrl+Z undoes, Ctrl+C copies the C# code of every edited element.

LocalParameter

Self-contained IParameter for values that are not plug-in parameters (UI state, standalone applications, the gallery, tests).

LoudnessMeter

EBU R128 loudness meter: momentary and short-term bars against a target line, integrated loudness, loudness range and sample peak, read from a LoudnessAnalyzer fed by the audio thread.

MenuButton

Button opening an arbitrary menu (MenuItem tree): settings, "more" menus, file menus. Handle Opening to rebuild the entries right before the menu appears.

MenuItem

Menu entry used by context menus, drop-downs and menu buttons.

MenuPopup

Custom-drawn popup menu with check marks, shortcuts, separators, sub-menus, keyboard navigation and scrolling. Usually shown through ShowMenu(IList<MenuItem>, Rect, PopupPlacement, float, Action?).

Metrics

Dimensions of a theme.

MidiLearnService

In-memory IMidiLearnService: feed it the MIDI controllers received by your application with ProcessController(int, int, double); the learning parameter gets assigned, assigned parameters follow the controller.

ModWheel

Modulation wheel: unipolar, starts at 0 and stays where it is left.

ModulationSource

A modulation source (LFO, envelope, macro, velocity…) that can be dragged onto value controls accepting modulation (AcceptsModulation), as in Serum or Vital.

ModulationSourceButton

Draggable chip representing a ModulationSource: drag it onto a knob or slider whose AcceptsModulation is true; the target raises ModulationDropped and the application creates the routing (and usually sets ModulationAmount to show it).

MouseEventArgs

Mouse event data.

MultiSlider

Row of bars edited by drawing across them (step sequencer, harmonic levels, wave tables, graphic EQ). Drag paints values with line interpolation so fast strokes never skip bars; double-click resets a bar, Ctrl+drag draws straight lines from the press point. Values are local or bound to a list of parameters.

MultiToggle

Row or grid of on/off cells, each bound to its own parameter (or to a local state array): step-sequencer gate rows, channel enables, harmonic switches. Press a cell to flip it and drag across the others to paint the same state. PlayPosition highlights the current step.

NativeMenu

Shows MenuItem trees with the native Win32 popup menu (TrackPopupMenuEx).

NativeWindowHost

Embeds a foreign Win32 window (video surface, WebView2 controller window, third-party view...) into the layout: the window is re-parented to the host window and kept over Bounds (converted to pixels). It is hidden while this element is collapsed or detached, and re-parented when the host window is recreated.

NineSlice

Image drawn with fixed corners and stretched edges/center (9-patch), for scalable panels and buttons.

NineSliceSkin

Nine-slice background stretched over the widget area, with optional pressed/active variants (scalable bitmap buttons and panels).

NoteActivity

Notes currently sounding, written by the audio (or MIDI) thread and read by the UI without locks: assign it to ActivitySource to light the keys played by the host, a sequencer or an arpeggiator.

NumberBox

Numeric box: drag vertically to change (Shift = fine), wheel, arrows, double-click or Enter to type, optional − / + step buttons with auto-repeat. iPlug2 IVNumberBoxControl.

Oscilloscope

Oscilloscope reading an AudioRingBuffer written by the audio thread: window length, rising zero-crossing trigger, gain, grid, glowing or filled trace. Dense windows are drawn as min/max columns. iPlug2 IVScopeControl.

Paint

Describes how a shape is filled: solid color, linear or radial gradient.

Palette

Color palette of a theme.

Panel

Element with children, an optional background/border and padding. Base class of every layout container.

ParameterExtensions

Helpers for IParameter.

ParameterScale

Mapping between a normalized value [0, 1] and a plain value.

ParameterSnapshot

Values of a set of parameters captured at one moment, restored later as user edits (A/B comparison, undo points, "random" with revert…).

ParametricEqEditor

Interactive parametric equalizer display (FabFilter-style): frequency response of all bands, draggable band nodes, Q on the mouse wheel, per-band shape menu, and an optional live spectrum behind the curve.

PathGeometry

Device-independent vector path made of figures (move/line/curve/arc commands). Converted to a Direct2D geometry when drawn.

PianoKeyboard

Horizontal piano keyboard: play with the mouse (velocity from the vertical click position, glissando while dragging), with the computer keyboard when focused (QWERTY rows, Z/X shift octaves), and show notes played elsewhere (host MIDI, sequencer) with the thread-safe SetNoteState(int, bool). iPlug2 IVKeyboardControl.

PitchWheel

Pitch-bend wheel: bipolar, centered by default, springs back to the center when released.

Plot

Function / data plot with axes, grid and labels: linear or logarithmic X, several series, filled curves. Typical uses: EQ and filter response, compressor transfer curve, envelope or LFO shapes. iPlug2 IVPlotControl.

PlotSeries

A curve of a Plot: a function sampled across the width, or explicit points.

Popup

Element shown above the main tree, inside the host window (menus, drop-down lists, color pickers, tooltips, dialogs). Show it with ShowPopup(Popup).

PresetBar

Preset manager bar: previous / next buttons, the preset name (click to choose from a menu grouped by bank, "*" when modified) and an actions menu (Save, Save As…, Delete). Works with any IPresetProvider.

PresetEntry

A preset entry of a PresetList.

PresetList

In-memory IPresetProvider: the application supplies the load/capture callbacks (Loading, Capture) and persists Entries as it likes.

ProgressBar

Progress indicator: determinate (0..1 with optional percentage text) or indeterminate (animated sweep). Useful for preset loading, sample analysis or license activation.

RadialGradientPaint

Radial (elliptic) gradient.

RadioGroup

Vertical (or horizontal) list of radio buttons bound to one discrete value. Texts come from Items or the parameter's state labels.

RangeSlider

Slider with two thumbs selecting a range (key range, frequency band, loop points). Drag a thumb, or the band between them to move both; Shift = fine; double-click a thumb resets it. Each end can be bound to a parameter.

ResponseCurve

One curve of a FrequencyResponseView: a function of the frequency (Hz) evaluated once per pixel column.

ResponseNode

A draggable point of a FrequencyResponseView, bound to parameters or holding its own values.

RockerSwitch

Momentary rocker (−1 / 0 / +1): pressing one half raises Stepped and springs back on release. Bound to a parameter, each step moves it by one discrete step (or ContinuousStep). Typical uses: preset increment/decrement, octave shift, fine tuning.

RoutedEventArgs

Base class of routed input events.

ScrollBar

Scroll bar over a content range: Value is the first visible position in [Minimum, Maximum − ViewportSize]. Thumb drag, track paging with auto-repeat, optional arrow buttons, mouse wheel. Used by scroll viewers, lists and tables.

ScrollViewer

Scrolls a content larger than its viewport. The content is measured with an unbounded size along the scrollable axes and arranged at an offset; slim overlay scrollbars (drag, track click) fade in while hovering. Wheel scrolls vertically (Shift+wheel or tilt: horizontally); unused wheel events bubble to outer scrollers.

SegmentDisplay

Seven-segment LED/LCD display drawn with vectors: digits, minus sign, a few letters and decimal points. Shows Text, Number or the value of a bound Parameter. Look-alike of VSTGUI CSpecialDigit without bitmaps.

SegmentedControl

Row (or column) of mutually exclusive segments — radio buttons / tab switch in one shape. The selection highlight slides between segments. Segment texts come from Items or the parameter's state labels.

Separator

A thin horizontal or vertical rule.

Shell

Shell helpers.

SlideSwitch

Toggle switch: a pill with a sliding knob (animated), with an optional caption on the right (or OnText/OffText state captions).

Slider

Linear fader, vertical or horizontal. Relative drag (or jump to the click with JumpToClick), Shift = fine, double-click/Ctrl+click resets, Alt+click types a value, wheel and arrow keys step. Bitmap looks: SliderHandleSkin or a FilmStripSkin.

SliderHandleSkin

Bitmap slider skin: optional track image stretched over the widget area and a handle image moved along the track of a Slider (or of any control, horizontally/vertically by Orientation).

SolidPaint

Solid color fill.

Spacer

Invisible element taking space: a fixed gap (Width/Height), or a stretchable filler.

Spectrogram

Scrolling spectrogram (waterfall): time runs from right to left, frequency on a logarithmic vertical axis, level as color. Reads an AudioRingBuffer written by the audio thread and analyzes it with Fft.

SpectrumAnalyzer

Real-time FFT spectrum analyzer reading an AudioRingBuffer: logarithmic frequency axis, dB range, per-column attack/release smoothing, peak-hold curve, slope compensation (dB/octave around 1 kHz), line or fractional-octave bar display, labeled grid. iPlug2 IVSpectrumAnalyzerControl.

SplashScreen

Full-editor splash overlay (logo, title, subtitle) shown at startup; fades out after Duration or on click. Show it with ShowPopup(Popup).

SplitView

Two panes separated by a draggable splitter. Horizontal places the panes side by side (vertical splitter), Vertical stacks them. Double-click the splitter to restore DefaultRatio.

StackPanel

Stacks children vertically or horizontally with optional spacing.

StandaloneWindow

Top-level window hosting a UIHost: standalone versions of plug-ins, test benches, the gallery. Handles per-monitor DPI, resizing constraints and the message loop.

StepSequencer

Step sequencer: a lane of step values (bars drawn with the mouse) above a lane of gates (on / off), with beat grouping, an active length and a play cursor. Each step can be bound to parameters.

StrokeStyle

Stroke options (caps, joins, dashes). Instances are cached by value by the renderer.

SvgImage

SVG document rendered natively by Direct2D (ID2D1SvgDocument, Windows 10 1703+).

SvgRotarySkin

SVG knob: optional static background, a rotor rotated from MinAngle to MaxAngle with the value, and an optional static foreground (highlights, glass).

SvgStateSkin

One SVG per discrete state (switches, toggles) or per value range (meters): frame = state index, or value × (count − 1) when byValue is true.

SvgView

Displays an SVG image (fit, rotation, opacity). Native SVG needs Windows 10 1703 or later.

Switch

N-position selector switch (waveform, range, mode). Vector look: a slotted track with a lever and position labels; bitmap look: a film-strip skin (new FilmStripSkin(strip, useStateIndex: true)).

TabPage

One page of a TabView.

TabView

Tabbed pages: a tab strip (top or left) with an animated selection indicator, and the selected page's content. Only the selected page is attached to the host (unselected pages cost nothing). Keyboard: Ctrl+Tab / Ctrl+Shift+Tab from anywhere inside, arrows when the strip has the focus.

TextBox

Single-line text input: caret, selection (mouse, Shift+keys, double-click word), clipboard (Ctrl+A/C/X/V), word jumps (Ctrl+arrows), placeholder, filter, maximum length, read-only mode and an optional search look (magnifier and clear button).

TextEditPopup

Popup hosting a TextBox exactly over a rectangle: in-place editing of labels, values and list items. Shown by BeginTextEdit(Rect, string, Func<string, bool>, Action?, TextStyle?, Func<char, bool>?).

TextInputEventArgs

Character input event data.

TextStyle

Text appearance and layout options. Instances are immutable; use with to derive variants.

Theme

Complete theme: palette, typography, metrics, the default vector style and optional per-control-type styles.

ToggleButton

On/off button (bypass, enable, mode toggles). Toggles on press; the "on" state is drawn with the accent color, or with a glowing LED when ShowLed is set. Text can differ between states.

Typography

Font families and sizes of a theme.

UIElement

Base class of everything in the visual tree: layout (measure/arrange), rendering, hit testing and input.

UIHost

Hosts a tree of UIElements in a Win32 child window rendered with Direct2D. The same class serves plug-in editors (child of the DAW window) and standalone applications (child of a StandaloneWindow).

UILanguages

Language codes accepted by Language and ForLanguage(string?).

UIStrings

Texts that PluginUI itself displays (dialog buttons, preset menu, placeholders, tooltips, live-edit help). One instance per language; select it with Language (or DefaultLanguage for every editor), or assign a custom table to Strings.

UniformGrid

Grid with equal cells; children fill it in order.

ValueControl

Control editing a normalized value [0, 1], optionally bound to an IParameter. Provides the gesture protocol, quantization, default value, fine adjustment and the value bubble.

ValueDisplay

Shows a value as text (the parameter's display string with units). Double-click or Enter to type a new value, optional vertical drag, arrow keys and wheel to step it. VSTGUI CParamDisplay / iPlug2 ICaptionControl.

VectorStyle

Visual parameters of vector-drawn controls (the "IVStyle" of iPlug2): what to show and which colors to use. Every control resolves its style as control.Style ?? theme.StyleFor(control); derive variants with with.

ViewSwitcher

Shows one of its children at a time, over the whole content area, chosen by SelectedIndex or by a bound Parameter: for example the settings panel of the oscillator type selected in a menu. Unlike TabView it draws no tabs. Equivalent of VSTGUI's UIViewSwitchContainer.

WaveformView

Sample display for samplers and audio editors: one lane per channel, zoom and scroll, start / end and loop markers (draggable, optionally bound to parameters), a selection, a play cursor and WAV file drop.

WheelControl

Vertical performance wheel, as on the left of a keyboard: a ridged cylinder turned by dragging. Base class of PitchWheel (springs back to the center) and ModWheel (stays where it is left). iPlug2 IWheelControl.

WrapPanel

Flows children in lines, wrapping when the line is full.

XYPad

Two-dimensional pad editing X and Y at once (filter cutoff/resonance, vector mixing, panning). Click jumps the handle, drag moves it (Shift = fine, relative), double-click resets both axes. Each axis can be bound to a parameter; both gestures run together.

Structs

Color

Straight (non-premultiplied) RGBA color, components in [0, 1].

CurvePoint

Breakpoint of a CurveEditor: position (0..1), value (0..1) and curvature of the segment that starts at this point (−1..1: negative = fast start, positive = slow start, 0 = straight).

DrawingContext.StateScope

Disposable scope returned by Clip(Rect), Opacity(float) and Transform(Matrix3x2).

FileFilter

A file type filter: display name and semicolon-separated patterns ("Audio files", ".wav;.aif").

GradientStop

Color stop of a gradient.

GridLength

Size of a grid row or column: Auto, fixed DIPs, or a star weight.

ListItemState

State of one row handed to a custom ItemRenderer.

Point

Point in device-independent pixels (DIPs, 1/96 inch).

Rect

Axis-aligned rectangle in DIPs.

Size

Size in DIPs.

SkinState

State handed to a skin for one frame.

Thickness

Thickness of a frame (margin, padding, border) for each side, in DIPs.

Interfaces

IControlSkin

Draws the widget part of a control instead of its vector renderer. Implement to create custom looks; the same skin instance may be shared by many controls.

IMidiLearnService

MIDI learn back-end used by the value controls: when MidiLearn is set, the right-click menu of a control bound to a parameter offers "MIDI Learn" and "Forget MIDI assignment", and the control is outlined while it waits for a MIDI controller.

IParameter

Value a control can be bound to: a plug-in parameter (through an adapter such as PluginUI.NPlug) or a local value (LocalParameter).

IPresetProvider

Source of presets for a PresetBar: implement it over the plug-in's preset storage (factory presets, a user folder, a VST3 program list...).

ITextMeasurer

Text measurement service (available during layout through TextMeasurer).

ITickable

Receives a callback on every animation frame while registered with AddTicker(ITickable).

Enums

ButtonAppearance

Visual variants of push buttons.

DecibelConvention

Decibel convention used to convert the analyzed spectrum.

DragDirection

Mouse movement that drives a drag control.

EnvelopeStage

Stage of an ADSR envelope.

FilePathMode

What a FilePathBox selects.

FontWeight

Font weight (OpenType scale).

FrequencyScale

Frequency axis of a FrequencyResponseView.

GridUnit

Kind of a GridLength.

HistoryGraphMode

How HistoryGraph draws its values.

HorizontalAlignment

Horizontal alignment of an element within its layout slot, or of text.

ImageFit

How an image is fitted into the widget area.

Key

Keys, with Windows virtual-key values.

KnobStyle

Look of a vector Knob.

LedShape

Shape of a Led.

LevelUnit

Unit of the values passed to SetLevels(params float[]).

LineCap

Shape of the end of a line.

LineJoin

Shape of the joint between two segments.

MenuButtonStyle

Look of a MenuButton.

MessageBoxButtons

Button sets of ShowMessage(UIHost, string, string, MessageBoxButtons, Action<MessageBoxResult>?).

MessageBoxResult

Result of a message box.

MeterMode

What a LevelMeter measures.

MeterStyle

How a LevelMeter draws its bars.

ModifierKeys

Keyboard modifiers.

MouseButton

Mouse button.

Orientation

Horizontal or vertical orientation.

PopupPlacement

Where a popup is placed relative to its anchor.

ResponseAxis

Vertical axis a ResponseCurve is drawn against.

RightAxisTicks

Tick labelling of the right axis.

ScrollBarVisibility

Scrollbar visibility policy of a ScrollViewer.

Side

Side of a rectangle (docking, popup placement, tab strip...).

SizingMode

How the host maps its pixel size to the logical (DIP) layout.

SliderHandle

Shape of a slider handle.

SpectrumMode

Display mode of a SpectrumAnalyzer.

StandardCursor

Standard cursor shapes.

SwitchClickMode

How a Switch reacts to clicks.

TabPlacement

Position of the tab strip.

TextEntryTriggers

User actions that open the in-place text box of a value control (Knob, Slider) so that a value can be typed instead of dragged. Combine flags with |; set TextEntryTriggers to None to disable typing.

VerticalAlignment

Vertical alignment of an element within its layout slot, or of text.

WaveformMarker

Draggable markers of a WaveformView.

Delegates

DelegateSkin.RenderCallback

Render callback signature.