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.
- 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
CSpecialDigitwithout 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.
- 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
byValueis 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)).
- 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
withto 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/ iPlug2ICaptionControl.
- 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 withwith.
- 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.
- 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.