LMMS
Loading...
Searching...
No Matches
juce_Slider.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29//==============================================================================
52class JUCE_API Slider : public Component,
54{
55public:
56 //==============================================================================
89
101
111
112 //==============================================================================
116 Slider();
117
121 explicit Slider (const String& componentName);
122
124 Slider (SliderStyle style, TextEntryBoxPosition textBoxPosition);
125
127 ~Slider() override;
128
129 //==============================================================================
135 void setSliderStyle (SliderStyle newStyle);
136
140 SliderStyle getSliderStyle() const noexcept;
141
142 //==============================================================================
145 {
150
156
164 };
165
167 void setRotaryParameters (RotaryParameters newParameters) noexcept;
168
170 void setRotaryParameters (float startAngleRadians,
171 float endAngleRadians,
172 bool stopAtEnd) noexcept;
173
176
183 void setMouseDragSensitivity (int distanceForFullScaleDrag);
184
187
188 //==============================================================================
197 void setVelocityBasedMode (bool isVelocityBased);
198
203
219 void setVelocityModeParameters (double sensitivity = 1.0,
220 int threshold = 1,
221 double offset = 0.0,
222 bool userCanPressKeyToSwapMode = true,
223 ModifierKeys::Flags modifiersToSwapModes = ModifierKeys::ctrlAltCommandModifiers);
224
229
234
239
244
245 //==============================================================================
264 void setSkewFactor (double factor, bool symmetricSkew = false);
265
273 void setSkewFactorFromMidPoint (double sliderValueToShowAtMidPoint);
274
280
286
287 //==============================================================================
297
308 void setIncDecButtonsMode (IncDecButtonMode mode);
309
310 //==============================================================================
322 void setTextBoxStyle (TextEntryBoxPosition newPosition,
323 bool isReadOnly,
324 int textEntryBoxWidth,
325 int textEntryBoxHeight);
326
330 TextEntryBoxPosition getTextBoxPosition() const noexcept;
331
335 int getTextBoxWidth() const noexcept;
336
340 int getTextBoxHeight() const noexcept;
341
349 void setTextBoxIsEditable (bool shouldBeEditable);
350
354 bool isTextBoxEditable() const noexcept;
355
360 void showTextBox();
361
370 void hideTextBox (bool discardCurrentEditorContents);
371
372
373 //==============================================================================
388 void setValue (double newValue, NotificationType notification = sendNotificationAsync);
389
391 double getValue() const;
392
399 Value& getValueObject() noexcept;
400
401 //==============================================================================
409 void setRange (double newMinimum,
410 double newMaximum,
411 double newInterval = 0);
412
419 void setRange (Range<double> newRange, double newInterval);
420
425 void setNormalisableRange (NormalisableRange<double> newNormalisableRange);
426
428 Range<double> getRange() const noexcept;
429
433 double getMaximum() const noexcept;
434
438 double getMinimum() const noexcept;
439
443 double getInterval() const noexcept;
444
445 //==============================================================================
454 double getMinValue() const;
455
462 Value& getMinValueObject() noexcept;
463
483 void setMinValue (double newValue,
485 bool allowNudgingOfOtherValues = false);
486
495 double getMaxValue() const;
496
503 Value& getMaxValueObject() noexcept;
504
524 void setMaxValue (double newValue,
526 bool allowNudgingOfOtherValues = false);
527
544 void setMinAndMaxValues (double newMinValue, double newMaxValue,
546
547 //==============================================================================
556 {
557 public:
558 //==============================================================================
560 virtual ~Listener() = default;
561
562 //==============================================================================
572 virtual void sliderValueChanged (Slider* slider) = 0;
573
574 //==============================================================================
583 virtual void sliderDragStarted (Slider*) {}
584
588 virtual void sliderDragEnded (Slider*) {}
589 };
590
592 void addListener (Listener* listener);
593
595 void removeListener (Listener* listener);
596
597 //==============================================================================
599 std::function<void()> onValueChange;
600
602 std::function<void()> onDragStart;
603
605 std::function<void()> onDragEnd;
606
608 std::function<double (const String&)> valueFromTextFunction;
609
611 std::function<String (double)> textFromValueFunction;
612
613 //==============================================================================
624 void setDoubleClickReturnValue (bool shouldDoubleClickBeEnabled,
625 double valueToSetOnDoubleClick,
626 ModifierKeys singleClickModifiers = ModifierKeys::altModifier);
627
632
637
638 //==============================================================================
647 void setChangeNotificationOnlyOnRelease (bool onlyNotifyOnRelease);
648
658 void setSliderSnapsToMousePosition (bool shouldSnapToMouse);
659
662
679 void setPopupDisplayEnabled (bool shouldShowOnMouseDrag,
680 bool shouldShowOnMouseHover,
681 Component* parentComponentToUse,
682 int hoverTimeout = 2000);
683
689
697 void setPopupMenuEnabled (bool menuEnabled);
698
702 void setScrollWheelEnabled (bool enabled);
703
706
713
714 //==============================================================================
718 virtual void startedDragging();
719
723 virtual void stoppedDragging();
724
728 virtual void valueChanged();
729
730 //==============================================================================
739 virtual double getValueFromText (const String& text);
740
751 virtual String getTextFromValue (double value);
752
760 void setTextValueSuffix (const String& suffix);
761
764
773
779 void setNumDecimalPlacesToDisplay (int decimalPlacesToDisplay);
780
781 //==============================================================================
793 virtual double proportionOfLengthToValue (double proportion);
794
808 virtual double valueToProportionOfLength (double value);
809
819 float getPositionOfValue (double value) const;
820
821 //==============================================================================
834 virtual double snapValue (double attemptedValue, DragMode dragMode);
835
836
837 //==============================================================================
841 void updateText();
842
848 bool isRotary() const noexcept;
850 bool isBar() const noexcept;
855
856 //==============================================================================
878
879 //==============================================================================
888
889 //==============================================================================
909
910 //==============================================================================
915 {
916 virtual ~LookAndFeelMethods() = default;
917
918 //==============================================================================
920 int x, int y, int width, int height,
921 float sliderPos,
922 float minSliderPos,
923 float maxSliderPos,
925 Slider&) = 0;
926
928 int x, int y, int width, int height,
929 float sliderPos,
930 float minSliderPos,
931 float maxSliderPos,
933 Slider&) = 0;
934
936 int x, int y, int width, int height,
937 float sliderPos,
938 float minSliderPos,
939 float maxSliderPos,
941 Slider&) = 0;
942
943 virtual int getSliderThumbRadius (Slider&) = 0;
944
946 int x, int y, int width, int height,
947 float sliderPosProportional,
948 float rotaryStartAngle,
949 float rotaryEndAngle,
950 Slider&) = 0;
951
952 virtual Button* createSliderButton (Slider&, bool isIncrement) = 0;
954
956
958 virtual int getSliderPopupPlacement (Slider&) = 0;
959
961 };
962
963 //==============================================================================
965 void paint (Graphics&) override;
967 void resized() override;
969 void mouseDown (const MouseEvent&) override;
971 void mouseUp (const MouseEvent&) override;
973 void mouseDrag (const MouseEvent&) override;
975 void mouseDoubleClick (const MouseEvent&) override;
977 void mouseWheelMove (const MouseEvent&, const MouseWheelDetails&) override;
979 void modifierKeysChanged (const ModifierKeys&) override;
981 void lookAndFeelChanged() override;
983 void enablementChanged() override;
987 void colourChanged() override;
989 void mouseMove (const MouseEvent&) override;
991 void mouseExit (const MouseEvent&) override;
993 void mouseEnter (const MouseEvent&) override;
995 bool keyPressed (const KeyPress&) override;
996
997 //==============================================================================
998 #ifndef DOXYGEN
999 // These methods' bool parameters have changed: see the new method signature.
1000 [[deprecated]] void setValue (double, bool);
1001 [[deprecated]] void setValue (double, bool, bool);
1002 [[deprecated]] void setMinValue (double, bool, bool, bool);
1003 [[deprecated]] void setMinValue (double, bool, bool);
1004 [[deprecated]] void setMinValue (double, bool);
1005 [[deprecated]] void setMaxValue (double, bool, bool, bool);
1006 [[deprecated]] void setMaxValue (double, bool, bool);
1007 [[deprecated]] void setMaxValue (double, bool);
1008 [[deprecated]] void setMinAndMaxValues (double, double, bool, bool);
1009 [[deprecated]] void setMinAndMaxValues (double, double, bool);
1010 #endif
1011
1012private:
1013 //==============================================================================
1015 std::unique_ptr<Pimpl> pimpl;
1016
1019
1021};
1022
1023
1024} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
#define override
Definition DistrhoDefines.h:73
Definition juce_AccessibilityHandler.h:41
Definition juce_Button.h:43
FocusChangeType
Definition juce_Component.h:1890
Component() noexcept
Definition juce_Component.cpp:517
Definition juce_Font.h:42
Definition juce_GraphicsContext.h:45
Definition juce_ImageEffectFilter.h:43
Definition juce_KeyPress.h:40
Definition juce_Label.h:41
Definition juce_ModifierKeys.h:41
@ altModifier
Definition juce_ModifierKeys.h:127
Definition juce_MouseEvent.h:39
Definition juce_NormalisableRange.h:40
Definition juce_Range.h:40
Definition juce_Rectangle.h:67
Definition juce_Slider.h:556
virtual void sliderDragEnded(Slider *)
Definition juce_Slider.h:588
virtual ~Listener()=default
virtual void sliderDragStarted(Slider *)
Definition juce_Slider.h:583
virtual void sliderValueChanged(Slider *slider)=0
Definition juce_Slider.cpp:40
Slider & sliderBeingDragged
Definition juce_Slider.h:904
ScopedDragNotification(Slider &)
Definition juce_Slider.cpp:1398
Definition juce_Slider.h:54
int getVelocityThreshold() const noexcept
Definition juce_Slider.cpp:1472
DragMode
Definition juce_Slider.h:106
@ notDragging
Definition juce_Slider.h:107
@ velocityDrag
Definition juce_Slider.h:109
@ absoluteDrag
Definition juce_Slider.h:108
void setPopupDisplayEnabled(bool shouldShowOnMouseDrag, bool shouldShowOnMouseHover, Component *parentComponentToUse, int hoverTimeout=2000)
Definition juce_Slider.cpp:1535
double getVelocityOffset() const noexcept
Definition juce_Slider.cpp:1474
bool isRotary() const noexcept
Definition juce_Slider.cpp:1682
std::function< void()> onDragStart
Definition juce_Slider.h:602
virtual String getTextFromValue(double value)
Definition juce_Slider.cpp:1613
void setDoubleClickReturnValue(bool shouldDoubleClickBeEnabled, double valueToSetOnDoubleClick, ModifierKeys singleClickModifiers=ModifierKeys::altModifier)
Definition juce_Slider.cpp:1588
float getPositionOfValue(double value) const
Definition juce_Slider.cpp:1687
void focusOfChildComponentChanged(FocusChangeType) override
Definition juce_Slider.cpp:1693
std::function< void()> onValueChange
Definition juce_Slider.h:599
IncDecButtonMode
Definition juce_Slider.h:291
@ incDecButtonsDraggable_AutoDirection
Definition juce_Slider.h:293
@ incDecButtonsDraggable_Horizontal
Definition juce_Slider.h:294
@ incDecButtonsNotDraggable
Definition juce_Slider.h:292
@ incDecButtonsDraggable_Vertical
Definition juce_Slider.h:295
bool getSliderSnapsToMousePosition() const noexcept
Definition juce_Slider.cpp:1532
void setRotaryParameters(RotaryParameters newParameters) noexcept
Definition juce_Slider.cpp:1449
void setVelocityModeParameters(double sensitivity=1.0, int threshold=1, double offset=0.0, bool userCanPressKeyToSwapMode=true, ModifierKeys::Flags modifiersToSwapModes=ModifierKeys::ctrlAltCommandModifiers)
Definition juce_Slider.cpp:1476
virtual double valueToProportionOfLength(double value)
Definition juce_Slider.cpp:1651
std::function< String(double)> textFromValueFunction
Definition juce_Slider.h:611
bool getVelocityBasedMode() const noexcept
Definition juce_Slider.cpp:1470
std::unique_ptr< Pimpl > pimpl
Definition juce_Slider.h:1015
double getDoubleClickReturnValue() const noexcept
Definition juce_Slider.cpp:1595
void setSkewFactor(double factor, bool symmetricSkew=false)
Definition juce_Slider.cpp:1491
virtual double proportionOfLengthToValue(double proportion)
Definition juce_Slider.cpp:1646
int getMouseDragSensitivity() const noexcept
Definition juce_Slider.cpp:1502
void colourChanged() override
Definition juce_Slider.cpp:1546
void mouseDrag(const MouseEvent &) override
Definition juce_Slider.cpp:1713
void setMinAndMaxValues(double, double, bool)
void setScrollWheelEnabled(bool enabled)
Definition juce_Slider.cpp:1677
void setChangeNotificationOnlyOnRelease(bool onlyNotifyOnRelease)
Definition juce_Slider.cpp:1527
double getSkewFactor() const noexcept
Definition juce_Slider.cpp:1488
void setMaxValue(double, bool, bool)
void lookAndFeelChanged() override
Definition juce_Slider.cpp:1547
String getTextValueSuffix() const
Definition juce_Slider.cpp:1608
virtual double snapValue(double attemptedValue, DragMode dragMode)
Definition juce_Slider.cpp:1656
void setValue(double, bool, bool)
bool isDoubleClickReturnEnabled() const noexcept
Definition juce_Slider.cpp:1596
bool getVelocityModeIsSwappable() const noexcept
Definition juce_Slider.cpp:1471
void mouseMove(const MouseEvent &) override
Definition juce_Slider.cpp:1697
void setVelocityBasedMode(bool isVelocityBased)
Definition juce_Slider.cpp:1469
Component * getCurrentPopupDisplay() const noexcept
Definition juce_Slider.cpp:1543
void mouseExit(const MouseEvent &) override
Definition juce_Slider.cpp:1698
std::function< void()> onDragEnd
Definition juce_Slider.h:605
void resized() override
Definition juce_Slider.cpp:1691
bool isHorizontal() const noexcept
Definition juce_Slider.cpp:1680
SliderStyle
Definition juce_Slider.h:62
@ LinearBarVertical
Definition juce_Slider.h:66
@ IncDecButtons
Definition juce_Slider.h:75
@ ThreeValueHorizontal
Definition juce_Slider.h:82
@ TwoValueHorizontal
Definition juce_Slider.h:77
@ Rotary
Definition juce_Slider.h:67
@ LinearBar
Definition juce_Slider.h:65
@ LinearHorizontal
Definition juce_Slider.h:63
@ RotaryVerticalDrag
Definition juce_Slider.h:71
@ LinearVertical
Definition juce_Slider.h:64
@ RotaryHorizontalDrag
Definition juce_Slider.h:69
@ ThreeValueVertical
Definition juce_Slider.h:85
@ RotaryHorizontalVerticalDrag
Definition juce_Slider.h:73
@ TwoValueVertical
Definition juce_Slider.h:79
void setMaxValue(double, bool)
void mouseDoubleClick(const MouseEvent &) override
Definition juce_Slider.cpp:1719
bool keyPressed(const KeyPress &) override
Definition juce_Slider.cpp:1705
bool isSymmetricSkew() const noexcept
Definition juce_Slider.cpp:1489
void mouseDown(const MouseEvent &) override
Definition juce_Slider.cpp:1695
void enablementChanged() override
Definition juce_Slider.cpp:1548
bool isThreeValue() const noexcept
Definition juce_Slider.cpp:1685
bool isVertical() const noexcept
Definition juce_Slider.cpp:1681
bool isScrollWheelEnabled() const noexcept
Definition juce_Slider.cpp:1679
void mouseUp(const MouseEvent &) override
Definition juce_Slider.cpp:1696
void setNumDecimalPlacesToDisplay(int decimalPlacesToDisplay)
Definition juce_Slider.cpp:1663
void modifierKeysChanged(const ModifierKeys &) override
Definition juce_Slider.cpp:1707
std::function< double(const String &)> valueFromTextFunction
Definition juce_Slider.h:608
virtual void stoppedDragging()
Definition juce_Slider.cpp:1672
bool isBar() const noexcept
Definition juce_Slider.cpp:1683
void setPopupMenuEnabled(bool menuEnabled)
Definition juce_Slider.cpp:1676
virtual void valueChanged()
Definition juce_Slider.cpp:1673
ColourIds
Definition juce_Slider.h:865
@ textBoxBackgroundColourId
Definition juce_Slider.h:874
@ textBoxTextColourId
Definition juce_Slider.h:873
@ rotarySliderFillColourId
Definition juce_Slider.h:870
@ textBoxHighlightColourId
Definition juce_Slider.h:875
@ textBoxOutlineColourId
Definition juce_Slider.h:876
@ trackColourId
Definition juce_Slider.h:869
@ backgroundColourId
Definition juce_Slider.h:866
@ rotarySliderOutlineColourId
Definition juce_Slider.h:871
@ thumbColourId
Definition juce_Slider.h:867
RotaryParameters getRotaryParameters() const noexcept
Definition juce_Slider.cpp:1464
virtual double getValueFromText(const String &text)
Definition juce_Slider.cpp:1629
void setMaxValue(double, bool, bool, bool)
void setMinValue(double, bool, bool)
int getThumbBeingDragged() const noexcept
Definition juce_Slider.cpp:1670
void setSkewFactorFromMidPoint(double sliderValueToShowAtMidPoint)
Definition juce_Slider.cpp:1497
void setMinValue(double, bool)
void setMinAndMaxValues(double, double, bool, bool)
std::unique_ptr< AccessibilityHandler > createAccessibilityHandler() override
Definition juce_Slider.cpp:1797
virtual void startedDragging()
Definition juce_Slider.cpp:1671
void paint(Graphics &) override
Definition juce_Slider.cpp:1690
void init(SliderStyle, TextEntryBoxPosition)
Definition juce_Slider.cpp:1426
Slider()
Definition juce_Slider.cpp:1411
void setTextValueSuffix(const String &suffix)
Definition juce_Slider.cpp:1603
void setSliderSnapsToMousePosition(bool shouldSnapToMouse)
Definition juce_Slider.cpp:1533
TextEntryBoxPosition
Definition juce_Slider.h:94
@ TextBoxRight
Definition juce_Slider.h:97
@ NoTextBox
Definition juce_Slider.h:95
@ TextBoxAbove
Definition juce_Slider.h:98
@ TextBoxBelow
Definition juce_Slider.h:99
@ TextBoxLeft
Definition juce_Slider.h:96
void setMinValue(double, bool, bool, bool)
void mouseWheelMove(const MouseEvent &, const MouseWheelDetails &) override
Definition juce_Slider.cpp:1725
double getVelocitySensitivity() const noexcept
Definition juce_Slider.cpp:1473
void setValue(double, bool)
int getNumDecimalPlacesToDisplay() const noexcept
Definition juce_Slider.cpp:1661
void setMouseDragSensitivity(int distanceForFullScaleDrag)
Definition juce_Slider.cpp:1504
bool isTwoValue() const noexcept
Definition juce_Slider.cpp:1684
void updateText()
Definition juce_Slider.cpp:1598
void mouseEnter(const MouseEvent &) override
Definition juce_Slider.cpp:1702
Definition juce_String.h:53
Definition juce_Value.h:51
int y
Definition inflate.c:1588
unsigned x[BMAX+1]
Definition inflate.c:1586
static PuglViewHint int value
Definition pugl.h:1708
static int int height
Definition pugl.h:1594
static int width
Definition pugl.h:1593
#define JUCE_DECLARE_NON_MOVEABLE(className)
#define JUCE_DECLARE_NON_COPYABLE(className)
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_API
Definition juce_StandardHeader.h:152
#define JUCE_PUBLIC_IN_DLL_BUILD(declaration)
Definition juce_StandardHeader.h:158
static const SerdStyle style
Definition sratom.c:36
Definition carla_juce.cpp:31
NotificationType
Definition juce_NotificationType.h:32
@ sendNotificationAsync
Definition juce_NotificationType.h:36
Definition juce_Uuid.h:141
#define true
Definition ordinals.h:82
#define false
Definition ordinals.h:83
png_structrp int mode
Definition png.h:1139
Definition juce_MouseEvent.h:392
Definition juce_Slider.h:915
virtual Button * createSliderButton(Slider &, bool isIncrement)=0
virtual SliderLayout getSliderLayout(Slider &)=0
virtual void drawLinearSliderBackground(Graphics &, int x, int y, int width, int height, float sliderPos, float minSliderPos, float maxSliderPos, const Slider::SliderStyle style, Slider &)=0
virtual void drawLinearSliderThumb(Graphics &, int x, int y, int width, int height, float sliderPos, float minSliderPos, float maxSliderPos, const Slider::SliderStyle, Slider &)=0
virtual void drawLinearSlider(Graphics &, int x, int y, int width, int height, float sliderPos, float minSliderPos, float maxSliderPos, const Slider::SliderStyle, Slider &)=0
virtual ImageEffectFilter * getSliderEffect(Slider &)=0
virtual int getSliderThumbRadius(Slider &)=0
virtual Label * createSliderTextBox(Slider &)=0
virtual Font getSliderPopupFont(Slider &)=0
virtual void drawRotarySlider(Graphics &, int x, int y, int width, int height, float sliderPosProportional, float rotaryStartAngle, float rotaryEndAngle, Slider &)=0
virtual ~LookAndFeelMethods()=default
virtual int getSliderPopupPlacement(Slider &)=0
Definition juce_Slider.h:145
float startAngleRadians
Definition juce_Slider.h:149
float endAngleRadians
Definition juce_Slider.h:155
bool stopAtEnd
Definition juce_Slider.h:163
Definition juce_Slider.h:884
Rectangle< int > textBoxBounds
Definition juce_Slider.h:886
Rectangle< int > sliderBounds
Definition juce_Slider.h:885
const char * text
Definition swell-functions.h:167
#define void
Definition unzip.h:396
#define const
Definition zconf.h:137