UIKnob

class UIKnob : UIElement , IParameterListener {
nothrow @nogc
enum defaultSensivity;
nothrow @nogc
float knobRadius;
nothrow @nogc
RGBA knobDiffuse;
nothrow @nogc
RGBA knobMaterial;
nothrow @nogc
KnobStyle style;
nothrow @nogc
int numLEDs;
nothrow @nogc
float LEDRadiusMin;
nothrow @nogc
float LEDRadiusMax;
nothrow @nogc
RGBA LEDDiffuseLit;
nothrow @nogc
RGBA LEDDiffuseUnlit;
nothrow @nogc
float LEDDistanceFromCenter;
nothrow @nogc
float LEDDistanceFromCenterDragged;
nothrow @nogc
ushort LEDDepth;
nothrow @nogc
RGBA litTrailDiffuse;
nothrow @nogc
RGBA unlitTrailDiffuse;
nothrow @nogc
float trailRadiusMin;
nothrow @nogc
float trailRadiusMax;
nothrow @nogc
float trailOffsetX;
nothrow @nogc
float trailOffsetY;
nothrow @nogc
float trailMinAngle;
nothrow @nogc
float trailBaseAngle;
nothrow @nogc
float trailMaxAngle;
nothrow @nogc
RGBA litTrailDiffuseAlt;
nothrow @nogc
bool hasAlternateTrail;
nothrow @nogc
float animationTimeConstant;
protected nothrow @nogc
float _pushedAnimation;
protected nothrow @nogc
bool _shouldBeHighlighted;
protected nothrow @nogc
float _mousePosOnLast0Cross;
protected nothrow @nogc
float _mousePosOnLast1Cross;
}

Destructor

A destructor is present on this object, but not explicitly documented in the source.

Members

Functions

getBaseAngle
float getBaseAngle()

Max angle of the trail, fit for aaFillSector.

getMaxAngle
float getMaxAngle()

Min angle of the trail, fit for aaFillSector.

getMinAngle
float getMinAngle()

Min angle of the trail, fit for aaFillSector.

getSubsquare
box2i getSubsquare()
getValueAngle
float getValueAngle()

Angle of the trail, fit for aaFillSector.

sensivity
float sensivity()
sensivity
float sensivity(float sensivity)

Sets sensivity.

Static functions

angleConvert
float angleConvert(float angle)

Exists because public angle properties are given in a different referential, where 0 is at the top

Variables

_param
FloatParameter _param;

The parameter this knob is linked with.

_sensivity
float _sensivity;

Sensivity: given a mouse movement in 100th of the height of the knob, how much should the normalized parameter change.

Inherited Members

From UIElement

render
void render(ImageRef!RGBA diffuseMap, ImageRef!L16 depthMap, ImageRef!RGBA materialMap, box2i[] areasToUpdate)
reflow
void reflow(box2i availableSpace)

TODO: useless until we have resizeable UIs. Meant to be overriden almost everytime for custom behaviour. Default behaviour is to span the whole area and reflow children. Any layout algorithm is up to you. Like in the DOM, children elements don't need to be inside _position of their parent.

position
box2i position()
position
box2i position(box2i p)

Forces the position of the element. It is typically used in the parent reflow() method

removeChild
void removeChild(UIElement element)

Removes a child (but does not destroy it, you take back the ownership of it). Useful for creating dynamic UI's. MAYDO: there are restrictions for where this is allowed. Find them.

setDirtyWhole
void setDirtyWhole()

Mark this element as wholly dirty. Important: you could call this from the audio thread, however it is much more efficient to mark the widget dirty with an atomic and call setDirty in animation callback.

setDirty
void setDirty(box2i rect)

Mark a part of the element dirty. This part must be a subrect of its _position.

parent
UIElement parent()
topLevelParent
UIElement topLevelParent()
getDrawList
void getDrawList(Vec!UIElement list)

Appends the Elements that should be drawn, in order. You should empty it before calling this function. Everything visible get into the draw list, but that doesn't mean they will get drawn if they don't overlap with a dirty area.

onDraw
void onDraw(ImageRef!RGBA diffuseMap, ImageRef!L16 depthMap, ImageRef!RGBA materialMap, box2i[] dirtyRects)

Draw method. This gives you 3 surfaces cropped by _position for drawing. Note that you are not forced to draw all the surfaces at all, in which case the below backgroundUIElement will be displayed.

onAnimate
void onAnimate(double dt, double time)

Called periodically for every UIElement. Override this to create animations. Using setDirty there allows to redraw an element continuously (like a meter or an animated object). Warning: Summing dt will not lead to a time that increase like time. time can go backwards if the window was reopen. time is guaranteed to increase as fast as system time but is not synced to audio time.

_parent
UIElement _parent;

Parent element. Following this chain gets to the root element.

_position
box2i _position;

Position is the graphical extent of the element, or something larger. An UIElement is not allowed though to draw further than its _position. For efficiency it's best to keep _position as small as feasible.

_children
Vec!UIElement _children;

The list of children UI elements.

_visible
bool _visible;

If _visible is false, neither the Element nor its children are drawn.

_zOrder
int _zOrder;

Higher z-order = above other UIElement. By default, every UIElement have the same z-order. Because the sort is stable, tree traversal order is the default order (depth first).

From IParameterListener

onParameterChanged
void onParameterChanged(Parameter sender)

Called when a parameter value was changed You'll probably want to call setDirtyWhole() or setDirty() in it to make the graphics respond to host changing a parameter.

onBeginParameterEdit
void onBeginParameterEdit(Parameter sender)

Called when a parameter value start being changed due to an UI element

onEndParameterEdit
void onEndParameterEdit(Parameter sender)

Called when a parameter value stops being changed

Meta