GMZZSlider is an abstract class that defines single value sliders behavior within the scope of the Graphical Module. The class name begins with "GMZZ" so it is displayed last in the autocompletion API.
This abstract class only defines the interaction methods, that other slider classes inherits. Those other classes are responsible for the drawFunc
definition of the slider. As such, GMZZSlider shouldn't be instanciated, as it doesn't display anything by itself.
GMZZSlider requires you to provide a min, a max, a scale, a default value and a function to be usable :
The Function associated to the action
will be evaluated every time the value changes, with the value as argument.
The min
and max
values can only be positive, and max
should be greater than min
. The displayFunction
method of this class child classes provide a workaround to this limitation.
The provided scale must be either \lin
, \exp
, \log
or a number :
If \lin
is specified, the mapping will be performed using the linlin
function.
If \exp
or \log
is specified, the mapping will be performed using the linexp
function. It is still possible to set min
equals to 0 when using those scales. In this special case, you should also specify an expMin
value to allow the correct mapping (slider will return 0 at minimum position, a mapping between expMin
and max
otherwise) :
If a number is specified, the mapping will be performed using the lincurve
function.
The slider can be turned horizontally if needed :
By default, the slider ranges from min
to max
. It can be toggled to range from max.neg
to max
, excluding the min.neg
to min
region :
When clicking the slider down while pressing ALT, the current slider value will be stored, then the slider will be set to the new value. When releasing the mouse button, if ALT is pressed, the slider will jump back to the stored value. The intention is to provide a 'live instrument' feel to the slider.
This is easier to explain starting from a visual example :
Wether they are displayed or not, the slider comes with 'helpers' that subdivide its range equally. The helpersNumber
property will set the number of 'big helpers', the helperSubdivisions
property will set how much 'small helpers' there are between 'big ones' :
If the slider range is bipolar, the specified number of helpers still only applies to only one pole of the scale :
When interacting with the slider while pressing the SHIFT key (but not the CTRL key, see below), the selected value will automatically stick to the closest helper :
As you can see in this example, this can allow to automatically select some discrete key values, as one would in a multi state button, without losing the slider continuous ability.
Pressing ALT + SHIFT mixes both associated behavior, and can allow you, for example, to jump back and forth in octaves.
Pressing and holding CTRL or CTRL + SHIFT will modify the way the mouse cursor interacts with the widget. When CTRL is held and the slider is clicked down, or the slider is allready clicked and CTRL is pressed, the cursor position will be stored, and further mouse movement will modify the value using three parameters :
The operator can be either \add
or mul
.
Let's take an example :
Here, when CTRL is held, everytime the cursor moves up by 10 pixels, the current value will be incremented by 0.2. Everytime the cursor moves down by 10 pixels, the current value will be decremented by 0.2.
The main usage of the \add
operator is to fine tune the sliders value.
Here, when CTRL is held, everytime the cursor moves up by 25 pixels, the current value will be multiplied by 2. Everytime the cursor moves down by 25 pixels, the current value will be divided by 2.
In this example, this allows to jump by octave. This could also be used to double a tempo. A smaller step value, like 1.1, could also be used to increase or decrease the tempo smoothly as the cursor moves.
On bipolar scales, by nature, the \mul
operator doesn't allow to cross the min
value.
You can specify up to two 'mod steps' : one when CTRl only is pressed, an other when CTRL + SHIFT is pressed :
Due to the implementation of this algorithm, switching directly between CTRL and CTRL + SHIFT without releasing the mouse button is likely to introduce unwanted behavior.
When pressing ALT and a 'mod step' at the same time, the anchor point will be the value at the cursor position.
Creates a new instance of GMZZSlider.
a GMZZSlider instance. This method is implicitely internal.
Sets or gets the Function to be triggered when interacting with the slider changes its value. This Function takes the current slider value as argument.
aFunction |
A Function with an argument, a Float which correspond to the sliders current value. |
Sets or gets the Function to be triggered when interacting with the slider changes its value. This Function takes the current slider value as argument. Equivalent to .action
.
aFunction |
A Function with an argument, a Float which correspond to the sliders current value. |
Sets or gets the current slider value. It will be clipped between min
and max
values.
Sets or gets the slider minimum value.
Sets or gets the slider maximum value.
Sets or gets the slider scale. Can be either \lin
, \exp
or \log
, or a number.
aScale |
A Symbol or a SimpleNumber. |
Sets or gets safety value the slider will use to perform mapping in the special case where scale is either \exp
or \log
, and min
equals 0.
Sets the View direction.
aSymbol |
The View will be distributed horizontally if set as |
Sets the polarity of the scale. Slider will range from min
to max
if set as \uni
, or from max.neg
to max
, excluding min.neg
to min
, if set as \bi
.
aSymbol |
Either |
Sets or gets the slider 'big helpers' number.
Sets or gets the number of 'small helpers' between each 'big helpers' pair.
Sets or gets the step value to use when CTRL is pressed.
Sets or gets the operator to use when CTRL is pressed.
aSymbol |
Either |
Sets or gets the pixel range to use when CTRL is pressed.
Sets or gets the step value to use when CTRL + SHIFT is pressed.
Sets or gets the operator to use when CTRL + SHIFT is pressed.
aSymbol |
Either |
Sets or gets the pixel range to use when CTRL + SHIFT is pressed.
Sets or gets both mod steps values.
Sets or gets both mod steps operators.
Sets or gets both mod steps pixel ranges.
See the GMFaderSlider documentation for examples and templates.